Deploying to gh-pages from @ apache/echarts-handbook@fdfd671f437b1ab61ca30bf9ed63d72590d9ebb4 🚀
diff --git a/docs/.nojekyll b/docs/.nojekyll
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/docs/.nojekyll
diff --git a/docs/200.html b/docs/200.html
new file mode 100644
index 0000000..ac4bfe1
--- /dev/null
+++ b/docs/200.html
@@ -0,0 +1,13 @@
+<!doctype html>
+<html>
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <base href="/echarts-handbook/"><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script">
+  <link href="/echarts-handbook/_nuxt/css/ee8e7fb.css" rel="stylesheet"><link href="/echarts-handbook/_nuxt/css/6b95e13.css" rel="stylesheet"></head>
+  <body>
+    <div id="__nuxt"><style>#nuxt-loading{background:#fff;visibility:hidden;opacity:0;position:absolute;left:0;right:0;top:0;bottom:0;display:flex;justify-content:center;align-items:center;flex-direction:column;animation:nuxtLoadingIn 10s ease;-webkit-animation:nuxtLoadingIn 10s ease;animation-fill-mode:forwards;overflow:hidden}@keyframes nuxtLoadingIn{0%{visibility:hidden;opacity:0}20%{visibility:visible;opacity:0}100%{visibility:visible;opacity:1}}@-webkit-keyframes nuxtLoadingIn{0%{visibility:hidden;opacity:0}20%{visibility:visible;opacity:0}100%{visibility:visible;opacity:1}}#nuxt-loading>div,#nuxt-loading>div:after{border-radius:50%;width:5rem;height:5rem}#nuxt-loading>div{font-size:10px;position:relative;text-indent:-9999em;border:.5rem solid #f5f5f5;border-left:.5rem solid #f72c5b;-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);-webkit-animation:nuxtLoading 1.1s infinite linear;animation:nuxtLoading 1.1s infinite linear}#nuxt-loading.error>div{border-left:.5rem solid #ff4500;animation-duration:5s}@-webkit-keyframes nuxtLoading{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes nuxtLoading{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}</style><script>window.addEventListener("error",function(){var e=document.getElementById("nuxt-loading");e&&(e.className+=" error")})</script><div id="nuxt-loading" aria-live="polite" role="status"><div>Loading...</div></div></div><script>window.__NUXT__={config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}</script>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  <script src="/echarts-handbook/_nuxt/73c8e4b.js"></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js"></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js"></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js"></script></body>
+</html>
diff --git a/docs/README.md b/docs/README.md
new file mode 100644
index 0000000..cf00435
--- /dev/null
+++ b/docs/README.md
@@ -0,0 +1,11 @@
+# STATIC
+
+**This directory is not required, you can delete it if you don't want to use it.**
+
+This directory contains your static files.
+Each file inside this directory is mapped to `/`.
+Thus you'd want to delete this README.md before deploying to production.
+
+Example: `/static/robots.txt` is mapped as `/robots.txt`.
+
+More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/assets#static).
diff --git a/docs/_nuxt/73c8e4b.js b/docs/_nuxt/73c8e4b.js
new file mode 100644
index 0000000..344c704
--- /dev/null
+++ b/docs/_nuxt/73c8e4b.js
@@ -0,0 +1 @@
+!function(e){function c(data){for(var c,f,t=data[0],o=data[1],l=data[2],i=0,h=[];i<t.length;i++)f=t[i],Object.prototype.hasOwnProperty.call(r,f)&&r[f]&&h.push(r[f][0]),r[f]=0;for(c in o)Object.prototype.hasOwnProperty.call(o,c)&&(e[c]=o[c]);for(m&&m(data);h.length;)h.shift()();return n.push.apply(n,l||[]),d()}function d(){for(var e,i=0;i<n.length;i++){for(var c=n[i],d=!0,f=1;f<c.length;f++){var t=c[f];0!==r[t]&&(d=!1)}d&&(n.splice(i--,1),e=o(o.s=c[0]))}return e}var f={},t={4:0},r={4:0},n=[];function o(c){if(f[c])return f[c].exports;var d=f[c]={i:c,l:!1,exports:{}};return e[c].call(d.exports,d,d.exports,o),d.l=!0,d.exports}o.e=function(e){var c=[],d=function(){try{return document.createElement("link").relList.supports("preload")}catch(e){return!1}}();t[e]?c.push(t[e]):0!==t[e]&&{2:1,6:1}[e]&&c.push(t[e]=new Promise((function(c,f){for(var r="css/"+{2:"0c5ed63",3:"31d6cfe",6:"3556c50",7:"31d6cfe",8:"31d6cfe",9:"31d6cfe",10:"31d6cfe",11:"31d6cfe",12:"31d6cfe",13:"31d6cfe",14:"31d6cfe",15:"31d6cfe",16:"31d6cfe",17:"31d6cfe",18:"31d6cfe",19:"31d6cfe",20:"31d6cfe",21:"31d6cfe",22:"31d6cfe",23:"31d6cfe",24:"31d6cfe",25:"31d6cfe",26:"31d6cfe",27:"31d6cfe",28:"31d6cfe",29:"31d6cfe",30:"31d6cfe",31:"31d6cfe",32:"31d6cfe",33:"31d6cfe",34:"31d6cfe",35:"31d6cfe",36:"31d6cfe",37:"31d6cfe",38:"31d6cfe",39:"31d6cfe",40:"31d6cfe",41:"31d6cfe",42:"31d6cfe",43:"31d6cfe",44:"31d6cfe",45:"31d6cfe",46:"31d6cfe",47:"31d6cfe",48:"31d6cfe",49:"31d6cfe",50:"31d6cfe",51:"31d6cfe",52:"31d6cfe",53:"31d6cfe",54:"31d6cfe",55:"31d6cfe",56:"31d6cfe",57:"31d6cfe",58:"31d6cfe",59:"31d6cfe",60:"31d6cfe",61:"31d6cfe",62:"31d6cfe",63:"31d6cfe",64:"31d6cfe",65:"31d6cfe",66:"31d6cfe",67:"31d6cfe",68:"31d6cfe",69:"31d6cfe",70:"31d6cfe",71:"31d6cfe",72:"31d6cfe",73:"31d6cfe",74:"31d6cfe",75:"31d6cfe",76:"31d6cfe",77:"31d6cfe",78:"31d6cfe",79:"31d6cfe",80:"31d6cfe",81:"31d6cfe",82:"31d6cfe",83:"31d6cfe",84:"31d6cfe",85:"31d6cfe",86:"31d6cfe",87:"31d6cfe",88:"31d6cfe",89:"31d6cfe",90:"31d6cfe",91:"31d6cfe",92:"31d6cfe",93:"31d6cfe",94:"31d6cfe",95:"31d6cfe",96:"31d6cfe",97:"31d6cfe",98:"31d6cfe",99:"31d6cfe",100:"31d6cfe",101:"31d6cfe",102:"31d6cfe",103:"31d6cfe",104:"31d6cfe",105:"31d6cfe",106:"31d6cfe",107:"31d6cfe",108:"31d6cfe",109:"31d6cfe",110:"31d6cfe",111:"31d6cfe",112:"31d6cfe",113:"31d6cfe",114:"31d6cfe",115:"31d6cfe",116:"31d6cfe",117:"31d6cfe",118:"31d6cfe",119:"31d6cfe",120:"31d6cfe",121:"31d6cfe",122:"31d6cfe",123:"31d6cfe",124:"31d6cfe",125:"31d6cfe",126:"31d6cfe",127:"31d6cfe",128:"31d6cfe",129:"31d6cfe",130:"31d6cfe",131:"31d6cfe",132:"31d6cfe",133:"31d6cfe",134:"31d6cfe",135:"31d6cfe",136:"31d6cfe",137:"31d6cfe",138:"31d6cfe",139:"31d6cfe",140:"31d6cfe",141:"31d6cfe",142:"31d6cfe",143:"31d6cfe",144:"31d6cfe",145:"31d6cfe",146:"31d6cfe",147:"31d6cfe",148:"31d6cfe"}[e]+".css",n=o.p+r,l=document.getElementsByTagName("link"),i=0;i<l.length;i++){var h=(y=l[i]).getAttribute("data-href")||y.getAttribute("href");if(!("stylesheet"!==y.rel&&"preload"!==y.rel||h!==r&&h!==n))return c()}var m=document.getElementsByTagName("style");for(i=0;i<m.length;i++){var y;if((h=(y=m[i]).getAttribute("data-href"))===r||h===n)return c()}var v=document.createElement("link");v.rel=d?"preload":"stylesheet",d?v.as="style":v.type="text/css",v.onload=c,v.onerror=function(c){var d=c&&c.target&&c.target.src||n,r=new Error("Loading CSS chunk "+e+" failed.\n("+d+")");r.code="CSS_CHUNK_LOAD_FAILED",r.request=d,delete t[e],v.parentNode.removeChild(v),f(r)},v.href=n,document.getElementsByTagName("head")[0].appendChild(v)})).then((function(){if(t[e]=0,d){var c=document.createElement("link");c.href=o.p+"css/"+{2:"0c5ed63",3:"31d6cfe",6:"3556c50",7:"31d6cfe",8:"31d6cfe",9:"31d6cfe",10:"31d6cfe",11:"31d6cfe",12:"31d6cfe",13:"31d6cfe",14:"31d6cfe",15:"31d6cfe",16:"31d6cfe",17:"31d6cfe",18:"31d6cfe",19:"31d6cfe",20:"31d6cfe",21:"31d6cfe",22:"31d6cfe",23:"31d6cfe",24:"31d6cfe",25:"31d6cfe",26:"31d6cfe",27:"31d6cfe",28:"31d6cfe",29:"31d6cfe",30:"31d6cfe",31:"31d6cfe",32:"31d6cfe",33:"31d6cfe",34:"31d6cfe",35:"31d6cfe",36:"31d6cfe",37:"31d6cfe",38:"31d6cfe",39:"31d6cfe",40:"31d6cfe",41:"31d6cfe",42:"31d6cfe",43:"31d6cfe",44:"31d6cfe",45:"31d6cfe",46:"31d6cfe",47:"31d6cfe",48:"31d6cfe",49:"31d6cfe",50:"31d6cfe",51:"31d6cfe",52:"31d6cfe",53:"31d6cfe",54:"31d6cfe",55:"31d6cfe",56:"31d6cfe",57:"31d6cfe",58:"31d6cfe",59:"31d6cfe",60:"31d6cfe",61:"31d6cfe",62:"31d6cfe",63:"31d6cfe",64:"31d6cfe",65:"31d6cfe",66:"31d6cfe",67:"31d6cfe",68:"31d6cfe",69:"31d6cfe",70:"31d6cfe",71:"31d6cfe",72:"31d6cfe",73:"31d6cfe",74:"31d6cfe",75:"31d6cfe",76:"31d6cfe",77:"31d6cfe",78:"31d6cfe",79:"31d6cfe",80:"31d6cfe",81:"31d6cfe",82:"31d6cfe",83:"31d6cfe",84:"31d6cfe",85:"31d6cfe",86:"31d6cfe",87:"31d6cfe",88:"31d6cfe",89:"31d6cfe",90:"31d6cfe",91:"31d6cfe",92:"31d6cfe",93:"31d6cfe",94:"31d6cfe",95:"31d6cfe",96:"31d6cfe",97:"31d6cfe",98:"31d6cfe",99:"31d6cfe",100:"31d6cfe",101:"31d6cfe",102:"31d6cfe",103:"31d6cfe",104:"31d6cfe",105:"31d6cfe",106:"31d6cfe",107:"31d6cfe",108:"31d6cfe",109:"31d6cfe",110:"31d6cfe",111:"31d6cfe",112:"31d6cfe",113:"31d6cfe",114:"31d6cfe",115:"31d6cfe",116:"31d6cfe",117:"31d6cfe",118:"31d6cfe",119:"31d6cfe",120:"31d6cfe",121:"31d6cfe",122:"31d6cfe",123:"31d6cfe",124:"31d6cfe",125:"31d6cfe",126:"31d6cfe",127:"31d6cfe",128:"31d6cfe",129:"31d6cfe",130:"31d6cfe",131:"31d6cfe",132:"31d6cfe",133:"31d6cfe",134:"31d6cfe",135:"31d6cfe",136:"31d6cfe",137:"31d6cfe",138:"31d6cfe",139:"31d6cfe",140:"31d6cfe",141:"31d6cfe",142:"31d6cfe",143:"31d6cfe",144:"31d6cfe",145:"31d6cfe",146:"31d6cfe",147:"31d6cfe",148:"31d6cfe"}[e]+".css",c.rel="stylesheet",c.type="text/css",document.body.appendChild(c)}})));var f=r[e];if(0!==f)if(f)c.push(f[2]);else{var n=new Promise((function(c,d){f=r[e]=[c,d]}));c.push(f[2]=n);var l,script=document.createElement("script");script.charset="utf-8",script.timeout=120,o.nc&&script.setAttribute("nonce",o.nc),script.src=function(e){return o.p+"js/"+{2:"e97de2cdc6b7785ece0f",3:"e33c9002634265ded0e5",6:"8cbc28eba39ffdac2c44",7:"676965dc8c2d7e00ff99",8:"8742f2bcb3297290ec2d",9:"6df391d32552558f026b",10:"8bbce1665041a74bf688",11:"3256fb9dd0604895c864",12:"c02537622f5a31734cab",13:"3afc56f1e272d728c657",14:"84f30bf9e6f359ad01dc",15:"3868741698e207f34cd3",16:"002cbf7ddf03f9d8fc36",17:"a4651b3ffcd3025d6bd6",18:"2f8b43ec92713daf5768",19:"f67043180da500fb1d0c",20:"08e2e6d9237d49aa7542",21:"17fa0aff7c49c9968a24",22:"073ea6a96dd031bd2a9b",23:"bc492b873b2d5082c7ee",24:"7791e886b6b16c20984f",25:"72e8528796ba934b83a4",26:"012c22811074d84f61df",27:"45a5d44a8dd7f086baa7",28:"97f11de0218aca6a2152",29:"6a0d4f1469677508287e",30:"16c7763c07b6dbca6090",31:"542f1ef4dc31c39f6578",32:"72ddf7e6bc0a4da0c13f",33:"b95c0f832a3abb5b9074",34:"3100a23e60b180fff61d",35:"eea41953a4b52f7426d7",36:"2bbdbc22eb3ab9587415",37:"d1f568d37148d60c21d1",38:"76a5bbe4c7d3c081b265",39:"e3d990a38aabb6066e19",40:"c90fc00131f310556008",41:"a3a56a08df179c32c9aa",42:"16336bf6097484a5086b",43:"f66993240cafdfa3acbb",44:"130639e4ac114099133a",45:"3d5ecf2c4c7c04e5a136",46:"aa789a4d72f8e70a662e",47:"e40a3b3f99ff42eccdea",48:"2432fc94ace109d861d4",49:"ef969480dc6c88c3123e",50:"d1b3a13f9bef641c0d52",51:"5e19cbc5187514db7dcd",52:"1b84c1d2e290e3160592",53:"227108076aaa8b66f007",54:"6d0bdeec2b05b46603ad",55:"fccb0455c3771b415728",56:"015e2f50ae0ece38b86c",57:"6e19bb4909646d7f1fb9",58:"fce33b4736fd8789804c",59:"b24184ccdb1d41bbb836",60:"c9c9efa8b34e57d41456",61:"2892e4a57d134e05d67a",62:"fb6fb8b7114f86159115",63:"694dcb340a2404ad42a7",64:"2b876bccb931c9e3aef1",65:"5dedd0f61ae7a03c4046",66:"2ca8e87e103e49675911",67:"4bcec4ca68bb95e605d0",68:"b01942efec5173e9a13d",69:"52381af481b92e53445a",70:"932241c77644d8ad058e",71:"7548a9b2f9af142ac72f",72:"958411fcc7493bf53232",73:"1957ff5a2d6e8d2ebe33",74:"e5736dd2cea650d732d9",75:"fb630ce1f2b24400e084",76:"3cedfaabe4763d050490",77:"b8ad6f75a23add5dc80c",78:"528583ec9e2e5194904c",79:"5adf3f95d0916e363ff0",80:"f5926384992f003e16b7",81:"1ccc25d7312c84afa13d",82:"d8d32d5f4d3d240d387c",83:"69d7b43411a93902e873",84:"94cc006e457d3c978e1c",85:"8c503785a513c4eb2198",86:"54a18589629cfacb72d4",87:"9c42d2a85c86c4a1d028",88:"5ffc54c98f60a9e99933",89:"1829079b3b59fcb450fd",90:"d4c8d94d0687d40e7386",91:"fe87f7d068d53e338de9",92:"ef7c0f9f6ba31cd9f933",93:"83058ff5b1edf8425301",94:"a742e0550564ed2f9bec",95:"e1433cf4ccf6834c60c1",96:"fece5d8adcf7333bf136",97:"316474ab94e9c1d6354c",98:"eb592495ecb7ae8d985e",99:"7d9ee5c600401a657064",100:"4192bd97e71292a12fa4",101:"1b302931927cbe4f4476",102:"7c8f163eab8103a5839a",103:"34ec6f617c3c59ae2ff8",104:"8f33680fd6db0eb8092e",105:"4cd4272ba0a068c0559e",106:"7f4455d2257202d40708",107:"e01c81a9f12ddcf059eb",108:"c853c8b3b7a6be629012",109:"452d8402b82f93776429",110:"916289bebd84533235fa",111:"fbfa475a066b1f7640ce",112:"d4356c3df49553725b3e",113:"ee46acb0612105883707",114:"39790918477f6eab652c",115:"104d5e865229ef368b9d",116:"61ecb6b47c982ba018f8",117:"03a9a60290e667267d31",118:"b8f50a18e5476ce0be99",119:"38d3f3c9e4619e0fddff",120:"23d006245e46ca3de693",121:"704c655ef01e9ffcb1f0",122:"949ddc72fdec0093e8ad",123:"261468fa849b6278a535",124:"f53515dc57c05d019fb3",125:"a43901784a9ac0405e7c",126:"d2091dcdb4b7f3cc8590",127:"da262fca9b535e137c21",128:"fdaa5a3fbcf33611da58",129:"483edc00c621997808b8",130:"16f326c38a20e70e4228",131:"7848ab3e6855a8588bbe",132:"cb96a0fccf449b33e6f0",133:"10f8285623bd712e583f",134:"ef4b8842d850d0a15ed5",135:"d823baf6c14e3add5911",136:"ede9b51588a0e4a74c8c",137:"e3f9aa2dbc89a452558f",138:"8af39ab18edaa2779ab8",139:"41837626a03c3a2d47b1",140:"7577aef7035f2680e17a",141:"467574b09a1f02673d06",142:"6cae345a9044d453ba52",143:"30b996e81f48575dff04",144:"e927d2b5f0d76c8900b8",145:"a25423249754d69b44dd",146:"5a00f6016712a9e609f5",147:"c45d61aa6775022454c1",148:"29111570228a458fd484"}[e]+".js"}(e);var h=new Error;l=function(c){script.onerror=script.onload=null,clearTimeout(m);var d=r[e];if(0!==d){if(d){var f=c&&("load"===c.type?"missing":c.type),t=c&&c.target&&c.target.src;h.message="Loading chunk "+e+" failed.\n("+f+": "+t+")",h.name="ChunkLoadError",h.type=f,h.request=t,d[1](h)}r[e]=void 0}};var m=setTimeout((function(){l({type:"timeout",target:script})}),12e4);script.onerror=script.onload=l,document.head.appendChild(script)}return Promise.all(c)},o.m=e,o.c=f,o.d=function(e,c,d){o.o(e,c)||Object.defineProperty(e,c,{enumerable:!0,get:d})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,c){if(1&c&&(e=o(e)),8&c)return e;if(4&c&&"object"==typeof e&&e&&e.__esModule)return e;var d=Object.create(null);if(o.r(d),Object.defineProperty(d,"default",{enumerable:!0,value:e}),2&c&&"string"!=typeof e)for(var f in e)o.d(d,f,function(c){return e[c]}.bind(null,f));return d},o.n=function(e){var c=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(c,"a",c),c},o.o=function(object,e){return Object.prototype.hasOwnProperty.call(object,e)},o.p="/echarts-handbook/_nuxt/",o.oe=function(e){throw console.error(e),e};var l=window.webpackJsonp=window.webpackJsonp||[],h=l.push.bind(l);l.push=c,l=l.slice();for(var i=0;i<l.length;i++)c(l[i]);var m=h;d()}([]);
\ No newline at end of file
diff --git a/docs/_nuxt/LICENSES b/docs/_nuxt/LICENSES
new file mode 100644
index 0000000..46e4fc8
--- /dev/null
+++ b/docs/_nuxt/LICENSES
@@ -0,0 +1,56 @@
+/*!
+ * clipboard.js v2.0.11
+ * https://clipboardjs.com/
+ *
+ * Licensed MIT © Zeno Rocha
+ */
+
+/*! https://mths.be/punycode v1.4.1 by @mathias */
+
+/**
+ * Prism: Lightweight, robust, elegant syntax highlighting
+ *
+ * @license MIT <https://opensource.org/licenses/MIT>
+ * @author Lea Verou <https://lea.verou.me>
+ * @namespace
+ * @public
+ */
+
+
+/*!
+ * vue-client-only v0.0.0-semantic-release
+ * (c) 2021-present egoist <0x142857@gmail.com>
+ * Released under the MIT License.
+ */
+
+/*!
+ * vue-i18n v8.28.2 
+ * (c) 2022 kazuya kawaguchi
+ * Released under the MIT License.
+ */
+
+/*!
+ * vue-no-ssr v1.1.1
+ * (c) 2018-present egoist <0x142857@gmail.com>
+ * Released under the MIT License.
+ */
+
+
+/*!
+ * Vue.js v2.6.14
+ * (c) 2014-2021 Evan You
+ * Released under the MIT License.
+ */
+
+/*!
+ * cookie
+ * Copyright(c) 2012-2014 Roman Shtylman
+ * Copyright(c) 2015 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+/*!
+ * vuex v3.6.2
+ * (c) 2021 Evan You
+ * @license MIT
+ */
diff --git a/docs/_nuxt/css/0c5ed63.css b/docs/_nuxt/css/0c5ed63.css
new file mode 100644
index 0000000..ea3e22f
--- /dev/null
+++ b/docs/_nuxt/css/0c5ed63.css
@@ -0,0 +1 @@
+.md-alert[data-v-baf1bad2]{border-radius:.5rem;border-left-width:4px}.md-alert-info[data-v-baf1bad2]{--tw-border-opacity:1;border-color:rgba(96,165,250,var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgba(219,234,254,var(--tw-bg-opacity))}.md-alert-info code[data-v-baf1bad2]{border-width:0;--tw-bg-opacity:1;background-color:rgba(191,219,254,var(--tw-bg-opacity));color:currentColor;--tw-shadow:0 0 transparent;box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.md-alert-info .md-alert-icon[data-v-baf1bad2]{--tw-text-opacity:1;color:rgba(96,165,250,var(--tw-text-opacity))}.md-alert-info .md-alert-content[data-v-baf1bad2]{--tw-text-opacity:1;color:rgba(29,78,216,var(--tw-text-opacity))}.md-alert-success[data-v-baf1bad2]{--tw-border-opacity:1;border-color:rgba(52,211,153,var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgba(209,250,229,var(--tw-bg-opacity))}.md-alert-success code[data-v-baf1bad2]{border-width:0;--tw-bg-opacity:1;background-color:rgba(167,243,208,var(--tw-bg-opacity));color:currentColor;--tw-shadow:0 0 transparent;box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.md-alert-success .md-alert-icon[data-v-baf1bad2]{--tw-text-opacity:1;color:rgba(52,211,153,var(--tw-text-opacity))}.md-alert-success .md-alert-content[data-v-baf1bad2]{--tw-text-opacity:1;color:rgba(4,120,87,var(--tw-text-opacity))}.md-alert-warning[data-v-baf1bad2]{--tw-border-opacity:1;border-color:rgba(251,146,60,var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgba(255,237,213,var(--tw-bg-opacity))}.md-alert-warning code[data-v-baf1bad2]{border-width:0;--tw-bg-opacity:1;background-color:rgba(254,215,170,var(--tw-bg-opacity));color:currentColor;--tw-shadow:0 0 transparent;box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.md-alert-warning .md-alert-icon[data-v-baf1bad2]{--tw-text-opacity:1;color:rgba(251,146,60,var(--tw-text-opacity))}.md-alert-warning .md-alert-content[data-v-baf1bad2]{--tw-text-opacity:1;color:rgba(194,65,12,var(--tw-text-opacity))}.md-alert-danger[data-v-baf1bad2]{--tw-border-opacity:1;border-color:rgba(248,113,113,var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgba(254,226,226,var(--tw-bg-opacity))}.md-alert-danger code[data-v-baf1bad2]{border-width:0;--tw-bg-opacity:1;background-color:rgba(254,202,202,var(--tw-bg-opacity));color:currentColor;--tw-shadow:0 0 transparent;box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.md-alert-danger .md-alert-icon[data-v-baf1bad2]{--tw-text-opacity:1;color:rgba(248,113,113,var(--tw-text-opacity))}.md-alert-danger .md-alert-content[data-v-baf1bad2]{--tw-text-opacity:1;color:rgba(185,28,28,var(--tw-text-opacity))}.clipboard[data-v-479657ca]{position:absolute;right:0;bottom:0;--tw-text-opacity:1;color:rgba(148,163,184,var(--tw-text-opacity));margin-right:1.75rem;margin-bottom:.75rem;border-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgba(148,163,184,var(--tw-border-opacity));padding:.5rem;cursor:pointer}.clipboard[data-v-479657ca]:hover{--tw-bg-opacity:1;background-color:rgba(148,163,184,var(--tw-bg-opacity));--tw-bg-opacity:0.25}.clipboard[data-v-479657ca]{width:30px;height:30px}.clipboard svg[data-v-479657ca]{width:100%;height:100%}&:hover .clipboard[data-v-479657ca]{display:block}.md-live{overflow:hidden;margin-top:2.5rem;margin-bottom:5rem;border-radius:.5rem;--tw-shadow:0 10px 15px -3px rgba(0,0,0,0.1),0 4px 6px -2px rgba(0,0,0,0.05);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow);display:flex;flex-direction:column-reverse}@media (max-width:768px){.md-live{min-height:500px}}@media (min-width:768px){.md-live.layout-lr{flex-direction:row}.md-live.layout-rl{flex-direction:row-reverse}.md-live.layout-tb{flex-direction:column}.md-live.layout-bt{flex-direction:column-reverse}.md-live.layout-lr,.md-live.layout-rl{align-items:stretch}.md-live.layout-lr .md-live-editor-container,.md-live.layout-rl .md-live-editor-container{height:100%}.md-live.layout-lr .md-live-editor,.md-live.layout-rl .md-live-editor{flex:1 1 0%}.md-live.layout-lr .md-live-preview,.md-live.layout-rl .md-live-preview{flex:1 1 0%;height:auto}}.md-live-editor{position:relative}.md-live-editor ::-webkit-scrollbar-thumb{background:hsla(0,0%,100%,.3)!important}.md-live-editor .md-live-editor-container{background:#263238;max-height:500px;overflow-y:auto;font-size:13px;padding:10px}@media (max-width:768px){.md-live-editor .md-live-editor-container{max-height:300px}}.md-live-editor pre{color:#c3cee3}.md-live-editor .md-live-tag{position:absolute;right:0;top:0;text-transform:uppercase;margin-top:.75rem;margin-right:1.75rem;color:#f7fafc;z-index:10}.md-live-editor .clipboard{display:none}.md-live-editor:hover .clipboard{display:block}.md-live-preview{height:300px;overflow:hidden}.prism-editor-wrapper .prism-editor__editor,.prism-editor-wrapper .prism-editor__textarea{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;line-height:1.5}.prism-editor__textarea:focus{outline:none}.md-code-block{position:relative}.nuxt-content-highlight{line-height:1em;font-size:13px}.nuxt-content-highlight code[class*=language-],.nuxt-content-highlight pre[class*=language-]{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;color:#c3cee3;background:#263238;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;text-align:left;border:none}.nuxt-content-highlight code[class*=language-]::-moz-selection,.nuxt-content-highlight code[class*=language-] ::-moz-selection,.nuxt-content-highlight pre[class*=language-]::-moz-selection,.nuxt-content-highlight pre[class*=language-] ::-moz-selection{background:rgba(0,116,255,.8);color:#fff}.nuxt-content-highlight code[class*=language-]::selection,.nuxt-content-highlight code[class*=language-] ::selection,.nuxt-content-highlight pre[class*=language-]::selection,.nuxt-content-highlight pre[class*=language-] ::selection{background:rgba(0,116,255,.8);color:#fff}.nuxt-content-highlight .filename{position:absolute;right:0;top:0;z-index:10;font-family:DM Mono,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.875rem;line-height:1.25rem;letter-spacing:-.025em;line-height:1;margin-top:.75rem;margin-right:1rem;--tw-text-opacity:1;color:rgba(148,163,184,var(--tw-text-opacity))}.nuxt-content-highlight .clipboard{display:none}.nuxt-content-highlight:hover .clipboard{display:block}.post-contributors{margin-bottom:50px;padding-top:10px;border-top:1px solid #ddd;--tw-text-opacity:1;color:rgba(71,85,105,var(--tw-text-opacity))}.post-contributors a{--tw-text-opacity:1;color:rgba(100,116,139,var(--tw-text-opacity))}.post-contributors .post-contributors-list{display:flex;align-items:stretch;flex-wrap:wrap;margin-top:10px}.post-contributors .post-contributor{display:flex;align-items:center;justify-content:center;margin-right:15px;margin-top:10px;border-width:1px;--tw-border-opacity:1;border-color:rgba(226,232,240,var(--tw-border-opacity));border-radius:.5rem}.post-contributors .post-contributor:hover{text-decoration:none;--tw-border-opacity:1;border-color:rgba(203,213,225,var(--tw-border-opacity))}.post-contributors .post-contributor img{width:40px;height:40px;border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}.post-contributors .post-contributor img,.post-contributors .post-contributor span{display:inline-block}.post-contributors .post-contributor span{margin:2px 10px;position:relative}.post-contributors .post-contributor.has-avatar span{margin:2px 8px}.post-edit{margin:20px 0}
\ No newline at end of file
diff --git a/docs/_nuxt/css/3556c50.css b/docs/_nuxt/css/3556c50.css
new file mode 100644
index 0000000..1a5325e
--- /dev/null
+++ b/docs/_nuxt/css/3556c50.css
@@ -0,0 +1 @@
+.prism-editor-wrapper{width:100%;height:100%;display:flex;align-items:flex-start;overflow:auto;-o-tab-size:1.5em;tab-size:1.5em;-moz-tab-size:1.5em}@media (-ms-high-contrast:active),(-ms-high-contrast:none){.prism-editor-wrapper .prism-editor__textarea{color:transparent!important}.prism-editor-wrapper .prism-editor__textarea::-moz-selection{background-color:#accef7!important;color:transparent!important}.prism-editor-wrapper .prism-editor__textarea::selection{background-color:#accef7!important;color:transparent!important}}.prism-editor-wrapper .prism-editor__container{position:relative;text-align:left;box-sizing:border-box;padding:0;overflow:hidden;width:100%}.prism-editor-wrapper .prism-editor__line-numbers{height:100%;overflow:hidden;flex-shrink:0;padding-top:4px;margin-top:0;margin-right:10px}.prism-editor-wrapper .prism-editor__line-number{text-align:right;white-space:nowrap}.prism-editor-wrapper .prism-editor__textarea{position:absolute;top:0;left:0;height:100%;width:100%;resize:none;color:inherit;overflow:hidden;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;-webkit-text-fill-color:transparent}.prism-editor-wrapper .prism-editor__editor,.prism-editor-wrapper .prism-editor__textarea{margin:0;border:0;background:none;box-sizing:inherit;display:inherit;font-family:inherit;font-size:inherit;font-style:inherit;font-variant-ligatures:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;-moz-tab-size:inherit;-o-tab-size:inherit;tab-size:inherit;text-indent:inherit;text-rendering:inherit;text-transform:inherit;white-space:pre-wrap;word-wrap:keep-all;overflow-wrap:break-word;padding:0}.prism-editor-wrapper .prism-editor__textarea--empty{-webkit-text-fill-color:inherit!important}.prism-editor-wrapper .prism-editor__editor{position:relative;pointer-events:none}code[class*=language-],pre[class*=language-]{text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;color:#c3cee3;background:#263238;font-family:Roboto Mono,monospace;font-size:1em;line-height:1.5em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}code[class*=language-]::-moz-selection,code[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection{background:#363636}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{background:#363636}:not(pre)>code[class*=language-]{white-space:normal;border-radius:.2em;padding:.1em}pre[class*=language-]{overflow:auto;position:relative;margin:.5em 0;padding:1.25em 1em}.language-css>code,.language-sass>code,.language-scss>code{color:#fd9170}[class*=language-] .namespace{opacity:.7}.token.atrule{color:#c792ea}.token.attr-name{color:#ffcb6b}.token.attr-value,.token.attribute{color:#c3e88d}.token.boolean{color:#c792ea}.token.builtin{color:#ffcb6b}.token.cdata,.token.char{color:#80cbc4}.token.class{color:#ffcb6b}.token.class-name,.token.color{color:#f2ff00}.token.comment{color:#546e7a}.token.constant{color:#c792ea}.token.deleted{color:#f07178}.token.doctype{color:#546e7a}.token.entity{color:#f07178}.token.function{color:#c792ea}.token.hexcode{color:#f2ff00}.token.id,.token.important{color:#c792ea;font-weight:700}.token.inserted{color:#80cbc4}.token.keyword{color:#c792ea;font-style:italic}.token.number{color:#fd9170}.token.operator{color:#89ddff}.token.prolog{color:#546e7a}.token.property{color:#80cbc4}.token.pseudo-class,.token.pseudo-element{color:#c3e88d}.token.punctuation{color:#89ddff}.token.regex{color:#f2ff00}.token.selector{color:#f07178}.token.string{color:#c3e88d}.token.symbol{color:#c792ea}.token.tag,.token.unit{color:#f07178}.token.url{color:#fd9170}.token.variable{color:#f07178}
\ No newline at end of file
diff --git a/docs/_nuxt/css/6b95e13.css b/docs/_nuxt/css/6b95e13.css
new file mode 100644
index 0000000..9ae8931
--- /dev/null
+++ b/docs/_nuxt/css/6b95e13.css
@@ -0,0 +1 @@
+.__nuxt-error-page{padding:1rem;background:#f7f8fb;color:#47494e;text-align:center;display:flex;justify-content:center;align-items:center;flex-direction:column;font-family:sans-serif;font-weight:100!important;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;position:absolute;top:0;left:0;right:0;bottom:0}.__nuxt-error-page .error{max-width:450px}.__nuxt-error-page .title{font-size:1.5rem;margin-top:15px;color:#47494e;margin-bottom:8px}.__nuxt-error-page .description{color:#7f828b;line-height:21px;margin-bottom:10px}.__nuxt-error-page a{color:#7f828b!important;text-decoration:none}.__nuxt-error-page .logo{position:fixed;left:12px;bottom:12px}.nuxt-progress{position:fixed;top:0;left:0;right:0;height:2px;width:0;opacity:1;transition:width .1s,opacity .4s;background-color:#f72c5b;z-index:999999}.nuxt-progress.nuxt-progress-notransition{transition:none}.nuxt-progress-failed{background-color:red}.page-content .nav-item{margin:0}.page-content .nav-item .nav-link{--tw-text-opacity:1;color:rgba(100,116,139,var(--tw-text-opacity))}.page-content .nav-item a.nav-link{cursor:pointer}.page-content .nav-item .nav-link.nuxt-link-active{font-weight:700;color:#337ab7}.algolia-autocomplete .ds-dropdown-menu{border-style:none;--tw-shadow:0 20px 25px -5px rgba(0,0,0,0.1),0 10px 10px -5px rgba(0,0,0,0.04);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.algolia-autocomplete .ds-dropdown-menu [class^=ds-dataset-]{border-style:none}.algolia-autocomplete .ds-dropdown-menu:before{border-style:none;--tw-shadow:0 20px 25px -5px rgba(0,0,0,0.1),0 10px 10px -5px rgba(0,0,0,0.04);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.bd-sidebar{position:sticky;z-index:1000;top:0;left:0;padding:0;overflow:visible;border-right:1px solid #eee;border-bottom:none;max-width:350px;height:calc(100vh - 50px)}.bd-sidebar .open-sidebar{display:none}.bd-sidebar .bd-docs-nav{overflow-x:hidden;overflow-y:auto;height:calc(100% - 10px);padding-bottom:10px;padding-top:10px;margin-top:5px;margin-bottom:5px}.bd-sidebar .sidebar-search{padding:15px 20px;border-bottom:1px solid #eee}.bd-sidebar .sidebar-search .algolia-autocomplete{width:100%}.bd-sidebar .sidebar-search input{width:100%;border-radius:.75rem;border-width:0;--tw-shadow:0 1px 3px 0 rgba(0,0,0,0.1),0 1px 2px 0 rgba(0,0,0,0.06);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow);outline:2px solid transparent;outline-offset:2px;padding:1rem 3rem 1rem 1rem}.bd-sidebar .sidebar-search .search-icon{position:absolute;right:3rem;top:28px}@media (max-width:768px){.bd-sidebar.closed{left:-280px;--tw-shadow:0 0 transparent}.bd-sidebar,.bd-sidebar.closed{box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.bd-sidebar{position:fixed;left:0;width:280px;top:50px;bottom:0;background-color:#fff;--tw-shadow:0 25px 50px -12px rgba(0,0,0,0.25);border-right:none;overflow:visible;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.bd-sidebar .bd-docs-nav{width:280px}.bd-sidebar .open-sidebar{display:block;position:absolute;left:280px;bottom:60px;width:40px;height:40px;padding:5px;color:#000;z-index:1200;background:#eee;border-top-right-radius:1rem;border-bottom-right-radius:1rem;--tw-shadow:0 10px 15px -3px rgba(0,0,0,0.1),0 4px 6px -2px rgba(0,0,0,0.05);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.bd-sidebar .open-sidebar svg{width:100%;height:100%}}.bd-sidenav{display:none}.page-content{padding-bottom:0}.page-content .nav{display:block}.page-content ul.nav{padding-left:0}.page-content .nav>li>a:focus,.page-content .nav>li>a:hover{background-color:#f6f8fc}.page-content .nav .b-icon.bi{font-size:90%;opacity:.6;position:relative;top:-2px}.page-content .glyphicon{padding:5px;color:#cfd9e2;cursor:pointer;transform:scale(.8);top:2px;left:-4px;margin:-5px 0}.page-content .level0>li>.nav-link{margin-top:5px;padding:6px 0 6px 20px;font-weight:700;--tw-text-opacity:1;color:rgba(30,41,59,var(--tw-text-opacity))}.page-content .level1{margin-top:4px;font-size:14px}.page-content .level1 .nav-link{padding:6px 0 6px 35px}.page-content .level2 .nav-link{padding:5px 0 5px 50px}.page-content .level3{margin-top:1px}.page-content .level3 .nav-link{padding:5px 0 5px 60px}svg.icon-external-link{display:initial;vertical-align:initial}body{font-family:Open Sans,PingFang SC,Helvetica,Arial,sans-serif}.page-main{overflow-x:hidden}.handbook-content{padding-left:0;padding-right:0}.bd-content{padding-left:50px}@media (max-width:768px){.bd-content{padding-left:30px;padding-right:30px}}.post-content{margin:0 auto;max-width:960px}.post-inner{margin:20px 0 80px;--tw-text-opacity:1;color:rgba(100,116,139,var(--tw-text-opacity))}.post-inner h1,.post-inner h2,.post-inner h3,.post-inner h4,.post-inner h5,.post-inner h6{font-weight:500;scroll-margin-top:20px}.post-inner h1:hover .permalink,.post-inner h2:hover .permalink,.post-inner h3:hover .permalink,.post-inner h4:hover .permalink,.post-inner h5:hover .permalink,.post-inner h6:hover .permalink{display:inline-block}.post-inner h1{margin:40px 0 30px;font-size:36px;font-weight:700;--tw-text-opacity:1;color:rgba(51,65,85,var(--tw-text-opacity))}.post-inner h2{margin:60px 0 20px;padding-bottom:20px;font-size:28px;--tw-text-opacity:1;color:rgba(71,85,105,var(--tw-text-opacity));border-bottom:1px solid #eee}.post-inner h1+h2{margin-top:40px}.post-inner h3{margin:40px 0 20px;font-size:22px}.post-inner h3,.post-inner h4{--tw-text-opacity:1;color:rgba(71,85,105,var(--tw-text-opacity))}.post-inner h4{margin:25px 0 20px;font-size:18px}.post-inner h5{font-size:16px}.post-inner h5,.post-inner h6{--tw-text-opacity:1;color:rgba(100,116,139,var(--tw-text-opacity))}.post-inner h6{font-size:14px}.post-inner .permalink{display:none}.post-inner blockquote{margin:15px 0;padding:20px 15px;border-radius:.5rem;border-left-width:4px;--tw-border-opacity:1;border-color:rgba(96,165,250,var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgba(219,234,254,var(--tw-bg-opacity))}.post-inner blockquote code{border-width:0;--tw-bg-opacity:1;background-color:rgba(191,219,254,var(--tw-bg-opacity));color:currentColor;--tw-shadow:0 0 transparent;box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.post-inner blockquote :first-child{margin-top:0}.post-inner blockquote :last-child{margin-bottom:0}.post-inner blockquote pre{margin:20px 0;border-radius:5px;border:none;padding:10px;background:none;font-size:13px}.post-inner code{font-size:14px}.post-inner iframe{border:none;margin:10px 0}.post-inner ol,.post-inner ul{padding-left:20px}.post-inner li,.post-inner p{line-height:1.7em;font-size:16px}.post-inner p{margin:15px 0}.post-inner img{border-radius:.5rem;--tw-shadow:0 10px 15px -3px rgba(0,0,0,0.1),0 4px 6px -2px rgba(0,0,0,0.05);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.post-inner a{color:#337ab7}.post-inner .table-of-contents{position:fixed;left:77%;width:21%;top:65px;max-height:calc(100% - 85px);display:flex;flex-direction:column;background-color:transparent;padding:10px;overflow:hidden;z-index:10}@media (max-width:768px){.post-inner .table-of-contents{position:relative;width:100%;left:0;top:0;padding:0;margin:0 0 10px}}.post-inner .table-of-contents .toc-container-header{font-size:16px;font-weight:700}.post-inner .table-of-contents ul{padding-left:0;margin-bottom:0;flex-grow:1;overflow:auto}.post-inner .table-of-contents ul li{list-style:none;font-size:14px}.post-inner .table-of-contents ul li.toc2{font-size:15px}.post-inner .table-of-contents ul li.toc3{font-size:14px;padding-left:15px}.post-inner .table-of-contents ul li.toc3+.toc2{margin-top:15px}.post-inner .table-of-contents a{--tw-text-opacity:1;color:rgba(100,116,139,var(--tw-text-opacity));transition:.5s}.post-inner .table-of-contents a:hover{color:#555}
\ No newline at end of file
diff --git a/docs/_nuxt/css/ee8e7fb.css b/docs/_nuxt/css/ee8e7fb.css
new file mode 100644
index 0000000..5f5cf6d
--- /dev/null
+++ b/docs/_nuxt/css/ee8e7fb.css
@@ -0,0 +1,3 @@
+/*! tailwindcss v2.2.19 | MIT License | https://tailwindcss.com*/
+
+/*! modern-normalize v1.1.0 | MIT License | https://github.com/sindresorhus/modern-normalize */html{-moz-tab-size:4;-o-tab-size:4;tab-size:4;line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji}hr{height:0;color:inherit}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,select{text-transform:none}[type=button],button{-webkit-appearance:button}::-moz-focus-inner{border-style:none;padding:0}legend{padding:0}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}button{background-color:transparent;background-image:none}fieldset,ol,ul{margin:0;padding:0}ol,ul{list-style:none}html{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{font-family:inherit;line-height:inherit}*,:after,:before{box-sizing:border-box;border:0 solid}hr{border-top-width:1px}img{border-style:solid}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}table{border-collapse:collapse}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}button,input,optgroup,select,textarea{padding:0;line-height:inherit;color:inherit}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:after,:before{--tw-border-opacity:1;border-color:rgba(229,231,235,var(--tw-border-opacity))}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.static{position:static}.fixed{position:fixed}.mt-10{margin-top:2.5rem}.mr-4{margin-right:1rem}.mr-7{margin-right:1.75rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.table{display:table}.hidden{display:none}.h-6{height:1.5rem}.h-8{height:2rem}.w-6{width:1.5rem}.w-8{width:2rem}.w-full{width:100%}.flex-grow{flex-grow:1}.transform{--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;transform:translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes spin{to{transform:rotate(1turn)}}@keyframes ping{75%,to{transform:scale(2);opacity:0}}@keyframes pulse{50%{opacity:.5}}@keyframes bounce{0%,to{transform:translateY(-25%);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;animation-timing-function:cubic-bezier(0,0,.2,1)}}.resize{resize:both}.flex-wrap{flex-wrap:wrap}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.border-0{border-width:0}.border{border-width:1px}.border-l-4{border-left-width:4px}.border-blue-400{--tw-border-opacity:1;border-color:rgba(96,165,250,var(--tw-border-opacity))}.border-blue-gray-200{--tw-border-opacity:1;border-color:rgba(226,232,240,var(--tw-border-opacity))}.border-blue-gray-400{--tw-border-opacity:1;border-color:rgba(148,163,184,var(--tw-border-opacity))}.bg-red-100{--tw-bg-opacity:1;background-color:rgba(254,226,226,var(--tw-bg-opacity))}.bg-red-200{--tw-bg-opacity:1;background-color:rgba(254,202,202,var(--tw-bg-opacity))}.bg-green-100{--tw-bg-opacity:1;background-color:rgba(209,250,229,var(--tw-bg-opacity))}.bg-green-200{--tw-bg-opacity:1;background-color:rgba(167,243,208,var(--tw-bg-opacity))}.bg-blue-100{--tw-bg-opacity:1;background-color:rgba(219,234,254,var(--tw-bg-opacity))}.bg-blue-200{--tw-bg-opacity:1;background-color:rgba(191,219,254,var(--tw-bg-opacity))}.bg-orange-100{--tw-bg-opacity:1;background-color:rgba(255,237,213,var(--tw-bg-opacity))}.bg-orange-200{--tw-bg-opacity:1;background-color:rgba(254,215,170,var(--tw-bg-opacity))}.bg-blue-gray-400{--tw-bg-opacity:1;background-color:rgba(148,163,184,var(--tw-bg-opacity))}.p-4{padding:1rem}.align-middle{vertical-align:middle}.text-sm{font-size:.875rem;line-height:1.25rem}.text-blue-gray-400{--tw-text-opacity:1;color:rgba(148,163,184,var(--tw-text-opacity))}*,:after,:before{--tw-shadow:0 0 transparent}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,0.1),0 1px 2px 0 rgba(0,0,0,0.06)}.shadow,.shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,0.1),0 4px 6px -2px rgba(0,0,0,0.05)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,0.1),0 10px 10px -5px rgba(0,0,0,0.04)}.shadow-none,.shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 transparent}*,:after,:before{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,0.5);--tw-ring-offset-shadow:0 0 transparent;--tw-ring-shadow:0 0 transparent}.transition{transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}
\ No newline at end of file
diff --git a/docs/_nuxt/js/002cbf7ddf03f9d8fc36.js b/docs/_nuxt/js/002cbf7ddf03f9d8fc36.js
new file mode 100644
index 0000000..5eaeced
--- /dev/null
+++ b/docs/_nuxt/js/002cbf7ddf03f9d8fc36.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[16],{317:function(e,n,t){"use strict";t.r(n),n.default="# Apache ECharts 5.6.0 Features\n\n## Define Region Styles in Original GeoJSON Data\n\nECharts maps use GeoJSON format to define data. In theory, following the principle of \"separation of data and style\", GeoJSON should only define data while styles should be defined in ECharts. However, in some cases, styles themselves are a form of data expression (for example: using dashed lines to represent disputed borders - here the \"dashed line\" is a style but actually expresses a data concept, so defining styles in GeoJSON is reasonable).\n\nIn ECharts 5.6.0, we support defining region styles in the original GeoJSON data by specifying `features[].properties.echartsStyle`. This is consistent with the [data](${optionPath}series-map.data) option, which supports configuring `itemStyle`, `label`, `tooltip` etc. Example:\n\n```ts\ngeoJSON.features[0].properties.echartsStyle = {\n    itemStyle: {\n        areaColor: 'green'\n    }\n}\n\ngeoJSON.features[1].properties.echartsStyle = {\n    selected: true,\n    label: {\n        formatter: 'Default Selected:\\n{b}'\n    }\n}\n\ngeoJSON.features[2].properties.echartsStyle = {\n    itemStyle: {\n        borderType: 'dotted',\n        borderColor: 'blue'\n    }\n}\n\ngeoJSON.features[11].properties.echartsStyle = {\n    itemStyle: {\n        // This region will be overridden as `cyan` by the data item option\n        areaColor: 'black'\n    },\n    tooltip: {\n        formatter: function (params) {\n            return 'This is a custom tooltip from GeoJSON: ' + params.name;\n        }\n    }\n}\n```\n\n## Axis Labels Support Tooltips\n\nIn some cases, axis labels are too long or we want to display more information on axis labels. In ECharts 5.6.0, we support adding tooltips to axis labels. The configuration is consistent with the `tooltip` option, please refer to [axis.tooltip documentation](${optionPath}xAxis.tooltip) for details.\n\n![](images/5-6-0/axis-tooltip.png)\n\n## Sunburst Chart Supports Focusing All Descendants and Ancestors\n\nIn previous versions of sunburst charts, [emphasis.focus](${optionPath}series-sunburst.emphasis.focus) supported the following values:\n\n- `'none'` Do not fade out other data, it's by default.\n- `'self'` Only focus (not fade out) the element of the currently highlighted data.\n- `'series'` Focus on all elements of the series which the currently highlighted data belongs to.\n- `'ancestor'` Focus on all ancestor nodes.\n'descendant' Focus on all descendants nodes.\n\nIn ECharts 5.6.0, we added `'relative'`, which focuses on all descendants and ancestor nodes.\n\n![](images/5-6-0/sunburst-emphasis-relative.png)\n\n## Added Support for Two New Languages\n\nIn this version, support for Swedish and Persian languages has been added. With this, ECharts now supports 22 languages.\n\n## Line Chart Performance Optimization\n\nIn this version, we optimized the rendering performance of line charts, solving the problem of memory growth with time.\n\n## Complete Changelog\n\nView the [changelog](${mainSitePath}changelog.html#v5-6-0)\n\nThe next major version, Apache ECharts 6.0.0, is currently being actively developed and is expected to be released in the first quarter of 2025. Stay tuned for more updates.\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/012c22811074d84f61df.js b/docs/_nuxt/js/012c22811074d84f61df.js
new file mode 100644
index 0000000..926b292
--- /dev/null
+++ b/docs/_nuxt/js/012c22811074d84f61df.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[26],{327:function(e,t,n){"use strict";n.r(t),t.default='# Basic Bar Chart\n\nBar Chart is a chart that presents the comparisons among discrete data. The length of the bars is proportional related to the categorical data.\n\n<iframe max-width="830" width="100%" height="400"\nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xS18jqmX4f">\n</iframe>\n\nWhile the label of the series is long, or there are more than 10 categories in one chart, a horizontal column chart can not show all labels, or labels can only be shown tilted. It affects the appliance. Therefore, we use a vertical bar chart to get a better display effect.\n\n<iframe max-width="830" width="100%" height="400"\nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xByXtUE7Vz">\n</iframe>\n\n## Suggestions for Using Bar Chart\n\n1. Avoid using too many colors. One bar chart represents one set of metrics in general so that we suggest to use the same color or at least different shades of the same color. You can use a contrasting color to highlight meaningful data points.\n\n<iframe max-width="830" width="100%" height="400"\nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xByYRlN7Ef">\n</iframe>\n\n2. The gap between bars should be appropriate. When they are too close, the attention of the user may be focused on the gap between bars. A reasonable width should be not less than twice the gap between the bars.\n\n3. Data on Y-axis should be started from 0, to reflect the value appropriately. If the y-axis is incomplete, it will mislead the user to make wrong judgments. For instance, the chart on the left side shows that the income in 2017 is 4 times higher than in 2014. But the chart on the right side shows the truth that the income in 2017 only increased by 25% compared with 2014.\n\n<img max-width="830" width="100%" height="100%"\nsrc="images/design/bar/bar03.jpg">\n</img>\n\n4. When sorting multiple data, if it is not related to some specific value like date, it is better to comply with a certain logic and guide the user to check the data in an intuitive way. In short, logical sorting can lead the user to read data better to a certain extent.\n\n<iframe max-width="830" width="100%" height="400"\nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xHJhWhGm4M">\n</iframe>\n\nWe don\'t recommend using a 3D bar chart because the data transmission is not accurate. Users even have to guess which is the top of the bar.\n\n<img max-width="830" width="100%" height="100%"\nsrc="images/design/bar/bar04.jpg">\n</img>\n'}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/015e2f50ae0ece38b86c.js b/docs/_nuxt/js/015e2f50ae0ece38b86c.js
new file mode 100644
index 0000000..5dc56f5
--- /dev/null
+++ b/docs/_nuxt/js/015e2f50ae0ece38b86c.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[56],{357:function(e,t,n){"use strict";n.r(t),t.default="# Stacked Bar Chart\n\nSometimes, we hope to not only figure series separately but also the trend of the sum. It's a good choice to implement it by using the stacked bar chart. As the name suggests, in the stacked bar chart, data in the same category will be stacked up in one column. The overall height of the bar explained the change of total.\n\nThere is a simple way to implement a stacked bar chart by ECharts. You need to set the same string type value for a group of series in `stack`. The series with the same `stack` value will be in the same category.\n\n```js live\noption = {\n  xAxis: {\n    data: ['A', 'B', 'C', 'D', 'E']\n  },\n  yAxis: {},\n  series: [\n    {\n      data: [10, 22, 28, 43, 49],\n      type: 'bar',\n      stack: 'x'\n    },\n    {\n      data: [5, 4, 3, 5, 10],\n      type: 'bar',\n      stack: 'x'\n    }\n  ]\n};\n```\n\nIn this case, the position of the second series is based on the position of the first series, the height increased is corresponding to the first series' height. Therefore, from the position of the second series, you can find the changing trend of the sum of the two.\n\n> The value of `stack` explained what series will be stacked up together. Theoretically, the specific value of 'stack' is meaningless. However, we prefer some suggestive strings for the convenience of reading.\n>\n> For instance, here is a chart with 4 series that counted the amount of male and female. \"adult male\" and \"boy\" need to be stacked while \"adult female\" and \"girl\" need to be stacked. In this case, the suggestive value of `stack` is `'male'` and `'female'`. Although meaningless strings like `'a'` and `'b'` can achieve the same effect but the code will have worse readability.\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/03a9a60290e667267d31.js b/docs/_nuxt/js/03a9a60290e667267d31.js
new file mode 100644
index 0000000..8a3b7c5
--- /dev/null
+++ b/docs/_nuxt/js/03a9a60290e667267d31.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[117],{418:function(n,w,o){"use strict";o.r(w),w.default=""}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/073ea6a96dd031bd2a9b.js b/docs/_nuxt/js/073ea6a96dd031bd2a9b.js
new file mode 100644
index 0000000..07ed624
--- /dev/null
+++ b/docs/_nuxt/js/073ea6a96dd031bd2a9b.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[22],{323:function(e,n,r){"use strict";r.r(n),n.default="# Render with SVG or Canvas\n\nMost browser-side chart libraries use SVG or Canvas as the underlying renderer. Generally, both technologies are interchangeable and have a similar effect. However, the difference may be notable in some specific scenarios and cases. As a result, it's always a hard choice to decide which technology to render charts.\n\nCanvas has been used as the renderer of ECharts from the beginning. Since [v4.0](https://echarts.apache.org/en/changelog.html#v4-0-0), ECharts has provided the SVG renderer as an additional option. You can specify the [renderer parameter](${mainSitePath}api.html#echarts.init) as `'canvas'` or `'svg'` when initializing the chart.\n\n> SVG and Canvas have a significant difference in use. The uniform support for both technologies in ECharts is attributed to the abstraction and implementation of the underlying library [ZRender](https://github.com/ecomfe/zrender).\n\n## How to Choose a Renderer\n\nGenerally, Canvas is more suitable for charts with a large number of elements (heat map, large-scale line or scatter plot in geo or parallel coordinates, etc.), and with visual [effect](${mainSitePath}examples/editor.html?c=lines-bmap-effect). However, SVG has an important advantage: It has less memory usage (which is important for mobile devices) and won't be blurry when zooming in.\n\nThe choice of renderer can be based on a combination of hardware and software environment, data volume and functional requirements.\n\n- In scenarios where the hardware and software environment is good and the amount of data is not too large, both renderers will work and there is not much need to agonize over them.\n- In scenarios where the environment is poor and performance issues arise that require optimization, experimentation can be used to determine which renderer to use. For example, there are these experiences.\n  - In situations where many instances of ECharts have to be created and the browser is prone to crashing (probably because the number of Canvas is causing the memory footprint to exceed the phone's capacity), the SVG renderer can be used to make improvements. Roughly speaking, the SVG renderer may work better if the chart is running on a low-end Android, or if we are using specific charts such as the [LiquidFill chart](https://ecomfe.github.io/echarts-liquidfill/example/).\n  - For larger amounts of data (>1k is an experience value), canvas renderer is always recommended.\n\nWe strongly welcome [feedback](https://github.com/apache/echarts/issues/new) from developers on their experiences and scenarios to help us make better optimizations.\n\nNote: Currently, some special effects still relies on Canvas: e.g. [trail effect](${optionPath}series-lines.effect), [heatmap with blending effect](${mainSitePath}examples/editor.html?c=heatmap-bmap), etc.\n\nSince [v5.3.0](${lang}/basics/release-note/5-3-0/#new-svg-renderer), the SVG renderer got refactored using the Virtual DOM, the performance got improved by 2-10 times and it can even be dozens of times in some specific scenarios! Refer to [#836](https://github.com/ecomfe/zrender/pull/836) for more details.\n\n## How to Use the Renderer\n\nIf `echarts` is fully imported in the following way, it already automatically imported and registered the SVG renderer and the Canvas renderer.\n\n```js\nimport * as echarts from 'echarts';\n```\n\nIf you are using [tree-shakable import](${lang}/basics/import), you will need to import the required renderers manually.\n\n```js\nimport * as echarts from 'echarts/core';\n// You can use only the renderers you need\nimport { SVGRenderer, CanvasRenderer } from 'echarts/renderers';\n\necharts.use([SVGRenderer, CanvasRenderer]);\n```\n\nThen you can set the [renderer parameter](${mainSitePath}api.html#echarts.init) when initializing the chart.\n\n```js\n// Use the Canvas renderer (default)\nvar chart = echarts.init(containerDom, null, { renderer: 'canvas' });\n// Equivalent to\nvar chart = echarts.init(containerDom);\n\n// use the SVG renderer\nvar chart = echarts.init(containerDom, null, { renderer: 'svg' });\n```\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/08e2e6d9237d49aa7542.js b/docs/_nuxt/js/08e2e6d9237d49aa7542.js
new file mode 100644
index 0000000..723c1c5
--- /dev/null
+++ b/docs/_nuxt/js/08e2e6d9237d49aa7542.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[20],{321:function(e,t,n){"use strict";n.r(t),t.default="# Apache ECharts 6 Upgrade Guide\n\nThis guide is for users who wish to upgrade from echarts 5.x (hereinafter referred to as `v5`) to echarts 6.x (hereinafter referred to as `v6`). You can learn about the new features brought by `v6` in [ECharts 6 New Features](${lang}/basics/release-note/v6-feature). In most cases, developers do not need to do anything extra for this upgrade, as echarts has always tried to keep the API stable and backward compatible. However, `v6` does introduce some breaking changes that require special attention. In addition, in some cases, `v6` provides better APIs to replace previous ones, and these replaced APIs are no longer recommended (of course, we have tried to maintain compatibility for these changes). We will explain these changes in detail in this document.\n\n## How to Upgrade\n\nYou can download the latest source code and builds from the [official download page](${mainSitePath}download.html). If you use npm, upgrade with:\n\n```sh\nnpm install echarts@6\n```\n\n## Breaking Changes\n\n### Default Theme\n\nFirst, the default theme has changed. `v6` has made many optimizations in color schemes and theme design for better visual effects. If you want to keep the old version's colors, you can use the [echarts/theme/v5.js](https://github.com/apache/echarts/blob/master/theme/v5.js) theme file and initialize the chart as follows:\n\n```js\nimport 'echarts/theme/v5';\nconst chart = echarts.init(document.getElementById('container'), 'v5');\n```\n\nNote that the new styles in `v6` not only change the theme colors, but also optimize and adjust the default positions and sizes of some components (for example, the default position of the legend is now at the bottom of the canvas). Using `echarts/theme/v5.js` can restore the previous default positions and sizes of components.\n\nIf you don't mind other changes but only want to restore the default color palette to that of v5, you can create a theme that only defines the v5 default colors:\n\n```js\nconst colorPaletteV5 = [\n    '#5470c6',\n    '#91cc75',\n    '#fac858',\n    '#ee6666',\n    '#73c0de',\n    '#3ba272',\n    '#fc8452',\n    '#9a60b4',\n    '#ea7ccc'\n];\necharts.registerTheme('myTheme', { color: colorPaletteV5 });\nconst chart = echarts.init(document.getElementById('container'), 'myTheme');\n```\n\nIn addition, the `echarts/src/theme/light.ts` file from v5 has been moved to `echarts/theme/rainbow.js`.\n\n### Label Position\n\nIn Cartesian coordinate systems (`grid` component), if axis names (`axisName`) or labels (`axisLabel`) previously overflowed the canvas or overlapped, the position of the axes may shift slightly after upgrading, because overflow prevention and axis name/label overlap prevention are now enabled by default. In most cases, these changes are barely noticeable. But if there are unreasonable changes, you can disable the overflow prevention by setting [grid.outerBoundsMode: 'none'](${mainSitePath}option.html#grid.outerBoundsMode), or disable the overlap prevention by setting [xAxis/yAxis.nameMoveOverlap: false](${mainSitePath}option.html#xAxis.nameMoveOverlap).\n\n### Rich Text\n\nIn v6, the following styles of [rich text labels (label.rich / textStyle.rich)](${mainSitePath}option.html#series-scatter.label.rich): `fontStyle`, `fontWeight`, `fontSize`, `fontFamily`, `textShadowColor`, `textShadowBlur`, `textShadowOffsetX`, and `textShadowOffsetY` will inherit from the same-named styles in [plain labels (label / textStyle)](${mainSitePath}option.html#series-scatter.label). To restore the old behavior, you can set `richInheritPlainLabel: false` at the root level of the ECharts option or in the label/textStyle option.\n\nFor example:\n```js\noption = {\n    richInheritPlainLabel: false, // Usually set here.\n    xxx1: {\n        // Or set here to only control this label.\n        label: {\n            richInheritPlainLabel: false,\n            rich: {/* ... */},\n        }\n    },\n    xxx2: {\n        textStyle: {\n            richInheritPlainLabel: false,\n            rich: {/* ... */},\n        }\n    }\n}\n```\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/104d5e865229ef368b9d.js b/docs/_nuxt/js/104d5e865229ef368b9d.js
new file mode 100644
index 0000000..42b63f9
--- /dev/null
+++ b/docs/_nuxt/js/104d5e865229ef368b9d.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[115],{416:function(n,w,o){"use strict";o.r(w),w.default=""}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/10f8285623bd712e583f.js b/docs/_nuxt/js/10f8285623bd712e583f.js
new file mode 100644
index 0000000..c98326e
--- /dev/null
+++ b/docs/_nuxt/js/10f8285623bd712e583f.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[133],{434:function(n,e,l){"use strict";l.r(e),e.default="# 圆环图\n\n圆环图同样可以用来表示数据占总体的比例,相比于饼图,它中间空余的部分可以用来显示一些额外的文字等信息,因而也是一种常用的图表类型。\n\n## 基础圆环图\n\n在 ECharts 中,饼图的半径除了上一小节提到的,可以是一个数值或者字符串之外,还可以是一个包含两个元素的数组,每个元素可以为数值或字符串。当它是一个数组时,它的前一项表示内半径,后一项表示外半径,这样就形成了一个圆环图。\n\n从这个角度上来说,可以认为饼图是一个内半径为 0 的圆环图,也就是说,饼图是圆环图的特例。\n\n```js live\noption = {\n  title: {\n    text: '圆环图的例子',\n    left: 'center',\n    top: 'center'\n  },\n  series: [\n    {\n      type: 'pie',\n      data: [\n        {\n          value: 335,\n          name: 'A'\n        },\n        {\n          value: 234,\n          name: 'B'\n        },\n        {\n          value: 1548,\n          name: 'C'\n        }\n      ],\n      radius: ['40%', '70%']\n    }\n  ]\n};\n```\n\n如果半径是数组,其中的两项也可以一项是数值,另一项是百分比形式的字符串。但是这样可能导致在某些分辨率下,内半径小于外半径。ECharts 会自动使用小的一项作为内半径,但是仍应小心这样可能会导致的非预期效果。\n\n## 在圆环图中间显示高亮扇形对应的文字\n\n上面的例子展现了在圆环图中间显示固定文字的例子,下面我们要介绍,如何在圆环图中间显示鼠标高亮的扇形对应的文字。实现这一效果的思路是,利用系列的 `label`(默认用扇形颜色显示数据的 `name`),显示在圆环图中间。在默认情况下不显示系列的 `label`,在高亮时显示。具体的代码如下:\n\n```js live\noption = {\n  legend: {\n    orient: 'vertical',\n    x: 'left',\n    data: ['A', 'B', 'C', 'D', 'E']\n  },\n  series: [\n    {\n      type: 'pie',\n      radius: ['50%', '70%'],\n      avoidLabelOverlap: false,\n      label: {\n        show: false,\n        position: 'center'\n      },\n      labelLine: {\n        show: false\n      },\n      emphasis: {\n        label: {\n          show: true,\n          fontSize: '30',\n          fontWeight: 'bold'\n        }\n      },\n      data: [\n        { value: 335, name: 'A' },\n        { value: 310, name: 'B' },\n        { value: 234, name: 'C' },\n        { value: 135, name: 'D' },\n        { value: 1548, name: 'E' }\n      ]\n    }\n  ]\n};\n```\n\n其中,`avoidLabelOverlap` 是用来控制是否由 ECharts 调整标签位置以实现防止标签重叠。它的默认值是 `true`,而在这里,我们不希望标签位置调整到不是中间的位置,因此我们需要将其设为 `false`。\n\n这样,圆环图中间会显示高亮数据的 `name` 值。\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/130639e4ac114099133a.js b/docs/_nuxt/js/130639e4ac114099133a.js
new file mode 100644
index 0000000..a193dd9
--- /dev/null
+++ b/docs/_nuxt/js/130639e4ac114099133a.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[44],{345:function(e,n,t){"use strict";t.r(n),n.default="# Event and Action\n\nUsers can trigger corresponding events by their operation. The developer can handle the callback function by listening to these events, such as jump to a new website, pop-up a dialog box, or drill down the data.\n\nThe name of the event and the DOM event is both lowercase string. Here is an example of binding listening to `click` event.\n\n```js\nmyChart.on('click', function(params) {\n  // Print name in console\n  console.log(params.name);\n});\n```\n\nThere are two kinds of event in ECharts, one happened when the user clicks the mouse or hover the elements in charts, the other happened while the user triggered some interactive actions. Such as ['legendselectchanged'](${mainSitePath}api.html#events.legendselectchanged) triggered while changing the legend selected (please notice that `legendselected` won't be triggered in this situation), ['datazoom'](${mainSitePath}api.html#events.legendselectchanged) triggered while zooming the data area.\n\n## Handling the Mouse Events\n\nECharts support general mouse events: `'click'`, `'dblclick'`, `'mousedown'`, `'mousemove'`, `'mouseup'`, `'mouseover'`, `'mouseout'`, `'globalout'`, `'contextmenu'`. This is an example of opening the search result page after clicking the bar chart.\n\n```js\n// Init the ECharts base on DOM\nvar myChart = echarts.init(document.getElementById('main'));\n\n// Config\nvar option = {\n  xAxis: {\n    data: [\n      'Shirt',\n      'Wool sweater',\n      'Chiffon shirt',\n      'Pants',\n      'High-heeled shoes',\n      'socks'\n    ]\n  },\n  yAxis: {},\n  series: [\n    {\n      name: 'Sales',\n      type: 'bar',\n      data: [5, 20, 36, 10, 10, 20]\n    }\n  ]\n};\n// Use the option and data to display the chart\nmyChart.setOption(option);\n// Click and jump to Baidu search website\nmyChart.on('click', function(params) {\n  window.open(\n    'https://www.google.com/search?q=' + encodeURIComponent(params.name)\n  );\n});\n```\n\nAll mouse events included `params` which contained the data of the object.\n\nFormat:\n\n```js\ntype EventParams = {\n  // The component name clicked,\n  // component type, could be 'series'、'markLine'、'markPoint'、'timeLine', etc..\n  componentType: string,\n  // series type, could be 'line'、'bar'、'pie', etc.. Works when componentType is 'series'.\n  seriesType: string,\n  // the index in option.series. Works when componentType is 'series'.\n  seriesIndex: number,\n  // series name, works when componentType is 'series'.\n  seriesName: string,\n  // name of data (categories).\n  name: string,\n  // the index in 'data' array.\n  dataIndex: number,\n  // incoming raw data item\n  data: Object,\n  // charts like 'sankey' and 'graph' included nodeData and edgeData as the same time.\n  // dataType can be 'node' or 'edge', indicates whether the current click is on node or edge.\n  // most of charts have one kind of data, the dataType is meaningless\n  dataType: string,\n  // incoming data value\n  value: number | Array,\n  // color of the shape, works when componentType is 'series'.\n  color: string\n};\n```\n\nIdentify where the mouse clicked.\n\n```js\nmyChart.on('click', function(params) {\n  if (params.componentType === 'markPoint') {\n    // Clicked on the markPoint\n    if (params.seriesIndex === 5) {\n      // clicked on the markPoint of the series with index = 5\n    }\n  } else if (params.componentType === 'series') {\n    if (params.seriesType === 'graph') {\n      if (params.dataType === 'edge') {\n        // clicked at the edge of graph.\n      } else {\n        // clicked at the node of graph.\n      }\n    }\n  }\n});\n```\n\nUse `query` to trigger callback of the specified component:\n\n```js\nchart.on(eventName, query, handler);\n```\n\n`query` can be `string` or `Object`.\n\nIf it is `string`, the format can be `mainType` or `mainType.subType`, such as:\n\n```js\nchart.on('click', 'series', function () {...});\nchart.on('click', 'series.line', function () {...});\nchart.on('click', 'dataZoom', function () {...});\nchart.on('click', 'xAxis.category', function () {...});\n```\n\nIf it is `Object`, `query` can include more than one attribute:\n\n```js\n{\n  ${mainType}Index: number // component index\n  ${mainType}Name: string // component name\n  ${mainType}Id: string // component id\n  dataIndex: number // data item index\n  name: string // data item name\n  dataType: string // date item type, such as 'node', 'edge'\n  element: string // name of element in custom series.\n}\n```\n\nSuch as:\n\n```js\nchart.setOption({\n  // ...\n  series: [\n    {\n      name: 'uuu'\n      // ...\n    }\n  ]\n});\nchart.on('mouseover', { seriesName: 'uuu' }, function() {\n  // when elements in series named 'uuu' triggered 'mouseover'\n});\n```\n\nFor example:\n\n```js\nchart.setOption({\n  // ...\n  series: [\n    {\n      // ...\n    },\n    {\n      // ...\n      data: [\n        { name: 'xx', value: 121 },\n        { name: 'yy', value: 33 }\n      ]\n    }\n  ]\n});\nchart.on('mouseover', { seriesIndex: 1, name: 'xx' }, function() {\n  // when data named 'xx' in series index 1 triggered 'mouseover'.\n});\n```\n\nFor example:\n\n```js\nchart.setOption({\n  // ...\n  series: [\n    {\n      type: 'graph',\n      nodes: [\n        { name: 'a', value: 10 },\n        { name: 'b', value: 20 }\n      ],\n      edges: [{ source: 0, target: 1 }]\n    }\n  ]\n});\nchart.on('click', { dataType: 'node' }, function() {\n  // call this method while the node of graph was clicked.\n});\nchart.on('click', { dataType: 'edge' }, function() {\n  // call this method while the edge of graph was clicked.\n});\n```\n\nFor example:\n\n```js\nchart.setOption({\n  // ...\n  series: {\n    // ...\n    type: 'custom',\n    renderItem: function(params, api) {\n      return {\n        type: 'group',\n        children: [\n          {\n            type: 'circle',\n            name: 'my_el'\n            // ...\n          },\n          {\n            // ...\n          }\n        ]\n      };\n    },\n    data: [[12, 33]]\n  }\n});\nchart.on('mouseup', { element: 'my_el' }, function() {\n  // when data named 'my_el' triggered 'mouseup'.\n});\n```\n\nYou can display a popup, update the charts using the query result from your database by the data name or series name in the callback function. Here is an example:\n\n```js\nmyChart.on('click', function(parmas) {\n  $.get('detail?q=' + params.name, function(detail) {\n    myChart.setOption({\n      series: [\n        {\n          name: 'pie',\n          // using pie chart to show the data distribution in one column.\n          data: [detail.data]\n        }\n      ]\n    });\n  });\n});\n```\n\n## Event of Component Interaction\n\nAll Component Interaction in ECharts will trigger a corresponding event. Normal events and parameters are listed in the [events](${mainSitePath}/api.html#events) document.\n\nHere is an example of listening to legend event:\n\n```js\n// Show/hide the legend only trigger legendselectchanged event\nmyChart.on('legendselectchanged', function(params) {\n  // State if legend is selected.\n  var isSelected = params.selected[params.name];\n  // print in the console.\n  console.log(\n    (isSelected ? 'Selected' : 'Not Selected') + 'legend' + params.name\n  );\n  // print for all legends.\n  console.log(params.selected);\n});\n```\n\n## Writing Code to Trigger Component Action Manually\n\nYou can trigger events such as `'legendselectchanged'` not only by the user but also with code manually. It can be used to display the tooltip, select the legend.\n\nIn ECharts `myChart.dispatchAction({ type: '' })` is used to trigger the behavior. This manages all actions and can record the behaviors conveniently.\n\nCommonly used behavior and corresponding parameters are listed in [action](${mainSitePath}/api.html#action).\n\nThe following example shows how to highlight each sector one by one in the pie chart using `dispatchAction`.\n\n```js live\noption = {\n  tooltip: {\n    trigger: 'item',\n    formatter: '{a} <br/>{b} : {c} ({d}%)'\n  },\n  legend: {\n    orient: 'vertical',\n    left: 'left',\n    data: [\n      'Direct Access',\n      'Email Marketing',\n      'Affiliate Ads',\n      'Video Ads',\n      'Search Engines'\n    ]\n  },\n  series: [\n    {\n      name: 'Access Source',\n      type: 'pie',\n      radius: '55%',\n      center: ['50%', '60%'],\n      data: [\n        { value: 335, name: 'Direct Access' },\n        { value: 310, name: 'Email Marketing' },\n        { value: 234, name: 'Affiliate Ads' },\n        { value: 135, name: 'Video Ads' },\n        { value: 1548, name: 'Search Engines' }\n      ],\n      emphasis: {\n        itemStyle: {\n          shadowBlur: 10,\n          shadowOffsetX: 0,\n          shadowColor: 'rgba(0, 0, 0, 0.5)'\n        }\n      }\n    }\n  ]\n};\n\nlet currentIndex = -1;\n\nsetInterval(function() {\n  var dataLen = option.series[0].data.length;\n  myChart.dispatchAction({\n    type: 'downplay',\n    seriesIndex: 0,\n    dataIndex: currentIndex\n  });\n  currentIndex = (currentIndex + 1) % dataLen;\n  myChart.dispatchAction({\n    type: 'highlight',\n    seriesIndex: 0,\n    dataIndex: currentIndex\n  });\n  myChart.dispatchAction({\n    type: 'showTip',\n    seriesIndex: 0,\n    dataIndex: currentIndex\n  });\n}, 1000);\n```\n\n## Listen to Events on the Blank Area\n\nSometimes developers need to listen to the events that are triggered from the blank of the canvas. For example, need to reset the chart when users click on the blank area.\n\nBefore we talk about this feature, we need to clarify two kinds of events: zrender events and echarts events.\n\n```js\nmyChart.getZr().on('click', function(event) {\n  // This listener is listening to a `zrender event`.\n});\nmyChart.on('click', function(event) {\n  // This listener is listening to a `echarts event`.\n});\n```\n\nzrender events are different from echarts events. The former one are triggered when mouse/pointer is at everywhere, while the latter one can only be triggered when mouse/pointer is at the graphic elements. In fact, echarts events are implemented based on zrender events, that is, when a zrender events is triggered at a graphic element, echarts will trigger a echarts event.\n\nHaving zrender events, we can implement listen to events from the blank as follows:\n\n```js\nmyChart.getZr().on('click', function(event) {\n  // No \"target\" means that mouse/pointer is not on\n  // any of the graphic elements, which is \"blank\".\n  if (!event.target) {\n    // Click on blank. Do something.\n  }\n});\n```\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/16336bf6097484a5086b.js b/docs/_nuxt/js/16336bf6097484a5086b.js
new file mode 100644
index 0000000..86da734
--- /dev/null
+++ b/docs/_nuxt/js/16336bf6097484a5086b.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[42],{343:function(e,n,t){"use strict";t.r(n),n.default="# Data Transform\n\n`Data transform` has been supported since Apache ECharts<sup>TM</sup> 5. In echarts, the term `data transform` refers to generating new data from user provided source data using transform functions. This feature enables users to process data in a declarative way and provides users several common \"transform functions\" to make such tasks work \"out-of-the-box\". (For consistency, we use the noun form \"transform\" rather than \"transformation.\")\n\nThe abstract formula of a data transform is: `outData = f(inputData)`, where the transform function `f` can be `filter`, `sort`, `regression`, `boxplot`, `cluster`, `aggregate` and so on.\nWith the help of these transform functions, users can implement features like:\n\n- Partition data into multiple series.\n- Compute statistics and visualize the results.\n- Adapt visualization algorithms to the data and display the results.\n- Sort data.\n- Remove or choose certain kind of empty or special datums.\n- ...\n\n## Get Started to Data Transform\n\nIn echarts, data transform is implemented based on the concept of [dataset](${optionPath}#dataset).You can specify a [dataset.transform](${optionPath}#dataset.transform) within a dataset instance to indicate that the dataset should be generated using the defined `transform`. For example:\n\n```js live\nvar option = {\n  dataset: [\n    {\n      // This dataset is on `datasetIndex: 0`.\n      source: [\n        ['Product', 'Sales', 'Price', 'Year'],\n        ['Cake', 123, 32, 2011],\n        ['Cereal', 231, 14, 2011],\n        ['Tofu', 235, 5, 2011],\n        ['Dumpling', 341, 25, 2011],\n        ['Biscuit', 122, 29, 2011],\n        ['Cake', 143, 30, 2012],\n        ['Cereal', 201, 19, 2012],\n        ['Tofu', 255, 7, 2012],\n        ['Dumpling', 241, 27, 2012],\n        ['Biscuit', 102, 34, 2012],\n        ['Cake', 153, 28, 2013],\n        ['Cereal', 181, 21, 2013],\n        ['Tofu', 395, 4, 2013],\n        ['Dumpling', 281, 31, 2013],\n        ['Biscuit', 92, 39, 2013],\n        ['Cake', 223, 29, 2014],\n        ['Cereal', 211, 17, 2014],\n        ['Tofu', 345, 3, 2014],\n        ['Dumpling', 211, 35, 2014],\n        ['Biscuit', 72, 24, 2014]\n      ]\n      // id: 'a'\n    },\n    {\n      // This dataset is on `datasetIndex: 1`.\n      // A `transform` is configured to indicate that the\n      // final data of this dataset is transformed via this\n      // transform function.\n      transform: {\n        type: 'filter',\n        config: { dimension: 'Year', value: 2011 }\n      }\n      // There can be optional properties `fromDatasetIndex` or `fromDatasetId`\n      // to indicate that where is the input data of the transform from.\n      // For example, `fromDatasetIndex: 0` specify the input data is from\n      // the dataset on `datasetIndex: 0`, or `fromDatasetId: 'a'` specify the\n      // input data is from the dataset having `id: 'a'`.\n      // [DEFAULT_RULE]\n      // If both `fromDatasetIndex` and `fromDatasetId` are omitted,\n      // `fromDatasetIndex: 0` are used by default.\n    },\n    {\n      // This dataset is on `datasetIndex: 2`.\n      // Similarly, if neither `fromDatasetIndex` nor `fromDatasetId` is\n      // specified, `fromDatasetIndex: 0` is used by default\n      transform: {\n        // The \"filter\" transform filters and gets data items only match\n        // the given condition in property `config`.\n        type: 'filter',\n        // Transforms has a property `config`. In this \"filter\" transform,\n        // the `config` specify the condition that each result data item\n        // should be satisfied. In this case, this transform get all of\n        // the data items that the value on dimension \"Year\" equals to 2012.\n        config: { dimension: 'Year', value: 2012 }\n      }\n    },\n    {\n      // This dataset is on `datasetIndex: 3`\n      transform: {\n        type: 'filter',\n        config: { dimension: 'Year', value: 2013 }\n      }\n    }\n  ],\n  series: [\n    {\n      type: 'pie',\n      radius: 50,\n      center: ['25%', '50%'],\n      // In this case, each \"pie\" series reference to a dataset that has\n      // the result of its \"filter\" transform.\n      datasetIndex: 1\n    },\n    {\n      type: 'pie',\n      radius: 50,\n      center: ['50%', '50%'],\n      datasetIndex: 2\n    },\n    {\n      type: 'pie',\n      radius: 50,\n      center: ['75%', '50%'],\n      datasetIndex: 3\n    }\n  ]\n};\n```\n\nLet's summarize the key points of using data transform:\n\n- Generate new data from existing declared data via the declaration of `transform`, `fromDatasetIndex`/`fromDatasetId` in some blank dataset.\n- Series references these datasets to show the result.\n\n## Advanced Usage\n\n#### Piped Transform\n\nThere is a syntactic sugar that pipe transforms like:\n\n```js\noption = {\n  dataset: [\n    {\n      source: [] // The original data\n    },\n    {\n      // Declare transforms in an array to pipe multiple transforms,\n      // which makes them execute one by one and take the output of\n      // the previous transform as the input of the next transform.\n      transform: [\n        {\n          type: 'filter',\n          config: { dimension: 'Product', value: 'Tofu' }\n        },\n        {\n          type: 'sort',\n          config: { dimension: 'Year', order: 'desc' }\n        }\n      ]\n    }\n  ],\n  series: {\n    type: 'pie',\n    // Display the result of the piped transform.\n    datasetIndex: 1\n  }\n};\n```\n\n> Note: theoretically any type of transform is able to have multiple input data and multiple output data. But when a transform is piped, it is only able to take one input (except it is the first transform of the pipe) and product one output (except it is the last transform of the pipe).\n\n#### Output Multiple Data\n\nIn most cases, transform functions only need to produce one data. But there is indeed scenarios that a transform function needs to produce multiple data, each of whom might be used by different series.\n\nFor example, in the built-in boxplot transform, besides boxplot data produced, the outlier data are also produced, which can be used in a scatter series. See the [example](${exampleEditorPath}boxplot-light-velocity).\n\nWe use prop [dataset.fromTransformResult](${optionPath}#dataset.fromTransformResult) to satisfy this requirement. For example:\n\n```js\noption = {\n  dataset: [\n    {\n      // Original source data.\n      source: []\n    },\n    {\n      transform: {\n        type: 'boxplot'\n      }\n      // After this \"boxplot transform\" two result data generated:\n      // result[0]: The boxplot data\n      // result[1]: The outlier data\n      // By default, when series or other dataset reference this dataset,\n      // only result[0] can be visited.\n      // If we need to visit result[1], we have to use another dataset\n      // as follows:\n    },\n    {\n      // This extra dataset references the dataset above, and retrieves\n      // the result[1] as its own data. Thus series or other dataset can\n      // reference this dataset to get the data from result[1].\n      fromDatasetIndex: 1,\n      fromTransformResult: 1\n    }\n  ],\n  xAxis: {\n    type: 'category'\n  },\n  yAxis: {},\n  series: [\n    {\n      name: 'boxplot',\n      type: 'boxplot',\n      // Reference the data from result[0].\n      datasetIndex: 1\n    },\n    {\n      name: 'outlier',\n      type: 'scatter',\n      // Reference the data from result[1].\n      datasetIndex: 2\n    }\n  ]\n};\n```\n\nWhat more, [dataset.fromTransformResult](${optionPath}#dataset.fromTransformResult) and [dataset.transform](${optionPath}#dataset.transform) can both appear in one dataset, which means that the input of the transform is from retrieved from the upstream result specified by `fromTransformResult`. For example:\n\n```js\n{\n  fromDatasetIndex: 1,\n  fromTransformResult: 1,\n  transform: {\n    type: 'sort',\n    config: { dimension: 2, order: 'desc' }\n  }\n}\n```\n\n#### Debug in Develop Environment\n\nWhen using data transform, we might run into the trouble that the final chart do not display correctly but we do not know where the config is wrong. There is a property `transform.print` might help in such case. (`transform.print` is only available in dev environment).\n\n```js\noption = {\n  dataset: [\n    {\n      source: []\n    },\n    {\n      transform: {\n        type: 'filter',\n        config: {},\n        // The result of this transform will be printed\n        // in dev tool via `console.log`.\n        print: true\n      }\n    }\n  ]\n};\n```\n\n## Filter Transform\n\nTransform type \"filter\" is a built-in transform that provide data filter according to specified conditions. The basic option is like:\n\n```js live\noption = {\n  dataset: [\n    {\n      source: [\n        ['Product', 'Sales', 'Price', 'Year'],\n        ['Cake', 123, 32, 2011],\n        ['Latte', 231, 14, 2011],\n        ['Tofu', 235, 5, 2011],\n        ['Milk Tee', 341, 25, 2011],\n        ['Porridge', 122, 29, 2011],\n        ['Cake', 143, 30, 2012],\n        ['Latte', 201, 19, 2012],\n        ['Tofu', 255, 7, 2012],\n        ['Milk Tee', 241, 27, 2012],\n        ['Porridge', 102, 34, 2012],\n        ['Cake', 153, 28, 2013],\n        ['Latte', 181, 21, 2013],\n        ['Tofu', 395, 4, 2013],\n        ['Milk Tee', 281, 31, 2013],\n        ['Porridge', 92, 39, 2013],\n        ['Cake', 223, 29, 2014],\n        ['Latte', 211, 17, 2014],\n        ['Tofu', 345, 3, 2014],\n        ['Milk Tee', 211, 35, 2014],\n        ['Porridge', 72, 24, 2014]\n      ]\n    },\n    {\n      transform: {\n        type: 'filter',\n        config: { dimension: 'Year', '=': 2011 }\n        // The config is the \"condition\" of this filter.\n        // This transform traverse the source data and\n        // and retrieve all the items that the \"Year\"\n        // is `2011`.\n      }\n    }\n  ],\n  series: {\n    type: 'pie',\n    datasetIndex: 1\n  }\n};\n```\n\nThis is another example of filter transform:\n\n<md-example src=\"data-transform-filter\"></md-example>\n\n**About dimension:**\n\nThe `config.dimension` can be:\n\n- Dimension name declared in dataset, like `config: { dimension: 'Year', '=': 2011 }`. Dimension name declaration is not mandatory.\n- Dimension index (start from 0), like `config: { dimension: 3, '=': 2011 }`.\n\n**About relational operator:**\n\nThe relational operator can be:\n`>`(`gt`), `>=`(`gte`), `<`(`lt`), `<=`(`lte`), `=`(`eq`), `!=`(`ne`, `<>`), `reg`. (The name in the parentheses are aliases). They follows the common semantics.\nBesides the common number comparison, there is some extra features:\n\n- Multiple operators are able to appear in one {} item like `{ dimension: 'Price', '>=': 20, '<': 30 }`, which means logical \"and\" (Price >= 20 and Price < 30).\n- The data value can be \"numeric string\". Numeric string is a string that can be converted to number. Like ' 123 '. White spaces and line breaks will be auto trimmed in the conversion.\n- If we need to compare \"JS `Date` instance\" or date string (like '2012-05-12'), we need to specify `parser: 'time'` manually, like `config: { dimension: 3, lt: '2012-05-12', parser: 'time' }`.\n- Pure string comparison is supported but can only be used in `=`, `!=`. `>`, `>=`, `<`, `<=` do not support pure string comparison (the \"right value\" of the four operators can not be a \"string\").\n- The operator `reg` can be used to make regular expression test. Like using `{ dimension: 'Name', reg: /\\s+Müller\\s*$/ }` to select all data items that the \"Name\" dimension contains family name Müller.\n\n**About logical relationship:**\n\nSometimes we also need to express logical relationship ( `and` / `or` / `not` ):\n\n```js\noption = {\n  dataset: [\n    {\n      source: [\n        // ...\n      ]\n    },\n    {\n      transform: {\n        type: 'filter',\n        config: {\n          // Use operator \"and\".\n          // Similarly, we can also use \"or\", \"not\" in the same place.\n          // But \"not\" should be followed with a {...} rather than `[...]`.\n          and: [\n            { dimension: 'Year', '=': 2011 },\n            { dimension: 'Price', '>=': 20, '<': 30 }\n          ]\n        }\n        // The condition is \"Year\" is 2011 and \"Price\" is greater\n        // or equal to 20 but less than 30.\n      }\n    }\n  ],\n  series: {\n    type: 'pie',\n    datasetIndex: 1\n  }\n};\n```\n\n`and`/`or`/`not` can be nested like:\n\n```js\ntransform: {\n  type: 'filter',\n  config: {\n    or: [{\n      and: [{\n        dimension: 'Price', '>=': 10, '<': 20\n      }, {\n        dimension: 'Sales', '<': 100\n      }, {\n        not: { dimension: 'Product', '=': 'Tofu' }\n      }]\n    }, {\n      and: [{\n        dimension: 'Price', '>=': 10, '<': 20\n      }, {\n        dimension: 'Sales', '<': 100\n      }, {\n        not: { dimension: 'Product', '=': 'Cake' }\n      }]\n    }]\n  }\n}\n```\n\n**About parser:**\n\nSome \"parser\" can be specified when make value comparison. At present only supported:\n\n- `parser: 'time'`: Parse the value to date time before comparing. The parser rule is the same as `echarts.time.parse`, where JS `Date` instance, timestamp number (in millisecond) and time string (like `'2012-05-12 03:11:22'`) are supported to be parse to timestamp number, while other value will be parsed to `NaN`.\n- `parser: 'trim'`: Trim the string before making comparison. For non-string, return the original value.\n- `parser: 'number'`: Force to convert the value to number before making comparison. If not possible to be converted to a meaningful number, converted to `NaN`. In most cases it is not necessary, because by default the value will be auto converted to number if possible before making comparison. But the default conversion is strict while this parser provide a loose strategy. If we meet the case that number string with unit suffix (like `'33%'`, `12px`), we should use `parser: 'number'` to convert them to number before making comparison.\n\nThis is an example to show the `parser: 'time'`:\n\n```js\noption = {\n  dataset: [\n    {\n      source: [\n        ['Product', 'Sales', 'Price', 'Date'],\n        ['Milk Tee', 311, 21, '2012-05-12'],\n        ['Cake', 135, 28, '2012-05-22'],\n        ['Latte', 262, 36, '2012-06-02'],\n        ['Milk Tee', 359, 21, '2012-06-22'],\n        ['Cake', 121, 28, '2012-07-02'],\n        ['Latte', 271, 36, '2012-06-22']\n        // ...\n      ]\n    },\n    {\n      transform: {\n        type: 'filter',\n        config: {\n          dimension: 'Date',\n          '>=': '2012-05',\n          '<': '2012-06',\n          parser: 'time'\n        }\n      }\n    }\n  ]\n};\n```\n\n**Formally definition:**\n\nFinally, we give the formally definition of the filter transform config here:\n\n```ts\ntype FilterTransform = {\n  type: 'filter';\n  config: ConditionalExpressionOption;\n};\ntype ConditionalExpressionOption =\n  | true\n  | false\n  | RelationalExpressionOption\n  | LogicalExpressionOption;\ntype RelationalExpressionOption = {\n  dimension: DimensionName | DimensionIndex;\n  parser?: 'time' | 'trim' | 'number';\n  lt?: DataValue; // less than\n  lte?: DataValue; // less than or equal\n  gt?: DataValue; // greater than\n  gte?: DataValue; // greater than or equal\n  eq?: DataValue; // equal\n  ne?: DataValue; // not equal\n  '<'?: DataValue; // lt\n  '<='?: DataValue; // lte\n  '>'?: DataValue; // gt\n  '>='?: DataValue; // gte\n  '='?: DataValue; // eq\n  '!='?: DataValue; // ne\n  '<>'?: DataValue; // ne (SQL style)\n  reg?: RegExp | string; // RegExp\n};\ntype LogicalExpressionOption = {\n  and?: ConditionalExpressionOption[];\n  or?: ConditionalExpressionOption[];\n  not?: ConditionalExpressionOption;\n};\ntype DataValue = string | number | Date;\ntype DimensionName = string;\ntype DimensionIndex = number;\n```\n\n> Note that when using [Minimal Bundle](${lang}/basics/import#shrinking-bundle-size), if you need to use this built-in transform, besides the `Dataset` component, it's required to import the `Transform` component.\n\n```ts\nimport {\n  DatasetComponent,\n  TransformComponent\n} from 'echarts/components';\n\necharts.use([\n  DatasetComponent,\n  TransformComponent\n]);\n```\n\n## Sort Transform\n\nAnother built-in transform is \"sort\".\n\n```js\noption = {\n  dataset: [\n    {\n      dimensions: ['name', 'age', 'profession', 'score', 'date'],\n      source: [\n        [' Hannah Krause ', 41, 'Engineer', 314, '2011-02-12'],\n        ['Zhao Qian ', 20, 'Teacher', 351, '2011-03-01'],\n        [' Jasmin Krause ', 52, 'Musician', 287, '2011-02-14'],\n        ['Li Lei', 37, 'Teacher', 219, '2011-02-18'],\n        [' Karle Neumann ', 25, 'Engineer', 253, '2011-04-02'],\n        [' Adrian Groß', 19, 'Teacher', null, '2011-01-16'],\n        ['Mia Neumann', 71, 'Engineer', 165, '2011-03-19'],\n        [' Böhm Fuchs', 36, 'Musician', 318, '2011-02-24'],\n        ['Han Meimei ', 67, 'Engineer', 366, '2011-03-12']\n      ]\n    },\n    {\n      transform: {\n        type: 'sort',\n        // Sort by score.\n        config: { dimension: 'score', order: 'asc' }\n      }\n    }\n  ],\n  series: {\n    type: 'bar',\n    datasetIndex: 1\n  }\n  // ...\n};\n```\n\n<md-example src=\"data-transform-sort-bar\"></md-example>\n\nSome extra features about \"sort transform\":\n\n- Order by multiple dimensions is supported. See examples below.\n- The sort rule:\n  - By default \"numeric\" (that is, number and numeric-string like `' 123 '`) are able to sorted by numeric order.\n  - Otherwise \"non-numeric-string\" are also able to be ordered among themselves. This might help to the case like grouping data items with the same tag, especially when multiple dimensions participated in the sort (See example below).\n  - When \"numeric\" is compared with \"non-numeric-string\", or either of them is compared with other types of value, they are not comparable. So we call the latter one as \"incomparable\" and treat it as \"min value\" or \"max value\" according to the prop `incomparable: 'min' | 'max'`. This feature usually helps to decide whether to put the empty values (like `null`, `undefined`, `NaN`, `''`, `'-'`) or other illegal values to the head or tail.\n- `parser: 'time' | 'trim' | 'number'` can be used, the same as \"filter transform\".\n  - If intending to sort time values (JS `Date` instance or time string like `'2012-03-12 11:13:54'`), `parser: 'time'` should be specified. Like `config: { dimension: 'date', order: 'desc', parser: 'time' }`\n  - If intending to sort values with unit suffix (like `'33%'`, `'16px'`), need to use `parser: 'number'`.\n\nSee an example of multiple order:\n\n```js\noption = {\n  dataset: [\n    {\n      dimensions: ['name', 'age', 'profession', 'score', 'date'],\n      source: [\n        [' Hannah Krause ', 41, 'Engineer', 314, '2011-02-12'],\n        ['Zhao Qian ', 20, 'Teacher', 351, '2011-03-01'],\n        [' Jasmin Krause ', 52, 'Musician', 287, '2011-02-14'],\n        ['Li Lei', 37, 'Teacher', 219, '2011-02-18'],\n        [' Karle Neumann ', 25, 'Engineer', 253, '2011-04-02'],\n        [' Adrian Groß', 19, 'Teacher', null, '2011-01-16'],\n        ['Mia Neumann', 71, 'Engineer', 165, '2011-03-19'],\n        [' Böhm Fuchs', 36, 'Musician', 318, '2011-02-24'],\n        ['Han Meimei ', 67, 'Engineer', 366, '2011-03-12']\n      ]\n    },\n    {\n      transform: {\n        type: 'sort',\n        config: [\n          // Sort by the two dimensions.\n          { dimension: 'profession', order: 'desc' },\n          { dimension: 'score', order: 'desc' }\n        ]\n      }\n    }\n  ],\n  series: {\n    type: 'bar',\n    datasetIndex: 1\n  }\n  // ...\n};\n```\n\n<md-example src=\"doc-example/data-transform-multiple-sort-bar\"></md-example>\n\nFinally, we give the formally definition of the sort transform config here:\n\n```ts\ntype SortTransform = {\n  type: 'sort';\n  config: OrderExpression | OrderExpression[];\n};\ntype OrderExpression = {\n  dimension: DimensionName | DimensionIndex;\n  order: 'asc' | 'desc';\n  incomparable?: 'min' | 'max';\n  parser?: 'time' | 'trim' | 'number';\n};\ntype DimensionName = string;\ntype DimensionIndex = number;\n```\n\n> Note that when using [Minimal Bundle](${lang}/basics/import#shrinking-bundle-size), if you need to use this built-in transform, besides the `Dataset` component, it's required to import the `Transform` component.\n\n```ts\nimport {\n  DatasetComponent,\n  TransformComponent\n} from 'echarts/components';\n\necharts.use([\n  DatasetComponent,\n  TransformComponent\n]);\n```\n\n## Use External Transforms\n\nBesides built-in transforms (like 'filter', 'sort'), we can also use external transforms to provide more powerful functionalities. Here we use a third-party library [ecStat](https://github.com/ecomfe/echarts-stat) as an example:\n\nThis case show how to make a regression line via ecStat:\n\n```js\n// Register the external transform at first.\necharts.registerTransform(ecStatTransform(ecStat).regression);\n```\n\n```js\noption = {\n  dataset: [\n    {\n      source: rawData\n    },\n    {\n      transform: {\n        // Reference the registered external transform.\n        // Note that external transform has a namespace (like 'ecStat:xxx'\n        // has namespace 'ecStat').\n        // built-in transform (like 'filter', 'sort') does not have a namespace.\n        type: 'ecStat:regression',\n        config: {\n          // Parameters needed by the external transform.\n          method: 'exponential'\n        }\n      }\n    }\n  ],\n  xAxis: { type: 'category' },\n  yAxis: {},\n  series: [\n    {\n      name: 'scatter',\n      type: 'scatter',\n      datasetIndex: 0\n    },\n    {\n      name: 'regression',\n      type: 'line',\n      symbol: 'none',\n      datasetIndex: 1\n    }\n  ]\n};\n```\n\nExamples with echarts-stat:\n\n- [Aggregate](${exampleEditorPath}data-transform-aggregate&edit=1&reset=1)\n- [Bar histogram](${exampleEditorPath}bar-histogram&edit=1&reset=1)\n- [Scatter clustering](${exampleEditorPath}scatter-clustering&edit=1&reset=1)\n- [Scatter linear regression](${exampleEditorPath}scatter-linear-regression&edit=1&reset=1)\n- [Scatter exponential regression](${exampleEditorPath}scatter-exponential-regression&edit=1&reset=1)\n- [Scatter logarithmic regression](${exampleEditorPath}scatter-logarithmic-regression&edit=1&reset=1)\n- [Scatter polynomial regression](${exampleEditorPath}scatter-polynomial-regression&edit=1&reset=1)\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/16c7763c07b6dbca6090.js b/docs/_nuxt/js/16c7763c07b6dbca6090.js
new file mode 100644
index 0000000..8120120
--- /dev/null
+++ b/docs/_nuxt/js/16c7763c07b6dbca6090.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[30],{331:function(e,t,n){"use strict";n.r(t),t.default='# Funnel Chart\n\nFunnel chart (inverted triangle chart) present data into several stages, every stage is part of the whole. The overall percentage of all stages is 100%. Similar to the bar chart, the funnel chart shows no specific data but the proportion related to the whole. Therefore, a funnel chart doesn\'t have an axis.\n\nThe funnel chart usually used to provide the simplified data which is used to analyze the change or difference in every link of the process. It is also useful to find out the problem and bottleneck during the business.\n\n<iframe max-width="830" width="100%" height="400" \nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xrJIQEN5NM">\n</iframe>\n\n\n## Suggestion for Using Funnel Chart\n\n1. Represented by an e-commerce website, the funnel chart can easily show the entire process from the website to placing order. It not only shows the final conversion rate but also the conversion rate of each step, which leads to the problem directly. You can improve the design for some specific steps.\n\nAs shown below, the first three steps("show", "click", "visit") have only a little drain. The significant decrease happened from "visit" to "consult". As the result, the manager can mainly analyze what caused the reduction of consulting. For instance, it might because that the entrance for consult might not obvious enough.\n\n<iframe max-width="830" width="100%" height="400" \nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xHJIPHN9Nf">\n</iframe>\n\n2. Using two stacked funnel chart to compare between the prediction and outcome makes the deviation analyze easier.\n\n<iframe max-width="830" width="100%" height="400" \nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xrydEwN94f">\n</iframe>\n\n3. Try to use two funnels in one chart to discuss the transforming circumstances. As the following chart shows, project B has a higher churn rate comparing with project A.\n\n<iframe max-width="830" width="100%" height="400" \nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xrJfrjEc4z&v=1">\n</iframe>\n\n4. The funnel chart is more useful for displaying a logic flow which is different from the pie chart. If the data have no logical relevance, you should choose the pie chart.\n\n5. Depending on the type of data, use gradually changed colors or contract colors. Arrange them from dark to light according to the size of the funnel chart. Please don\'t add too many layers or colors to increase reading difficulty. \n'}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/16f326c38a20e70e4228.js b/docs/_nuxt/js/16f326c38a20e70e4228.js
new file mode 100644
index 0000000..6b292f9
--- /dev/null
+++ b/docs/_nuxt/js/16f326c38a20e70e4228.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[130],{431:function(n,t,e){"use strict";e.r(t),t.default="# 堆叠折线图\n\n与[堆叠柱状图](./zh/how-to/chart-types/bar/stacked-bar)类似,堆叠折线图也是用系列的 `stack` 设置哪些系列堆叠在一起。\n\n```js live\noption = {\n  xAxis: {\n    data: ['A', 'B', 'C', 'D', 'E']\n  },\n  yAxis: {},\n  series: [\n    {\n      data: [10, 22, 28, 43, 49],\n      type: 'line',\n      stack: 'x'\n    },\n    {\n      data: [5, 4, 3, 5, 10],\n      type: 'line',\n      stack: 'x'\n    }\n  ]\n};\n```\n\n但是不同的是,如果不加说明的话,我们很难判断出这是一个堆叠折线图,还是一个普通的折线图。所以,对于堆叠折线图而言,一般建议使用区域填充色以表明堆叠的情况。\n\n```js live\noption = {\n  xAxis: {\n    data: ['A', 'B', 'C', 'D', 'E']\n  },\n  yAxis: {},\n  series: [\n    {\n      data: [10, 22, 28, 43, 49],\n      type: 'line',\n      stack: 'x',\n      areaStyle: {}\n    },\n    {\n      data: [5, 4, 3, 5, 10],\n      type: 'line',\n      stack: 'x',\n      areaStyle: {}\n    }\n  ]\n};\n```\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/17fa0aff7c49c9968a24.js b/docs/_nuxt/js/17fa0aff7c49c9968a24.js
new file mode 100644
index 0000000..7426515
--- /dev/null
+++ b/docs/_nuxt/js/17fa0aff7c49c9968a24.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[21],{322:function(e,t,n){"use strict";n.r(t),t.default="# Web Accessibility\n\n[WAI-ARIA](https://www.w3.org/WAI/intro/aria), the Accessible Rich Internet Applications Suite developed by W3C, defines a way to make Web content and Web applications more accessible to people with disabilities.\n\nECharts 4.0 complied with the specification, supports generating a description based on the chart configuration intelligently to allow people with visual disabilities to understand the content of the chart with the help of reading devices. Apache ECharts 5 supports decal patterns that allow chart data to be distinguished by decal patterns in addition to color providing a better experience to those with color-blindness. \n\nThis accessibility function is turned off by default. It can be turned on by setting the value of [aria.show](${optionPath}aria.show) to `true`.\n\n## Import AriaComponent\n\nStarting with ECharts 5, `aria` components are no longer imported by default. You must manually import the AriaComponent before using accessibility features:\n\n```js\nimport { AriaComponent } from 'echarts/components';\necharts.use(AriaComponent);\n```\n\nOr using CommonJS:\n\n```js\nrequire('echarts/lib/component/aria');\n```\n\nWithout this import, setting `aria.show: true` will not work properly.\n\n## Chart Labels\n\nAfter importing the AriaComponent and setting [aria.show](${optionPath}aria.show) to `true`, ECharts will automatically generate a description of the chart according to the title, chart, data, etc. Users can also set description manually through the configuration object.\n\nExample configuration object:\n\n```js\noption = {\n  aria: {\n    show: true\n  },\n  title: {\n    text: 'Referrer of a User',\n    x: 'center'\n  },\n  series: [\n    {\n      name: 'Referrer',\n      type: 'pie',\n      data: [\n        { value: 335, name: 'Direct Visit' },\n        { value: 310, name: 'Email Marketing' },\n        { value: 234, name: 'Union Ad' },\n        { value: 135, name: 'Video Ad' },\n        { value: 1548, name: 'Search Engine' }\n      ]\n    }\n  ]\n};\n```\n\n<md-example src=\"doc-example/aria-pie\"></md-example>\n\nEnabling aria with add an `aria-label` attribute on the Chart HTML. Screen readers use this attribute to describe the contect; this chart would have the following description:\n\n```\nThis is a chart about \"Referrer of a User\" with type Pie chart named Referrer. The data is as follows: the data of Direct Visit is 335,the data of Mail Marketing is 310,the data of Union Ad is 234,the data of Video Ad is 135,the data of Search Engine is 1548.\n```\n\nThe configurated language will be used to build the description.\n\n### Customizing Title\n\nThe aria-label begins with the a general description. There are two templates, [aria.general.withTitle](${optionPath}aria.general.withTitle) to be used when [title.text](${optionPath}title.text) exists and [aria.general.withoutTitle](${optionPath}aria.general.withoutTitle) for when `title.text` is not defined.\n\nIn the `withTitle` template, the string `{title}` is replace with [title.text](${optionPath}title.text). The template `This is a chart named {title}` with a title of `Referrer of a User` would yield `This is a chart named Referrer of a User`. \n\n\n### Customizing Description\n\nThe description of the series and data are added after the title. For some charts, the default item description cannot show all the information on the chart. In the following scatter chart the description generated by default includes all the items but it is not accessible due to the quantity of items making the list too long to understand.\n\nUnder this circumstance, the description should be set with the [aria.description](${optionPath}aria.description) property.\n\n### In-Depth Customization\n\nEvery part of the aria-label can include template variables to be replaced by the actual value in the chart. More information on the process of generating a description is available in the API documentation: [aria.label](${optionPath}aria.label).\n\n## Decal Patterns\n\nIn addition, Apache ECharts 5 adds support for decal patterns as a secondary representation of color to further differentiate data. With `aria.enabled` set to `true` and `aria.decal.show` set to `true`, the default decal style will be applied.\n\n<md-example src=\"doc-example/aria-decal-simple\"></md-example>\n\nIf you need to customize the decal pattern, you can use [aria.decal.decals](${optionPath}aria.decal.decals) to configure a flexible decal pattern.\n\nPlease refer to [ARIA option](${optionPath}aria.decal) for more detail.\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/1829079b3b59fcb450fd.js b/docs/_nuxt/js/1829079b3b59fcb450fd.js
new file mode 100644
index 0000000..6a5779c
--- /dev/null
+++ b/docs/_nuxt/js/1829079b3b59fcb450fd.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[89],{390:function(n,e,t){"use strict";t.r(e),e.default="# 无障碍访问\n\nW3C 制定了无障碍富互联网应用规范集([WAI-ARIA](https://www.w3.org/WAI/intro/aria),the Accessible Rich Internet Applications Suite),致力于使得网页内容和网页应用能够被更多残障人士访问。\n\nApache ECharts 4 遵从这一规范,支持自动根据图表配置项智能生成描述,使得盲人可以在朗读设备的帮助下了解图表内容,让图表可以被更多人群访问。Apache ECharts 5 新增了贴花功能,让图表数据除了可以用颜色区分之外,还能用贴花图案区分,提供了更好的无障碍访问体验。\n\n无障碍访问功能默认关闭,需要通过将 [aria.show](${optionPath}aria.show) 设置为 `true` 开启。\n\n## 导入 AriaComponent\n\n从 ECharts 5 开始, `aria` 组件不再默认导入。在使用无障碍访问特性之前,你需要先导入和注册 `AriaComponent` 组件:\n\n```js\nimport { AriaComponent } from 'echarts/components';\necharts.use(AriaComponent);\n```\n\n或者如果你在使用 CommonJS 模块:\n\n```js\nrequire('echarts/lib/component/aria');\n```\n\n如果未导入 `AriaComponent` 组件,设置 `aria.show: true` 不会生效。\n\n## 图表描述\n\n在导入 `AriaComponent` 组件并开启 [aria.show](${optionPath}aria.show) 后,会根据图表、数据、标题等情况,自动智能生成关于图表的描述,用户也可以通过配置项修改描述。\n\n对于配置项:\n\n```js\noption = {\n  aria: {\n    show: true\n  },\n  title: {\n    text: '某站点用户访问来源',\n    x: 'center'\n  },\n  series: [\n    {\n      name: '访问来源',\n      type: 'pie',\n      data: [\n        { value: 335, name: '直接访问' },\n        { value: 310, name: '邮件营销' },\n        { value: 234, name: '联盟广告' },\n        { value: 135, name: '视频广告' },\n        { value: 1548, name: '搜索引擎' }\n      ]\n    }\n  ]\n};\n```\n\n<md-example src=\"doc-example/aria-pie\"></md-example>\n\n生成的图表 DOM 上,会有一个 `aria-label` 属性,在朗读设备的帮助下,盲人能够了解图表的内容。其值为:\n\n```\n这是一个关于“某站点用户访问来源”的图表。图表类型是饼图,表示访问来源。其数据是——直接访问的数据是335,邮件营销的数据是310,联盟广告的数据是234,视频广告的数据是135,搜索引擎的数据是1548。\n```\n\n默认语言会根据语言包(默认中文)选择,也可以使用配置项自定义模板。\n\n### 整体修改描述\n\n对于有些图表,默认生成的数据点的描述并不足以表现整体的信息。比如下图的散点图,默认生成的描述可以包含数据点的坐标值,但是知道几百几千个点的坐标并不能帮助我们有效地理解图表表达的信息。\n\n这时候,用户可以通过 [aria.description](${optionPath}aria.description) 配置项指定图表的整体描述。\n\n### 定制模板描述\n\n除了整体性修改描述之外,我们还提供了生成描述的模板,可以方便地进行细粒度的修改。\n\n生成描述的基本流程为,如果 [aria.show](${optionPath}aria.show) 设置为 `true`,则生成无障碍访问描述,否则不生成。如果定义了 [aria.description](${optionPath}aria.description),则将其作为图表的完整描述,否则根据模板拼接生成描述。我们提供了默认的生成描述的算法,仅当生成的描述不太合适时,才需要修改这些模板,甚至使用 `aria.description` 完全覆盖。\n\n使用模板拼接时,先根据是否存在标题 [title.text](${optionPath}title.text) 决定使用 [aria.general.withTitle](${optionPath}aria.general.withTitle) 还是 [aria.general.withoutTitle](${optionPath}aria.general.withoutTitle) 作为整体性描述。其中,`aria.general.withTitle` 配置项包括模板变量 `'{title}'`,将会被替换成图表标题。也就是说,如果 `aria.general.withTitle` 被设置为 `'图表的标题是:{title}。'`,则如果包含标题 `'价格分布图'`,这部分的描述为 `'图表的标题是:价格分布图。'`。\n\n拼接完标题之后,会依次拼接系列的描述([aria.series](${optionPath}aria.series)),和每个系列的数据的描述([aria.data](${optionPath}aria.data))。同样,每个模板都有可能包括模板变量,用以替换实际的值。\n\n完整的描述生成流程请参见 [ARIA 文档](${optionPath}aria.label)。\n\n## 贴花图案\n\n除此之外,Apache ECharts 5 新增支持贴花纹理,作为颜色的辅助表达,进一步用以区分数据。在 `aria.enabled` 为 `true` 的前提下,将 `aria.decal.show` 设为 `true` 即可采用默认的贴花样式。\n\n<md-example src=\"doc-example/aria-decal-simple\"></md-example>\n\n如果需要自定义贴花图案,可以使用 [aria.decal.decals](${optionPath}aria.decal.decals) 配置出灵活多变的图案。\n\n更具体的信息请参见 [ARIA 文档](${optionPath}aria.decal)。\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/1957ff5a2d6e8d2ebe33.js b/docs/_nuxt/js/1957ff5a2d6e8d2ebe33.js
new file mode 100644
index 0000000..6fad331
--- /dev/null
+++ b/docs/_nuxt/js/1957ff5a2d6e8d2ebe33.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[73],{374:function(n,e,t){"use strict";t.r(e),e.default="# Rich Text\n\nRich text can be used in Apache ECharts<sup>TM</sup> labels of series, axis or other components since v3.7. Which supports:\n\n- Box styles (background, border, shadow, etc.), rotation, position of a text block can be specified.\n- Styles (color, font, width/height, background, shadow, etc.) and alignment can be customzied on fragments of text.\n- Image can be used in text as icon or background.\n- Combine these configurations, some special effects can be made, such as simple table, horizontal rule (hr).\n\nAt the beginning, the meanings of two terms that will be used below should be clarified:\n\n- Text Block: The whole block of label text.\n- Text fragment: Some piece of text in a text block.\n\nFor example:\n\n<md-example src=\"doc-example/text-block-fragment\" width=\"450\" height=\"300\"></md-example>\n\n## Options about Text\n\necharts provides plenty of text options, including:\n\n- Basic font style: `fontStyle`, `fontWeight`, `fontSize`, `fontFamily`.\n- Fill of text: `color`.\n- Stroke of text: `textBorderColor`, `textBorderWidth`.\n- Shadow of text: `textShadowColor`, `textShadowBlur`, `textShadowOffsetX`, `textShadowOffsetY`.\n- Box size of text block or text fragment: `lineHeight`, `width`, `height`, `padding`.\n- Alignment of text block or text fragment: `align`, `verticalAlign`.\n- Border, background (color or image) of text block or text fragment: `backgroundColor`, `borderColor`, `borderWidth`, `borderRadius`.\n- Shadow of text block or text fragment: `shadowColor`, `shadowBlur`, `shadowOffsetX`, `shadowOffsetY`.\n- Position and rotation of text block: `position`, `distance`, `rotate`.\n\nUser can defined styles for text fragment in `rich` property. For example, [series-bar.label.rich](option.html#series-bar.label.rich)\n\nFor example:\n\n```js\nlabelOption = {\n  // Styles defined in 'rich' can be applied to some fragments\n  // of text by adding some markers to those fragment, like\n  // `{styleName|text content text content}`.\n  // `'\\n'` is the newline character.\n  formatter: [\n    '{a|Style \"a\" is applied to this fragment}',\n    '{b|Style \"b\" is applied to this fragment}This fragment use default style{x|use style \"x\"}'\n  ].join('\\n'),\n\n  // Styles for the whole text block are defined here:\n  color: '#333',\n  fontSize: 5,\n  fontFamily: 'Arial',\n  borderWidth: 3,\n  backgroundColor: '#984455',\n  padding: [3, 10, 10, 5],\n  lineHeight: 20,\n\n  // Styles for text fragments are defined here:\n  rich: {\n    a: {\n      color: 'red',\n      lineHeight: 10\n    },\n    b: {\n      backgroundColor: {\n        image: 'xxx/xxx.jpg'\n      },\n      height: 40\n    },\n    x: {\n      fontSize: 18,\n      fontFamily: 'Microsoft YaHei',\n      borderColor: '#449933',\n      borderRadius: 4\n    }\n    // ...\n  }\n};\n```\n\n> Notice: `width` and `height` only work when `rich` specified.\n\n## Basic Styles of Text, Text Block and Text Fragment\n\nBasic font style can be set to text: `fontStyle`, `fontWeight`, `fontSize`, `fontFamily`.\n\nFill color and stroke color can be set to text: `color`, `textBorderColor`, `textBorderWidth`.\n\nBorder style and background style can be set to text block: `borderColor`, `borderWidth`, `backgroundColor`, `padding`.\n\nBorder style and background style can be set to text fragment too: `borderColor`, `borderWidth`, `backgroundColor`, `padding`.\n\nFor example:\n\n```js live\noption = {\n  series: [\n    {\n      type: 'scatter',\n      symbolSize: 1,\n      data: [\n        {\n          value: [0, 0],\n          label: {\n            show: true,\n            formatter: [\n              'Plain text',\n              '{textBorder|textBorderColor + textBorderWidth}',\n              '{textShadow|textShadowColor + textShadowBlur + textShadowOffsetX + textShadowOffsetY}',\n              '{bg|backgroundColor + borderRadius + padding}',\n              '{border|borderColor + borderWidth + borderRadius + padding}',\n              '{shadow|shadowColor + shadowBlur + shadowOffsetX + shadowOffsetY}'\n            ].join('\\n'),\n            backgroundColor: '#eee',\n            borderColor: '#333',\n            borderWidth: 2,\n            borderRadius: 5,\n            padding: 10,\n            color: '#000',\n            fontSize: 14,\n            shadowBlur: 3,\n            shadowColor: '#888',\n            shadowOffsetX: 0,\n            shadowOffsetY: 3,\n            lineHeight: 30,\n            rich: {\n              textBorder: {\n                fontSize: 20,\n                textBorderColor: '#000',\n                textBorderWidth: 3,\n                color: '#fff'\n              },\n              textShadow: {\n                fontSize: 16,\n                textShadowBlur: 5,\n                textShadowColor: '#000',\n                textShadowOffsetX: 3,\n                textShadowOffsetY: 3,\n                color: '#fff'\n              },\n              bg: {\n                backgroundColor: '#339911',\n                color: '#fff',\n                borderRadius: 15,\n                padding: 5\n              },\n              border: {\n                color: '#000',\n                borderColor: '#449911',\n                borderWidth: 1,\n                borderRadius: 3,\n                padding: 5\n              },\n              shadow: {\n                backgroundColor: '#992233',\n                padding: 5,\n                color: '#fff',\n                shadowBlur: 5,\n                shadowColor: '#336699',\n                shadowOffsetX: 6,\n                shadowOffsetY: 6\n              }\n            }\n          }\n        }\n      ]\n    }\n  ],\n  xAxis: {\n    show: false,\n    min: -1,\n    max: 1\n  },\n  yAxis: {\n    show: false,\n    min: -1,\n    max: 1\n  }\n};\n```\n\n## Label Position\n\n`label` option can be use in charts like `bar`, `line`, `scatter`, etc. The position of a label, can be specified by [label.position](option.html#series-scatter.label.position)、[label.distance](option.html#series-scatter.label.distance).\n\nTry to modify the `position` and `distance` option in the following example:\n\n```js live\noption = {\n  series: [\n    {\n      type: 'scatter',\n      symbolSize: 160,\n      symbol: 'roundRect',\n      data: [[1, 1]],\n      label: {\n        // Options: 'left', 'right', 'top', 'bottom', 'inside', 'insideTop', 'insideLeft', 'insideRight', 'insideBottom', 'insideTopLeft', 'insideTopRight', 'insideBottomLeft', 'insideBottomRight'\n        position: 'top',\n        distance: 10,\n\n        show: true,\n        formatter: ['Label Text'].join('\\n'),\n        backgroundColor: '#eee',\n        borderColor: '#555',\n        borderWidth: 2,\n        borderRadius: 5,\n        padding: 10,\n        fontSize: 18,\n        shadowBlur: 3,\n        shadowColor: '#888',\n        shadowOffsetX: 0,\n        shadowOffsetY: 3,\n        textBorderColor: '#000',\n        textBorderWidth: 3,\n        color: '#fff'\n      }\n    }\n  ],\n  xAxis: {\n    max: 2\n  },\n  yAxis: {\n    max: 2\n  }\n};\n```\n\n> Notice, there are different optional values of `position` by different chart types. And `distance` is not supported in every chart. More detailed info can be checked in [option doc](${mainSitePath}option.html).\n\n## Label Rotation\n\nSometimes label is needed to be rotated. For example:\n\n```js live {layout: 'lr'}\nconst labelOption = {\n  show: true,\n  rotate: 90,\n  formatter: '{c}  {name|{a}}',\n  fontSize: 16,\n  rich: {\n    name: {}\n  }\n};\n\noption = {\n  xAxis: [\n    {\n      type: 'category',\n      data: ['2012', '2013', '2014', '2015', '2016']\n    }\n  ],\n  yAxis: [\n    {\n      type: 'value'\n    }\n  ],\n  series: [\n    {\n      name: 'Forest',\n      type: 'bar',\n      barGap: 0,\n      label: labelOption,\n      emphasis: {\n        focus: 'series'\n      },\n      data: [320, 332, 301, 334, 390]\n    },\n    {\n      name: 'Steppe',\n      type: 'bar',\n      label: labelOption,\n      emphasis: {\n        focus: 'series'\n      },\n      data: [220, 182, 191, 234, 290]\n    }\n  ]\n};\n```\n\n[align](option.html#series-bar.label.align) and[verticalAlign](option.html#series-bar.label.verticalAlign) can be used to adjust location of label in this scenario.\n\nNotice, `align` and `verticalAlign` are applied firstly, then rotate.\n\n## Layout and Alignment of Text fragment\n\nTo understand the layout rule, every text fragment can be imagined as a `inline-block` dom element in CSS.\n\n`content box size` of a text fragment is determined by its font size by default. It can also be specified directly by `width` and `height`, although they are rarely set. `border box size` of a text fragment is calculated by adding the `border box size` and `padding`.\n\nOnly `'\\n'` is the newline character, which breaks a line.\n\nMultiple text fragment exist in a single line. The height of a line is determined by the biggest `lineHeight` of text fragments. `lineHeight` of a text fragment can be specified in `rich`, or in the parent level of `rich`, otherwise using `box size` of the text fragment.\n\nHaving `lineHeight` determined, the vertical position of text fragments can be determined by `verticalAlign` (there is a little different from the rule in CSS):\n\n- `'bottom'`: The bottom edge of the text fragment sticks to the bottom edge of the line.\n- `'top'`: The top edge of the text fragment sticks to the top edge of the line.\n- `'middle'`: In the middle of the line.\n\nThe width of a text block can be specified by `width`, otherwise, by the longest line. Having the width determined, text fragment can be placed in each line, where the horizontal position of text fragments can be determined by its `align`.\n\n- Firstly, place text fragments whose `align` is `'left'` from left to right continuously.\n- Secondly, place text fragments whose `align` is `'right'` from right to left continuously.\n- Finally, the text fragments remained will be sticked and placed in the center of the rest of space.\n\nThe position of text in a text fragment:\n\n- If `align` is `'center'`, text aligns at the center of the text fragment box.\n- If `align` is `'left'`, text aligns at the left of the text fragment box.\n- If `align` is `'right'`, text aligns at the right of the text fragment box.\n\n## Effects: Icon, Horizontal Rule, Title Block, Simple Table\n\nSee example:\n\n```js live {layout: 'lr'}\noption = {\n  series: [\n    {\n      type: 'scatter',\n      data: [\n        {\n          value: [0, 0],\n          label: {\n            formatter: [\n              '{tc|Center Title}{titleBg|}',\n              '  Content text xxxxxxxx {sunny|} xxxxxxxx {cloudy|}  ',\n              '{hr|}',\n              '  xxxxx {showers|} xxxxxxxx  xxxxxxxxx  '\n            ].join('\\n'),\n            rich: {\n              titleBg: {\n                align: 'right'\n              }\n            }\n          }\n        },\n        {\n          value: [0, 1],\n          label: {\n            formatter: [\n              '{titleBg|Left Title}',\n              '  Content text xxxxxxxx {sunny|} xxxxxxxx {cloudy|}  ',\n              '{hr|}',\n              '  xxxxx {showers|} xxxxxxxx  xxxxxxxxx  '\n            ].join('\\n')\n          }\n        },\n        {\n          value: [0, 2],\n          label: {\n            formatter: [\n              '{titleBg|Right Title}',\n              '  Content text xxxxxxxx {sunny|} xxxxxxxx {cloudy|}  ',\n              '{hr|}',\n              '  xxxxx {showers|} xxxxxxxx  xxxxxxxxx  '\n            ].join('\\n'),\n            rich: {\n              titleBg: {\n                align: 'right'\n              }\n            }\n          }\n        }\n      ],\n      symbolSize: 1,\n      label: {\n        show: true,\n        backgroundColor: '#ddd',\n        borderColor: '#555',\n        borderWidth: 1,\n        borderRadius: 5,\n        color: '#000',\n        fontSize: 14,\n        rich: {\n          titleBg: {\n            backgroundColor: '#000',\n            height: 30,\n            borderRadius: [5, 5, 0, 0],\n            padding: [0, 10, 0, 10],\n            width: '100%',\n            color: '#eee'\n          },\n          tc: {\n            align: 'center',\n            color: '#eee'\n          },\n          hr: {\n            borderColor: '#777',\n            width: '100%',\n            borderWidth: 0.5,\n            height: 0\n          },\n          sunny: {\n            height: 30,\n            align: 'left',\n            backgroundColor: {\n              image:\n                'https://echarts.apache.org/examples/data/asset/img/weather/sunny_128.png'\n            }\n          },\n          cloudy: {\n            height: 30,\n            align: 'left',\n            backgroundColor: {\n              image:\n                'https://echarts.apache.org/examples/data/asset/img/weather/cloudy_128.png'\n            }\n          },\n          showers: {\n            height: 30,\n            align: 'left',\n            backgroundColor: {\n              image:\n                'https://echarts.apache.org/examples/data/asset/img/weather/showers_128.png'\n            }\n          }\n        }\n      }\n    }\n  ],\n  xAxis: {\n    show: false,\n    min: -1,\n    max: 1\n  },\n  yAxis: {\n    show: false,\n    min: 0,\n    max: 2,\n    inverse: true\n  }\n};\n```\n\nIcon is implemented by using image in `backgroundColor`.\n\n```js\nrich: {\n    Sunny: {\n        backgroundColor: {\n            image: './data/asset/img/weather/sunny_128.png'\n        },\n        // Can only height specified, but leave width auto obtained\n        // from the image, where the aspect ratio kept.\n        height: 30\n    }\n}\n```\n\nHorizontal rule (like HTML &lt;hr&gt; tag) can be implemented by border:\n\n```js\nrich: {\n    hr: {\n        borderColor: '#777',\n        // width is set as '100%' to fullfill the text block.\n        // Notice, the percentage is based on the content box, without\n        // padding. Although it is a little different from CSS rule,\n        // it is convinent in most cases.\n        width: '100%',\n        borderWidth: 0.5,\n        height: 0\n    }\n}\n```\n\nTitle block can be implemented by `backgroundColor`:\n\n```js\n// Title is at left.\nformatter: '{titleBg|Left Title}',\nrich: {\n    titleBg: {\n        backgroundColor: '#000',\n        height: 30,\n        borderRadius: [5, 5, 0, 0],\n        padding: [0, 10, 0, 10],\n        width: '100%',\n        color: '#eee'\n    }\n}\n\n// Title is in the center of the line.\n// This implementation is a little tricky, but is works\n// without more complicated layout mechanism involved.\nformatter: '{tc|Center Title}{titleBg|}',\nrich: {\n    titleBg: {\n        align: 'right',\n        backgroundColor: '#000',\n        height: 30,\n        borderRadius: [5, 5, 0, 0],\n        padding: [0, 10, 0, 10],\n        width: '100%',\n        color: '#eee'\n    }\n}\n```\n\nSimple table can be implemented by specify the same width to text fragments that are in the same column of different lines. See the [example](${exampleEditorPath}pie-rich-text).\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/1b302931927cbe4f4476.js b/docs/_nuxt/js/1b302931927cbe4f4476.js
new file mode 100644
index 0000000..ee4133f
--- /dev/null
+++ b/docs/_nuxt/js/1b302931927cbe4f4476.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[101],{402:function(n,t,e){"use strict";e.r(t),t.default='# 基础折线图\n\n折线图主要用来展示数据项随着时间推移的趋势或变化。折线图非常适合用于展示一个连续的二维数据,如某网站访问人数或商品销量价格的波动。\n\n<iframe max-width="830" width="100%" height="400"\nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xB1kG1rLEG&v=1">\n</iframe>\n\n折线图除了展示某个事情发展的趋势,还可以用来比较多个不同的数据序列。如下图,可以通过对比同时间段的三种商品的销量,分析哪一种商品的销量最好。\n\n<iframe max-width="830" width="100%" height="400"\n src="https://gallery.echartsjs.com/view-lite.html?cid=xSkBiMSU4M&v=1">>\n </iframe>\n\n折线图是将数据点之间用线连接起来绘制成的图表。为了追求美观或特殊的效果,还可以如上图将点与点之间用曲线连接,这种图又叫曲线图或样条图样条。样条图与折线图用法相同,区别是数据点之间的连线使用曲线绘制。\n\n## 折线图的使用建议\n\n1、使用实线绘制数据线,首先要保证能够的区分数据线和坐标轴线,并且要尽力要所有的数据清晰可识别。\n\n2、建议不要绘制 4 条以上的折线,如下图错误的示例,线都折叠在一起并且又没有明显的对比,整张图表就会混乱并难以阅读。\n\n<iframe max-width="830" width="100%" height="400"\nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xBJzdEItVz&v=1">\n</iframe>\n\n3、不建议使用过多的装饰来区分图表,图例虽然可以帮助区分不同数据系列,但如下图使用过多种类的图例有时会让用户分心。\n\n<iframe max-width="830" width="100%" height="400"\nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xS1Tbdr8EG&v=1">\n</iframe>\n\n4、展示折线图的数据时,要避免刻意的歪曲趋势。如下图,左图过于扁平化掩盖了想传达的信息,右图过于夸大趋势。要根据展示数据波动的参考单位,做有意义的波动分析。正确的数据高度是线约占 Y 轴高度的 2/3。\n\n<img max-width="830" width="100%" height="100%" src="images/design/line/line01.jpg"></img>\n'}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/1b84c1d2e290e3160592.js b/docs/_nuxt/js/1b84c1d2e290e3160592.js
new file mode 100644
index 0000000..edb4cfb
--- /dev/null
+++ b/docs/_nuxt/js/1b84c1d2e290e3160592.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[52],{353:function(n,t,e){"use strict";e.r(t),t.default="# Data Transition\n\nApache ECharts<sup>TM</sup> will apply transition on the position, scale, shape when adding, updating and removing data. It makes the chart smoother and shows relationships between data better. Often the developer does not need to worry about how to use the animations, but simply uses `setOption` to update the data, and ECharts will find the difference between the last data and automatically apply the most appropriate transition animation.\n\nFor example, the following example shows the transition on a timed update of the pie chart data.\n\n```js live {layout: 'lr'}\nfunction makeRandomData() {\n  return [\n    {\n      value: Math.random(),\n      name: 'A'\n    },\n    {\n      value: Math.random(),\n      name: 'B'\n    },\n    {\n      value: Math.random(),\n      name: 'C'\n    }\n  ];\n}\noption = {\n  series: [\n    {\n      type: 'pie',\n      radius: [0, '50%'],\n      data: makeRandomData()\n    }\n  ]\n};\n\nsetInterval(() => {\n  myChart.setOption({\n    series: {\n      data: makeRandomData()\n    }\n  });\n}, 2000);\n```\n\n## Configuration of Transitions\n\nBecause adding and updating data will often require different animations, for example we would expect the data update animation to be shorter, ECharts distinguishes between the two animation configurations.\n\n- For adding data, we apply an enter animation, using `animationDuration`, `animationEasing`, and `animationDelay` to configure the duration, easing and delay of the animation respectively.\n- For updating data, we will apply an update animation with `animationDurationUpdate`, `animationEasingUpdate`, and `animationDelayUpdate` configuring the duration, easing and delay of the animation respectively.\n\nAs you can see, the update animation configuration is the enter animation configuration with the `Update` suffix.\n\n> Each time using setOption in ECharts, the data will be diffed to the last updated data and three states are performed for the data based on the diff result: add, update and remove. This diff is based on the `name` of the data, for example, if the last update had three `names` of `'A'`, `'B'`, `'C'`, and the new update has become `'B'`, `'C'`, `'D'`, then the data `'B'`, `'C'` will be updated, the data `'A'` will be removed, and the data `' D'` will be added. If it is the first time `setOption`, because there is no old data, all data will be added. Depending on the three states ECharts will apply entry animation, update animation and leave animation respectively.\n\nAll these configurations can be set at the top level of `option` for all series and components, or separately for each series.\n\nIf we want to turn off animations, we can simply set `option.animation` to `false`.\n\n### Animation Duration\n\n`animationDuration` and `animationDurationUpdate` are used to set the duration of the animation in `ms`. Setting a longer animation duration allows the user to see the effect of the transition animation more clearly, but we also need to be careful that too much time can make the user lose patience while waiting animation to be finished.\n\nA setting of `0` will turn the animation off, and this can be achieved by setting the corresponding configuration to `0` individually when we only want to turn off the enter animation or update animation.\n\n### Animation Easing\n\nThe `animationEasing` and `animationEasingUpdate` configuration items are used to set the animation's easing function, which is a function that inputs the animation time and outputs the animation progress.\n\n```ts\n(t: number) => number;\n```\n\nThe common animation easing functions such as `'cubicIn'` and `'cubicOut'` are built into ECharts and can be used directly\n\nBuilt-in easing functions.\n\n<md-example src=\"line-easing\" width=\"100%\" height=\"400\" />\n\n### Animation Delay\n\nThe `animationDelay` and `animationDelayUpdate` are used to set the time at which the animation delay starts, usually we will use a callback function to set different delays for different data to achieve the effect of staggered animations:\n\n```ts live { layout: 'lr' }\nvar xAxisData = [];\nvar data1 = [];\nvar data2 = [];\nfor (var i = 0; i < 100; i++) {\n  xAxisData.push('A' + i);\n  data1.push((Math.sin(i / 5) * (i / 5 - 10) + i / 6) * 5);\n  data2.push((Math.cos(i / 5) * (i / 5 - 10) + i / 6) * 5);\n}\noption = {\n  legend: {\n    data: ['bar', 'bar2']\n  },\n  xAxis: {\n    data: xAxisData,\n    splitLine: {\n      show: false\n    }\n  },\n  yAxis: {},\n  series: [\n    {\n      name: 'bar',\n      type: 'bar',\n      data: data1,\n      emphasis: {\n        focus: 'series'\n      },\n      animationDelay: function(idx) {\n        return idx * 10;\n      }\n    },\n    {\n      name: 'bar2',\n      type: 'bar',\n      data: data2,\n      emphasis: {\n        focus: 'series'\n      },\n      animationDelay: function(idx) {\n        return idx * 10 + 100;\n      }\n    }\n  ],\n  animationEasing: 'elasticOut',\n  animationDelayUpdate: function(idx) {\n    return idx * 5;\n  }\n};\n```\n\n## Performance Optimization of Animations\n\nWhen the amount of data is particularly large, running animation can have performance issue, so we can set `animation: false` to turn off animation.\n\nFor charts where the amount of data changes dynamically, we recommend using the `animationThreshold` configuration, which allows ECharts to automatically turn off animation when the number of graphs in the canvas exceeds this threshold to improve drawing performance. This is often an empirical value, and ECharts is usually capable of rendering thousands of graphs in real time (our default value is also given as 2000), but if your charts are complex, or your user environment is harsh and there is a lot of other complex code running on the page at the same time, it may be appropriate to adjust this value downwards to ensure the smoothness of the whole application.\n\n## Listening to the End of Animation\n\nSometimes we want to get the result of the current rendering, if no animation is used, ECharts will perform the rendering directly after `setOption` and we can use `getDataURL` method to get the rendering result synchronisely.\n\n```ts\nconst chart = echarts.init(dom);\nchart.setOption({\n  animation: false\n  //...\n});\n// can be executed directly and synchronously\nconst dataUrl = chart.getDataURL();\n```\n\nBut if the chart is animated, executing `getDataURL` right away will give us the picture at the beginning of the animation, not the final result. So we need to know when the animation has finished and then execute `getDataURL` to get the result.\n\nIf you are sure of the duration of the animation, a simpler and more brutal way is to delay the execution with `setTimeout` depending on the duration of the animation:\n\n```ts\nchart.setOption({\n  animationDuration: 1000\n  //...\n});\nsetTimeout(() => {\n  const dataUrl = chart.getDataURL();\n}, 1000);\n```\n\nAlternatively, we can use the `rendered` event provided by ECharts to determine that the ECharts have finished animating and stopped rendering\n\n```ts\nchart.setOption({\n  animationDuration: 1000\n  //...\n});\n\nfunction onRendered() {\n  const dataUrl = chart.getDataURL();\n  // ...\n  // This event will also be triggered if there is a subsequent interaction and the interaction is redrawn, so it needs to be removed when you're done using it\n  chart.off('rendered', onRendered);\n}\nchart.on('rendered', onRendered);\n```\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/1ccc25d7312c84afa13d.js b/docs/_nuxt/js/1ccc25d7312c84afa13d.js
new file mode 100644
index 0000000..3c838ee
--- /dev/null
+++ b/docs/_nuxt/js/1ccc25d7312c84afa13d.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[81],{382:function(n,e,t){"use strict";t.r(e),e.default="# Apache ECharts 5.4.0 特性介绍\n\n## 智能指针吸附\n\n在图表中,部分可交互元素可能比较小,有时候用户不易准确地进行点击等操作,移动端尤其如此。因此,在 Apache ECharts 5.4.0 中,我们引入了“智能指针吸附”的概念。\n\n具体请参见[智能指针吸附](${lang}/how-to/interaction/coarse-pointer)。\n\n## 在更多坐标系中使用饼图\n\nApache ECharts 一个很强大的功能就是各种图表类型、坐标系、组件的组合。在这个版本中,我们为饼图增加了坐标系的配置项。\n\n于是,饼图可以出现在直角坐标系:\n\n![](images/5-4-0/pie-grid.png)\n\n日历坐标系:\n\n![](images/5-4-0/pie-calendar.png)\n\n地理坐标系:\n\n![](images/5-4-0/pie-geo.png)\n\n等等各种坐标系中,甚至可以和百度地图扩展联动,在地图上显示饼图:\n\n![](images/5-4-0/pie-bmap.png)\n\n![](images/5-4-0/pie-amap.png)\n\n这大大扩展了饼图的灵活性,让开发者可以使用 Apache ECharts 创作出更多图表的组合效果。\n\n## 新增乌克兰语翻译\n\n在这个版本中,我们支持了乌克兰语。**目前 Apache ECharts 已支持 17 种语言!**\n\n> 如果需要使用除中英文以外的语言,需要在初始化图表前,先调用 `echarts.registerLocale` 初始化,然后在 `init` 时候传入 `opts.locale` 修改图表语言。\n\n## 仪表盘文字旋转\n\n在这个版本中,我们支持了仪表盘的文字旋转。\n\n<md-example src=\"gauge-grade\" width=\"100%\" height=\"400\" />\n\n`axisLabel.rotate` 可以设为 `'tangential' | 'radial' | number`。如果是 `number` 类型,则表示标签的旋转角,从 -90 度到 90 度,正值是逆时针。除此之外,还可以是字符串 `'radial'` 表示径向旋转、`'tangential'` 表示切向旋转。\n\n## 完整更新记录\n\n查看[版本更新](${mainSitePath}/changelog.html#v5-4-0)\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/227108076aaa8b66f007.js b/docs/_nuxt/js/227108076aaa8b66f007.js
new file mode 100644
index 0000000..dafb368
--- /dev/null
+++ b/docs/_nuxt/js/227108076aaa8b66f007.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[53],{354:function(n,t,e){"use strict";e.r(t),t.default="# Dynamic Sorting Bar Chart\n\n## Related Options\n\nBar race is a chart that shows changes in the ranking of data over time and it is supported by default since ECharts 5.\n\n> Bar race charts usually use horizontal bars. If you want to use vertical bars, just take the X axis and Y axis in this tutorial to the opposite.\n\n1. Set `realtimeSort` of the bar series to be `true` to enable bar race\n2. Set `yAxis.inverse` to be `true` to display longer bars at top\n3. `yAxis.animationDuration` is suggested to be set to be `300` for bar reordering animation for the first time\n4. `yAxis.animationDurationUpdate` is suggested to be set to be `300` for bar reordering animation for later times\n5. Set `yAxis.max` to be _n - 1_ where _n_ is the number of bars to be displayed; otherwise, all bars are displayed\n6. `xAxis.max` is suggested to be set to be `'dataMax'` so that the maximum of data is used as X maximum.\n7. If realtime label changing is required, set `series.label.valueAnimation` to be `true`\n8. Set `animationDuration` to be `0` so that the first animation doesn't start from 0; if you wish otherwise, set it to be the same value as `animationDurationUpdate`\n9. `animationDurationUpdate` is suggested to be set to be `3000` for animation update duration, which should be the same as the frequency of calling `setOption`\n10. Call `setOption` to update data to be of next time with `setInterval` at the frequency of `animationDurationUpdate`\n\n## Demo\n\nA complete demo:\n\n```js live\nvar data = [];\nfor (let i = 0; i < 5; ++i) {\n  data.push(Math.round(Math.random() * 200));\n}\n\noption = {\n  xAxis: {\n    max: 'dataMax'\n  },\n  yAxis: {\n    type: 'category',\n    data: ['A', 'B', 'C', 'D', 'E'],\n    inverse: true,\n    animationDuration: 300,\n    animationDurationUpdate: 300,\n    max: 2 // only the largest 3 bars will be displayed\n  },\n  series: [\n    {\n      realtimeSort: true,\n      name: 'X',\n      type: 'bar',\n      data: data,\n      label: {\n        show: true,\n        position: 'right',\n        valueAnimation: true\n      }\n    }\n  ],\n  legend: {\n    show: true\n  },\n  animationDuration: 0,\n  animationDurationUpdate: 3000,\n  animationEasing: 'linear',\n  animationEasingUpdate: 'linear'\n};\n\nfunction run() {\n  var data = option.series[0].data;\n  for (var i = 0; i < data.length; ++i) {\n    if (Math.random() > 0.9) {\n      data[i] += Math.round(Math.random() * 2000);\n    } else {\n      data[i] += Math.round(Math.random() * 200);\n    }\n  }\n  myChart.setOption(option);\n}\n\nsetTimeout(function() {\n  run();\n}, 0);\nsetInterval(function() {\n  run();\n}, 3000);\n```\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/23d006245e46ca3de693.js b/docs/_nuxt/js/23d006245e46ca3de693.js
new file mode 100644
index 0000000..4a3f716
--- /dev/null
+++ b/docs/_nuxt/js/23d006245e46ca3de693.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[120],{421:function(n,t,e){"use strict";e.r(t),t.default="# 基础的过渡动画\n\nApache ECharts<sup>TM</sup> 中使用了平移,缩放,变形等形式的过渡动画让数据的添加更新删除,以及用户的交互变得更加顺滑。通常情况下开发者不需要操心该如何去使用动画,只需要按自己的需求使用`setOption`更新数据,ECharts 就会找出跟上一次数据之间的区别,然后自动应用最合适的过渡动画。\n\n比如下面例子就是定时更新饼图数据(随机)的过渡动画效果。\n\n```js live {layout: 'lr'}\nfunction makeRandomData() {\n  return [\n    {\n      value: Math.random(),\n      name: 'A'\n    },\n    {\n      value: Math.random(),\n      name: 'B'\n    },\n    {\n      value: Math.random(),\n      name: 'C'\n    }\n  ];\n}\noption = {\n  series: [\n    {\n      type: 'pie',\n      radius: [0, '50%'],\n      data: makeRandomData()\n    }\n  ]\n};\n\nsetInterval(() => {\n  myChart.setOption({\n    series: {\n      data: makeRandomData()\n    }\n  });\n}, 2000);\n```\n\n## 过渡动画的配置\n\n因为数据添加和数据更新往往会需要不一样的动画效果,比如我们会期望数据更新动画的时长更短,因此 ECharts 区分了这两者的动画配置:\n\n- 对于新添加的数据,我们会应用入场动画,通过`animationDuration`, `animationEasing`, `animationDelay`三个配置项分别配置动画的时长,缓动以及延时。\n- 对于数据更新,我们会应用更新动画,通过`animationDurationUpdate`, `animationEasingUpdate`, `animationDelayUpdate`三个配置项分别配置动画的时长,缓动以及延时。\n\n可以看到,更新动画配置是入场动画配置加上了`Update`的后缀。\n\n> 在 ECharts 中每次 setOption 的更新,数据会跟上一次更新的数据做对比,然后根据对比结果分别为数据执行三种状态:添加,更新以及移除。这个比对是根据数据的`name`来决定的,例如上一次更新数据有三个`name`为`'A'`, `'B'`, `'C'`的数据,而新更新的数据变为了`'B'`, `'C'`, `'D'`的数据,则数据`'B'`, `'C'`会被执行更新,数据`'A'`会被移除,而数据`'D'`会被添加。如果是第一次更新因为没有旧数据,所以所有数据都会被执行添加。根据这三种状态 ECharts 会分别应用相应的入场动画,更新动画以及移除动画。\n\n所有这些配置都可以分别设置在`option`最顶层对所有系列和组件生效,也可以分别为每个系列配置。\n\n如果我们想要关闭动画,可以直接设置`option.animation`为`false`。\n\n### 动画时长\n\n`animationDuration`和`animationDurationUpdate`用于设置动画的时长,单位为`ms`,设置较长的动画时长可以让用户更清晰的看到过渡动画的效果,但是我们也需要小心过长的时间会让用户再等待的过程中失去耐心。\n\n设置为`0`会关闭动画,在我们只想要单独关闭入场动画或者更新动画的时候可以通过单独将相应的配置设置为`0`来实现。\n\n### 动画缓动\n\n`animationEasing`和`animationEasingUpdate`两个配置项用于设置动画的缓动函数,缓动函数是一个输入动画时间,输出动画进度的函数:\n\n```ts\n(t: number) => number;\n```\n\n在 ECharts 里内置了缓入`'cubicIn'`,缓出`'cubicOut'`等常见的动画缓动函数,我们可以直接通过名字来声明使用这些缓动函数。\n\n内置缓动函数:\n\n<md-example src=\"line-easing\" width=\"100%\" height=\"400\" />\n\n### 延时触发\n\n`animationDelay`和`animationDelayUpdate`用于设置动画延迟开始的时间,通常我们会使用回调函数将不同数据设置不同的延时来实现交错动画的效果:\n\n```ts live { layout: 'lr' }\nvar xAxisData = [];\nvar data1 = [];\nvar data2 = [];\nfor (var i = 0; i < 100; i++) {\n  xAxisData.push('A' + i);\n  data1.push((Math.sin(i / 5) * (i / 5 - 10) + i / 6) * 5);\n  data2.push((Math.cos(i / 5) * (i / 5 - 10) + i / 6) * 5);\n}\noption = {\n  legend: {\n    data: ['bar', 'bar2']\n  },\n  xAxis: {\n    data: xAxisData,\n    splitLine: {\n      show: false\n    }\n  },\n  yAxis: {},\n  series: [\n    {\n      name: 'bar',\n      type: 'bar',\n      data: data1,\n      emphasis: {\n        focus: 'series'\n      },\n      animationDelay: function(idx) {\n        return idx * 10;\n      }\n    },\n    {\n      name: 'bar2',\n      type: 'bar',\n      data: data2,\n      emphasis: {\n        focus: 'series'\n      },\n      animationDelay: function(idx) {\n        return idx * 10 + 100;\n      }\n    }\n  ],\n  animationEasing: 'elasticOut',\n  animationDelayUpdate: function(idx) {\n    return idx * 5;\n  }\n};\n```\n\n## 动画的性能优化\n\n在数据量特别大的时候,为图形应用动画可能会导致应用的卡顿,这个时候我们可以设置`animation: false`关闭动画。\n\n对于数据量会动态变化的图表,我们更推荐使用`animationThreshold`这个配置项,当画布中图形数量超过这个阈值的时候,ECharts 会自动关闭动画来提升绘制性能。这个配置往往是一个经验值,通常 ECharts 的性能足够实时渲染上千个图形的动画(我们默认值也是给了 2000),但是如果你的图表很复杂,或者你的用户环境比较恶劣,页面中又同时会运行很多其它复杂的代码,也可以适当的下调这个值保证整个应用的流畅性。\n\n## 监听动画结束\n\n有时候我们想要获取当前渲染的结果,如果没有使用动画,我们在`setOption`之后 ECharts 就会直接执行渲染,我们可以同步的通过`getDataURL`方法获取渲染得到的结果。\n\n```ts\nconst chart = echarts.init(dom);\nchart.setOption({\n  animation: false\n  //...\n});\n// 可以直接同步执行\nconst dataUrl = chart.getDataURL();\n```\n\n但是如果图表中有动画,马上执行`getDataURL`得到的是动画刚开始的画面,而非最终展示的结果。因此我们需要知道动画结束然后再执行`getDataURL`得到结果。\n\n假如你确定动画的时长,一种比较简单粗暴的方式是根据动画时长来执行`setTimeout`延迟执行:\n\n```ts\nchart.setOption({\n  animationDuration: 1000\n  //...\n});\nsetTimeout(() => {\n  const dataUrl = chart.getDataURL();\n}, 1000);\n```\n\n或者我们也可以使用 ECharts 提供的`rendered`事件来判断 ECharts 已经动画结束停止了渲染\n\n```ts\nchart.setOption({\n  animationDuration: 1000\n  //...\n});\n\nfunction onRendered() {\n  const dataUrl = chart.getDataURL();\n  // ...\n  // 后续如果有交互,交互发生重绘也会触发该事件,因此使用完就需要移除\n  chart.off('rendered', onRendered);\n}\nchart.on('rendered', onRendered);\n```\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/2432fc94ace109d861d4.js b/docs/_nuxt/js/2432fc94ace109d861d4.js
new file mode 100644
index 0000000..77e22eb
--- /dev/null
+++ b/docs/_nuxt/js/2432fc94ace109d861d4.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[48],{349:function(n,e,t){"use strict";t.r(e),e.default="# Overview of Style Customization\n\nThis article provides an overview of the different approaches about Apache ECharts<sup>TM</sup> style customization. For example, how to config the color, size, shadow of the graphic elements and labels.\n\n> The term \"style\" may not follow the convention of data visualization, but we use it in this article because it is popular and easy to understand.\n\nThese approaches below will be introduced. The functionalities of them might be overlapped, but they are suitable for different scenarios.\n\n- Theme\n- Color Palette\n- Customize style explicitly (itemStyle, lineStyle, areaStyle, label, ...)\n- Visual encoding (visualMap component)\n\n## Theme\n\nSetting a theme is the simplest way to change the color style. For example, in [Examples page](${mainSitePath}examples), we can switch to dark mode and see the result of a different theme.\n\nIn our project, we can switch to dark theme like:\n\n```js\nvar chart = echarts.init(dom, 'dark');\n```\n\nOther themes are not included by default, and need to load them ourselves if we want to use them. Themes can be visited and downloaded in the [theme builder](${mainSitePath}theme-builder.html). Theme can also be created or edited in it. The downloaded theme can be used as follows:\n\nIf a theme is downloaded as a JSON file, we should register it by ourselves, for example:\n\n```js\n// Assume the theme name is \"vintage\".\nfetch('theme/vintage.json')\n  .then(r => r.json())\n  .then(theme => {\n    echarts.registerTheme('vintage', theme);\n    var chart = echarts.init(dom, 'vintage');\n  })\n```\n\nIf a theme is downloaded as a JS file, it will auto register itself:\n\n```js\n// Import the `vintage.js` file in HTML, then:\nvar chart = echarts.init(dom, 'vintage');\n// ...\n```\n\n## Color Palette\n\nColor palette can be given in option. They provide a group of colors, which will be auto picked by series and data. We can give a global palette, or exclusive pallette for certain series.\n\n```js\noption = {\n  // Global palette:\n  color: [\n    '#c23531',\n    '#2f4554',\n    '#61a0a8',\n    '#d48265',\n    '#91c7ae',\n    '#749f83',\n    '#ca8622',\n    '#bda29a',\n    '#6e7074',\n    '#546570',\n    '#c4ccd3'\n  ],\n\n  series: [\n    {\n      type: 'bar',\n      // A palette only work for the series:\n      color: [\n        '#dd6b66',\n        '#759aa0',\n        '#e69d87',\n        '#8dc1a9',\n        '#ea7e53',\n        '#eedd78',\n        '#73a373',\n        '#73b9bc',\n        '#7289ab',\n        '#91ca8c',\n        '#f49f42'\n      ]\n      // ...\n    },\n    {\n      type: 'pie',\n      // A palette only work for the series:\n      color: [\n        '#37A2DA',\n        '#32C5E9',\n        '#67E0E3',\n        '#9FE6B8',\n        '#FFDB5C',\n        '#ff9f7f',\n        '#fb7293',\n        '#E062AE',\n        '#E690D1',\n        '#e7bcf3',\n        '#9d96f5',\n        '#8378EA',\n        '#96BFFF'\n      ]\n      // ...\n    }\n  ]\n};\n```\n\n## Customize Style Explicitly\n\nIt is a common way to set style explicitly. Throughout ECharts [option](${optionPath}), style related options can be set in various place, including [itemStyle](${optionPath}series.itemStyle), [lineStyle](${optionPath}series-line.lineStyle), [areaStyle](${optionPath}series-line.areaStyle), [label](${optionPath}series.label), etc.\n\nGenerally speaking, all of the built-in components and series follow the naming convention like `itemStyle`, `lineStyle`, `areaStyle`, `label` etc, although they may occur in different place according to different series or components.\n\nIn the following code we add shadow, gradient to bubble chart.\n\n```js live\nvar data = [\n  [\n    [28604, 77, 17096869, 'Australia', 1990],\n    [31163, 77.4, 27662440, 'Canada', 1990],\n    [1516, 68, 1154605773, 'China', 1990],\n    [13670, 74.7, 10582082, 'Cuba', 1990],\n    [28599, 75, 4986705, 'Finland', 1990],\n    [29476, 77.1, 56943299, 'France', 1990],\n    [31476, 75.4, 78958237, 'Germany', 1990],\n    [28666, 78.1, 254830, 'Iceland', 1990],\n    [1777, 57.7, 870601776, 'India', 1990],\n    [29550, 79.1, 122249285, 'Japan', 1990],\n    [2076, 67.9, 20194354, 'North Korea', 1990],\n    [12087, 72, 42972254, 'South Korea', 1990],\n    [24021, 75.4, 3397534, 'New Zealand', 1990],\n    [43296, 76.8, 4240375, 'Norway', 1990],\n    [10088, 70.8, 38195258, 'Poland', 1990],\n    [19349, 69.6, 147568552, 'Russia', 1990],\n    [10670, 67.3, 53994605, 'Turkey', 1990],\n    [26424, 75.7, 57110117, 'United Kingdom', 1990],\n    [37062, 75.4, 252847810, 'United States', 1990]\n  ],\n  [\n    [44056, 81.8, 23968973, 'Australia', 2015],\n    [43294, 81.7, 35939927, 'Canada', 2015],\n    [13334, 76.9, 1376048943, 'China', 2015],\n    [21291, 78.5, 11389562, 'Cuba', 2015],\n    [38923, 80.8, 5503457, 'Finland', 2015],\n    [37599, 81.9, 64395345, 'France', 2015],\n    [44053, 81.1, 80688545, 'Germany', 2015],\n    [42182, 82.8, 329425, 'Iceland', 2015],\n    [5903, 66.8, 1311050527, 'India', 2015],\n    [36162, 83.5, 126573481, 'Japan', 2015],\n    [1390, 71.4, 25155317, 'North Korea', 2015],\n    [34644, 80.7, 50293439, 'South Korea', 2015],\n    [34186, 80.6, 4528526, 'New Zealand', 2015],\n    [64304, 81.6, 5210967, 'Norway', 2015],\n    [24787, 77.3, 38611794, 'Poland', 2015],\n    [23038, 73.13, 143456918, 'Russia', 2015],\n    [19360, 76.5, 78665830, 'Turkey', 2015],\n    [38225, 81.4, 64715810, 'United Kingdom', 2015],\n    [53354, 79.1, 321773631, 'United States', 2015]\n  ]\n];\n\noption = {\n  backgroundColor: {\n    type: 'radial',\n    x: 0.3,\n    y: 0.3,\n    r: 0.8,\n    colorStops: [\n      {\n        offset: 0,\n        color: '#f7f8fa'\n      },\n      {\n        offset: 1,\n        color: '#cdd0d5'\n      }\n    ]\n  },\n  grid: {\n    left: 10,\n    containLabel: true,\n    bottom: 10,\n    top: 10,\n    right: 30\n  },\n  xAxis: {\n    splitLine: {\n      show: false\n    }\n  },\n  yAxis: {\n    splitLine: {\n      show: false\n    },\n    scale: true\n  },\n  series: [\n    {\n      name: '1990',\n      data: data[0],\n      type: 'scatter',\n      symbolSize: function(data) {\n        return Math.sqrt(data[2]) / 5e2;\n      },\n      emphasis: {\n        focus: 'series',\n        label: {\n          show: true,\n          formatter: function(param) {\n            return param.data[3];\n          },\n          position: 'top'\n        }\n      },\n      itemStyle: {\n        shadowBlur: 10,\n        shadowColor: 'rgba(120, 36, 50, 0.5)',\n        shadowOffsetY: 5,\n        color: {\n          type: 'radial',\n          x: 0.4,\n          y: 0.3,\n          r: 1,\n          colorStops: [\n            {\n              offset: 0,\n              color: 'rgb(251, 118, 123)'\n            },\n            {\n              offset: 1,\n              color: 'rgb(204, 46, 72)'\n            }\n          ]\n        }\n      }\n    },\n    {\n      name: '2015',\n      data: data[1],\n      type: 'scatter',\n      symbolSize: function(data) {\n        return Math.sqrt(data[2]) / 5e2;\n      },\n      emphasis: {\n        focus: 'series',\n        label: {\n          show: true,\n          formatter: function(param) {\n            return param.data[3];\n          },\n          position: 'top'\n        }\n      },\n      itemStyle: {\n        shadowBlur: 10,\n        shadowColor: 'rgba(25, 100, 150, 0.5)',\n        shadowOffsetY: 5,\n        color: {\n          type: 'radial',\n          x: 0.4,\n          y: 0.3,\n          r: 1,\n          colorStops: [\n            {\n              offset: 0,\n              color: 'rgb(129, 227, 238)'\n            },\n            {\n              offset: 1,\n              color: 'rgb(25, 183, 207)'\n            }\n          ]\n        }\n      }\n    }\n  ]\n};\n```\n\n## Style of Emphasis State\n\nWhen mouse hovering a graphic elements, usually the emphasis style will be displayed. By default, the emphasis style is auto generated by the normal style. However they can be specified by [emphasis](${optionPath}series-bar.emphasis) property. The options in [emphasis](${optionPath}series-bar.emphasis) is the same as the ones for normal state, for example:\n\n```js\noption = {\n  series: {\n    type: 'scatter',\n\n    // Styles for normal state.\n    itemStyle: {\n      // Color of the point.\n      color: 'red'\n    },\n    label: {\n      show: true,\n      // Text of labels.\n      formatter: 'This is a normal label.'\n    },\n\n    // Styles for emphasis state.\n    emphasis: {\n      itemStyle: {\n        // Color in emphasis state.\n        color: 'blue'\n      },\n      label: {\n        show: true,\n        // Text in emphasis.\n        formatter: 'This is a emphasis label.'\n      }\n    }\n  }\n};\n```\n\nNotice: Before ECharts4, the emphasis style should be written like this:\n\n```js\noption = {\n  series: {\n    type: 'scatter',\n\n    itemStyle: {\n      // Styles for normal state.\n      normal: {\n        color: 'red'\n      },\n      // Styles for emphasis state.\n      emphasis: {\n        color: 'blue'\n      }\n    },\n\n    label: {\n      // Styles for normal state.\n      normal: {\n        show: true,\n        formatter: 'This is a normal label.'\n      },\n      // Styles for emphasis state.\n      emphasis: {\n        show: true,\n        formatter: 'This is a emphasis label.'\n      }\n    }\n  }\n};\n```\n\nThe option format is still **compatible**, but not recommended. In fact, in most cases, users only set normal style, and use the default emphasis style. So since ECharts4, we support to write style without the \"normal\" term, which makes the option more simple and neat.\n\n## Visual Encoding by visualMap Component\n\n[visualMap component](${optionPath}visualMap) supports config the rule that mapping value to visual channel (color, size, ...). More details can be check in [Visual Map of Data](${lang}/concepts/visual-map/).\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/261468fa849b6278a535.js b/docs/_nuxt/js/261468fa849b6278a535.js
new file mode 100644
index 0000000..1e5cbe9
--- /dev/null
+++ b/docs/_nuxt/js/261468fa849b6278a535.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[123],{424:function(n,e,r){"use strict";r.r(e),e.default="# 基本柱状图\n\n柱状图(或称条形图)是一种通过柱形的长度来表现数据大小的一种常用图表类型。\n\n设置柱状图的方式,是将 `series` 的 `type` 设为 `'bar'`。\n\n[[配置项手册]](${optionPath}series-bar)\n\n## 最简单的柱状图\n\n最简单的柱状图可以这样设置:\n\n```js live\noption = {\n  xAxis: {\n    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']\n  },\n  yAxis: {},\n  series: [\n    {\n      type: 'bar',\n      data: [23, 24, 18, 25, 27, 28, 25]\n    }\n  ]\n};\n```\n\n在这个例子中,横坐标是类目型的,因此需要在 `xAxis` 中指定对应的值;而纵坐标是数值型的,可以根据 `series` 中的 `data`,自动生成对应的坐标范围。\n\n## 多系列的柱状图\n\n我们可以用一个系列表示一组相关的数据,如果需要实现多系列的柱状图,只需要在 `series` 多添加一项就可以了——\n\n```js live\noption = {\n  xAxis: {\n    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']\n  },\n  yAxis: {},\n  series: [\n    {\n      type: 'bar',\n      data: [23, 24, 18, 25, 27, 28, 25]\n    },\n    {\n      type: 'bar',\n      data: [26, 24, 18, 22, 23, 20, 27]\n    }\n  ]\n};\n```\n\n## 柱状图样式设置\n\n### 柱条样式\n\n柱条的样式可以通过 [`series.itemStyle`](${optionPath}series-bar.itemStyle) 设置,包括:\n\n- 柱条的颜色(`color`);\n- 柱条的描边颜色(`borderColor`)、宽度(`borderWidth`)、样式(`borderType`);\n- 柱条圆角的半径(`barBorderRadius`);\n- 柱条透明度(`opacity`);\n- 阴影(`shadowBlur`、`shadowColor`、`shadowOffsetX`、`shadowOffsetY`)。\n\n```js live\noption = {\n  xAxis: {\n    data: ['A', 'B', 'C', 'D', 'E']\n  },\n  yAxis: {},\n  series: [\n    {\n      type: 'bar',\n      data: [\n        10,\n        22,\n        28,\n        {\n          value: 43,\n          // 设置单个柱子的样式\n          itemStyle: {\n            color: '#91cc75',\n            shadowColor: '#91cc75',\n            borderType: 'dashed',\n            opacity: 0.5\n          }\n        },\n        49\n      ],\n      itemStyle: {\n        barBorderRadius: 5,\n        borderWidth: 1,\n        borderType: 'solid',\n        borderColor: '#73c0de',\n        shadowColor: '#5470c6',\n        shadowBlur: 3\n      }\n    }\n  ]\n};\n```\n\n在这个例子中,我们通过设置柱状图对应 `series` 的`itemStyle`,设置了柱条的样式。完整的配置项及其用法请参见配置项手册 [`series.itemStyle`](${optionPath}series-bar.itemStyle)。\n\n### 柱条宽度和高度\n\n柱条宽度可以通过 [`barWidth`](${optionPath}#series-bar.barWidth) 设置。比如在下面的例子中,将 `barWidth` 设为 `'20%'`,表示每个柱条的宽度就是类目宽度的 20%。由于这个例子中,每个系列有 5 个数据,20% 的类目宽度也就是整个 x 轴宽度的 4%。\n\n```js live\noption = {\n  xAxis: {\n    data: ['A', 'B', 'C', 'D', 'E']\n  },\n  yAxis: {},\n  series: [\n    {\n      type: 'bar',\n      data: [10, 22, 28, 43, 49],\n      barWidth: '20%'\n    }\n  ]\n};\n```\n\n另外,还可以设置 [`barMaxWidth`](${optionPath}series-bar.barMaxWidth) 限制柱条的最大宽度。对于一些特别小的数据,我们也可以为柱条指定最小高度 [`barMinHeight`](${optionPath}series-bar.barMinHeight),当数据对应的柱条高度小于该值时,柱条高度将采用这个最小高度。\n\n### 柱条间距\n\n柱条间距分为两种,一种是不同系列在同一类目下的距离 [`barGap`](${optionPath}series-bar.barGap),另一种是类目与类目的距离 [`barCategoryGap`](${optionPath}series-bar.barCategoryGap)。\n\n```js live\noption = {\n  xAxis: {\n    data: ['A', 'B', 'C', 'D', 'E']\n  },\n  yAxis: {},\n  series: [\n    {\n      type: 'bar',\n      data: [23, 24, 18, 25, 18],\n      barGap: '20%',\n      barCategoryGap: '40%'\n    },\n    {\n      type: 'bar',\n      data: [12, 14, 9, 9, 11]\n    }\n  ]\n};\n```\n\n在这个例子中,`barGap` 被设为 `'20%'`,这意味着每个类目(比如 `A`)下的两个柱子之间的距离,相对于柱条宽度的百分比。而 `barCategoryGap` 是 `'40%'`,意味着柱条每侧空余的距离,相对于柱条宽度的百分比。\n\n通常而言,设置 `barGap` 及 `barCategoryGap` 后,就不需要设置 `barWidth` 了,这时候的宽度会自动调整。如果有需要的话,可以设置 `barMaxWidth` 作为柱条宽度的上限,当图表宽度很大的时候,柱条宽度也不会太宽。\n\n> 在同一坐标系上,此属性会被多个柱状图系列共享。此属性应设置于此坐标系中最后一个柱状图系列上才会生效,并且是对此坐标系中所有柱状图系列生效。\n\n### 为柱条添加背景色\n\n有时,我们希望能够为柱条添加背景色。从 ECharts 4.7.0 版本开始,这一功能可以简单地用 [`showBackground`](${optionPath}series-bar.showBackground) 开启,并且可以通过 [`backgroundStyle`](${optionPath}series-bar.backgroundStyle) 配置。\n\n```js live\noption = {\n  xAxis: {\n    type: 'category',\n    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']\n  },\n  yAxis: {\n    type: 'value'\n  },\n  series: [\n    {\n      data: [120, 200, 150, 80, 70, 110, 130],\n      type: 'bar',\n      showBackground: true,\n      backgroundStyle: {\n        color: 'rgba(220, 220, 220, 0.8)'\n      }\n    }\n  ]\n};\n```\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/2892e4a57d134e05d67a.js b/docs/_nuxt/js/2892e4a57d134e05d67a.js
new file mode 100644
index 0000000..bbda1dd
--- /dev/null
+++ b/docs/_nuxt/js/2892e4a57d134e05d67a.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[61],{362:function(n,e,t){"use strict";t.r(e),e.default="# Stacked Line Chart\n\nSimilar to the [Stacked Bar Chart](${lang}/how-to/chart-types/bar/stacked-bar), Stacked Line Chart use the `'stack'` in `series` to decide which series should be stacked together.\n\n```js live\noption = {\n  xAxis: {\n    data: ['A', 'B', 'C', 'D', 'E']\n  },\n  yAxis: {},\n  series: [\n    {\n      data: [10, 22, 28, 43, 49],\n      type: 'line',\n      stack: 'x'\n    },\n    {\n      data: [5, 4, 3, 5, 10],\n      type: 'line',\n      stack: 'x'\n    }\n  ]\n};\n```\n\nHowever, without clarification, it is hard for us to judge whether it is a stacked line chart or normal line chart. Therefore, filling color for the area under the line is recommended to indicate for a stacked line chart.\n\n```js live\noption = {\n  xAxis: {\n    data: ['A', 'B', 'C', 'D', 'E']\n  },\n  yAxis: {},\n  series: [\n    {\n      data: [10, 22, 28, 43, 49],\n      type: 'line',\n      stack: 'x',\n      areaStyle: {}\n    },\n    {\n      data: [5, 4, 3, 5, 10],\n      type: 'line',\n      stack: 'x',\n      areaStyle: {}\n    }\n  ]\n};\n```\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/29111570228a458fd484.js b/docs/_nuxt/js/29111570228a458fd484.js
new file mode 100644
index 0000000..5cef8a1
--- /dev/null
+++ b/docs/_nuxt/js/29111570228a458fd484.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[148],{449:function(n,o,e){"use strict";e.r(o),o.default="# 写作风格规范\n\n本文的主要目的是为了统一该项目的写作风格。\n\n语法主要参照[中文技术文档的写作规范](https://github.com/ruanyf/document-style-guide)。请在写作前先阅读一遍该语法。\n\n## 重点\n\n> 段落的句子语气要使用陈述和肯定语气,避免使用感叹语气。\n\n> 句子内部的并列词,应该用全角顿号(、) 分隔,而不用逗号,即使并列词是英语也是如此。\n>\n> 错误:我最欣赏的科技公司有 Google, Facebook, 腾讯, 阿里和百度等。\n>\n> 正确:我最欣赏的科技公司有 Google、Facebook、腾讯、阿里和百度等。\n\n## 其他注意事项\n\n除了上述规范之外,还需要注意:\n\n- 写作时,应尽可能使用正式的书面语言,避免较为随意的个人博客风格。\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/2b876bccb931c9e3aef1.js b/docs/_nuxt/js/2b876bccb931c9e3aef1.js
new file mode 100644
index 0000000..9024393
--- /dev/null
+++ b/docs/_nuxt/js/2b876bccb931c9e3aef1.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[64],{365:function(e,n,t){"use strict";t.r(n),n.default="# Doughnut Chart\n\nDoughnut charts are also used to show the proportion of values compared with the total. Different from the pie chart, the blank in the middle of the chart can be used to provide some extra info. It makes a doughnut chart commonly used chart type.\n\n## Basic Doughnut Chart\n\nIn ECharts, the radius of the pie chart could also be an array with 2 elements. Every element in the array could be string or value. The first element represents the inner radius while the second one is the outer radius.\n\nThe pie chart, from this perspective, is a subset of the doughnut chart that has inner radius equals to 0.\n\n```js live\noption = {\n  title: {\n    text: 'A Case of Doughnut Chart',\n    left: 'center',\n    top: 'center'\n  },\n  series: [\n    {\n      type: 'pie',\n      data: [\n        {\n          value: 335,\n          name: 'A'\n        },\n        {\n          value: 234,\n          name: 'B'\n        },\n        {\n          value: 1548,\n          name: 'C'\n        }\n      ],\n      radius: ['40%', '70%']\n    }\n  ]\n};\n```\n\nIf we set one radius to string of a percentage value, while the other to a value, the inner radius will be smaller than the outer radius in some resolution. ECharts will choose the smaller element for the inner radius automatically. However, it will still cause not an unexpected outcome.\n\n## Show Text In Middle Of Doughnut From Highlighted Sector\n\nThe previous case gives you a way to show fixed text in the middle of doughnut chart. The next case will show you how to display the corresponding text of the sector highlighted by the mouse. The general idea is to fix `label` in the middle of the chart while hiding `label` in default.\n\n```js live\noption = {\n  legend: {\n    orient: 'vertical',\n    x: 'left',\n    data: ['A', 'B', 'C', 'D', 'E']\n  },\n  series: [\n    {\n      type: 'pie',\n      radius: ['50%', '70%'],\n      avoidLabelOverlap: false,\n      label: {\n        show: false,\n        position: 'center'\n      },\n      labelLine: {\n        show: false\n      },\n      emphasis: {\n        label: {\n          show: true,\n          fontSize: '30',\n          fontWeight: 'bold'\n        }\n      },\n      data: [\n        { value: 335, name: 'A' },\n        { value: 310, name: 'B' },\n        { value: 234, name: 'C' },\n        { value: 135, name: 'D' },\n        { value: 1548, name: 'E' }\n      ]\n    }\n  ]\n};\n```\n\nIn this case, `avoidLabelOverlap` is used to control whether ECharts adjust the position of label to avoid overlaps. Default value of `avoidLabelOverlap` is `true`. We want the label to be fixed in the middle so that we need to define it as `false`.\n\nTherefore, the middle of doughnut chart will show the `name` of the highlighted sector.\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/2bbdbc22eb3ab9587415.js b/docs/_nuxt/js/2bbdbc22eb3ab9587415.js
new file mode 100644
index 0000000..b2e9628
--- /dev/null
+++ b/docs/_nuxt/js/2bbdbc22eb3ab9587415.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[36],{337:function(e,t,r){"use strict";r.r(t),t.default='# Radar Chart\n\nRadar Chart is suitable for display the data with more than three dimensions. The radar chart has more than two axes starting from the same point. The relative position and angle of the axis are usually meaningless. \n\nEvery variable in the radar chart match one axis that starting from the center. Axes have the same scale index and included angle. Connect the scale between axis, and connect the item in each axis together to become a polygon.\n\n<iframe max-width="830" width="100%" height="400" \nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xH1-fnLcVG&v=1">\n</iframe>\n\nThe radar chart is useful for indicating similar values and checking outliers in variables. The radar chart can also be used to reflect what variables have a higher or lower score in the dataset, which makes it a better way to display the performance (see below). Similarly, the radar chart is often used in displaying data such as rankings, evaluations and reviews.\n\n<iframe max-width="830" width="100%" height="400" \nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xHJH93GqVf&v=1">\n</iframe>\n\nAs shown below, the chart shows the comparison of the budgets and expenses in a kindergarten fund flow. The six areas involved are food, toys, picture books, medical care and clothing. Every axis has a range of 0 to 500. The toy is the only part that was overspent while the clothing is far below the budget. It becomes clear at a glance while using a radar chart to show which part is overspend or underspend.\n\n<iframe max-width="830" width="100%" height="400" \nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xrk6EfmqVf">\n</iframe>\n\n## Suggestion for Using Radar Chart\n\n1. The number of polygons in the radar chart should be limited. If there are more than 5 categories to be evaluated, both the outline and color block will be too confusing to read.\n\n2. Including too many axes can also make the radar chart difficult to read. Therefore, try to keep the radar chart concisely and limit the number of variables.\n\n3. Because the radial distance is hard to judge, it is still difficult to read the specific value although there are grid lines. We recommend you use a line graph if you need to compare specific values.\n'}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/2ca8e87e103e49675911.js b/docs/_nuxt/js/2ca8e87e103e49675911.js
new file mode 100644
index 0000000..d93200d
--- /dev/null
+++ b/docs/_nuxt/js/2ca8e87e103e49675911.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[66],{367:function(e,n,t){"use strict";t.r(n),n.default="# Basic Scatter Chart\n\nScatter Chart, a frequently used chart type, was constructed with several \"points\". These points sometimes represent the position of the value in the coordinate system (cartesian coordinate system, geo coordinate system, etc.), sometimes the size and color of items can be mapped to the value, represent high-dimensional data.\n\n## Simple Example\n\nThe following example is a basic scatter chart configuration with the x-axis as category and the y-axis as value:\n\n```js live\noption = {\n  xAxis: {\n    data: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']\n  },\n  yAxis: {},\n  series: [\n    {\n      type: 'scatter',\n      data: [220, 182, 191, 234, 290, 330, 310]\n    }\n  ]\n};\n```\n\n## Scatter Chart in Cartesian Coordinate System\n\nIn the previous case, the x-axis of the scatter chart is a discrete category axis and the y-axis is a continuous value axis. However, the normal scene for the scatter chart is to have 2 continuous value axis (also called the cartesian coordinate system). The series type is different in that both x-axis and y-axis value are included in `data`, but not in `xAxis` and `yAxis`.\n\n```js live\noption = {\n  xAxis: {},\n  yAxis: {},\n  series: [\n    {\n      type: 'scatter',\n      data: [\n        [10, 5],\n        [0, 8],\n        [6, 10],\n        [2, 12],\n        [8, 9]\n      ]\n    }\n  ]\n};\n```\n\n## Customized Scatter Chart\n\n### Symbol Style\n\nSymbol refers to the item shape in a scatter chart. There are three types of config available. The first is ECharts built-in shape, the second is image, the last is the SVG path.\n\nThe built-in shape in ECharts included: `'circle'`, `'rect'`(rectangle), `'roundRect'`(rounded rectangle), `'triangle'`, `'diamond'`, `'pin'` and `'arrow'`. To use built-in shapes, you need to state the `symbol` to the corresponding string.\n\nIf you want to define the shape as any image, try to use `'image'` following by the path, eg. `'image://http://example.com/xxx.png'` or `'image://./xxx.png'`.\n\nECharts `symbol` also supports SVG vector graphics. You can define `symbol` as an SVG file path that starts with `'path://'` to locate the vector graphics. The advantages of vector graphics are smaller size and no jagged or blurred.\n\nMethod to find the SVG path: Open an `SVG` path; Find the path similar as `<path d=\"M… L…\"></path>`; Add `d`'s value after `'path://'`. Let's check how to define an item to vector shape of heart.\n\nFirstly, we need an `SVG` file of a heart. You can draw one by vector editing software, or download one from the internet. Here is the content:\n\n```xml\n<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 51.997 51.997\" style=\"enable-background:new 0 0 51.997 51.997;\" xml:space=\"preserve\">\n    <path d=\"M51.911,16.242C51.152,7.888,45.239,1.827,37.839,1.827c-4.93,0-9.444,2.653-11.984,6.905 c-2.517-4.307-6.846-6.906-11.697-6.906c-7.399,0-13.313,6.061-14.071,14.415c-0.06,0.369-0.306,2.311,0.442,5.478 c1.078,4.568,3.568,8.723,7.199,12.013l18.115,16.439l18.426-16.438c3.631-3.291,6.121-7.445,7.199-12.014 C52.216,18.553,51.97,16.611,51.911,16.242z\"/>\n</svg>\n```\n\nIn ECharts, define config `symbol` as a path of d:\n\n```js live\noption = {\n  xAxis: {\n    data: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']\n  },\n  yAxis: {},\n  series: [\n    {\n      type: 'scatter',\n      data: [220, 182, 191, 234, 290, 330, 310],\n      symbolSize: 20,\n      symbol:\n        'path://M51.911,16.242C51.152,7.888,45.239,1.827,37.839,1.827c-4.93,0-9.444,2.653-11.984,6.905 c-2.517-4.307-6.846-6.906-11.697-6.906c-7.399,0-13.313,6.061-14.071,14.415c-0.06,0.369-0.306,2.311,0.442,5.478 c1.078,4.568,3.568,8.723,7.199,12.013l18.115,16.439l18.426-16.438c3.631-3.291,6.121-7.445,7.199-12.014 C52.216,18.553,51.97,16.611,51.911,16.242z'\n    }\n  ]\n};\n```\n\nIn this way, we have a heart vector of the item.\n\n### Symbol Size\n\nThe size of symbol is defined by [`series.symbolSize`](${optionPath}series-scatter.symbolSize). It can be s pixel value of the item size, or an array included two numbers, to define the width and height.\n\nBesides, it can be defined as a call back function. Here is an example of the format:\n\n```ts\n(value: Array | number, params: Object) => number | Array;\n```\n\nThe first argument is the data value, and the second argument included other arguments of the data item. In the following instance, we define the size of the item proportional related to the data value.\n\n```js live\noption = {\n  xAxis: {\n    data: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']\n  },\n  yAxis: {},\n  series: [\n    {\n      type: 'scatter',\n      data: [220, 182, 191, 234, 290, 330, 310],\n      symbolSize: function(value) {\n        return value / 10;\n      }\n    }\n  ]\n};\n```\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/2f8b43ec92713daf5768.js b/docs/_nuxt/js/2f8b43ec92713daf5768.js
new file mode 100644
index 0000000..5409bec
--- /dev/null
+++ b/docs/_nuxt/js/2f8b43ec92713daf5768.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[18],{319:function(e,t,n){"use strict";n.r(t),t.default="# Apache ECharts 5 Upgrade Guide\n\nThis guide is for those who want to upgrade from echarts 4.x (hereafter `v4`) to echarts 5.x (hereafter `v5`). You can find out what new features `v5` brings that are worth upgrading in [New Features in ECharts 5](${lang}/basics/release-note/v5-feature). In most cases, developers won't need to do anything extra for this upgrade, as echarts has always tried to keep the API as stable and backward-compatible as possible. However, `v5` still brings some breaking changes that require special attention. In addition, in some cases, `v5` provides a better API to replace the previous one, and these superseded APIs will no longer be recommended (though we have tried to be as compatible as possible with these changes). We'll try to explain these changes in detail in this document.\n\n## Breaking Changes\n\n### Default Theme\n\nFirst of all, the default theme has been changed. `v5` has made a lot of changes and optimizations on the theme design. If you still want to keep the colors of the old version, you can manually declare the colors as follows.\n\n```js\nchart.setOption({\n  color: [\n    '#c23531',\n    '#2f4554',\n    '#61a0a8',\n    '#d48265',\n    '#91c7ae',\n    '#749f83',\n    '#ca8622',\n    '#bda29a',\n    '#6e7074',\n    '#546570',\n    '#c4ccd3'\n  ]\n  // ...\n});\n```\n\nOr, to make a simple `v4` theme.\n\n```js\nvar themeEC4 = {\n  color: [\n    '#c23531',\n    '#2f4554',\n    '#61a0a8',\n    '#d48265',\n    '#91c7ae',\n    '#749f83',\n    '#ca8622',\n    '#bda29a',\n    '#6e7074',\n    '#546570',\n    '#c4ccd3'\n  ]\n};\nvar chart = echarts.init(dom, themeEC4);\nchart.setOption(/* ... */);\n```\n\n### Importing ECharts\n\n#### Removing Support for Default Exports\n\nSince `v5`, echarts only provides `named exports`.\n\nSo if you are importing `echarts` like this:\n\n```js\nimport echarts from 'echarts';\n// Or import core module\nimport echarts from 'echarts/lib/echarts';\n```\n\nIt will throw error in `v5`. You need to change the code as follows to import the entire module.\n\n```js\nimport * as echarts from 'echarts';\n// Or\nimport * as echarts from 'echarts/lib/echarts';\n```\n\n#### Tree-shaking API\n\nIn 5.0.1, we introduced the new [tree-shaking API](${lang}/basics/import)\n\n```js\nimport * as echarts from 'echarts/core';\nimport { BarChart } from 'echarts/charts';\nimport { GridComponent } from 'echarts/components';\n// Note that the Canvas renderer is no longer included by default and needs to be imported explictly, or import the SVGRenderer if you need to use the SVG rendering mode\nimport { CanvasRenderer } from 'echarts/renderers';\n\necharts.use([BarChart, GridComponent, CanvasRenderer]);\n```\n\nTo make it easier for you to know which modules you need to import based on your option, our new example page adds a new feature to generate the three-shakable code, you can check the `Full Code` tab on the example page to see the modules you need to introduce and the related code.\n\nIn most cases, we recommend using the new tree-shaking interface whenever possible, as it maximizes the power of the packaging tool tree-shaking and effectively resolves namespace conflicts and prevents the exposure of internal structures. If you are still using the CommonJS method of writing modules, the previous approach is still supported:\n\n```js\nconst echarts = require('echarts/lib/echarts');\nrequire('echarts/lib/chart/bar');\nrequire('echarts/lib/component/grid');\n```\n\nSecond, because our source code has been rewritten using TypeScript, `v5` will no longer support importing files from `echarts/src`. You need to change it to import from `echarts/lib`.\n\n#### Dependency Changes\n\n> Note: This section is only for developers who use tree-shaking interfaces to ensure a minimal bundle size, not for those who imports the whole package.\n\nIn order to keep the size of the bundle small enough, we remove some dependencies that would have been imported by default. For example, as mentioned above, when using the new on-demand interface, `CanvasRenderer` is no longer included by default, which ensures that unneeded Canvas rendering code is not imported when only SVG rendering mode is used, and in addition, the following dependencies are adjusted.\n\n- The right-angle coordinate system component is no longer introduced by default when using line charts and bar charts, so the following introduction method was used before\n\n```js\nconst echarts = require('echarts/lib/echarts');\nrequire('echarts/lib/chart/bar');\nrequire('echarts/lib/chart/line');\n```\n\nNeed to introduce the `grid` component separately again\n\n```js\nrequire('echarts/lib/component/grid');\n```\n\nReference issues: [#14080](https://github.com/apache/echarts/issues/14080), [#13764](https://github.com/apache/echarts/issues/13764)\n\n- `aria` components are no longer imported by default. You need import it manually if necessary.\n\n```js\nimport { AriaComponent } from 'echarts/components';\necharts.use(AriaComponent);\n```\n\nOr\n\n```js\nrequire('echarts/lib/component/aria');\n```\n\n### Built-in GeoJSON Removed\n\n`v5` removes the built-in geoJSON (previously in the `echarts/map` folder). These geoJSON files were always sourced from third parties. If users still need them, they can go get them from the old version, or find more appropriate data and register it with ECharts via the registerMap interface.\n\n### Browser Compatibility\n\nIE8 is no longer supported by `v5`. We no longer maintain and upgrade the previous [VML renderer](https://github.com/ecomfe/zrender/tree/4.3.2/src/vml) for IE8 compatibility. If developers have a strong need for a VML renderer, they are welcome to submit a pull request to upgrade the VML renderer or maintain a separate third-party VML renderer, as we support registration of standalone renderers starting with `v5.0.1`.\n\n### Configuration Item Adjustment\n\n#### Axis-Line and Axis-Tick of Y-Axis (Value Axis) Are Hidden by Default\n\nThe axis line and axis ticks of the Y axis (`value` axis) has been hidden by default since `v5`. If you prefer the previous style, you will need to explicitly configure as follows,\n\n```js\nyAxis: {\n  type: 'value',\n  // explicitly set `axisLine.show` & `axisTick.show` as `true`\n  axisLine: {\n    show: true\n  },\n  axisTick: {\n    show: true\n  }\n}\n```\n\n#### Visual Style Settings Priority Changes\n\nThe priority of the visuals between [visualMap component](${optionPath}visualMap) and [itemStyle](${optionPath}series-scatter.itemStyle) | [lineStyle](${optionPath}series-scatter.lineStyle) | [areaStyle](${optionPath}series-scatter.areaStyle) are reversed since `v5`.\n\nThat is, previously in `v4`, the visuals (i.e., color, symbol, symbolSize, ...) that generated by [visualMap component](${optionPath}visualMap) has the highest priority, which will overwrite the same visuals settings in [itemStyle](${optionPath}series-scatter.itemStyle) | [lineStyle](${optionPath}series-scatter.lineStyle) | [areaStyle](${optionPath}series-scatter.areaStyle). That brought troubles when needing to specify specific style to some certain data items while using [visualMap component](${optionPath}visualMap). Since `v5`, the visuals specified in [itemStyle](${optionPath}series-scatter.itemStyle) | [lineStyle](${optionPath}series-scatter.lineStyle) | [areaStyle](${optionPath}series-scatter.areaStyle) has the highest priority.\n\nIn most cases, users will probably not notice this change when migrating from `v4` to `v5`. But users can still check that if [visualMap component](${optionPath}visualMap) and [itemStyle](${optionPath}series-scatter.itemStyle) | [lineStyle](${optionPath}series-scatter.lineStyle) | [areaStyle](${optionPath}series-scatter.areaStyle) are both specified.\n\n#### `padding` for Rich Text\n\n`v5` adjusts the [rich.?.padding](${optionPath}series-scatter.label.rich.<style_name>.padding) to make it more compliant with CSS specifications. In `v4`, for example `rich. .padding: [11, 22, 33, 44]` means that `padding-top` is `33` and `padding-bottom` is `11`. The position of the top and bottom is adjusted in `v5`, `rich. .padding: [11, 22, 33, 44]` means that `padding-top` is `11` and `padding-bottom` is `33`.\n\nIf the user is using [rich.?.padding](${optionPath}series-scatter.label.rich.<style_name>.padding), this order needs to be adjusted.\n\n## Extensions\n\nThese extensions need to be upgraded to new version to support echarts `v5`:\n\n- [echarts-gl](https://github.com/ecomfe/echarts-gl)\n- [echarts-wordcloud](https://github.com/ecomfe/echarts-wordcloud)\n- [echarts-liquidfill](https://github.com/ecomfe/echarts-liquidfill)\n\n## Deprecated APIs\n\nSome of the API and echarts options are deprecated since `v5`, but are still backward compatible. Users can **keep using these deprecated API**, with only some warning will be printed to console in dev mode. But if users have spare time, it is recommended to upgraded to new API for the consideration of long term maintenance.\n\nThe deprecated API and their corresponding new API are listed as follows:\n\n- Transform related props of a graphic element are changed:\n  - Changes:\n    - `position: [number, number]` are changed to `x: number`/`y: number`.\n    - `scale: [number, number]` are changed to `scaleX: number`/`scaleY: number`.\n    - `origin: [number, number]` are changed to `originX: number`/`originY: number`.\n  - The `position`, `scale` and `origin` are still supported but deprecated.\n  - It effects these places:\n    - In the `graphic` components: the declarations of each element.\n    - In `custom series`: the declarations of each element in the return of `renderItem`.\n    - Directly use zrender graphic elements.\n- Text related props on graphic elements are changed:\n  - Changes:\n    - The declaration of attached text (or say, rect text) are changed.\n      - Prop `style.text` are deprecated in elements except `Text`. Instead, Prop set `textContent` and `textConfig` are provided to support more powerful capabilities.\n      - These related props at the left part below are deprecated. Use the right part below instead.\n        - textPosition => textConfig.position\n        - textOffset => textConfig.offset\n        - textRotation => textConfig.rotation\n        - textDistance => textConfig.distance\n    - The props at the left part below are deprecated in `style` and `style.rich.?`. Use the props at the right part below instead.\n      - textFill => fill\n      - textStroke => stroke\n      - textFont => font\n      - textStrokeWidth => lineWidth\n      - textAlign => align\n      - textVerticalAlign => verticalAlign\n      - textLineHeight => lineHeight\n      - textWidth => width\n      - textHeight => hight\n      - textBackgroundColor => backgroundColor\n      - textPadding => padding\n      - textBorderColor => borderColor\n      - textBorderWidth => borderWidth\n      - textBorderRadius => borderRadius\n      - textBoxShadowColor => shadowColor\n      - textBoxShadowBlur => shadowBlur\n      - textBoxShadowOffsetX => shadowOffsetX\n      - textBoxShadowOffsetY => shadowOffsetY\n    - Note: these props are not changed:\n      - textShadowColor\n      - textShadowBlur\n      - textShadowOffsetX\n      - textShadowOffsetY\n  - It effects these places:\n    - In the `graphic` components: the declarations of each element. [compat, but not accurately the same in some complicated cases.]\n    - In `custom series`: the declarations of each element in the return of `renderItem`. [compat, but not accurately the same in some complicated cases].\n    - Directly use zrender API to create graphic elements. [No compat, breaking change].\n- API on chart instance:\n  - `chart.one(...)` is deprecated.\n- `label`:\n  - In props `color`, `textBorderColor`, `backgroundColor` and `borderColor`, the value `'auto'` is deprecated. Use the value `'inherit'` instead.\n- `hoverAnimation`:\n  - option `series.hoverAnimation` is deprecated. Use `series.emphasis.scale` instead.\n- `line series`:\n  - option `series.clipOverflow` is deprecated. Use `series.clip` instead.\n- `custom series`:\n  - In `renderItem`, the `api.style(...)` and `api.styleEmphasis(...)` are deprecated. Because it is not really necessary and hard to ensure backward compatibility. Users can fetch system designated visual by `api.visual(...)`.\n- `sunburst series`:\n  - Action type `sunburstHighlight` is deprecated. Use `highlight` instead.\n  - Action type `sunburstUnhighlight` is deprecated. Use `downplay` instead.\n  - option `series.downplay` is deprecated. Use `series.blur` instead.\n  - option `series.highlightPolicy` is deprecated. Use `series.emphasis.focus` instead.\n- `pie series`:\n  - The action type at the left part below are deprecated. Use the right part instead:\n    - `pieToggleSelect` => `toggleSelect`\n    - `pieSelect` => `select`\n    - `pieUnSelect` => `unselect`\n  - The event type at the left part below are deprecated. Use the right part instead:\n    - `pieselectchanged` => `selectchanged`\n    - `pieselected` => `selected`\n    - `pieunselected` => `unselected`\n  - option `series.label.margin` is deprecated. Use `series.label.edgeDistance` instead.\n  - option `series.clockWise` is deprecated. Use `series.clockwise` instead.\n  - option `series.hoverOffset` is deprecated. Use `series.emphasis.scaleSize` instead.\n- `map series`:\n  - The action type at the left part below are deprecated. Use the right part instead:\n    - `mapToggleSelect` => `toggleSelect`\n    - `mapSelect` => `select`\n    - `mapUnSelect` => `unselect`\n  - The event type at the left part below are deprecated. Use the right part instead:\n    - `mapselectchanged` => `selectchanged`\n    - `mapselected` => `selected`\n    - `mapunselected` => `unselected`\n  - option `series.mapType` is deprecated. Use `series.map` instead.\n  - option `series.mapLocation` is deprecated.\n- `graph series`:\n  - option `series.focusNodeAdjacency` is deprecated. Use `series.emphasis: { focus: 'adjacency'}` instead.\n- `gauge series`:\n  - option `series.clockWise` is deprecated. Use `series.clockwise` instead.\n  - option `series.hoverOffset` is deprecated. Use `series.emphasis.scaleSize` instead.\n- `dataZoom component`:\n  - option `dataZoom.handleIcon` need prefix `path://` if using SVGPath.\n- `radar`:\n  - option `radar.name` is deprecated. Use `radar.axisName` instead.\n  - option `radar.nameGap` is deprecated. Use `radar.axisNameGap` instead.\n- Parse and format:\n  - `echarts.format.formatTime` is deprecated. Use `echarts.time.format` instead.\n  - `echarts.number.parseDate` is deprecated. Use `echarts.time.parse` instead.\n  - `echarts.format.getTextRect` is deprecated.\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/30b996e81f48575dff04.js b/docs/_nuxt/js/30b996e81f48575dff04.js
new file mode 100644
index 0000000..fcaa83d
--- /dev/null
+++ b/docs/_nuxt/js/30b996e81f48575dff04.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[143],{444:function(n,t,e){"use strict";e.r(t),t.default='# 智能指针吸附\n\n在图表中,部分可交互元素可能比较小,有时候用户不易准确地进行点击等操作,移动端尤其如此。因此,在 Apache ECharts<sup>TM</sup> 5.4.0 中,我们引入了“智能指针吸附”的概念。\n\n从该版本起,在默认情况下,ECharts 对移动端的图表开启指针吸附,对非移动端的图表关闭。\n\n> 如果需要对所有平台都开启,则可以通过在 [init](${mainSitePath}api.html#echarts.init) 的时候将 `opt.useCoarsePointer` 设置为 `true` 来实现;设为 `false` 则对所有平台都关闭。\n\n## 吸附原理\n\n在鼠标或触摸事件发生时,ECharts 会根据鼠标或触摸的位置,判断是否和某个可交互元素相交。如果是,则认为该元素是交互对象(与优化前的逻辑一致);如果不是,则在一定范围内找到最接近鼠标或触摸位置的一个元素。\n\n> 默认的范围是 44px(参见 [W3C 标准](https://www.w3.org/WAI/WCAG21/Understanding/target-size.html)),开发者可在 [init](${mainSitePath}api.html#echarts.init) 的时候,通过 `opt.pointerSize` 设置该值。\n\n更具体地说,ECharts 会在鼠标或触摸位置的周围,依次循环不同角度和不同半径(在 `opt.pointerSize` 范围内),直到找到一个元素与其相交。如果找到了,则认为该元素是交互对象。\n\n<img width="100%" height="100%" style="max-width: 441px"\nsrc="images/how-to/coarse-pointer-zh.gif">\n</img>\n\n也就是说,如果有元素在鼠标或触摸位置的 `opt.pointerSize` 半径范围内,则最靠近的可交互元素会被认为是交互对象。\n\n## 性能分析\n\n在实际算法实现的时候,我们首先将鼠标或触摸位置与所有可交互元素的 AABB 包围盒判断相交性,从而快速剔除了大部分不相交的元素。然后,我们再对剩余的元素进行精确的路径相交判断。因此,从用户体验角度,不会带来可感知的性能损耗。\n\n对于大规模数据的图表系列(也就是开启了 `large: true` 的柱状图、散点图等),不会开启吸附功能。\n'}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/3100a23e60b180fff61d.js b/docs/_nuxt/js/3100a23e60b180fff61d.js
new file mode 100644
index 0000000..362244e
--- /dev/null
+++ b/docs/_nuxt/js/3100a23e60b180fff61d.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[34],{335:function(e,t,r){"use strict";r.r(t),t.default='# Stacked Area Chart\nThe stacked area chart is a special kind of area chart. It is used to compare several data series in the same interval. The main difference between the area chart and stacked area chart is that the base of every series is over the previous one. Therefore, every time a line is measured, the area between the lines will be filled with color.\n\nIf there are several series and you want to analyze the part-to-whole relationship for every single one, which reflects the contribution of partial quantity to the total, you can use the stacked area chart. For instance, the contribution of one seller to the total sales.\n\n<iframe max-width="830" width="100%" height="400" \nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xHySthj74z">\n</iframe>\n\nHere are two different kinds of stacked area chart:\n\n+ <b>Traditional stacked chart</b>: Use the original value to stack, show the change in the whole process.\n+ <b>Percentage stacked chart</b>: The percentage stacked chart shows how did the relationship between series changed with time. The cumulative total is not the focus as this kind of chart. The important is to show the series distribution as the whole.\n\n<iframe max-width="830" width="100%" height="400" \nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xSyBN2i7Vf">\n</iframe>\n\n## Suggestion for Using Stacked Area Chart\n\n1. The area chart can\'t display data in many series that are closed to each others. It will make the chart hard to read: \n\n<iframe max-width="830" width="100%" height="400" \nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xHyNDxOo4M">\n</iframe>\n\nWith the same series, stacked bar chart works better:\n\n<iframe max-width="830" width="100%" height="400" \nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xSyBN2i7Vf">\n</iframe>\n\n<div class="article-look-outside">\n\t<div class="article-look-inside" style="padding-bottom:50%">\n\t    <iframe class="article-look-content"\n\t    src="https://gallery.echartsjs.com/view-lite.html?cid=xHyNDxOo4M">\n\t    </iframe>\n\t</div>\n</div>\n\n2. Although the stacked bar chart is good dealing with several series, try not to include more than 7 in one chart.\n\n3. Because the stacked bar chart provides the relation between part and whole, you should not include negative value in series.\n\n4. We suggest putting larger values on the top side of the chart, you will get a better display effect.\n'}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/316474ab94e9c1d6354c.js b/docs/_nuxt/js/316474ab94e9c1d6354c.js
new file mode 100644
index 0000000..f81f36b
--- /dev/null
+++ b/docs/_nuxt/js/316474ab94e9c1d6354c.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[97],{398:function(n,t,e){"use strict";e.r(t),t.default='# 堆叠柱状图\n\n堆叠柱状图是柱状图的扩展。但区别在于,柱状图的数据值为并行排列,堆叠柱图则是一个个叠加起来的。它可以展示每一个分类的总量,以及该分类包含的每个小分类的大小及占比。因此,非常适合处理部分与整体的关系。\n\n与饼图显示单个部分到整体的关系不同的是,堆叠柱状图可以显示多个部分到整体的关系。例如一个班级体育课选课的各项目人数统计,你可以用柱状图或饼图来展示。但是,当需要进一步区分男生和女生参与到不同项目中的人数分别是多少时,就需要把每个项目中包含的男生数和女生数都展示出来。如图选用堆叠柱状图,不仅能显示每个项目的总人数,还能展示出每个项目中的一部分与整体的关系。\n\n<iframe max-width="830" width="100%" height="400"\n src="https://gallery.echartsjs.com/view-lite.html?cid=xBk7oUNwEz">\n</iframe>\n\n## 堆叠柱状 \b 图的使用建议\n\n1、遵循基本的柱状图使用原则。为了使图表易于理解,请避免使用太多颜色,不要刻意展示被截断的数据误导读者。\n\n2、堆叠柱状图不适合用于对比不同分组内同个分类之间的数据大小。\n\n3、堆叠柱状图最好的展示效果是每个组只包含两到三个类别,最多不要超过 6 个,因为太多的数据系列会使数据的阅读和分辨变得非常困难。\n\n4、由于要分析部分数据在整体中的占比,因此要避免用堆叠柱状图展示包含负数的数据。\n\n5、大多数的堆叠柱状图都是垂直绘制的,但是如果你的数据标签特别长时,考虑更好地展示效果,可以选择使用水平堆叠的方式。\n'}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/3256fb9dd0604895c864.js b/docs/_nuxt/js/3256fb9dd0604895c864.js
new file mode 100644
index 0000000..abe49df
--- /dev/null
+++ b/docs/_nuxt/js/3256fb9dd0604895c864.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[11],{312:function(e,o,n){"use strict";n.r(o),o.default='# Get Inspired\n\nThe following list provides some ideas when you have a question "I don\'t know how to design a chart" or "I don\'t know how to use Apache ECharts to achieve a certain effect".\n\n- [Apache ECharts Official Examples](${mainSitePath}/examples)\n- "How To Guides - Common Charts" in this handbook\n'}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/34ec6f617c3c59ae2ff8.js b/docs/_nuxt/js/34ec6f617c3c59ae2ff8.js
new file mode 100644
index 0000000..96d7bfb
--- /dev/null
+++ b/docs/_nuxt/js/34ec6f617c3c59ae2ff8.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[103],{404:function(n,e,t){"use strict";t.r(e),e.default='# 饼图\n\n饼图主要用于展现不同类别数值相对于总数的占比情况。图中每个分块(扇区)的弧长表示该类别的占比大小,所有分块数据总和为 100%。\n\n<iframe max-width="830" width="100%" height="400"\nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xHySlBkIEM&v=1">\n</iframe>\n\n虽然饼图能快速有效地展示数据的比例分布,并被广泛用于各个领域,但是饼图及其变形图表一直是比较受争议的图表。因此,我们在使用饼图及其变形图表时一定要谨慎并避免走进误区。\n\n## 饼图的使用建议\n\n1、饼图适合用来展示单一维度数据的占比,要求其数值中没有零或负值,并确保各分块占比总和为 100%。\n\n2、我们很难比较一个分块过多的饼图的数据,建议尽量将饼图分块数量控制在五个以内。当数据类别较多时,可以把较小或不重要的数据合并成第五个分块,并命名为"其它"。如果各类别都必须全部展示,此时选择柱状图或堆积柱状图或许更合适。\n\n<img max-width="830" width="100%" height="100%" src="images/design/pie/pie02.jpg" />\n\n3、饼图不适合被用于精确数据的比较,因此当各类别数据占比较接近时(如下左图),我们很难对比出每个类别占比的大小。此时建议选用柱状图或南丁格尔玫瑰图(如下右图)来获取更好的展示效果。\n\n<img max-width="830" width="100%" height="100%" src="images/design/pie/pie03.jpg" />\n\n4、大多数人视觉习惯是按照顺时针和自上而下的顺序去观察。因此在绘制饼图时,建议从 12 点钟开始沿顺时针右边第一个分块绘制饼图最大的数据分块,有效的强调其重要性。\n\n其余的数据分块有两种建议,一种是按照数据大小依次顺时针排列,另一种是在 12 点钟的左边绘制第二大的分块,其余的分块按照逆时针排列,最小的分块放在底部。如下图所示。\n\n<img max-width="830" width="100%" height="100%" src="images/design/pie/pie01.jpg" />\n\n按照数据大小区别顺序,不仅符合用户的视觉习惯,也更易于数据的识别和比较。当然基于这个原理,我们也可以把需要强调的最重要的部分(不一定是最大的部分)放在最突出重要的位置。\n\n5、可以添加一些装饰来强调饼图中的某一个数据。颜色、动效、样式、位置等元素都可以被用来突出显示一个扇区。请注意适度,有时太多的装饰会让用户理解数据时分心。\n\n<iframe max-width="830" width="100%" height="400"\n src="https://gallery.echartsjs.com/view-lite.html?cid=xHySlBkIEM&v=1">\n</iframe>\n\n6、三维的饼图歪曲了各分块相对于整体的比例关系,会造成错误及理解上的困扰。因此不建议使用 3D 饼图。\n\n<img max-width="830" width="100%" height="100%" src="images/design/pie/pie04.jpg" />\n'}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/3868741698e207f34cd3.js b/docs/_nuxt/js/3868741698e207f34cd3.js
new file mode 100644
index 0000000..a91fb97
--- /dev/null
+++ b/docs/_nuxt/js/3868741698e207f34cd3.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{316:function(e,n,t){"use strict";t.r(n),n.default='# Apache ECharts 5.5.0 Features\n\n## Enhanced ESM Support\n\nThis feature is a significant change to the default ESM package, specifically designed for developer testing and Node.js usage in module customization scenarios.\n\nPreviously, ECharts only exported `*.esm` files in npm (in the lib directory of the npm package). While this worked well in bundlers, it didn’t perform as well in the Node.js runtime and some Node.js-based testing frameworks like vitest and jest.\n\nWith this new feature, we’ve made several changes to improve this:\n\n- Added `"type": "module"` to package.json\n- Added `"exports": {...}"` to package.json\n- Added some `package.json` files to the sub-directory, which only contain `"type": "commonjs"`.\n\nThese changes mean that files like `echarts/core.js` can now be resolved as ESM in environments like pure Node.js, vitest, jest, and create-react-app.\n\nWe’ve also ensured that this new feature is compatible with a variety of environments, including runtime (node/vitest/jest(create-react-app)/ssr/…) and bundlers (webpack/rollup/vite/esbuild/…).\n\nWe’re excited about this new feature and believe it will significantly improve the developer experience.\n\n## Server-Side Rendering + Lightweight Client Runtime\n\nApache ECharts is powerful, but correspondingly, it has a large package size. We have made various efforts to improve this in previous versions. Developers can use TreeShaking to load parts of the code as needed, reducing the amount of code loaded. Starting from Apache ECharts version 5.3, we support a server-side SVG string rendering solution with zero dependencies, and support the initial animation of charts. In this way, using the result of server-side rendering as the first screen rendering can greatly reduce the first screen loading time.\n\nAlthough server-side rendering is an effective solution to reduce the package size, if some interactions need to be implemented on the client side, it is still necessary to load echarts.js, which may increase the loading time. For some scenarios that require faster page loading, this may not be an ideal choice.\n\nIn version 5.5.0, we added a lightweight runtime for the client side, so the client does not need to load the full ECharts to implement some interactions. In this way, we can render charts on the server side, and then load the lightweight runtime on the client side to implement some common interactions. This means that only 4KB of lightweight runtime (1KB after gzip) is needed to implement charts with initial animations and some commonly used interaction forms. This improvement will greatly increase the page loading speed, especially for the mobile experience.\n\n![](images/5-5-0/ssr-example.png)\n\nTake this pie chart with a title as an example, if the client only packages the pie chart and title components, it needs 135KB after gzip; if it follows the server-side rendering solution, the rendering result SVG is 1 KB after gzip, and the client runtime is 1KB after gzip, only 1.5% of the former volume. In terms of interaction, the latter can also achieve initial animation, highlighting after the mouse moves to the chart element, and get click events, which can meet most of the common interaction needs.\n\nIf you need to use this solution, the server-side code remains the same, but you need to make sure that the ECharts version is above 5.5.0.\n\n```ts\n// Server-side code\nconst echarts = require(\'echarts\');\n\n// In SSR mode the first container parameter is not required\nlet chart = echarts.init(null, null, {\n  renderer: \'svg\', // must use SVG rendering mode\n  ssr: true, // enable SSR\n  width: 400, // need to specify height and width\n  height: 300\n});\n\n// use setOption as normal\nchart.setOption({\n  //...\n});\n\n// Output a string\nconst svgStr = chart.renderToSVGString();\n\n// Dispose it to release memory\nchart.dispose();\nchart = null;\n\n// Response to the browser (using Express.js as example):\nres.writeHead(200, {\n  \'Content-Type\': \'application/xml\'\n});\nres.write(svgStr);\nres.end();\n```\n\nThe client adds the obtained SVG string to the container and binds the lightweight runtime:\n\n```html\n<div id="chart-container" style="width:800px;height:600px"></div>\n\n<script src="https://cdn.jsdelivr.net/npm/echarts/ssr/client/dist/index.min.js"><\/script>\n<script>\nconst ssrClient = window[\'echarts-ssr-client\'];\n\nconst isSeriesShown = {\n  a: true,\n  b: true\n};\n\nfunction updateChart(svgStr) {\n  const container = document.getElementById(\'chart-container\');\n  container.innerHTML = svgStr;\n\n  // Use lightweight runtime to give the chart interactive capabilities\n  ssrClient.hydrate(container, {\n    on: {\n      click: (params) => {\n        if (params.ssrType === \'legend\') {\n          // Click the legend element, request the server for secondary rendering\n          isSeriesShown[params.seriesName] = !isSeriesShown[params.seriesName];\n          fetch(\'...?series=\' + JSON.stringify(isSeriesShown))\n            .then(res => res.text())\n            .then(svgStr => {\n              updateChart(svgStr);\n            });\n        }\n      }\n    }\n  });\n}\n\n// Get the SVG string rendered by the server through AJAX request\nfetch(\'...\')\n  .then(res => res.text())\n  .then(svgStr => {\n    updateChart(svgStr);\n  });\n<\/script>\n```\n\nThe lightweight client runtime must be used in conjunction with the server-side rendering results in SVG format, supporting the following interactions:\n\n- Initial animation of the chart (implementation principle: the SVG rendered by the server has CSS animation)\n- Highlight style (implementation principle: the SVG rendered by the server has CSS animation)\n- Dynamically change data (implementation principle: the lightweight runtime requests the server for secondary rendering)\n- Click the legend to toggle whether the series is displayed (implementation principle: the lightweight runtime requests the server for secondary rendering)\n\nAs you can see, this can satisfy most interactive scenario needs. If more complex interactions are needed, the client needs to load `echarts.js` to implement complete functionality. For a complete introduction, please refer to [Server-side Rendering ECharts Charts](${lang}/how-to/cross-platform/server).\n\n## Data Drilldown Supports Transition Animation\n\nIn version 5.5.0, we added the `childGroupId` configuration item, which can realize the transition animation function of data drilldown.\n\nIn previous versions, we already support using `groupId` to represent the group to which the current data belongs. The newly added `childGroupId` can be used to express the group of the current data itself, forming a \\`parent-child-grandchild\\` relationship chain after being used in conjunction with `groupId`. When the user clicks on the data element in the chart, the chart will display the drilled down data in the form of transition animation.\n\n<md-example src="bar-multi-drilldown" width="100%" height="400" />\n\nDevelopers only need to specify `groupId` and `childGroupId`, and ECharts will automatically handle the hierarchical relationship and realize the transition animation.\n\n## Pie Chart Supports Gaps Between Sectors\n\nBy setting gaps between the sectors of the pie chart, the data blocks of the pie chart can be clearer and form unique visual effects. See ([series-pie.padAngle](${optionPath}series-pie.padAngle)).\n\n<md-example src="pie-padAngle" width="100%" height="400" />\n\n## Pie Chart and Polar Coordinate System Support End Angle\n\nThe end angle configuration item allows us to make incomplete pie charts such as semi-circles. See ([series-pie.endAngle](${optionPath}series-pie.endAngle)).\n\n<md-example src="pie-half-donut" width="100%" height="400" />\n\nThe polar coordinate system also supports the end angle, which can create more diverse polar coordinate charts. See ([angleAxis.endAngle](${optionPath}angleAxis.endAngle)).\n\n<md-example src="polar-endAngle" width="100%" height="400" />\n\n## Added `min-max` Sampling Method\n\nThe ECharts [sampling](${optionPath}series-line.sampling) configuration item allows for setting the downsampling strategy for line charts when the amount of data is far greater than the number of pixels, which can effectively optimize the drawing efficiency of the chart. In version 5.5.0, we added the `min-max` sampling method, which can display the extremes of the data more accurately while retaining the overall trend of the data.\n\n## Added Two Languages: Arabic and Dutch\n\nIn version 5.5.0, we added support for two languages, Arabic (AR) and Dutch (NL). Developers can register new language packs through the [echarts.registerLocale](${mainSitePath}api.html#echarts.registerLocale) method.\n\n## Tooltip Supports Specifying Container\n\nIn previous versions, the Tooltip could only be inserted into the chart container or `document.body`. Now, you can specify the container through [tooltip.appendTo](${optionPath}tooltip.appendTo), so you can control the position of the tooltip more flexibly.\n\n## Alignment Mode of Maximum and Minimum Labels on Axis\n\nIn version 5.5.0, we added [axisLabel.alignMinLabel](${optionPath}xAxis.axisLabel.alignMinLabel) and [axisLabel.alignMaxLabel](${optionPath}xAxis.axisLabel.alignMaxLabel) configuration items, which can control the alignment mode of the maximum and minimum labels on the axis. If the drawing area of the chart is relatively large and you don\'t want the axis label to overflow, you can align the maximum and minimum labels to the right and left, respectively.\n\n## Pictorial Bar Chart Supports Clipping\n\nThe pictorial bar chart may exceed the drawing area. If you want to avoid this, you can clip it through the [series-pictorialBar.clip](${optionPath}series-pictorialBar.clip) configuration item.\n\n## Added `dataIndex` Parameter For Tooltip `valueFormatter`\n\n`valueFormatter` can be used to customize the value part of the tooltip content, and now an `dataIndex` parameter has been added, which can be used to obtain the index of the current data.\n\n## Full Changelog\n\nView the [Changelog](${mainSitePath}changelog.html#v5-5-0)\n'}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/38d3f3c9e4619e0fddff.js b/docs/_nuxt/js/38d3f3c9e4619e0fddff.js
new file mode 100644
index 0000000..0fd83a7
--- /dev/null
+++ b/docs/_nuxt/js/38d3f3c9e4619e0fddff.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[119],{420:function(n,t,e){"use strict";e.r(t),t.default="# 快速上手\n\n## 获取 Apache ECharts\n\nApache ECharts 支持多种下载方式,可以在下一篇教程[安装](${lang}/basics/download)中查看所有方式。这里,我们以从 [jsDelivr](https://www.jsdelivr.com/package/npm/echarts) CDN 上获取为例,介绍如何快速安装。\n\n在 [https://www.jsdelivr.com/package/npm/echarts](https://www.jsdelivr.com/package/npm/echarts) 选择 `dist/echarts.js`,点击并保存为 `echarts.js` 文件。\n\n> 关于这些文件的介绍,可以在下一篇教程[安装](${lang}/basics/download)中了解更多信息。\n\n## 引入 Apache ECharts\n\n在刚才保存 `echarts.js` 的目录新建一个 `index.html` 文件,内容如下:\n\n```html\n<!DOCTYPE html>\n<html>\n  <head>\n    <meta charset=\"utf-8\" />\n    \x3c!-- 引入刚刚下载的 ECharts 文件 --\x3e\n    <script src=\"echarts.js\"><\/script>\n  </head>\n</html>\n```\n\n打开这个 `index.html`,你会看到一片空白。但是不要担心,打开控制台确认没有报错信息,就可以进行下一步。\n\n## 绘制一个简单的图表\n\n在绘图前我们需要为 ECharts 准备一个定义了高宽的 DOM 容器。在刚才的例子 `</head>` 之后,添加:\n\n```html\n<body>\n  \x3c!-- 为 ECharts 准备一个定义了宽高的 DOM --\x3e\n  <div id=\"main\" style=\"width: 600px;height:400px;\"></div>\n</body>\n```\n\n然后就可以通过 [echarts.init](${mainSitePath}/api.html#echarts.init) 方法初始化一个 echarts 实例并通过 [setOption](${mainSitePath}/api.html#echartsInstance.setOption) 方法生成一个简单的柱状图,下面是完整代码。\n\n```html\n<!DOCTYPE html>\n<html>\n  <head>\n    <meta charset=\"utf-8\" />\n    <title>ECharts</title>\n    \x3c!-- 引入刚刚下载的 ECharts 文件 --\x3e\n    <script src=\"echarts.js\"><\/script>\n  </head>\n  <body>\n    \x3c!-- 为 ECharts 准备一个定义了宽高的 DOM --\x3e\n    <div id=\"main\" style=\"width: 600px;height:400px;\"></div>\n    <script type=\"text/javascript\">\n      // 基于准备好的dom,初始化echarts实例\n      var myChart = echarts.init(document.getElementById('main'));\n\n      // 指定图表的配置项和数据\n      var option = {\n        title: {\n          text: 'ECharts 入门示例'\n        },\n        tooltip: {},\n        legend: {\n          data: ['销量']\n        },\n        xAxis: {\n          data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']\n        },\n        yAxis: {},\n        series: [\n          {\n            name: '销量',\n            type: 'bar',\n            data: [5, 20, 36, 10, 10, 20]\n          }\n        ]\n      };\n\n      // 使用刚指定的配置项和数据显示图表。\n      myChart.setOption(option);\n    <\/script>\n  </body>\n</html>\n```\n\n这样你的第一个图表就诞生了!\n\n<md-example src=\"doc-example/getting-started\"></md-example>\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/39790918477f6eab652c.js b/docs/_nuxt/js/39790918477f6eab652c.js
new file mode 100644
index 0000000..893a1ed
--- /dev/null
+++ b/docs/_nuxt/js/39790918477f6eab652c.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[114],{415:function(n,w,o){"use strict";o.r(w),w.default=""}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/3afc56f1e272d728c657.js b/docs/_nuxt/js/3afc56f1e272d728c657.js
new file mode 100644
index 0000000..3860054
--- /dev/null
+++ b/docs/_nuxt/js/3afc56f1e272d728c657.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{314:function(e,n,t){"use strict";t.r(n),n.default="# Apache ECharts 5.3.0 Features\n\nApache ECharts 5.3.0 includes significant enhancements to animation expressiveness, rendering performance, and server-side rendering. It also adds long-awaited features from the community, such as automatic alignment of multi-axis ticks, tooltip value formatting, and map projection.\n\n## Keyframe Animations\n\nPreviously, ECharts animations were focused on transition animations for creating, updating, and removing elements, which often only had a start state and an end state. In order to express more complex animations, we introduced new keyframe animations for custom series and graphics components in 5.3.0.\n\nHere is a simple effect of a breathing animation implemented via keyframe animation\n\n```js live {layout: 'lr', height:300}\noption = {\n  graphic: {\n    type: 'circle',\n    shape: { r: 100 },\n    left: 'center',\n    top: 'center',\n    keyframeAnimation: [\n      {\n        duration: 3000,\n        loop: true,\n        keyframes: [\n          {\n            percent: 0.5,\n            easing: 'sinusoidalInOut',\n            scaleX: 0.1,\n            scaleY: 0.1\n          },\n          {\n            percent: 1,\n            easing: 'sinusoidalInOut',\n            scaleX: 1,\n            scaleY: 1\n          }\n        ]\n      }\n    ]\n  }\n};\n```\n\nIn keyframe animation you can configure the animation duration, delay, easing, whether to loop or not, the position, easing, and graphic properties of each keyframe. You can also set multiple keyframe animations for each element at the same time with different configurations. The flexible configuration allows us to achieve very complex animation effects, and here are a few scenarios where keyframe animation can be applied.\n\n### Custom Loading Animations\n\nECharts has a built-in loading animation by default, which can be displayed by calling `showLoading`. More loading animation effects have been frequently asked in the community. Now with keyframe animations, we can use the [graphic](${optionPath}graphic) component with keyframe animations to achieve any loading animation effect we want.\n\nHere is an example of the text stroke animation.\n\n```js live {layout: 'lr', height:300}\noption = {\n  graphic: {\n    elements: [\n      {\n        type: 'text',\n        left: 'center',\n        top: 'center',\n        style: {\n          text: 'Apache ECharts',\n          fontSize: 40,\n          fontWeight: 'bold',\n          lineDash: [0, 200],\n          lineDashOffset: 0,\n          fill: 'transparent',\n          stroke: '#000',\n          lineWidth: 1\n        },\n        keyframeAnimation: {\n          duration: 3000,\n          loop: true,\n          keyframes: [\n            {\n              percent: 0.7,\n              style: {\n                fill: 'transparent',\n                lineDashOffset: 200,\n                lineDash: [200, 0]\n              }\n            },\n            {\n              // Stop for a while.\n              percent: 0.8,\n              style: {\n                fill: 'transparent'\n              }\n            },\n            {\n              percent: 1,\n              style: {\n                fill: 'black'\n              }\n            }\n          ]\n        }\n      }\n    ]\n  }\n};\n```\n\nOr animate columns.\n\n```js live {layout: 'lr', height:300}\nconst columns = [];\nfor (let i = 0; i < 7; i++) {\n  columns.push({\n    type: 'rect',\n    x: i * 20,\n    shape: {\n      x: 0,\n      y: -40,\n      width: 10,\n      height: 80\n    },\n    style: {\n      fill: '#5470c6'\n    },\n    keyframeAnimation: {\n      duration: 1000,\n      delay: i * 200,\n      loop: true,\n      keyframes: [\n        {\n          percent: 0.5,\n          scaleY: 0.1,\n          easing: 'cubicIn'\n        },\n        {\n          percent: 1,\n          scaleY: 1,\n          easing: 'cubicOut'\n        }\n      ]\n    }\n  });\n}\noption = {\n  graphic: {\n    elements: [\n      {\n        type: 'group',\n        left: 'center',\n        top: 'center',\n        children: columns\n      }\n    ]\n  }\n};\n```\n\n### Extending Richer Animation Effects in the Chart\n\nScatter charts with animation effects have long been a feature of ECharts. Developers can use the [effectScatter](${optionPath}series-effectScatter) series to implement dynamic scatter charts with ripple effects, which make charts more interesting and also serve to highlight the user. As with loading animations, developers often ask for more animation effects. Now we can achieve more complex effects by using keyframe animations in our [custom](${optionPath}series-custom) series.\n\nFor example, the following example animates the pins drawn by the custom series on the SVG map with a jumping effect, along with a ripple animation.\n\n\x3c!-- <md-example src=\"geo-svg-custom-effect\" width=\"100%\" height=\"500\" /> --\x3e\n\n```js live {layout: 'lr', readOnly: true }\nfetch(\n  'https://echarts.apache.org/examples/data/asset/geo/Map_of_Iceland.svg'\n)\n  .then(response => response.text())\n  .then(svg => {\n    echarts.registerMap('iceland_svg', { svg: svg });\n    option = {\n      geo: {\n        map: 'iceland_svg',\n        left: 0,\n        right: 0\n      },\n      series: {\n        type: 'custom',\n        coordinateSystem: 'geo',\n        geoIndex: 0,\n        zlevel: 1,\n        data: [\n          [488, 459, 100],\n          [770, 757, 30],\n          [1180, 743, 80],\n          [894, 1188, 61],\n          [1372, 477, 70],\n          [1378, 935, 81]\n        ],\n        renderItem(params, api) {\n          const coord = api.coord([\n            api.value(0, params.dataIndex),\n            api.value(1, params.dataIndex)\n          ]);\n\n          const circles = [];\n          for (let i = 0; i < 5; i++) {\n            circles.push({\n              type: 'circle',\n              shape: {\n                cx: 0,\n                cy: 0,\n                r: 30\n              },\n              style: {\n                stroke: 'red',\n                fill: 'none',\n                lineWidth: 2\n              },\n              // Ripple animation\n              keyframeAnimation: {\n                duration: 4000,\n                loop: true,\n                delay: (-i / 4) * 4000,\n                keyframes: [\n                  {\n                    percent: 0,\n                    scaleX: 0,\n                    scaleY: 0,\n                    style: {\n                      opacity: 1\n                    }\n                  },\n                  {\n                    percent: 1,\n                    scaleX: 1,\n                    scaleY: 0.4,\n                    style: {\n                      opacity: 0\n                    }\n                  }\n                ]\n              }\n            });\n          }\n          return {\n            type: 'group',\n            x: coord[0],\n            y: coord[1],\n            children: [\n              ...circles,\n              {\n                type: 'path',\n                shape: {\n                  d:\n                    'M16 0c-5.523 0-10 4.477-10 10 0 10 10 22 10 22s10-12 10-22c0-5.523-4.477-10-10-10zM16 16c-3.314 0-6-2.686-6-6s2.686-6 6-6 6 2.686 6 6-2.686 6-6 6z',\n                  x: -10,\n                  y: -35,\n                  width: 20,\n                  height: 40\n                },\n                style: {\n                  fill: 'red'\n                },\n                // Jump animation.\n                keyframeAnimation: {\n                  duration: 1000,\n                  loop: true,\n                  delay: Math.random() * 1000,\n                  keyframes: [\n                    {\n                      y: -10,\n                      percent: 0.5,\n                      easing: 'cubicOut'\n                    },\n                    {\n                      y: 0,\n                      percent: 1,\n                      easing: 'bounceOut'\n                    }\n                  ]\n                }\n              }\n            ]\n          };\n        }\n      }\n    };\n\n    myChart.setOption(option);\n  });\n```\n\n### Loading Lottie animations\n\nIn order to fully exploit the power of new keyframe animations, Yi Shen from the ECharts team wrote a [Lottie animation parsing library](https://github.com/pissang/lottie-parser) that can parse Lottie animation files into the ECharts graphics format for rendering. Combined with Lottie's expressive power we can introduce more amazing animations to our projects.\n\n## Graphical component transition animations\n\nWe have provided more flexible transition animation configurations for elements returned in the custom series in 5.0. The `transition`, `enterFrom`, and `leaveTo` configuration items allow you to configure which properties of each element will have transition animations and how they will be animated when the graphic is created and removed. Here is an example.\n\n```js\nfunction renderItem() {\n  //...\n  return {\n    //...\n    x: 100,\n    // 'style', 'x', 'y' will be animated\n    transition: ['style', 'x', 'y'],\n    enterFrom: {\n      style: {\n        // Fade in\n        opacity: 0\n      },\n      // Fly in from the left\n      x: 0\n    },\n    leaveTo: {\n      // Fade out\n      opacity: 0\n    },\n    // Fly out to the right\n    x: 200\n  };\n}\n```\n\nIn 5.3.0 we extended the configuration of these transition animations to the graphic component, with made additional enhancements.\n\nIf you don't want to write out each property to be animated, you can now directly configure `transition: 'all'` to animate all properties.\n\nWe also added `enterAnimation`, `updateAnimation`, and `leaveAnimation` to configure the `duration`, `delay`, and `easing` of the entry, update, and exit animations for each graphic, respectively. Gradient colors now also support animations.\n\n## New SVG renderer\n\nIn 5.3.0 we refactored our SVG renderer, which delivers 2x ~ 10x performance improvements, and even tens of times in some special scenes.\n\nPreviously, we updated the SVG renderer directly from the render queue to the DOM, but since zrender's graphics properties were not one-to-one with the DOM, we had to implement very complex diff logic in the middle, which was error-prone and did not provide the best performance in some scenarios. In this version, we reconstruct the full rendering to VDOM first, and then patch the VDOM to DOM to finish the rendering. Full rendering avoids potential bugs caused by complex diff logic, and the one-to-one correspondence between VDOM and DOM ensures that updates are minimal when patching, resulting in a huge performance boost.\n\n[This example](https://echarts.apache.org/examples/zh/editor.html?c=geo-svg-scatter-simple&renderer=svg) gives you an intuitive impression of the performance improvement. The new version is much smoother than the previous version when dragging the chart in SVG mode.\n\n|             5.2.2 (Before)             |            5.3.0 (After)             |\n| :------------------------------------: | :----------------------------------: |\n| ![before](images/5-3-0/svg-before.gif) | ![after](images/5-3-0/svg-after.gif) | ! |\n\nIn addition to the performance improvement, we can do more things with the rendered VDOM, such as server-side rendering, which will be described below.\n\n## Server-side Rendering with Zero Dependencies\n\nIn previous versions, ECharts could also implement server-side rendering, but it had to rely on [node-canvas](https://github.com/Automattic/node-canvas), or [JSDOM](https://github.com/jsdom/jsdom) if you were using SVG mode to simulate the DOM environment. These dependencies not only bring additional size and usage requirements, but also affect performance.\n\nThis new SVG renderer allows us to get the string from the intermediate rendered VDOM, bringing completely zero-dependency server-side rendering and outputting a more refined SVG string integrated CSS animation.\n\n```ts\nconst echarts = require('echarts');\n\n// In SSR mode the first parameter does not need to be passed in as a DOM object\nconst chart = echarts.init(null, null, {\n  renderer: 'svg', // must use SVG mode\n  ssr: true, // enable SSR\n  width: 400, // need to specify height and width\n  height: 300\n});\n\n// setOption as normal\nchart.setOption({\n  xAxis: {\n    type: 'category',\n    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']\n  },\n  yAxis: {\n    type: 'value'\n  },\n  series: [\n    {\n      data: [120, 200, 150, 80, 70, 110, 130],\n      type: 'bar'\n    }\n  ]\n});\n\n// Output string\nconst svgStr = chart.renderToSVGString();\n```\n\n## Customizing Map Projections\n\nMaps have always been a very widely used component in ECharts. Typically a map component uses GeoJSON formatted data with latitude and longitude stored. ECharts then calculates the appropriate display area and maps the latitude and longitude linearly to that area. This is the simplest way to project a map. However, the simple linear projection does not work for complex map scenarios, such as using [Albers](https://en.wikipedia.org/wiki/Albers_projection) projection to solve the distortion problem in linear projection, or having the Pacific in the middle of the world map, etc.\n\nSo in 5.3.0 we introduced extending map projection. It tells ECharts how to project coordinates and how to calculate latitude and longitude from the projected coordinates via the `project` and `unproject` methods. The following is a simple example of using the Mercator projection.\n\n```ts\nseries = {\n  type: 'map',\n  projection: {\n    project: point => [\n      (point[0] / 180) * Math.PI,\n      -Math.log(Math.tan((Math.PI / 2 + (point[1] / 180) * Math.PI) / 2))\n    ],\n    unproject: point => [\n      (point[0] * 180) / Math.PI,\n      ((2 * 180) / Math.PI) * Math.atan(Math.exp(point[1])) - 90\n    ]\n  }\n};\n```\n\nIn addition to implementing our own projection formula, we can also use projections implementations provided by third-party libraries such as [d3-geo](https://github.com/d3/d3-geo).\n\n```ts\nconst projection = d3.geoConicEqualArea();\n// ...\nseries = {\n  type: 'map',\n  projection: {\n    project: point => projection(point),\n    unproject: point => projection.invert(point)\n  }\n};\n```\n\nIn conjunction with the new global transition animation feature added in 5.2, we can animate the transition between different projection effects: !\n\n![map-projection-animation](images/5-3-0/map-projection.gif)\n\nIn addition to the map projection, we have made the following two enhancements to the map in this release.\n\n- Provided `'LineString'` and `'MultiLineString'` support for GeoJSON data.\n- Changed the calculation of the default label position from the center of the bounding box to the centroid of the largest area for more accurate results.\n\n## Ticks Alignment of Multiple Axes\n\nTicks alignment of multiple axes is a long-standing requirement in the community, and we can see many articles in the community on how to implement axis alignment in ECharts, which is usually troublesome and limited.\n\nIn 5.3.0, we finally introduced the feature of aligning ticks on the `'value'` and `'log'` axes. You can configure `alignTicks: true` in the axis that needs to be aligned. The axis will then adjust its own ticks according to the first axis's ticks, enabling automatic alignment.\n\n```js live { layout: 'bt' }\noption = {\n  tooltip: {\n    trigger: 'axis'\n  },\n  legend: {},\n  xAxis: [\n    {\n      type: 'category',\n      data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],\n      axisPointer: {\n        type: 'shadow'\n      }\n    }\n  ],\n  yAxis: [\n    {\n      type: 'value',\n      name: 'Precipitation',\n      alignTicks: true,\n      axisLabel: {\n        formatter: '{value} ml'\n      }\n    },\n    {\n      type: 'value',\n      name: 'Temperature',\n      axisLabel: {\n        formatter: '{value} °C'\n      }\n    }\n  ],\n  series: [\n    {\n      name: 'Evaporation',\n      type: 'bar',\n      // prettier-ignore\n      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]\n    },\n    {\n      name: 'Precipitation',\n      type: 'bar',\n      // prettier-ignore\n      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]\n    },\n    {\n      name: 'Temperature',\n      type: 'line',\n      yAxisIndex: 1,\n      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]\n    }\n  ]\n};\n```\n\n## Disable Emphasis and Select State\n\nThe `emphasis` state in ECharts provides feedback to the user when the mouse is over an element, but in a chart with a large number of elements, the highlighting animation can cause performance issues. In particular, highlighting triggered by [tooltip](${optionPath}tooltip) or [legend](${optionPath}tooltip) component linkage can highlight multiple elements at the same time.\n\nTherefore, in this release we have added `emphasis.disabled` configuration. If you don't need the highlighting feedback and you are concerned about the interactivity, you can disable the `emphasis` state with this option.\n\nFor the `select` state, we have also added `select.disabled`. This option can be used to configure some of the data to be unselectable.\n\n## Support for Selecting Entire Series\n\nAs of 5.3.0 we support configuring `selectedMode` to `'series'` to enable selection of all data in a series.\n\n## Formatting of Values in Tooltip\n\nTooltips can be used to display more detailed information about the data item when the user hovers it. ECharts also provides a `formatter` callback function to give developers more flexibility to customize the content of the tooltip.\n\nHowever, we found that most of the time, developers only needed to format the value part of the tooltip, such as fixed precision, prefixed with `$`, etc. Previously, in order to format the number, developers had to rewrite the entire content of the tooltip with `formatter`. Especially after 5.0, ECharts hint boxes have become more complex and beautiful, so rewriting them becomes costly and difficult to achieve the default results.\n\nSo in this version, we have added a `valueFormatter` configuration to the tooltip for formatting the value part.\n\nAs in the axis alignment example, we can add the °C and ml suffixes to the value part of the tooltip.\n\n```js live { layout: 'bt' }\noption = {\n  tooltip: {\n    trigger: 'axis'\n  },\n  legend: {},\n  xAxis: [\n    {\n      type: 'category',\n      data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],\n      axisPointer: {\n        type: 'shadow'\n      }\n    }\n  ],\n  yAxis: [\n    {\n      type: 'value',\n      name: 'Precipitation',\n      alignTicks: true,\n      axisLabel: {\n        formatter: '{value} ml'\n      }\n    },\n    {\n      type: 'value',\n      name: 'Temperature',\n      axisLabel: {\n        formatter: '{value} °C'\n      }\n    }\n  ],\n  series: [\n    {\n      name: 'Evaporation',\n      type: 'bar',\n      tooltip: {\n        valueFormatter: value => value + ' ml'\n      },\n      // prettier-ignore\n      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]\n    },\n    {\n      name: 'Precipitation',\n      type: 'bar',\n      tooltip: {\n        valueFormatter: value => value + ' ml'\n      },\n      // prettier-ignore\n      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]\n    },\n    {\n      name: 'Temperature',\n      type: 'line',\n      yAxisIndex: 1,\n      tooltip: {\n        valueFormatter: value => value + ' °C'\n      },\n      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]\n    }\n  ]\n};\n```\n\nEach series can configure its own `valueFormatter` according to its own value format.\n\n## More Flexible Sector Corner Radius\n\nIn 5.0 we have added rounded corners configuration for sectors, which can make pie charts, sunburst charts more interesting. Previously, we only supported the inner and outer radius separately, this time we go a step further and support the four corners of the sector to be configured with different corner radius to bring more flexible display.\n\n```js live { layout: 'lr', height: 400 }\noption = {\n  tooltip: {\n    trigger: 'item'\n  },\n  legend: {\n    top: '5%',\n    left: 'center'\n  },\n  series: [\n    {\n      name: 'Access From',\n      type: 'pie',\n      radius: ['30%', '70%'],\n      roseType: 'angle',\n      itemStyle: {\n        borderRadius: [20, 5, 5, 10],\n        borderColor: '#fff',\n        borderWidth: 2\n      },\n      label: {\n        show: false\n      },\n      data: [\n        { value: 800, name: 'Search Engine' },\n        { value: 735, name: 'Direct' },\n        { value: 580, name: 'Email' },\n        { value: 484, name: 'Union Ads' },\n        { value: 400, name: 'Video Ads' }\n      ]\n    }\n  ]\n};\n```\n\n## Complex Label Optimization for Pie charts\n\nPie charts have always been one of the most complex charts on the label display in ECharts. We have been optimizing the layout and display of the pie chart labels for a long time.\n\nThis time, we have done a deep optimization for pie chart labels that use text wrapping, background colors, rich text, and other complex layouts. In the adaptive width, container overflow, guide line calculation than before there are better results:\n\n|                5.2.2 (Before)                 |                5.3.0 (After)                |\n| :-------------------------------------------: | :-----------------------------------------: |\n| ![before](images/5-3-0/pie-label-before.png)  | ![after](images/5-3-0/pie-label-after.png)  | ! |\n| ![before](images/5-3-0/pie-label-before2.png) | ![after](images/5-3-0/pie-label-after2.png) | ! |\n\n## bar chart large mode optimization\n\nIn the cases of a large amount of data (> 2k), we support bar charts to speed up rendering and improve interactive performance by turning on [large](${optionPath}series-bar.large) mode. But previously the layout of bar charts in [large](${optionPath}series-bar.large) mode was simple and did not support the layout after stacking multiple series. In 5.3.0, we have optimized the layout of [large](${optionPath}series-bar.large) mode to be consistent with the normal mode. We can optimize the performance of the bar chart in more scenarios by turning on [large](${optionPath}series-bar.large).\n\nIn addition, the optimized bar chart layout also fixes the bug of incorrect stacking on non-linear axes like logarithmic axes.\n\n## Breaking Changes\n\n### registerMap and getMap methods need to be used only after the map chart is imported\n\nTo reduce the size of the minimum bundle, we removed the map data management methods `getMap` and `registerMap` from the core module.\n\nIf you are [only importing necessary charts and components](https://echarts.apache.org/handbook/en/basics/import/#importing-required-charts-and-components-to-have-minimal-bundle), you need to ensure that you have imported `GeoComponent` or `MapChart` before you can register map data with `registerMap`.\n\n```ts\nimport * as echarts from 'echarts/core';\nimport { MapChart } from 'echarts/charts';\n\necharts.use([MapChart]);\n\n// You must import the MapChart with the `use` method before you can register the map with registerMap\necharts.registerMap('world', worldJSON);\n```\n\nIf you are using `import * as echarts from 'echarts'` to import the whole package, this change will not affect you in any way.\n\n### Removing the default bolding emphasis effect in the line chart\n\nWe introduced the default bolding emphasis effect for line charts in 5.0, but the community feedback was that this didn't looks well in many scenarios. So in this version we changed this effect from on by default to off by default. You can enable it by:\n\n```ts\nseries = {\n  type: 'line',\n  //...\n  emphasis: {\n    lineStyle: {\n      width: 'bolder'\n    }\n  }\n};\n```\n\n## Full Changelog\n\nView the [Changelog](${mainSitePath}/changelog.html#v5-3-0)\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/3cedfaabe4763d050490.js b/docs/_nuxt/js/3cedfaabe4763d050490.js
new file mode 100644
index 0000000..3e8da80
--- /dev/null
+++ b/docs/_nuxt/js/3cedfaabe4763d050490.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[76],{377:function(e,t,n){"use strict";n.r(t),t.default='# 寻求帮助\n\n## 技术问题\n\n### 确保现有文档等资料无法解决你的问题\n\nECharts 有非常大量的用户,所以你遇到过的问题很可能别人在此之前也遇到并解决了。通过查看文档以及使用搜索引擎搜索关键字,可以帮助你自助地在第一时间解决问题,而不需要依赖社区的帮助。\n\n因此,在做其他操作前,请确保现有文档等资料无法解决你的问题。可以尝试查看或搜索的资料包括:\n\n- [API](${mainSitePath}api.html)\n- [配置项手册](${mainSitePath}option.html):可以尝试使用搜索功能\n- 本手册的文章\n- [常见问题](${mainSitePath}faq.html)\n- 在 [GitHub issue](https://github.com/apache/echarts/issues) 中搜索关键字\n- 使用搜索引擎搜索关键字\n\n### 创建一个最简单可复现的例子\n\n使用[官方编辑器](${mainSitePath}examples/editor.html)、[CodePen](https://codepen.io/Ovilia/pen/dyYWXWM)、[CodeSandbox](https://codesandbox.io/s/echarts-basic-example-template-mpfz1s) 或 [JSFiddle](https://jsfiddle.net/plainheart/e46ozpqj/7/) 创建一个例子,这将使得他人更方便地复现你的问题。\n\n例子应尽可能以最简单的方式复现你的问题,去除不必要的配置项和数据,可以让帮助你的人更快速地定位问题,从而让你的问题更快得到解决。更详细的介绍请参见 [如何创建一个最小的可复现代码示例](https://stackoverflow.com/help/minimal-reproducible-example)。\n\n### 判断是否是 bug\n\n#### 报告 bug 或请求新功能\n\n如果不符合文档描述或你的预期效果,这很有可能是 bug。如果是 bug,或者你有一个想请求实现的功能,请使用 [issue 模板](https://github.com/apache/echarts/issues/new/choose) 新建一个 issue 并按照提示详细描述。\n\n#### 咨询类问题\n\n如果不是 bug,而是不知道如何实现某种效果,可以尝试在 <a href="https://stackoverflow.com/questions/tagged/echarts">stackoverflow.com</a>、<a href="https://www.oschina.net/question/tag/echarts">开源中国</a> 或 <a href="https://segmentfault.com/t/echarts">SegmentFault 思否</a> 等问答平台上提问。\n\n如果没能得到答复,也可以发送邮件至邮件组 [dev@echarts.apache.org](mailto:dev@echarts.apache.org)。为了让更多人理解你的问题,并且在将来搜索的时候得到帮助,强烈建议使用英文发送邮件。\n\n## 非技术类问题\n\n其他问题可以发送英文邮件至邮件组 [dev@echarts.apache.org](mailto:dev@echarts.apache.org)。\n'}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/3d5ecf2c4c7c04e5a136.js b/docs/_nuxt/js/3d5ecf2c4c7c04e5a136.js
new file mode 100644
index 0000000..0d9f687
--- /dev/null
+++ b/docs/_nuxt/js/3d5ecf2c4c7c04e5a136.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[45],{346:function(n,e,t){"use strict";t.r(e),e.default="# Legend\n\nLegends are used to annotate the content in the chart using different colors, shapes and texts to indicate different categories. By clicking the legends, the user can show or hide the corresponding categories. Legend is one of the key to understand the chart.\n\n## Layout\n\nLegend is always placed at the upper right corner of the chart. All legends in the same page need to be consistent, align horizontally or vertically by considering the layout of the overall chart space. When the chart has little vertical space or the content area is crowded, it is also a good choice to put the legend on the bottom of the chart. Here are some layouts of legend:\n\n```js live\noption = {\n  legend: {\n    // Try 'horizontal'\n    orient: 'vertical',\n    right: 10,\n    top: 'center'\n  },\n  dataset: {\n    source: [\n      ['product', '2015', '2016', '2017'],\n      ['Matcha Latte', 43.3, 85.8, 93.7],\n      ['Milk Tea', 83.1, 73.4, 55.1],\n      ['Cheese Cocoa', 86.4, 65.2, 82.5],\n      ['Walnut Brownie', 72.4, 53.9, 39.1]\n    ]\n  },\n  xAxis: { type: 'category' },\n  yAxis: {},\n  series: [{ type: 'bar' }, { type: 'bar' }, { type: 'bar' }]\n};\n```\n\nUse scrollable control if there are many legends.\n\n```js\noption = {\n  legend: {\n    type: 'scroll',\n    orient: 'vertical',\n    right: 10,\n    top: 20,\n    bottom: 20,\n    data: ['Legend A', 'Legend B', 'Legend C' /* ... */, , 'Legend x']\n    // ...\n  }\n  // ...\n};\n```\n\n## Style\n\nFor dark color background, use a light color for the background layer and text while changing the background to translucent.\n\n```js\noption = {\n  legend: {\n    data: ['Legend A', 'Legend B', 'Legend C'],\n    backgroundColor: '#ccc',\n    textStyle: {\n      color: '#ccc'\n      // ...\n    }\n    // ...\n  }\n  // ...\n};\n```\n\nThe color of legend has many ways to design. For different charts, the legend style can be different.\n\n<img max-width=\"830\" width=\"80%\" height=\"80%\" src=\"images/design/legend/charts_sign_img04.png\" />\n\n```js\noption = {\n  legend: {\n    data: ['Legend A', 'Legend B', 'Legend C'],\n    icon: 'rect'\n    // ...\n  }\n  // ...\n};\n```\n\n## Interactive\n\nDepend on the environmental demand, the legend can support interactive operation. Click the legend to show or hide corresponding categories:\n\n```js\noption = {\n  legend: {\n    data: ['Legend A', 'Legend B', 'Legend C'],\n    selected: {\n      'Legend A': true,\n      'Legend B': true,\n      'Legend C': false\n    }\n    // ...\n  }\n  // ...\n};\n```\n\n## Tips\n\nThe legend should be used according to the situation. Some dual-axis charts include multiple chart types. Different kinds of legend stypes should be distinguished.\n\n```js\noption = {\n  legend: {\n    data: [\n      {\n        name: 'Legend A',\n        icon: 'rect'\n      },\n      {\n        name: 'Legend B',\n        icon: 'circle'\n      },\n      {\n        name: 'Legend C',\n        icon: 'pin'\n      }\n    ]\n    //  ...\n  },\n  series: [\n    {\n      name: 'Legend A'\n      //  ...\n    },\n    {\n      name: 'Legend B'\n      //  ...\n    },\n    {\n      name: 'Legend C'\n      //  ...\n    }\n  ]\n  //  ...\n};\n```\n\nWhile there is only one kind of data in the chart, use the chart title rather than the legend to explain it.\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/41837626a03c3a2d47b1.js b/docs/_nuxt/js/41837626a03c3a2d47b1.js
new file mode 100644
index 0000000..cfa55c2
--- /dev/null
+++ b/docs/_nuxt/js/41837626a03c3a2d47b1.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[139],{440:function(n,t,e){"use strict";e.r(t),t.default="# 服务端渲染 ECharts 图表\n\n通常情况下,Apache ECharts<sup>TM</sup> 会在浏览器中动态的渲染图表,并且根据用户的交互来更新渲染。但是在下面这些比较特殊的场景,我们也需要在服务端中渲染图表并且输出到浏览器中:\n\n- 需要缩短前端的渲染时间,保证第一时间显示图表\n- 需要在 Markdown, PDF 等不支持动态运行脚本的环境中嵌入图表\n\n在这些场景下,ECharts 也提供了两种服务端渲染(server-side rendering,SSR)的方案:SVG 渲染或 Canvas 渲染。\n\n| 渲染方案           | 渲染结果的形式  | 优点              |\n| ----------------- | ----------------- | ----------------- |\n| 服务端 SVG 渲染     | SVG 字符串 | 比 Canvas 图片体积更小;<br>矢量 SVG 图片不会模糊;<br>支持初始动画 |\n| 服务端 Canvas 渲染  | 图片       | 图片形式适用场景更广泛,对不支持 SVG 的场景可选择 |\n\n通常情况下,应优先考虑使用服务端 SVG 渲染方案,如果 SVG 不适用,也可以考虑 Canvas 渲染方案。\n\n使用服务端渲染也有一定的局限性,尤其是和交互相关的一些操作无法支持。因此,如果有交互需求,可参考下文的“服务端渲染 Hydration”。\n\n## 服务端渲染\n\n### 服务端 SVG 渲染\n\n> 版本更新:\n>\n> - 5.3.0 版本:使用零依赖的服务端 SVG 字符串渲染方案,并支持图表的初始动画\n> - 5.5.0 版本:新增客户端轻量运行时,客户端无需加载完整 ECharts 即可实现部分交互\n\n5.3.0 里新引入了零依赖的服务端 SVG 字符串渲染方案:\n\n```ts\n// 服务端代码\nconst echarts = require('echarts');\n\n// 在 SSR 模式下第一个参数不需要再传入 DOM 对象\nlet chart = echarts.init(null, null, {\n  renderer: 'svg', // 必须使用 SVG 模式\n  ssr: true, // 开启 SSR\n  width: 400, // 需要指明高和宽\n  height: 300\n});\n\n// 像正常使用一样 setOption\nchart.setOption({\n  //...\n});\n\n// 输出字符串\nconst svgStr = chart.renderToSVGString();\n\n// 如果不再需要图表,调用 dispose 以释放内存\nchart.dispose();\nchart = null;\n```\n\n整体使用的代码结构跟在浏览器中使用一样,首先是`init`初始化一个图表实例,然后通过`setOption`设置图表的配置项。但是`init`传入的参数会跟在跟浏览器中使用有所不同:\n\n- 首先因为在服务端会采用字符串拼接的方式来渲染得到 SVG,我们并不需要容器来展示渲染的内容,所以我们可以在`init`的时候第一个`container`参数传入`null`或者`undefined`。\n- 然后我们在`init`的第三个参数中,我们需要通过显示指定`ssr: true`来告诉 ECharts 我们需要开启服务端渲染的模式,该模式下 ECharts 会关闭动画循环的模块以及事件交互的模块。\n- 在服务端渲染中我们也必须要通过`width`和`height`显示的指定图表的高和宽,因此如果你的图表是需要根据容器大小自适应的话,可能需要思考一下服务端渲染是否适合你的场景了。一种可能的解决方案是,首屏获取到图表容器大小后,请求服务端渲染图表,然后在客户端渲染图表;当用户交互改变容器大小时,重新请求服务端渲染。\n\n在浏览器中我们在`setOption`完之后 ECharts 就会自动进行渲染将结果绘制到页面中,后续也会在每一帧判断是否有动画需要进行重绘。Node.js 中我们在设置了`ssr: true`后则没有这个过程。取而代之我们使用了`renderToSVGString`,将当前的图表渲染到 SVG 字符串,进一步得再通过 HTTP Response 返回给前端或者缓存到本地。\n\nHTTP Response 返回给前端(这里以 Express.js 为例):\n\n```ts\nres.writeHead(200, {\n  'Content-Type': 'application/xml'\n});\nres.write(svgStr); // svgStr 是上面 chart.renderToSVGString() 得到的字符串\nres.end();\n```\n\n或者保存到本地:\n\n```ts\nfs.writeFile('bar.svg', svgStr, 'utf-8');\n```\n\n#### 服务端渲染中的动画效果\n\n上面的例子中可以看到,就算是服务端渲染 ECharts 也可以提供动画效果,这个动画效果是通过在输出的 SVG 字符串中嵌入 CSS 动画实现的。并不需要额外的 JavaScript 再去控制动画。\n\n但是,也因为 CSS 动画的局限性,我们没法在服务端渲染中实现一些更灵活的动画功能,诸如柱状图排序动画,标签动画,路径图的特效动画等。部分系列诸如饼图的动画效果也为服务端渲染做了特殊的优化。\n\n如果你不希望有这个动画效果,可以在`setOption`的时候通过`animation: false`关闭动画。\n\n```ts\nsetOption({\n  animation: false\n});\n```\n\n### 服务端 Canvas 渲染\n\n如果你希望输出的是一张图片而非 SVG 字符串,或者你还在使用更老的版本,我们会推荐使用 [node-canvas](https://github.com/Automattic/node-canvas) 来实现 ECharts 的服务渲染,[node-canvas](https://github.com/Automattic/node-canvas) 是在 Node.js 上的一套 Canvas 实现,它提供了跟浏览器中 Canvas 几乎一致的接口。\n\n下面是一个简单的例子\n\n```ts\nvar echarts = require('echarts');\nconst { createCanvas } = require('canvas');\n\n// 在 5.3.0 之前的版本中,你必须要通过该接口注册 canvas 实例创建方法。\n// 从 5.3.0 开始就不需要了\necharts.setCanvasCreator(() => {\n  return createCanvas();\n});\n\nconst canvas = createCanvas(800, 600);\n// ECharts 可以直接使用 node-canvas 创建的 Canvas 实例作为容器\nlet chart = echarts.init(canvas);\n\n// 像正常使用一样 setOption\nchart.setOption({\n  //...\n});\n\nconst buffer = canvas.toBuffer('image/png');\n\n// 如果不再需要图表,调用 dispose 以释放内存\nchart.dispose();\nchart = null;\n\n// 通过 Response 输出 PNG 图片\nres.writeHead(200, {\n  'Content-Type': 'image/png'\n});\nres.write(buffer);\nres.end();\n```\n\n#### 图片的加载\n\n[node-canvas](https://github.com/Automattic/node-canvas) 提供了图片加载的`Image`实现,如果你在图表中使用了到了图片,我们可以使用`5.3.0`新增的`setPlatformAPI`接口来适配。\n\n```ts\necharts.setPlatformAPI({\n  // 同老版本的 setCanvasCreator\n  createCanvas() {\n    return createCanvas();\n  },\n  loadImage(src, onload, onerror) {\n    const img = new Image();\n    // 必须要绑定 this context.\n    img.onload = onload.bind(img);\n    img.onerror = onerror.bind(img);\n    img.src = src;\n    return img;\n  }\n});\n```\n\n如果你的图片是需要远程获取的,我们建议你通过 http 请求先预取该图片得到`base64`之后再作为图片的 URL 传入,这样可以保证在 Response 输出的时候图片是加载完成的。\n\n## 客户端二次渲染\n\n### 客户端懒加载完整 ECharts\n\n最新版本的 ECharts 服务端 SVG 渲染除了完成图表的渲染外,支持的功能包括:\n\n- 图表初始动画(例如:柱状图初始化时的柱子上升动画)\n- 高亮样式(例如:鼠标移动到柱状图柱子上时的高亮效果)\n\n但仅使用服务端渲染无法支持的功能包括:\n\n- 动态改变数据\n- 点击图例切换系列是否显示\n- 移动鼠标显示提示框\n- 其他交互相关的功能\n\n如果有相关需求,可以考虑先使用服务端渲染快速输出首屏图表,然后等待 `echarts.js` 加载完后,重新在客户端渲染同样的图表(称为 Hydration),这样就可以实现正常的交互效果和动态改变数据了。需要注意的是,在客户端渲染的时候,应开启 `tooltip: { show: true }` 之类的交互组件,并且用 `animation: 0` 关闭初始动画(初始动画应由服务端渲染结果的 SVG 动画完成)。\n\n从用户体验的角度,几乎感受不到二次渲染的过程,整个切换效果是非常无缝衔接的。你也可以像上面的例子中一样,在加载 `echarts.js` 的过程中使用 [pace-js](https://www.npmjs.com/package/pace-js) 之类的库实现显示加载进度条的效果,来解决 ECharts 尚未完全加载完之前没有交互反馈的问题。\n\n使用服务端渲染 SVG 加上客户端 ECharts 懒加载的方式,其优点是,能够在首屏快速展示图表,而懒加载完成后可以实现所有 ECharts 的功能和交互;而缺点是,懒加载完整的 ECharts 需要一定时间,在加载完成前无法实现除高亮之外的用户交互(在这种情况下,开发者可以通过显示“加载中”来解决无交互反馈带来的困惑)。这个方案也是目前比较推荐的对首屏加载时间敏感,对功能交互完整性要求高的方案。\n\n### 客户端轻量运行时\n\n方案一给出了实现完整交互的方案,但是有些场景下,我们并不需要很复杂的交互,只是希望在服务端渲染的基础上,能够在客户端进行一些简单的交互,例如:点击图例切换系列是否显示。这种情况下,我们能否不在客户端加载至少需要几百 KB 的 ECharts 代码呢?\n\n从 v5.5.0 版本起,如果图表只需要以下效果和交互,可以通过服务端 SVG 渲染 + 客户端轻量运行时来实现:\n\n- 图表初始动画(实现原理:服务端渲染的 SVG 带有 CSS 动画)\n- 高亮样式(实现原理:服务端渲染的 SVG 带有 CSS 动画)\n- 动态改变数据(实现原理:轻量运行时请求服务器进行二次渲染)\n- 点击图例切换系列是否显示(实现原理:轻量运行时请求服务器进行二次渲染)\n\n```html\n<div id=\"chart-container\" style=\"width:800px;height:600px\"></div>\n\n<script src=\"https://cdn.jsdelivr.net/npm/echarts/ssr/client/dist/index.min.js\"><\/script>\n<script>\nconst ssrClient = window['echarts-ssr-client'];\n\nconst isSeriesShown = {\n  a: true,\n  b: true\n};\n\nfunction updateChart(svgStr) {\n  const container = document.getElementById('chart-container');\n  container.innerHTML = svgStr;\n\n  // 使用轻量运行时赋予图表交互能力\n  ssrClient.hydrate(container, {\n    on: {\n      click: (params) => {\n        if (params.ssrType === 'legend') {\n          // 点击图例元素,请求服务器进行二次渲染\n          isSeriesShown[params.seriesName] = !isSeriesShown[params.seriesName];\n          fetch('...?series=' + JSON.stringify(isSeriesShown))\n            .then(res => res.text())\n            .then(svgStr => {\n              updateChart(svgStr);\n            });\n        }\n      }\n    }\n  });\n}\n\n// 通过 AJAX 请求获取服务端渲染的 SVG 字符串\nfetch('...')\n  .then(res => res.text())\n  .then(svgStr => {\n    updateChart(svgStr);\n  });\n<\/script>\n```\n\n服务器端根据客户端传来的每个系列是否显示的信息(`isSeriesShown`)进行二次渲染,返回新的 SVG 字符串。服务端代码[同上文](#服务端-svg-渲染),不再赘述。\n\n> 关于状态记录:上述这种开发方式和纯客户端渲染的相比,开发者需要记录并维护一些额外的信息(例如这个例子中每个系列是否显示)。这是不可避免的,因为 HTTP 请求本身是无状态的,如果要实现有状态,要么像上面的例子这样由客户端记录状态并传递,要么服务器保留状态(例如通过 session,但需要耗费更多的服务器内存以及更复杂的销毁逻辑所以并不推荐)。\n\n使用服务端 SVG 渲染加上客户端轻量运行时的方式,其优点是,客户端不再需要加载几百 KB 的 ECharts 代码,只需要加载一个不到 4KB 的轻量运行时代码;并且从用户体验的角度牺牲很少(支持初始动画、鼠标高亮)。而缺点是,需要一定的开发成本来维护额外的状态信息,并且无法支持实时性要求高的交互(例如移动鼠标显示提示框)。总体来说,**推荐在对代码体积有非常严格要求的环境使用**。\n\n## 使用轻量运行时\n\n客户端轻量运行时通过将服务端渲染的 SVG 图表进行理解,从而赋予图表一定的交互能力。\n\n可以通过以下方式引入客户端轻量运行时:\n\n```html\n\x3c!-- 方法一:使用 CDN --\x3e\n<script src=\"https://cdn.jsdelivr.net/npm/echarts/ssr/client/dist/index.min.js\"><\/script>\n\x3c!-- 方法二:使用 NPM --\x3e\n<script src=\"node_modules/echarts/ssr/client/dist/index.js\"><\/script>\n```\n\n### API\n\n在全局变量 `window['echarts-ssr-client']` 中提供了以下 API:\n\n#### hydrate(dom: HTMLElement, options: ECSSRClientOptions)\n\n- `dom`:图表容器,其内部的内容在调用本方法前应已设为服务端渲染的 SVG 图表\n- `options`:配置项\n\n##### ECSSRClientOptions\n\n```ts\non?: {\n  mouseover?: (params: ECSSRClientEventParams) => void,\n  mouseout?: (params: ECSSRClientEventParams) => void,\n  click?: (params: ECSSRClientEventParams) => void\n}\n```\n\n和[图表鼠标事件](${mainSitePath}api.html#events.鼠标事件)一样,这里的时间都是针对图表数据对象的(例如:柱状图的柱子、折线图的数据点等),而不是针对图表容器的。\n\n##### ECSSRClientEventParams\n\n```ts\n{\n  type: 'mouseover' | 'mouseout' | 'click';\n  ssrType: 'legend' | 'chart';\n  seriesIndex?: number;\n  dataIndex?: number;\n  event: Event;\n}\n```\n\n- `type`:事件类型\n- `ssrType`:事件对象类型,`legend` 表示图例数据,`chart` 表示图表数据对象\n- `seriesIndex`:系列索引\n- `dataIndex`:数据索引\n- `event`:原生事件对象\n\n### 示例\n\n参见上文「客户端轻量运行时」章节。\n\n## 小结\n\n上面,我们介绍了几种不同的渲染方案,包括:\n\n- 客户端渲染\n- 服务端 SVG 渲染\n- 服务端 Canvas 渲染\n- 客户端轻量运行时渲染\n\n这四种渲染方式可以结合使用,我们再来总结一下它们各自适用的场景:\n\n| 渲染方案 | 加载体积 | 功能及交互损失 | 相对开发工作量 | 推荐场景 |\n| --- | --- | --- | --- | --- |\n| 客户端渲染 | 最大 | 无 | 最小 | 首屏加载时间不敏感,对功能交互完整性要求高 |\n| 客户端渲染([按需引用](${lang}/basics/import#按需引入-echarts-图表和组件)部分包) | 大 | 大:没有引入的包就无法使用对应功能 | 小 | 首屏加载时间不敏感,对代码体积没有严格要求但是希望尽可能小,仅使用 ECharts 的一小部分功能,没有服务器资源 |\n| 一次性服务端 SVG 渲染 | 小 | 大:无法动态改变数据、不支持图例切换系列是否显示、不支持提示框等实时性要求高的交互 | 中 | 首屏加载时间敏感,对功能交互完整性要求低 |\n| 一次性服务端 Canvas 渲染 | 大 | 最大:同上且不支持初始动画、图片体积更大、放大会模糊 | 中 | 首屏加载时间敏感,对功能交互完整性要求低,平台限制无法使用 SVG |\n| 服务端 SVG 渲染加客户端懒加载 ECharts | 小,然后大 | 中:懒加载完成前无法交互 | 中 | 首屏加载时间敏感,对功能交互完整性要求高,最好图表不会在加载后立刻需要交互 |\n| 服务端 SVG 渲染加客户端轻量运行时 | 小 | 中:无法实现实时性要求高的交互 | 大(需要维护图表状态、定义客户端服务端接口协议) | 首屏加载时间敏感,对功能交互完整性要求低,对代码体积有非常严格要求,交互实时性要求不严格 |\n| 服务端 SVG 渲染加客户端懒加载 ECharts,懒加载完成前使用轻量运行时 | 小,然后大 | 小:在懒加载完成前无法进行复杂交互 | 最大 | 首屏加载时间敏感,对功能交互完整性要求高,有充分的开发时间 |\n\n当然,还存在一些其他的组合可能性,但最常用的就是以上几种,相信如果你了解了这些渲染方案的特点,就可以根据自己的场景选择合适的方案了。\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/4192bd97e71292a12fa4.js b/docs/_nuxt/js/4192bd97e71292a12fa4.js
new file mode 100644
index 0000000..7493e40
--- /dev/null
+++ b/docs/_nuxt/js/4192bd97e71292a12fa4.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[100],{401:function(t,e,h){"use strict";h.r(e),e.default='# 区域面积折线图\n\n\b 面积图又叫区域图,与折线图很相近,都可以用来展示随着连续时间的推移数据的变化趋势。区别在于,面积图在折线与类别数据的水平轴(X 轴)之间填充颜色或者纹理,形成一个面表示数据体积。相对于折线而言,被填充的区域可以更好的引起人们对总值趋势的注意,所以面积图主要用于传达趋势的大小,而不是确切的单个数据值。\n\n<iframe max-width="830" width="100%" height="400"\nsrc="https://gallery.echartsjs.com/view-lite.html?cid=area-simple"></iframe>\n\n## 面积图的使用建议\n\n1、面积图要用填充区域来展示数据,当图表上有多个图层时,要尽量确保数据不要重叠。如果无法避免重叠,可以通过将颜色和透明度设置为适当的值,使重叠的数据图可以变得可读。\n\n<iframe max-width="830" width="100%" height="400"\nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xHJ-4tL84M"></iframe>\n\n2、面积图适合用来展示二到三组数据,建议最多不要展示超过四组数据系列,否则就如下方错误示例,数据系列过多而导致无法辨识数据,因此要避免在需要比较多个类别和确切的数据值的情况下使用面积图。超过三个系列的非堆叠面积图表是很难阅读的。\n\n<iframe max-width="830" width="100%" height="400"\nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xHyNDxOo4M"></iframe>\n\n3、当数据值相距很远时,区域是模糊不清的,此时 \b 不太适合使用面积图展示。如下方错误示例虽然仔细分析能确定只展示了两个类别,乍一看,很可能会误以为图表上显示三种不同的颜色。\n\n<iframe max-width="830" width="100%" height="400"\nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xSkO64PIEG&v=1"></iframe>\n'}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/452d8402b82f93776429.js b/docs/_nuxt/js/452d8402b82f93776429.js
new file mode 100644
index 0000000..a5ffdca
--- /dev/null
+++ b/docs/_nuxt/js/452d8402b82f93776429.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[109],{410:function(n,w,o){"use strict";o.r(w),w.default=""}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/45a5d44a8dd7f086baa7.js b/docs/_nuxt/js/45a5d44a8dd7f086baa7.js
new file mode 100644
index 0000000..79f4b14
--- /dev/null
+++ b/docs/_nuxt/js/45a5d44a8dd7f086baa7.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[27],{328:function(e,t,n){"use strict";n.r(t),t.default='Bi-directional bar charts are mostly used to show values that included in two opposite meaning categories. One axis shows the name of categories being compared, while the other axis represents the scale value. As an example, Using a bi-directional bar chart to analyze the personal income (positive number) and outcome (negative number) in a week, you can easily find the value and fluctuation of income and outcome in a single series.\n\n<iframe max-width="830" width="100%" height="400"\nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xS18jqmX4f">\n</iframe>\n\nThe bi-directional bar can be classified into the vertical chart (above) and horizontal chart(below, also called positive negative bar chart). For example, you can use a positive negative bar chart if there are positive and negative comments in a customer satisfaction survey data analysis. All data align in the middle, the positive comments attribute on the right side while the negative comments on the left side.\n\n<iframe max-width="830" width="100%" height="400"\n src="https://gallery.echartsjs.com/view-lite.html?cid=xHJ1un374z">\n</iframe>\n\n## Suggestion for Using Bi-directional Bar Chart\n\n1. The data on both sides in the bi-directional bar chart are comparative.\n\n2. Don\'t define negative data on the right side of the bi-directional bar chart, to prevent misunderstanding caused by the violation of common sense.\n\n<img max-width="830" width="100%" height="100%"\nsrc="images/design/bar/bi-directional-bar01.jpg">\n</img>\n\n3. A bi-directional bar chart always used to display data with the opposite meaning, so that you need to avoid misunderstanding caused by the use of data that does not have a positive or negative meaning. As the chart below, there is no antagonism between the data of male and female, so that it is a better choice to use a basic bar chart rather than a bi-directional bar chart.\n\n<img max-width="830" width="100%" height="100%"\nsrc="images/design/bar/bi-directional-bar02.jpg">\n</img>\n'}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/467574b09a1f02673d06.js b/docs/_nuxt/js/467574b09a1f02673d06.js
new file mode 100644
index 0000000..4870cd4
--- /dev/null
+++ b/docs/_nuxt/js/467574b09a1f02673d06.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[141],{442:function(n,w,o){"use strict";o.r(w),w.default=""}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/483edc00c621997808b8.js b/docs/_nuxt/js/483edc00c621997808b8.js
new file mode 100644
index 0000000..f9f655f
--- /dev/null
+++ b/docs/_nuxt/js/483edc00c621997808b8.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[129],{430:function(n,t,e){"use strict";e.r(t),t.default="# 平滑曲线图\n\n平滑曲线图也是折线图的一种变形,这种更柔和的样式也是一种不错的视觉选择。使用时,只需要将折线图系列的 `smooth` 属性设置为 `true` 即可。\n\n```js live\noption = {\n  xAxis: {\n    data: ['A', 'B', 'C', 'D', 'E']\n  },\n  yAxis: {},\n  series: [\n    {\n      data: [10, 22, 28, 23, 19],\n      type: 'line',\n      smooth: true\n    }\n  ]\n};\n```\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/4bcec4ca68bb95e605d0.js b/docs/_nuxt/js/4bcec4ca68bb95e605d0.js
new file mode 100644
index 0000000..ff92ce1
--- /dev/null
+++ b/docs/_nuxt/js/4bcec4ca68bb95e605d0.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[67],{368:function(e,t,n){"use strict";n.r(t),t.default='# SVG Base Map\n\nSince `v5.1.0`, ECharts support to use SVG as the base map in [geo coordinate system](${optionPath}geo) and [map series](${optionPath}series-map), where previously only [GeoJSON](${apiPath}echarts.registerMap) is supported.\n\nThis feature enables ECharts to display SVG in either of the render modes (`canvas` render mode and `svg` render mode), and enables features like [zoom](${optionPath}geo.roam), [pan](${optionPath}geo.roam), [select](${optionPath}geo.select), [emphasis](${optionPath}geo.emphasis), [focus-blur](${optionPath}geo.emphasis.focus), [label](${optionPath}geo.label), [labelLayout](${optionPath}series-map.labelLayout), [tooltip](${optionPath}geo.tooltip) on SVG with only simple some ECharts options. Series like [scatter](${optionPath}series-scatter), [effectScatter](${optionPath}series-effectScatter), [lines](${optionPath}series-lines), [custom](${optionPath}series-custom) that are available on [geo coordinate system](${optionPath}geo) can also be positioned and displayed based on SVG base map.\n\nThere are several examples where SVG base map is used:\n[Beef Cuts](${exampleEditorPath}geo-beef-cuts) |\n[Organ Visualization](${exampleEditorPath}geo-organ) |\n[Flight Seatmap](${exampleEditorPath}geo-seatmap-flight) |\n[SVG Map](${exampleEditorPath}geo-svg-map) |\n[SVG Scatter](${exampleEditorPath}geo-svg-scatter-simple) |\n[SVG Lines](${exampleEditorPath}geo-svg-lines) |\n[SVG Traffic](${exampleEditorPath}geo-svg-traffic)\n\n\n## Basic Usage [[[#basic-usage]]]\n\nThe usage of SVG base map is the same as the usage of [GeoJSON](${apiPath}echarts.registerMap).\n\nIf using it in [geo coordinate system](${optionPath}geo):\n```ts\n$.get(\'map/organ.svg\', function (svg) {\n    // Firstly we need to register SVG raw string or parsed SVG DOM\n    // to echarts with a name:\n    echarts.registerMap(\'organ_diagram\', {svg: svg});\n\n    var chart = echarts.init(document.getElementById(\'main\'));\n    chart.setOption({\n        geo: {\n            // Reference it in echarts option.\n            map: \'organ_diagram\',\n            ...\n        }\n    });\n});\n```\n\nIf using it in [map series](${optionPath}series-map):\n```ts\n$.get(\'map/beef_cuts.svg\', function (svg) {\n    // Firstly we need to register SVG raw string or parsed SVG DOM\n    // to echarts with a name:\n    echarts.registerMap(\'beef_cuts_diagram\', {svg: svg});\n\n    var chart = echarts.init(document.getElementById(\'main\'));\n    chart.setOption({\n        series: {\n            type: \'map\',\n            // Reference it in echarts option.\n            map: \'beef_cuts_diagram\',\n            ...\n        }\n    });\n});\n```\n\n\n## Zoom and Pan [[[#zoom-and-pan]]]\n\nFor [Geo coordinate system](${optionPath}geo)\n```ts\noption = {\n    geo: {\n        // Enable zoom and pan.\n        roam: true,\n        ...\n    }\n};\n```\nFor [map series](${optionPath}series-map)\n```ts\noption = {\n    series: {\n        type: \'map\',\n        // Enable zoom and pan.\n        roam: true,\n        ...\n    }\n};\n```\n\nSee [roam](${optionPath}geo.roam).\nSee also example [SVG Map](${exampleEditorPath}geo-svg-map).\n\n\n## Named Element [[[#named-element]]]\n\nIf intending to interact with some elements of SVG, we need to mark those elements in SVG firstly. That can be done simply by adding names to the target elements. The interaction related feature like [select](${optionPath}geo.select), [emphasis](${optionPath}geo.emphasis), [focus-blur](${optionPath}geo.emphasis.focus), [label](${optionPath}geo.label), [labelLayout](${optionPath}series-map.labelLayout), [tooltip](${optionPath}geo.tooltip) depend on those named elements.\n\nFor example, we add name attribute `name="named_rect"` only to the left SVG `path`.\n```xml\n<?xml version="1.0" encoding="utf-8"?>\n<svg xmlns="http://www.w3.org/2000/svg" version="1.2" fill-rule="evenodd" xml:space="preserve">\n    <path name="named_rect" d="M 0,0 L 0,100 100,100 100,0 Z" fill="#765" />\n    <path d="M 150,0 L 150,100 250,100 250,0 Z" fill="#567" />\n</svg>\n```\nThen hover on the left rect, it can be highlighted, whereas the right one can not.\n\n<md-example src="doc-example/geo-svg-named-basic" width="100%" height="200"></md-example>\n\nOption for some certain named elements can be specified in [geo.regions](${optionPath}geo.regions), like:\n```ts\noption = {\n    geo: {\n        map: \'some_svg\',\n        regions: [{\n            name: \'element_name_1\',\n            itemStyle: { ... }\n        }, {\n            name: \'element_name_2\',\n            itemStyle: { ... }\n        }]\n    }\n};\n```\n\n\nNote:\n+ These SVG elements can be named and recognized by ECharts:\n`rect`, `circle`, `line`, `ellipse`, `polygon`, `polyline`, `path`, `text`, `tspan`, `g`.\n+ It is supported that multiple elements are named with the same name, will they will be highlighted/selected together.\n\n\n## Style Customization [[[#style-customization]]]\n\nAlthough the style (such as color, font, lineWidth, ...) of SVG Elements can be defined directly in SVG file, style of named elements can also be customized in ECharts option, which will be handy in some scenario.\n\nStyles can be specified in [geo.itemStyle](${optionPath}geo.itemStyle) and [series-map.itemStyle](${optionPath}series-map.itemStyle) (also includes `emphasis.itemStyle`, `select.itemStyle`, `blur.itemStyle`, `regions[i].itemStyle`, `regions[i].emphasis.itemStyle`, `regions[i].select.itemStyle`, `regions[i].blur.itemStyle`). Some default style of the named elements can also be removed here (e.g., set `emphasis.itemStyle.color: null` to prevent the fill color from changing when mouse hovering.)\n\nMoreover, named elements can also be styled by [visualMap component](${optionPath}visualMap) if using [series-map](${optionPath}series-map). See [Beef Cuts](${exampleEditorPath}geo-beef-cuts).\n\n\nNote:\nOnly these named elements can be styled in `itemStyle`:\n`rect`, `circle`, `line`, `ellipse`, `polygon`, `polyline`, `path`.\n\n\n## Select [[[#select]]]\n\nNamed elements can adopt "select" feature by setting [geo.selectedMode](${optionPath}geo.selectedMode) or [series-map.selectedMode](${optionPath}series-map.selectedMode) as `\'single\'` or `\'multiple\'`. The style of element when selected can be specified in [geo.select](${optionPath}geo.select) or [series-map.select](${optionPath}series-map.select).\n\nThe selected names can be obtained by [geoselectchanged](${apiPath}event.geoselectchanged) event, like:\n```ts\nmyChart.on(\'geoselectchanged\', function (params) {\n    var selectedNames = params.allSelected[0].name;\n    console.log(\'selected\', selectedNames);\n});\n```\n\nSee [Flight Seatmap](${exampleEditorPath}geo-seatmap-flight) for more details.\n\n\n## Emphasis and Focus-Blur [[[#emphasis-and-focus-blur]]]\n\n`emphasis` state (highlight when hovering) can be auto adopted to named elements.\n\nEspecially, [geo.emphasis.focus](${optionPath}geo.emphasis.focus) and be set as `\'self\'` to enable "focus-blur" feature, where all all of the other elements will be blurred when hovering on an named element.\n\nSee [Organ Visualization](${exampleEditorPath}geo-organ) for more details.\n\n\n## Tooltip [[[#tooltip]]]\n\nTooltip can be enabled or disabled on named elements.\n```ts\noption = {\n    // Need to declare the root tooltip to\n    // enable tooltip feature on ECharts.\n    tooltip: {},\n    geo: {\n        map: \'some_svg\',\n        tooltip: {\n            // Use `show` to enable/disable tooltip\n            // on geo coordinate system.\n            show: true\n        },\n        regions: [{\n            name: \'some_name1\',\n            // Set named element specified tooltip option if needed.\n            tooltip: {\n                formatter: \'some special tooltip 1\'\n            }\n        }, {\n            name: \'some_name2\',\n            tooltip: {\n                formatter: \'some special tooltip 2\'\n            }\n        }]\n    }\n};\n```\n\nIf intending to disable the geo tooltip when hovering a on named elements, just:\n```ts\noption = {\n    tooltip: {},\n    geo: {\n        map: \'some_svg\',\n        tooltip: {\n            show: false\n        }\n    }\n};\n```\n\nSee [SVG Map](${exampleEditorPath}geo-svg-map) for more details.\n\n\n## Label [[[#label]]]\n\nAlthough text label can be declared in SVG file directly via `<text>`/`<tspan>`, we can also use ECharts built-in label feature on named elements by specifying [geo.label](${optionPath}geo.label) or [series-map.label](${optionPath}series-map.label).\n\nBy default the label feature is enabled when hovering on a named element. If intending to disable it, just:\n```ts\noption = {\n    geo: {\n        map: \'some_svg\',\n        emphasis: {\n            label: {\n                show: false\n            }\n        }\n    }\n};\n```\n\nWhen multiple elements need to share one label text, we have two choices:\n+ Wrap those elements in a named `<g>` (e.g., `<g name="name_a">`), where a single label will be displayed and located based on the bounding rect of the `<g>`.\n+ Name those elements with the same name (e.g., `<path name="name_b"/><path name="name_b"/>`), where multiple labels will be displayed and located based on each elements self.\n\nFor example (hover to show the labels):\n<md-example src="doc-example/geo-svg-label-basic" width="100%" height="300"></md-example>\n\nNote: Only these named elements can be labeled via `label` option:\n`rect`, `circle`, `line`, `ellipse`, `polygon`, `polyline`, `path`, `g`.\n\nSee also [Organ Visualization](${exampleEditorPath}geo-organ) for the usage of label.\n\n\n## Events [[[#events]]]\n\nMouse events or touch events of named elements can be listened simply by:\n```ts\n// \'name1\' is a name of a SVG element.\nmyChart.on(\'click\', { geoIndex: 0, name: \'name1\' }, function (params) {\n    console.log(params);\n});\n```\n\n\n## Layout of SVG Base Map [[[#layout-of-svg-base-map]]]\n\nBy default ECharts will position the SVG base map in the center of the canvas. If need some adjust, we usually only adjust [layoutCenter](${optionPath}geo.layoutCenter)/[layoutSize](${optionPath}geo.layoutSize), and occasionally `<svg viewBox="...">`/[geo.boundingCoords](${optionPath}geo.boundingCoords) (difference: clip or not). In most cases they are enough.\n\nIf need some advanced precise control of the position and zoom, several concepts below can be noticed.\n\nThe layout rule and options of [geo coordinate system](${optionPath}geo) and [map series](${optionPath}series-map) are the same. So we only demonstrate [geo coordinate system](${optionPath}geo) below.\n\n<md-example src="doc-example/geo-svg-layout-basic" width="100%" height="600"></md-example>\n\nThe demo above shows six [geo coordinate system](${optionPath}geo) with three SVG files in a single ECharts canvas. Each two [geo](${optionPath}geo) that are in the same column use the same SVG file.\n\nFirstly, what shapes looks like is determined by SVG file itself. That is, in the demo above, determined by the `<circle>` and `viewBox` attribute (`viewBox` cut (clips) the circle). We can noticed that the final shape outlines in each column are the same (despite the difference in position, size and scratch), since they use the same SVG file.\n\nSecondly, users can use either of the two option groups below to determine the location and the size of the `geo view port` of [geo coordinate system](${optionPath}geo) according to the entire chart canvas (all of these options are measured in echarts canvas pixel, or percentage value):\n+ [layoutCenter](${optionPath}geo.layoutCenter), [layoutSize](${optionPath}geo.layoutSize) (recommended).\n+ [top](${optionPath}geo.top), [right](${optionPath}geo.right), [bottom](${optionPath}geo.bottom), [left](${optionPath}geo.left) (which is used in the demo above).\n\nIn the demo above, the six geo `geo view ports` are displayed as six black squares.\n\nThirdly, a `bounding rect` of the SVG is determined, which is determined by methods below (all of them are measured in SVG local unit):\n1. If [geo.boundingCoords](${optionPath}geo.boundingCoords) is specified, use it as `bounding rect`.\n2. Else if `<svg width="..." height="...">` is specified, use `[0, 0, width, height]` as `bounding rect`. (If only `width` or only `height` is specified, only use `[0, width]` or `[0, height]`).\n3. Else if `svg viewBox="...">` is specified, use `viewBox` as `bounding rect`.\n4. Else use the union bounding rect of all of the SVG elements as the `bounding rect`.\n5. If [geo.center](${optionPath}geo.center) or [geo.zoom](${optionPath}geo.zoom) is specified, transform the `bounding rect` determined by `1~4` above.\n\nHaving `bounding rect` determined, it will be placed into its corresponding `geo view port`:\n+ If [layoutCenter](${optionPath}geo.layoutCenter), [layoutSize](${optionPath}geo.layoutSize) is used, the `bounding rect` will be placed at the center and as big as possible into the `geo view port` (keep aspect ratio).\n+ If [top](${optionPath}geo.top), [right](${optionPath}geo.right), [bottom](${optionPath}geo.bottom), [left](${optionPath}geo.left) is used, the view rect will be stretched to fill the `geo view port` entirely.\n\n\n## Place Series on SVG Base Map [[[#place-series-on-svg-base-map]]]\n\nSeries like [scatter](${optionPath}series-scatter), [effectScatter](${optionPath}series-effectScatter), [lines](${optionPath}series-lines), [custom](${optionPath}series-custom) that are available on [geo coordinate system](${optionPath}geo) can also be positioned and displayed on SVG base map.\n\nNote that in this kind of usage the unit of series data value is the SVG file local coords. For example:\n```ts\noption = {\n    geo: {\n        map: \'some_svg\'\n    },\n    series: {\n        type: \'effectScatter\',\n        coordinateSystem: \'geo\',\n        geoIndex: 0,\n        data: [\n            // SVG local coords.\n            [488.2358421078053, 459.70913833075736],\n            [770.3415644319939, 757.9672194986475],\n            [1180.0329284196291, 743.6141808346214],\n        ]\n    }\n};\n```\n\nBy the way, there is a simple approach to get SVG local coord:\n```ts\nmyChart.setOption({\n    geo: {\n        map: \'some_svg\'\n    }\n});\nmyChart.getZr().on(\'click\', function (params) {\n    var pixelPoint = [params.offsetX, params.offsetY];\n    var dataPoint = myChart.convertFromPixel({ geoIndex: 0 }, pixelPoint);\n    // When click, the data in SVG local coords will be printed,\n    // which can be used in `series.data`.\n    console.log(dataPoint);\n});\n```\n\nSee also [SVG Scatter](${exampleEditorPath}geo-svg-scatter-simple), [SVG Lines](${exampleEditorPath}geo-svg-lines), [SVG Traffic](${exampleEditorPath}geo-traffic).\n\n\n## Unsupported SVG features [[[#unsupported-svg-features]]]\n\nUnfortunately it is difficult to implement a complete SVG parser. While the common SVG features are supported, at least these features listed below are not supported yet:\n\n+ Flip and skew (will be supported `v5.1.2`):\n    + Not support `transform: skew(...)` (including `transform: matrix(...)` that includes skew).\n    + Not support `transform: scale(x, y)` that `x`, `y` has different sign while has `rotate` (e.g., `scale: (1, -1), rotate(90)`).\n+ Standalone `<style>` tag is not supported.\n    + But inline style is supported (e.g., `<path style="color:red" />`).\n+ Unit:\n    + Only `px` is supported. Other unit like `width="231.65mm"` is not supported.\n    + Percentage value like `<svg width="30%" height="40%">` is not supported.\n+ `<defs>` tag:\n    + Only `<linearGradient>`, `<radialGradient>` are supported.\n    + other elements (e.g., `<pattern>`, `<path>`, ...) defined in `<defs>` are not supported yet.\n+ `<linearGradient>`, `<radialGradient>`:\n    + `fx`, `fy` is not supported.\n    + `gradientTransform` attribute is not supported.\n+ `fill:url(...)`, `stroke:utl(...)`:\n    + Only `url(#someId)` is supported.\n    + Other URL patterns are not supported. e.g.,\n        + `url(https://example.com/images/myImg.jpg)`;\n        + `url(data:image/png;base64,iRxVB0…)`;\n        + `url(myFont.woff)`;\n+ `<switch>` tag:\n    + All the content inside `<switch>` tag will be displayed. The "switch" feature is not supported.\n+ `<text>`:\n    + `textPath` is not supported.\n    + [Addressable character](https://www.w3.org/TR/SVG/text.html#TermAddressableCharacter) is not supported. That is,\n    ```xml\n    \x3c!-- Not supported: --\x3e\n    <tspan x="0 4.94 9.89">abc</tspan>\n    \x3c!-- Supported: --\x3e\n    <tspan x="0">a</tspan>\n    <tspan x="4.94">b</tspan>\n    <tspan x="9.89">c</tspan>\n    ```\n'}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/4cd4272ba0a068c0559e.js b/docs/_nuxt/js/4cd4272ba0a068c0559e.js
new file mode 100644
index 0000000..353ee19
--- /dev/null
+++ b/docs/_nuxt/js/4cd4272ba0a068c0559e.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[105],{406:function(t,n,e){"use strict";e.r(n),n.default='# 气泡图\n\n气泡图是显示变量之间相关性的一种图表。与散点图类似。在直角坐标系中显示数据的两个变量( X 和 Y 轴)之间的关系,数据显示为点的集合。与散点图不同的是,气泡图是一个多变量图,它增加了第三个数值即气泡大小的变量,在气泡图中,较大的气泡表示较大的值。可以通过气泡的位置分布和大小比例,来分析数据的规律。\n\n<iframe max-width="830" width="100%" height="400"\nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xHkRpZuY4z&v=1">\n</iframe>\n\n## 气泡图的使用建议\n\n1、当数据具有 3 个序列、特征及相关值,使用气泡图是一个不错的选择。如下图气泡的位置显示了代码提交的日期、具体的时间点,气泡的大小说明了提交的代码量。\n\n<iframe max-width="830" width="100%" height="400"\nsrc="https://gallery.echartsjs.com/view-lite.html?cid=scatter-punchCard">\n</iframe>\n\n2、我们还可以给气泡加入颜色编码。例如下图用不同的颜色将三个地区的空气数据分类标注,红色代表北京,黄色代表上海、蓝色代表广州,可以直观地对比分析三地的空气质量情况。\n\n<iframe max-width="830" width="100%" height="400"\nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xr1kK7LoEf&v=1">\n</iframe>\n\n3、气泡图还经常用于和地图结合,其中 x 轴和 y 轴是经度和纬度的数据定位,气泡的大小可以表明该位置数量的多少。\n\n<iframe max-width="830" width="100%" height="400"\n src="https://gallery.echartsjs.com/view-lite.html?cid=scatter-world-population">\n</iframe>\n'}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/52381af481b92e53445a.js b/docs/_nuxt/js/52381af481b92e53445a.js
new file mode 100644
index 0000000..7c1b60c
--- /dev/null
+++ b/docs/_nuxt/js/52381af481b92e53445a.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[69],{370:function(n,w,o){"use strict";o.r(w),w.default=""}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/528583ec9e2e5194904c.js b/docs/_nuxt/js/528583ec9e2e5194904c.js
new file mode 100644
index 0000000..e291a20
--- /dev/null
+++ b/docs/_nuxt/js/528583ec9e2e5194904c.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[78],{379:function(n,e,t){"use strict";t.r(e),e.default="# 获取灵感\n\n当你有“不知道图表应该设计成什么样”或者“不知道如何使用 ECharts 实现某种效果”的疑问的时候,以下列表可以提供一些思路。\n\n- [ECharts 官方实例](${mainSitePath}/examples)\n- 本手册的“应用篇 - 常用图表类型”\n- [makeapie.com](https://www.makeapie.com/) 社区用户的作品集\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/542f1ef4dc31c39f6578.js b/docs/_nuxt/js/542f1ef4dc31c39f6578.js
new file mode 100644
index 0000000..d9ee3fd
--- /dev/null
+++ b/docs/_nuxt/js/542f1ef4dc31c39f6578.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[31],{332:function(e,t,r){"use strict";r.r(t),t.default='# Gauger Chart\n\nThe Gauger Chart was also called a dial graph or speedometer graph. It is a form of a quasi-materialized display. It displays the data similar to the reading on a speedometer. The color of the gauger chart can be used to separate different categories of data. The gauger chart uses scale to mark data, pointers to indicating dimension, the angel of pointer to represent the value.\n\n<iframe max-width="830" width="100%" height="400"\nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xH1vxib94f">\n</iframe>\n\n## Suggestion for Using Gauger Chart\n\n1. The gauger chart is suitable for displaying single progress or measurement standard under quantitative conditions while it is not suitable for carpeting different variables or trends.\n\n2. You can provide info in different dimensions. However, do not include more than 3 pointers in one dashboard. It is recommended to use multiple dashboards if there are indeed multiple data to be displayed.\n\n<iframe max-width="830" width="100%" height="400"\nsrc="https://gallery.echartsjs.com/view-lite.html?cid=gauge-car">\n</iframe>\n'}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/54a18589629cfacb72d4.js b/docs/_nuxt/js/54a18589629cfacb72d4.js
new file mode 100644
index 0000000..2eebdf7
--- /dev/null
+++ b/docs/_nuxt/js/54a18589629cfacb72d4.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[86],{387:function(n,e,t){"use strict";t.r(e),e.default='# Apache ECharts 6 新特性\n\n12 年前,ECharts 在 GitHub 首次发布,一颗开源的种子从此萌发。\n\n从最初的图表工具,到如今成长为支撑百万级开发者的可视化巨擘;从单一的前端图表库,演进为支持移动端、大屏、服务端渲染等全场景的技术体系。这 12 年间,我们见证了 ECharts 在技术方面的持续突破,更欣喜地看到全球开发者用 ECharts 创造出无数惊艳的数据故事。\n\n现在,Apache ECharts 6.0 正式发布,我们呈上诚意满满的 12 项升级,只为百尺竿头,更进一步。\n\n## 功能概览\n\n12 年的沉淀,只为更极致的可视化表达。Apache ECharts 的核心力量,始终源于对开发者真实挑战的深刻理解。当我们为 6.0 定义方向时,问题很清晰:**如何让复杂数据的呈现既足够强大,又足够优雅**?\n\n这驱使我们围绕三个核心维度进行深度进化:\n\n- **更专业的可视化呈现**:从精心打磨的默认主题,到响应系统深色的智能切换,确保图表具备专业质感,无缝融入现代应用体验。\n\n- **拓展数据表达的边界**:新增更多图表类型与功能,构建完整复杂场景应对体系,实现深度数据的直觉化表达。\n\n- **释放组合编排的自由**:从革命性的矩阵坐标系,到可复用的自定义系列生态,再到坐标轴标签优化——赋予开发者更自由编排的能力,将创意映射为无拘束的可视化作品。\n\n我们在这三个核心维度上做了 12 项升级。这些升级并非简单的功能叠加,而是为构建下一代数据驱动应用,铺设的坚实能力基座。它们共同指向一个目标:**让 ECharts 强大、可靠、稳定地服务于后台,把舞台和聚光灯留给你的创造性表达。**\n\n下文将针对这十二项升级分别展开介绍:\n\n- **更专业的可视化呈现**\n  - **1. 全新默认主题**:采用更符合现代审美的设计语言,以专业设计赋能数据表达\n  - **2. 动态主题切换**:支持运行时无缝切换主题,适配多主题场景\n  - **3. 深色模式响应**:自动适配系统深色/浅色模式,提升用户体验\n- **拓展数据表达的边界**\n  - **4. 新增和弦图**:拓展复杂关系与分布数据的呈现方式\n  - **5. 新增蜂群图**:通过动态分布算法,将重叠数据点智能展开为蜂窝状排列\n  - **6. 新增抖动散点图**:通过增加散点图分布范围,增强高密度数据的可读性\n  - **7. 新增断轴**:表达数据断层,轻松呈现量级悬殊的数据对比\n  - **8. 升级股市交易类图表**:增强标签能力,更多开箱即用的交易类图表\n- **释放组合编排的自由**\n  - **9. 新增矩阵坐标系**:各种图表类型和组件像表格一样自由组合,灵活布局\n  - **10. 升级自定义系列**:支持 npm 发布与动态注册使用,实现自定义系列代码复用\n  - **11. 新增多款自定义图表**:小提琴图、轮廓图、阶段图、范围柱状图、范围折线图\n  - **12. 坐标轴标签优化**:新版智能优化坐标标签布局,默认防溢出防重叠\n\n我们希望通过 Apache ECharts 6.0 的全新升级,帮助用户更灵活方便地创建更多图表,实现真正的“前图无量”!\n\n## 功能介绍\n\n### 1. 全新默认主题\n\n在 ECharts 6.0 的开发过程中,我们深入分析了用户的真实使用场景,发现超过七成的开发者直接采用默认主题。这让我们意识到:一个优秀的默认主题不仅要具备美学价值,更要符合各个业务场景的通用需求。\n\n新版主题系统内部使用了设计令牌(design token)对颜色、距离等设计元素进行重构,**使得不同图表类型和组件之间更和谐一致**。\n\n<img data-src="images/feature-v6/1-default-theme.png" width="600px" />\n\n虽然 6.0 的主题在 5.x 版本上有非常大的调整,但是我们提供了一个 [v5.js](https://github.com/apache/echarts/blob/master/theme/v5.js) 主题文件,对于希望使用新版本功能但保留原有样式的开发者,可以实现快速迁移。\n\n### 2. 动态主题切换\n\n在之前的版本中,如果想要改变一个图表的主题,就必须注销图表实例后重新初始化,二次的初始动画可能对用户体验带来负面影响。在新版本中,我们实现了**主题的动态切换能力**(参见),显著地提升用户体验。\n\n<img data-src="images/feature-v6/2-switch-themes.gif" width="600px" />\n\n### 3. 深色模式响应\n\n在实现主题的动态注册和切换之后,一个典型场景是**监听系统是否使用深色模式,并动态调整图表的深色与浅色主题**。\n\n<img data-src="images/feature-v6/3-responsive-themes.gif" width="600px" />\n\n这对于支持深色模式的业务场景至关重要,可以确保应用界面与系统主题风格一致,显著提升用户体验的流畅性和专业性。\n\n以下是一个监听系统深色模式并改变图表主题的方式:\n\n```js\nconst darkModeMediaQuery = window.matchMedia(\'(prefers-color-scheme: dark)\');\nfunction updateDarkMode() {\n    const isDarkMode = darkModeMediaQuery.matches;\n    for (const chart of charts) {\n        chart.setTheme(isDarkMode ? \'dark\' : \'default\');\n    }\n}\ndarkModeMediaQuery.addEventListener(\'change\', () => {\n    updateDarkMode();\n});\n```\n\n### 4. 新增和弦图\n\n和弦图直观展现复杂关系网络中的流量与权重,特别适合金融交易、社交网络等场景的多维度关系分析。ECharts 创新性地支持**使用出节点和入节点的渐变色作为边的颜色,呈现独特的视觉美感**。参见 [series-chord](${optionPath}series-chord)。\n\n<img data-src="images/feature-v6/4-chord.gif" width="600px" />\n\n### 5. 新增蜂群图\n\n传统的散点图在类目轴下如果数据过于密集,蜂群图(Beeswarm)通过将数据在非数值维度上的偏移,在保持数值轴准确性的前提下,实现**散点图的无重叠分布**。将 [jitter](${optionPath}xAxis.jitter) 设置为非 0 值,将 [jitterOverlap](${optionPath}xAxis.jitterOverlap) 设置为 `false` 来实现蜂群图。\n\n<img data-src="images/feature-v6/5-beeswarm.png" width="600px" />\n\n### 6. 新增抖动散点图\n\n抖动散点图(Scatter Jittering)采用随机扰动策略,**在非数据维度上添加固定范围的随机偏移,解决数据过于密集的问题**。\n\n从下图我们可以看到,在未使用抖动的情况下,如果数据过于密集,很难看清数据的分布情况。\n\n<img data-src="images/feature-v6/6-jittering-off.png" width="600px" />\n\n而在开启了数据抖动之后,可以更清楚地看到数据分布最密集的范围是 6-8 之间。并且,相比蜂群图,抖动散点图具有更高的处理性能。\n\n<img data-src="images/feature-v6/6-jittering-on.png" width="600px" />\n\n将 [jitter](${optionPath}xAxis.jitter) 设置为非 0 值,将 [jitterOverlap](${optionPath}xAxis.jitterOverlap) 设置为 `true` 来实现抖动散点图。\n\n### 7. 新增断轴\n\n断轴(Broken Axis)是一种通过坐标轴断层展现悬殊量级数据的可视化手段。在 ECharts 6.0 中,我们创新性地实现了**模拟撕纸效果的断轴,使得断轴的含义能被更直观地传递**,并且支持点击展开的效果,还原到真实数据比例。\n\n<img data-src="images/feature-v6/7-break-axis.gif" width="600px" />\n\n### 8. 升级股市交易类图表\n\nECharts 6.0 针对金融交易场景深度优化,增强了标签针对坐标系的相对定位能力,助力开发者快速构建专业级行情分析工具。\n\n下图展示了一个使用 ECharts 实现的股市交易图的综合应用场景,结合了**分时图、MACD、成交量、买卖盘口、深度图**:\n\n<img data-src="images/feature-v6/8-stock.png" width="600px" />\n\n这些实例可以帮助开发者快速实现金融交易场景的需求。其中,在图表的四个角落显示数字可以使用 [relativeTo](${optionPath}series-line.markPoint.data.relativeTo) 实现。\n\n### 9. 新增矩阵坐标系\n\n上述例子也用到了 ECharts 6.0 新增的矩阵坐标系,它的功能十分强大。不仅可以用来做协方差矩阵图:\n\n<md-example src="matrix-covariance" width="600" height="700" />\n\n元素周期表:\n\n<md-example src="matrix-periodic-table" width="100%" height="600" />\n\n作为一种布局,它还允许开发者将各种图表类型和组件结合,创造出灵活复杂的可视化作品:\n\n<md-example src="matrix-grid-layout" width="100%" height="600" />\n\n\n### 10. 升级自定义系列\n\n过去,使用 ECharts 自定义系列意味着开发者必须从零手写 `renderItem` 复杂逻辑,即使是*复用*,也只是复制粘贴代码。现在,ECharts 6.0 带来标准化可复用方案:\n\n- **自定义系列的注册机制**:和主题注册类似,自定义系列也可以动态注册和使用,使用方式和内置图表系列一样简单方便,参见 [series-custom.renderItem](${optionPath}series-custom.renderItem)\n- **官方自定义系列项目**:官方在 https://github.com/apache/echarts-custom-series 发布了多个自定义系列,在正式版本发布后,开发者可以通过 npm 等方便地获取\n- **发布自己的自定义系列**:可以向上述项目提 Pull Request 或发布到自己的仓库,实现自定义系列的复用\n\n### 11. 新增多款自定义图表\n\n本次发布,自定义系列项目提供了 6 款实用的图表,使用方法和完整文档参见 [echarts-custom-series](https://github.com/apache/echarts-custom-series) 项目。包括**小提琴图**:\n\n<img data-src="images/feature-v6/11-violin.png" width="600px" />\n\n**轮廓图**:\n\n<img data-src="images/feature-v6/11-contour.png" width="600px" />\n\n**睡眠阶段图**:\n\n<img data-src="images/feature-v6/11-stage.png" width="600px" />\n\n**分段环形图**:\n\n<img data-src="images/feature-v6/11-segmentedDoughnut.png" width="600px" />\n\n**范围柱状图**:\n\n<img data-src="images/feature-v6/11-barRange.png" width="600px" />\n\n**范围折线图**:\n\n<img data-src="images/feature-v6/11-lineRange.png" width="600px" />\n\n发挥你的创意,快来和我们一起创造更多自定义图表吧!\n\n### 12. 坐标轴标签优化\n\n在之前的版本中,直角坐标系的 `axisLabel` 和 `axisName` 在数据比较长时容易超出屏幕,以及重叠。数据变化时使用者并不总能准确预估空间来完全避免它们。在这个版本中我们优化了防止超出屏幕以及防止重叠的策略,并成为默认。\n\n## 升级方法\n\n请参见完整的[版本更新内容](${mainSitePath}changelog.html#v6-0-0)和[升级指南](${lang}/basics/release-note/v6-upgrade-guide)。\n'}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/58025dad1462d49b8398.js b/docs/_nuxt/js/58025dad1462d49b8398.js
new file mode 100644
index 0000000..16c6513
--- /dev/null
+++ b/docs/_nuxt/js/58025dad1462d49b8398.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[0],{1:function(t,e,r){"use strict";r.d(e,"k",(function(){return _})),r.d(e,"m",(function(){return y})),r.d(e,"l",(function(){return C})),r.d(e,"e",(function(){return k})),r.d(e,"b",(function(){return O})),r.d(e,"s",(function(){return $})),r.d(e,"g",(function(){return j})),r.d(e,"h",(function(){return P})),r.d(e,"d",(function(){return E})),r.d(e,"r",(function(){return S})),r.d(e,"j",(function(){return L})),r.d(e,"t",(function(){return T})),r.d(e,"o",(function(){return A})),r.d(e,"q",(function(){return N})),r.d(e,"f",(function(){return I})),r.d(e,"c",(function(){return M})),r.d(e,"i",(function(){return z})),r.d(e,"p",(function(){return B})),r.d(e,"a",(function(){return K})),r.d(e,"u",(function(){return W})),r.d(e,"n",(function(){return J}));r(15),r(35),r(41),r(42);var n=r(16),o=r(2),c=r(11),l=r(3),h=(r(27),r(23),r(96),r(17),r(19),r(20),r(24),r(28),r(29),r(21),r(45),r(73),r(127),r(108),r(100),r(101),r(169),r(40),r(36),r(0)),f=r.n(h),d=r(25);function v(object,t){var e=Object.keys(object);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(object);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(object,t).enumerable}))),e.push.apply(e,r)}return e}function m(t){for(var i=1;i<arguments.length;i++){var source=null!=arguments[i]?arguments[i]:{};i%2?v(Object(source),!0).forEach((function(e){Object(c.a)(t,e,source[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(source)):v(Object(source)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(source,e))}))}return t}function w(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(!t)return;if("string"==typeof t)return x(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);"Object"===r&&t.constructor&&(r=t.constructor.name);if("Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return x(t,e)}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var i=0,n=function(){};return{s:n,n:function(){return i>=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,c=!0,l=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return c=t.done,t},e:function(t){l=!0,o=t},f:function(){try{c||null==r.return||r.return()}finally{if(l)throw o}}}}function x(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,r=new Array(e);i<e;i++)r[i]=t[i];return r}function _(t){f.a.config.errorHandler&&f.a.config.errorHandler(t)}function y(t){return t.then((function(t){return t.default||t}))}function C(t){return t.$options&&"function"==typeof t.$options.fetch&&!t.$options.fetch.length}function k(t){var e,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=t.$children||[],o=w(n);try{for(o.s();!(e=o.n()).done;){var c=e.value;c.$fetch?r.push(c):c.$children&&k(c,r)}}catch(t){o.e(t)}finally{o.f()}return r}function O(t,e){if(e||!t.options.__hasNuxtData){var r=t.options._originDataFn||t.options.data||function(){return{}};t.options._originDataFn=r,t.options.data=function(){var data=r.call(this,this);return this.$ssrContext&&(e=this.$ssrContext.asyncData[t.cid]),m(m({},data),e)},t.options.__hasNuxtData=!0,t._Ctor&&t._Ctor.options&&(t._Ctor.options.data=t.options.data)}}function $(t){return t.options&&t._Ctor===t||(t.options?(t._Ctor=t,t.extendOptions=t.options):(t=f.a.extend(t))._Ctor=t,!t.options.name&&t.options.__file&&(t.options.name=t.options.__file)),t}function j(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"components";return Array.prototype.concat.apply([],t.matched.map((function(t,n){return Object.keys(t[r]).map((function(o){return e&&e.push(n),t[r][o]}))})))}function P(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return j(t,e,"instances")}function E(t,e){return Array.prototype.concat.apply([],t.matched.map((function(t,r){return Object.keys(t.components).reduce((function(n,o){return t.components[o]?n.push(e(t.components[o],t.instances[o],t,o,r)):delete t.components[o],n}),[])})))}function S(t,e){return Promise.all(E(t,function(){var t=Object(o.a)(regeneratorRuntime.mark((function t(r,n,o,c){var l,h;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if("function"!=typeof r||r.options){t.next=11;break}return t.prev=1,t.next=4,r();case 4:r=t.sent,t.next=11;break;case 7:throw t.prev=7,t.t0=t.catch(1),t.t0&&"ChunkLoadError"===t.t0.name&&"undefined"!=typeof window&&window.sessionStorage&&(l=Date.now(),(!(h=parseInt(window.sessionStorage.getItem("nuxt-reload")))||h+6e4<l)&&(window.sessionStorage.setItem("nuxt-reload",l),window.location.reload(!0))),t.t0;case 11:return o.components[c]=r=$(r),t.abrupt("return","function"==typeof e?e(r,n,o,c):r);case 13:case"end":return t.stop()}}),t,null,[[1,7]])})));return function(e,r,n,o){return t.apply(this,arguments)}}()))}function L(t){return R.apply(this,arguments)}function R(){return(R=Object(o.a)(regeneratorRuntime.mark((function t(e){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e){t.next=2;break}return t.abrupt("return");case 2:return t.next=4,S(e);case 4:return t.abrupt("return",m(m({},e),{},{meta:j(e).map((function(t,r){return m(m({},t.options.meta),(e.matched[r]||{}).meta)}))}));case 5:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function T(t,e){return D.apply(this,arguments)}function D(){return(D=Object(o.a)(regeneratorRuntime.mark((function t(e,r){var o,c,h,f;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e.context||(e.context={isStatic:!0,isDev:!1,isHMR:!1,app:e,store:e.store,payload:r.payload,error:r.error,base:e.router.options.base,env:{NUXT_ENV_DEPLOY:"gh"}},r.req&&(e.context.req=r.req),r.res&&(e.context.res=r.res),r.ssrContext&&(e.context.ssrContext=r.ssrContext),e.context.redirect=function(t,path,r){if(t){e.context._redirected=!0;var o=Object(n.a)(path);if("number"==typeof t||"undefined"!==o&&"object"!==o||(r=path||{},path=t,o=Object(n.a)(path),t=302),"object"===o&&(path=e.router.resolve(path).route.fullPath),!/(^[.]{1,2}\/)|(^\/(?!\/))/.test(path))throw path=Object(d.d)(path,r),window.location.replace(path),new Error("ERR_REDIRECT");e.context.next({path:path,query:r,status:t})}},e.context.nuxtState=window.__NUXT__),t.next=3,Promise.all([L(r.route),L(r.from)]);case 3:o=t.sent,c=Object(l.a)(o,2),h=c[0],f=c[1],r.route&&(e.context.route=h),r.from&&(e.context.from=f),e.context.next=r.next,e.context._redirected=!1,e.context._errored=!1,e.context.isHMR=!1,e.context.params=e.context.route.params||{},e.context.query=e.context.route.query||{};case 15:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function A(t,e){return!t.length||e._redirected||e._errored?Promise.resolve():N(t[0],e).then((function(){return A(t.slice(1),e)}))}function N(t,e){var r;return(r=2===t.length?new Promise((function(r){t(e,(function(t,data){t&&e.error(t),r(data=data||{})}))})):t(e))&&r instanceof Promise&&"function"==typeof r.then?r:Promise.resolve(r)}function I(base,t){if("hash"===t)return window.location.hash.replace(/^#\//,"");base=decodeURI(base).slice(0,-1);var path=decodeURI(window.location.pathname);base&&path.startsWith(base)&&(path=path.slice(base.length));var e=(path||"/")+window.location.search+window.location.hash;return Object(d.c)(e)}function M(t,e){return function(t,e){for(var r=new Array(t.length),i=0;i<t.length;i++)"object"===Object(n.a)(t[i])&&(r[i]=new RegExp("^(?:"+t[i].pattern+")$",X(e)));return function(e,n){for(var path="",data=e||{},o=(n||{}).pretty?U:encodeURIComponent,c=0;c<t.length;c++){var l=t[c];if("string"!=typeof l){var h=data[l.name||"pathMatch"],f=void 0;if(null==h){if(l.optional){l.partial&&(path+=l.prefix);continue}throw new TypeError('Expected "'+l.name+'" to be defined')}if(Array.isArray(h)){if(!l.repeat)throw new TypeError('Expected "'+l.name+'" to not repeat, but received `'+JSON.stringify(h)+"`");if(0===h.length){if(l.optional)continue;throw new TypeError('Expected "'+l.name+'" to not be empty')}for(var d=0;d<h.length;d++){if(f=o(h[d]),!r[c].test(f))throw new TypeError('Expected all "'+l.name+'" to match "'+l.pattern+'", but received `'+JSON.stringify(f)+"`");path+=(0===d?l.prefix:l.delimiter)+f}}else{if(f=l.asterisk?G(h):o(h),!r[c].test(f))throw new TypeError('Expected "'+l.name+'" to match "'+l.pattern+'", but received "'+f+'"');path+=l.prefix+f}}else path+=l}return path}}(function(t,e){var r,n=[],o=0,c=0,path="",l=e&&e.delimiter||"/";for(;null!=(r=F.exec(t));){var h=r[0],f=r[1],d=r.index;if(path+=t.slice(c,d),c=d+h.length,f)path+=f[1];else{var v=t[c],m=r[2],w=r[3],x=r[4],_=r[5],y=r[6],C=r[7];path&&(n.push(path),path="");var k=null!=m&&null!=v&&v!==m,O="+"===y||"*"===y,$="?"===y||"*"===y,j=r[2]||l,pattern=x||_;n.push({name:w||o++,prefix:m||"",delimiter:j,optional:$,repeat:O,partial:k,asterisk:Boolean(C),pattern:pattern?V(pattern):C?".*":"[^"+H(j)+"]+?"})}}c<t.length&&(path+=t.substr(c));path&&n.push(path);return n}(t,e),e)}function z(t,e){var r={},n=m(m({},t),e);for(var o in n)String(t[o])!==String(e[o])&&(r[o]=!0);return r}function B(t){var e;if(t.message||"string"==typeof t)e=t.message||t;else try{e=JSON.stringify(t,null,2)}catch(r){e="[".concat(t.constructor.name,"]")}return m(m({},t),{},{message:e,statusCode:t.statusCode||t.status||t.response&&t.response.status||500})}window.onNuxtReadyCbs=[],window.onNuxtReady=function(t){window.onNuxtReadyCbs.push(t)};var F=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function U(t,e){var r=e?/[?#]/g:/[/?#]/g;return encodeURI(t).replace(r,(function(t){return"%"+t.charCodeAt(0).toString(16).toUpperCase()}))}function G(t){return U(t,!0)}function H(t){return t.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1")}function V(t){return t.replace(/([=!:$/()])/g,"\\$1")}function X(t){return t&&t.sensitive?"":"i"}function K(t,e,r){t.$options[e]||(t.$options[e]=[]),t.$options[e].includes(r)||t.$options[e].push(r)}var W=d.b,J=(d.e,d.a)},107:function(t,e,r){"use strict";var n={gh:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},asf:{routerBase:"/handbook",rootPath:"https://echarts.apache.org/handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},local:{routerBase:"/echarts-handbook/dist",rootPath:"http://localhost/echarts-handbook/dist/",exampleViewPath:"http://localhost/echarts-website/examples/${lang}/view.html?c=",exampleEditorPath:"http://localhost/echarts-website/examples/${lang}/editor.html?c=",mainSitePath:"http://localhost/echarts-website/",optionPath:"http://localhost/echarts-website/option.html#",apiPath:"http://localhost/echarts-website/api.html#",gitRepo:"apache/echarts-handbook"},localsite:{routerBase:"/echarts-website/handbook",rootPath:"http://localhost/echarts-website/handbook",exampleViewPath:"http://localhost/echarts-website/examples/${lang}/view.html?c=",exampleEditorPath:"http://localhost/echarts-website/examples/${lang}/editor.html?c=",mainSitePath:"http://localhost/echarts-website/",optionPath:"http://localhost/echarts-website/option.html#",apiPath:"http://localhost/echarts-website/api.html#",gitRepo:"apache/echarts-handbook"}};var o=function(){var t="gh";if(!n.gh)throw"Deploy config ".concat(t," not exits");return n.gh}();e.a=o},128:function(t,e,r){t.exports={}},129:function(t,e,r){t.exports={}},130:function(t,e,r){t.exports={}},131:function(t,e,r){t.exports={}},132:function(t,e,r){t.exports={}},133:function(t,e,r){t.exports={}},137:function(t,e){const r=[[{title:"快速上手",dir:"get-started"},{title:"入门篇",dir:"basics",children:[{title:"获取 ECharts",dir:"download"},{title:"在项目中引入 ECharts",dir:"import"},{title:"资源列表",dir:"resource",draft:!0},{title:"寻求帮助",dir:"help"},{title:"版本特性",dir:"release-note",children:[{title:"ECharts 6 特性介绍",dir:"v6-feature"},{title:"v5 升级 v6 指南",dir:"v6-upgrade-guide"},{title:"5.0",dir:"v5-feature"},{title:"v4 升级 v5 指南",dir:"v5-upgrade-guide"},{title:5.2,dir:"5-2-0"},{title:5.3,dir:"5-3-0"},{title:5.4,dir:"5-4-0"},{title:5.5,dir:"5-5-0"},{title:5.6,dir:"5-6-0"}]}]},{title:"概念篇",dir:"concepts",children:[{title:"图表容器及大小",dir:"chart-size"},{title:"配置项",dir:"options",draft:!0},{title:"系列",dir:"series",draft:!0},{title:"样式",dir:"style"},{title:"数据集",dir:"dataset"},{title:"数据转换",dir:"data-transform"},{title:"坐标系",dir:"coordinate",draft:!0},{title:"坐标轴",dir:"axis"},{title:"视觉映射",dir:"visual-map"},{title:"图例",dir:"legend"},{title:"事件与行为",dir:"event"}]},{title:"应用篇",dir:"how-to",children:[{title:"常用图表类型",dir:"chart-types",children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:"basic-bar"},{title:"堆叠柱状图",dir:"stacked-bar"},{title:"动态排序柱状图",dir:"bar-race"},{title:"极坐标系柱状图",dir:"polar-bar",draft:!0},{title:"阶梯瀑布图",dir:"waterfall"},{title:"视觉映射的柱状图",dir:"visual-map",draft:!0}]},{title:"折线图",dir:"line",children:[{title:"基础折线图",dir:"basic-line"},{title:"堆叠折线图",dir:"stacked-line"},{title:"区域面积图",dir:"area-line"},{title:"平滑曲线图",dir:"smooth-line"},{title:"阶梯线图",dir:"step-line"}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:"basic-pie"},{title:"圆环图",dir:"doughnut"},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:"scatter",children:[{title:"基础散点图",dir:"basic-scatter"}]}]},{title:"常用组件",dir:"component-types",children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:"svg-base-map"}]}]},{title:"移动端优化",dir:"mobile",draft:!0},{title:"跨平台方案",dir:"cross-platform",children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:"dynamic-data"},{title:"数据下钻",dir:"drilldown",draft:!0}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:"rich-text"}]},{title:"动画",dir:"animation",children:[{title:"数据过渡动画",dir:"transition"}]},{title:"交互",dir:"interaction",children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:"connect",draft:!0},{title:"智能指针吸附",dir:"coarse-pointer"}]}]},{title:"最佳实践",dir:"best-practices",children:[{title:"移动端优化",dir:"mobile",draft:!0},{title:"Canvas vs. SVG",dir:"canvas-vs-svg"},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:"security"}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:"edit-guide"}]}]];t.exports=r.length<=1?r[0]:r},138:function(t,e){const r=[[{title:"Get Started",dir:"get-started"},{title:"Basics",dir:"basics",children:[{title:"Download ECharts",dir:"download"},{title:"Import ECharts",dir:"import"},{title:"Resources",dir:"resource",draft:!0},{title:"Get Help",dir:"help"},{title:"What's New",dir:"release-note",children:[{title:"ECharts 6 Features",dir:"v6-feature"},{title:"Migration from v5 to v6",dir:"v6-upgrade-guide"},{title:"5.0",dir:"v5-feature"},{title:"Migration from v4 to v5",dir:"v5-upgrade-guide"},{title:5.2,dir:"5-2-0"},{title:5.3,dir:"5-3-0"},{title:5.4,dir:"5-4-0"},{title:5.5,dir:"5-5-0"},{title:5.6,dir:"5-6-0"}]}]},{title:"Concepts",dir:"concepts",children:[{title:"Chart Container",dir:"chart-size"},{title:"Chart Option",dir:"options",draft:!0},{title:"Series",dir:"series",draft:!0},{title:"Style",dir:"style"},{title:"Dataset",dir:"dataset"},{title:"Data Transform",dir:"data-transform"},{title:"Coordinate",dir:"coordinate",draft:!0},{title:"Axis",dir:"axis"},{title:"Visual Mapping",dir:"visual-map"},{title:"Legend",dir:"legend"},{title:"Event and Action",dir:"event"}]},{title:"How To Guides",dir:"how-to",children:[{title:"Common Charts",dir:"chart-types",children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:"basic-bar"},{title:"Stacked Bar",dir:"stacked-bar"},{title:"Bar Racing",dir:"bar-race"},{title:"Bar Polar",dir:"polar-bar",draft:!0},{title:"Waterfall",dir:"waterfall"}]},{title:"Line",dir:"line",children:[{title:"Basic Line",dir:"basic-line"},{title:"Stacked Line",dir:"stacked-line"},{title:"Area Chart",dir:"area-line"},{title:"Smoothed Line",dir:"smooth-line"},{title:"Step Line",dir:"step-line"}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:"basic-pie"},{title:"Ring Style",dir:"doughnut"},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:"scatter",children:[{title:"Basic Scatter",dir:"basic-scatter"}]}]},{title:"Common Components",dir:"component-types",children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:"svg-base-map"}]}]},{title:"Mobile",dir:"mobile",draft:!0},{title:"Cross Platform",dir:"cross-platform",children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:"dynamic-data"},{title:"Drilldown",dir:"drilldown",draft:!0}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:"rich-text"}]},{title:"Animation",dir:"animation",children:[{title:"Data Transition",dir:"transition"}]},{title:"Interaction",dir:"interaction",children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:"connect",draft:!0},{title:"Intelligent Pointer Snapping",dir:"coarse-pointer"}]}]},{title:"Best Practices",dir:"best-practices",children:[{title:"Mobile Optimization",dir:"mobile",draft:!0},{title:"Canvas vs. SVG",dir:"canvas-vs-svg"},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:"security"}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:"edit-guide"}]}]];t.exports=r.length<=1?r[0]:r},139:function(t,e,r){"use strict";var n=r(2),o=(r(27),r(17),r(0)),c=r.n(o),l=r(1),h=window.__NUXT__;function f(){if(!this._hydrated)return this.$fetch()}function d(){if((t=this).$vnode&&t.$vnode.elm&&t.$vnode.elm.dataset&&t.$vnode.elm.dataset.fetchKey){var t;this._hydrated=!0,this._fetchKey=this.$vnode.elm.dataset.fetchKey;var data=h.fetch[this._fetchKey];if(data&&data._error)this.$fetchState.error=data._error;else for(var e in data)c.a.set(this.$data,e,data[e])}}function v(){var t=this;return this._fetchPromise||(this._fetchPromise=m.call(this).then((function(){delete t._fetchPromise}))),this._fetchPromise}function m(){return w.apply(this,arguments)}function w(){return(w=Object(n.a)(regeneratorRuntime.mark((function t(){var e,r,n,o=this;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return this.$nuxt.nbFetching++,this.$fetchState.pending=!0,this.$fetchState.error=null,this._hydrated=!1,e=null,r=Date.now(),t.prev=6,t.next=9,this.$options.fetch.call(this);case 9:t.next=15;break;case 11:t.prev=11,t.t0=t.catch(6),e=Object(l.p)(t.t0);case 15:if(!((n=this._fetchDelay-(Date.now()-r))>0)){t.next=19;break}return t.next=19,new Promise((function(t){return setTimeout(t,n)}));case 19:this.$fetchState.error=e,this.$fetchState.pending=!1,this.$fetchState.timestamp=Date.now(),this.$nextTick((function(){return o.$nuxt.nbFetching--}));case 23:case"end":return t.stop()}}),t,this,[[6,11]])})))).apply(this,arguments)}e.a={beforeCreate:function(){Object(l.l)(this)&&(this._fetchDelay="number"==typeof this.$options.fetchDelay?this.$options.fetchDelay:200,c.a.util.defineReactive(this,"$fetchState",{pending:!1,error:null,timestamp:Date.now()}),this.$fetch=v.bind(this),Object(l.a)(this,"created",d),Object(l.a)(this,"beforeMount",f))}}},144:function(t,e,r){t.exports=r(145)},145:function(t,e,r){"use strict";r.r(e),function(t){r(21),r(15),r(35);var e=r(16),n=r(2),o=(r(119),r(153),r(158),r(160),r(27),r(19),r(23),r(24),r(40),r(36),r(20),r(28),r(17),r(29),r(0)),c=r.n(o),l=r(135),h=r(59),f=r(1),d=r(26),v=r(139),m=r(77);function w(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(!t)return;if("string"==typeof t)return x(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);"Object"===r&&t.constructor&&(r=t.constructor.name);if("Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return x(t,e)}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var i=0,n=function(){};return{s:n,n:function(){return i>=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,c=!0,l=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return c=t.done,t},e:function(t){l=!0,o=t},f:function(){try{c||null==r.return||r.return()}finally{if(l)throw o}}}}function x(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,r=new Array(e);i<e;i++)r[i]=t[i];return r}c.a.__nuxt__fetch__mixin__||(c.a.mixin(v.a),c.a.__nuxt__fetch__mixin__=!0),c.a.component(m.a.name,m.a),c.a.component("NLink",m.a),t.fetch||(t.fetch=l.a);var _,y,C=[],k=window.__NUXT__||{},O=k.config||{};O._app&&(r.p=Object(f.u)(O._app.cdnURL,O._app.assetsPath)),Object.assign(c.a.config,{silent:!0,performance:!1});var $=c.a.config.errorHandler||console.error;function j(t,e,r){for(var n=function(component){var t=function(component,t){if(!component||!component.options||!component.options[t])return{};var option=component.options[t];if("function"==typeof option){for(var e=arguments.length,r=new Array(e>2?e-2:0),n=2;n<e;n++)r[n-2]=arguments[n];return option.apply(void 0,r)}return option}(component,"transition",e,r)||{};return"string"==typeof t?{name:t}:t},o=r?Object(f.g)(r):[],c=Math.max(t.length,o.length),l=[],h=function(i){var e=Object.assign({},n(t[i])),r=Object.assign({},n(o[i]));Object.keys(e).filter((function(t){return void 0!==e[t]&&!t.toLowerCase().includes("leave")})).forEach((function(t){r[t]=e[t]})),l.push(r)},i=0;i<c;i++)h(i);return l}function P(t,e,r){return E.apply(this,arguments)}function E(){return(E=Object(n.a)(regeneratorRuntime.mark((function t(e,r,n){var o,c,l,h,d=this;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(this._routeChanged=Boolean(_.nuxt.err)||r.name!==e.name,this._paramChanged=!this._routeChanged&&r.path!==e.path,this._queryChanged=!this._paramChanged&&r.fullPath!==e.fullPath,this._diffQuery=this._queryChanged?Object(f.i)(e.query,r.query):[],(this._routeChanged||this._paramChanged)&&this.$loading.start&&!this.$loading.manual&&this.$loading.start(),t.prev=5,!this._queryChanged){t.next=12;break}return t.next=9,Object(f.r)(e,(function(t,e){return{Component:t,instance:e}}));case 9:o=t.sent,o.some((function(t){var n=t.Component,o=t.instance,c=n.options.watchQuery;return!0===c||(Array.isArray(c)?c.some((function(t){return d._diffQuery[t]})):"function"==typeof c&&c.apply(o,[e.query,r.query]))}))&&this.$loading.start&&!this.$loading.manual&&this.$loading.start();case 12:n(),t.next=26;break;case 15:if(t.prev=15,t.t0=t.catch(5),c=t.t0||{},l=c.statusCode||c.status||c.response&&c.response.status||500,h=c.message||"",!/^Loading( CSS)? chunk (\d)+ failed\./.test(h)){t.next=23;break}return window.location.reload(!0),t.abrupt("return");case 23:this.error({statusCode:l,message:h}),this.$nuxt.$emit("routeChanged",e,r,c),n();case 26:case"end":return t.stop()}}),t,this,[[5,15]])})))).apply(this,arguments)}function S(t,e){return k.serverRendered&&e&&Object(f.b)(t,e),t._Ctor=t,t}function L(t){return Object(f.d)(t,function(){var t=Object(n.a)(regeneratorRuntime.mark((function t(e,r,n,o,c){var l;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if("function"!=typeof e||e.options){t.next=4;break}return t.next=3,e();case 3:e=t.sent;case 4:return l=S(Object(f.s)(e),k.data?k.data[c]:null),n.components[o]=l,t.abrupt("return",l);case 7:case"end":return t.stop()}}),t)})));return function(e,r,n,o,c){return t.apply(this,arguments)}}())}function R(t,e,r){var n=this,o=["nuxti18n"],c=!1;if(void 0!==r&&(o=[],(r=Object(f.s)(r)).options.middleware&&(o=o.concat(r.options.middleware)),t.forEach((function(t){t.options.middleware&&(o=o.concat(t.options.middleware))}))),o=o.map((function(t){return"function"==typeof t?t:("function"!=typeof h.a[t]&&(c=!0,n.error({statusCode:500,message:"Unknown middleware "+t})),h.a[t])})),!c)return Object(f.o)(o,e)}function T(t,e,r){return D.apply(this,arguments)}function D(){return D=Object(n.a)(regeneratorRuntime.mark((function t(e,r,o){var c,l,h,v,m,x,y,k,O,$,P,E,S,L,T,D=this;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!1!==this._routeChanged||!1!==this._paramChanged||!1!==this._queryChanged){t.next=2;break}return t.abrupt("return",o());case 2:return!1,e===r?(C=[],!0):(c=[],C=Object(f.g)(r,c).map((function(t,i){return Object(f.c)(r.matched[c[i]].path)(r.params)}))),l=!1,h=function(path){r.path===path.path&&D.$loading.finish&&D.$loading.finish(),r.path!==path.path&&D.$loading.pause&&D.$loading.pause(),l||(l=!0,o(path))},t.next=8,Object(f.t)(_,{route:e,from:r,next:h.bind(this)});case 8:if(this._dateLastError=_.nuxt.dateErr,this._hadError=Boolean(_.nuxt.err),v=[],(m=Object(f.g)(e,v)).length){t.next=27;break}return t.next=15,R.call(this,m,_.context);case 15:if(!l){t.next=17;break}return t.abrupt("return");case 17:return x=(d.a.options||d.a).layout,t.next=20,this.loadLayout("function"==typeof x?x.call(d.a,_.context):x);case 20:return y=t.sent,t.next=23,R.call(this,m,_.context,y);case 23:if(!l){t.next=25;break}return t.abrupt("return");case 25:return _.context.error({statusCode:404,message:"This page could not be found"}),t.abrupt("return",o());case 27:return m.forEach((function(t){t._Ctor&&t._Ctor.options&&(t.options.asyncData=t._Ctor.options.asyncData,t.options.fetch=t._Ctor.options.fetch)})),this.setTransitions(j(m,e,r)),t.prev=29,t.next=32,R.call(this,m,_.context);case 32:if(!l){t.next=34;break}return t.abrupt("return");case 34:if(!_.context._errored){t.next=36;break}return t.abrupt("return",o());case 36:return"function"==typeof(k=m[0].options.layout)&&(k=k(_.context)),t.next=40,this.loadLayout(k);case 40:return k=t.sent,t.next=43,R.call(this,m,_.context,k);case 43:if(!l){t.next=45;break}return t.abrupt("return");case 45:if(!_.context._errored){t.next=47;break}return t.abrupt("return",o());case 47:O=!0,t.prev=48,$=w(m),t.prev=50,$.s();case 52:if((P=$.n()).done){t.next=63;break}if("function"==typeof(E=P.value).options.validate){t.next=56;break}return t.abrupt("continue",61);case 56:return t.next=58,E.options.validate(_.context);case 58:if(O=t.sent){t.next=61;break}return t.abrupt("break",63);case 61:t.next=52;break;case 63:t.next=68;break;case 65:t.prev=65,t.t0=t.catch(50),$.e(t.t0);case 68:return t.prev=68,$.f(),t.finish(68);case 71:t.next=77;break;case 73:return t.prev=73,t.t1=t.catch(48),this.error({statusCode:t.t1.statusCode||"500",message:t.t1.message}),t.abrupt("return",o());case 77:if(O){t.next=80;break}return this.error({statusCode:404,message:"This page could not be found"}),t.abrupt("return",o());case 80:return t.next=82,Promise.all(m.map(function(){var t=Object(n.a)(regeneratorRuntime.mark((function t(n,i){var o,c,l,h,d,m,w,x,p;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n._path=Object(f.c)(e.matched[v[i]].path)(e.params),n._dataRefresh=!1,o=n._path!==C[i],D._routeChanged&&o?n._dataRefresh=!0:D._paramChanged&&o?(c=n.options.watchParam,n._dataRefresh=!1!==c):D._queryChanged&&(!0===(l=n.options.watchQuery)?n._dataRefresh=!0:Array.isArray(l)?n._dataRefresh=l.some((function(t){return D._diffQuery[t]})):"function"==typeof l&&(S||(S=Object(f.h)(e)),n._dataRefresh=l.apply(S[i],[e.query,r.query]))),D._hadError||!D._isMounted||n._dataRefresh){t.next=6;break}return t.abrupt("return");case 6:return h=[],d=n.options.asyncData&&"function"==typeof n.options.asyncData,m=Boolean(n.options.fetch)&&n.options.fetch.length,w=d&&m?30:45,d&&((x=Object(f.q)(n.options.asyncData,_.context)).then((function(t){Object(f.b)(n,t),D.$loading.increase&&D.$loading.increase(w)})),h.push(x)),D.$loading.manual=!1===n.options.loading,m&&((p=n.options.fetch(_.context))&&(p instanceof Promise||"function"==typeof p.then)||(p=Promise.resolve(p)),p.then((function(t){D.$loading.increase&&D.$loading.increase(w)})),h.push(p)),t.abrupt("return",Promise.all(h));case 14:case"end":return t.stop()}}),t)})));return function(e,r){return t.apply(this,arguments)}}()));case 82:l||(this.$loading.finish&&!this.$loading.manual&&this.$loading.finish(),o()),t.next=99;break;case 85:if(t.prev=85,t.t2=t.catch(29),"ERR_REDIRECT"!==(L=t.t2||{}).message){t.next=90;break}return t.abrupt("return",this.$nuxt.$emit("routeChanged",e,r,L));case 90:return C=[],Object(f.k)(L),"function"==typeof(T=(d.a.options||d.a).layout)&&(T=T(_.context)),t.next=96,this.loadLayout(T);case 96:this.error(L),this.$nuxt.$emit("routeChanged",e,r,L),o();case 99:case"end":return t.stop()}}),t,this,[[29,85],[48,73],[50,65,68,71]])}))),D.apply(this,arguments)}function A(t,r){Object(f.d)(t,(function(t,r,n,o){return"object"!==Object(e.a)(t)||t.options||((t=c.a.extend(t))._Ctor=t,n.components[o]=t),t}))}function N(t){var e=Boolean(this.$options.nuxt.err);this._hadError&&this._dateLastError===this.$options.nuxt.dateErr&&(e=!1);var r=e?(d.a.options||d.a).layout:t.matched[0].components.default.options.layout;"function"==typeof r&&(r=r(_.context)),this.setLayout(r)}function I(t){t._hadError&&t._dateLastError===t.$options.nuxt.dateErr&&t.error()}function M(t,e){var r=this;if(!1!==this._routeChanged||!1!==this._paramChanged||!1!==this._queryChanged){var n=Object(f.h)(t),o=Object(f.g)(t),l=!1;c.a.nextTick((function(){n.forEach((function(t,i){if(t&&!t._isDestroyed&&t.constructor._dataRefresh&&o[i]===t.constructor&&!0!==t.$vnode.data.keepAlive&&"function"==typeof t.constructor.options.data){var e=t.constructor.options.data.call(t);for(var r in e)c.a.set(t.$data,r,e[r]);l=!0}})),l&&window.$nuxt.$nextTick((function(){window.$nuxt.$emit("triggerScroll")})),I(r)}))}}function z(t){window.onNuxtReadyCbs.forEach((function(e){"function"==typeof e&&e(t)})),"function"==typeof window._onNuxtLoaded&&window._onNuxtLoaded(t),y.afterEach((function(e,r){c.a.nextTick((function(){return t.$nuxt.$emit("routeChanged",e,r)}))}))}function B(){return(B=Object(n.a)(regeneratorRuntime.mark((function t(e){var r,n,o,l,h;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return _=e.app,y=e.router,e.store,r=new c.a(_),n=k.layout||"default",t.next=7,r.loadLayout(n);case 7:return r.setLayout(n),o=function(){r.$mount("#__nuxt"),y.afterEach(A),y.afterEach(N.bind(r)),y.afterEach(M.bind(r)),c.a.nextTick((function(){z(r)}))},t.next=11,Promise.all(L(_.context.route));case 11:if(l=t.sent,r.setTransitions=r.$options.nuxt.setTransitions.bind(r),l.length&&(r.setTransitions(j(l,y.currentRoute)),C=y.currentRoute.matched.map((function(t){return Object(f.c)(t.path)(y.currentRoute.params)}))),r.$loading={},k.error&&r.error(k.error),y.beforeEach(P.bind(r)),y.beforeEach(T.bind(r)),!k.serverRendered||!Object(f.n)(k.routePath,r.context.route.path)){t.next=20;break}return t.abrupt("return",o());case 20:return h=function(){A(y.currentRoute,y.currentRoute),N.call(r,y.currentRoute),I(r),o()},t.next=23,new Promise((function(t){return setTimeout(t,0)}));case 23:T.call(r,y.currentRoute,y.currentRoute,(function(path){if(path){var t=y.afterEach((function(e,r){t(),h()}));y.push(path,void 0,(function(t){t&&$(t)}))}else h()}));case 24:case"end":return t.stop()}}),t)})))).apply(this,arguments)}Object(d.b)(null,k.config).then((function(t){return B.apply(this,arguments)})).catch($)}.call(this,r(44))},175:function(t,e,r){"use strict";r(128)},176:function(t,e,r){"use strict";r(129)},180:function(t,e,r){"use strict";r(130)},181:function(t,e,r){"use strict";r(131)},182:function(t,e,r){"use strict";r(132)},183:function(t,e,r){"use strict";r(133)},184:function(t,e,r){"use strict";r.r(e),r.d(e,"state",(function(){return f})),r.d(e,"mutations",(function(){return d})),r.d(e,"actions",(function(){return m}));var n=r(137),o=r.n(n),c=r(138),l=r.n(c),h=r(107),f=function(){return{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:o.a,en:l.a},config:h.a}},d={toggle:function(t,e){t[e]=!t[e]},setDocVersion:function(t,e){t.docVersion=e},setGhVersion:function(t,e){t.ghVersion=e},setHomepage:function(t,e){t.homepage=e},setFilled:function(t){t.filled=!0},setAdBlocked:function(t,e){t.adBlocked=e},setFocusMode:function(t,e){t.focusMode=e}},v=null,m={focusMode:function(t){var e=t.commit;v||(v=setTimeout((function(){return e("setFocusMode",!0)}),1300))},clearFocusMode:function(t){var e=t.commit;v&&(clearTimeout(v),v=null),e("setFocusMode",!1)}}},26:function(t,e,r){"use strict";r.d(e,"b",(function(){return ue})),r.d(e,"a",(function(){return A}));r(24),r(15),r(23),r(41),r(42);var n=r(2),o=r(11),c=(r(27),r(19),r(20),r(17),r(45),r(0)),l=r.n(c),h=r(62),f=r(61),d=r(103),v=r.n(d),m=r(47),w=r.n(m),x=r(104),_=r(25),y=r(1);function C(object,t){var e=Object.keys(object);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(object);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(object,t).enumerable}))),e.push.apply(e,r)}return e}function k(t){for(var i=1;i<arguments.length;i++){var source=null!=arguments[i]?arguments[i]:{};i%2?C(Object(source),!0).forEach((function(e){Object(o.a)(t,e,source[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(source)):C(Object(source)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(source,e))}))}return t}var O=function(){return Object(y.m)(r.e(3).then(r.bind(null,452)))},$=function(){return Object(y.m)(Promise.all([r.e(6),r.e(2)]).then(r.bind(null,451)))},j=function(){};l.a.use(x.a);var P={mode:"history",base:"/echarts-handbook/",linkActiveClass:"nuxt-link-active",linkExactActiveClass:"nuxt-link-exact-active",scrollBehavior:function(t){if(t.hash){var e=t.hash.substr(1),r=document.getElementById(decodeURIComponent(e))||document.getElementById(e);r&&r.scrollIntoView&&r.scrollIntoView({behavior:"smooth"})}else document.getElementsByClassName("page-main")[0].scrollTo({top:0,left:0,behavior:"smooth"})},routes:[{path:"/en",component:O,name:"index___en"},{path:"/zh",component:O,name:"index___zh"},{path:"/zh/*",component:$,name:"all___zh"},{path:"/en/*",component:$,name:"all___en"},{path:"/",component:O,name:"index"},{path:"/*",component:$,name:"all"}],fallback:!1};function E(t,e){var base=e._app&&e._app.basePath||P.base,r=new x.a(k(k({},P),{},{base:base})),n=r.push;r.push=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:j,r=arguments.length>2?arguments[2]:void 0;return n.call(this,t,e,r)};var o=r.resolve.bind(r);return r.resolve=function(t,e,r){return"string"==typeof t&&(t=Object(_.c)(t)),o(t,e,r)},r}var S={name:"NuxtChild",functional:!0,props:{nuxtChildKey:{type:String,default:""},keepAlive:Boolean,keepAliveProps:{type:Object,default:void 0}},render:function(t,e){var r=e.parent,data=e.data,n=e.props,o=r.$createElement;data.nuxtChild=!0;for(var c=r,l=r.$nuxt.nuxt.transitions,h=r.$nuxt.nuxt.defaultTransition,f=0;r;)r.$vnode&&r.$vnode.data.nuxtChild&&f++,r=r.$parent;data.nuxtChildDepth=f;var d=l[f]||h,v={};L.forEach((function(t){void 0!==d[t]&&(v[t]=d[t])}));var m={};R.forEach((function(t){"function"==typeof d[t]&&(m[t]=d[t].bind(c))}));var w=m.beforeEnter;if(m.beforeEnter=function(t){if(window.$nuxt.$nextTick((function(){window.$nuxt.$emit("triggerScroll")})),w)return w.call(c,t)},!1===d.css){var x=m.leave;(!x||x.length<2)&&(m.leave=function(t,e){x&&x.call(c,t),c.$nextTick(e)})}var _=o("routerView",data);return n.keepAlive&&(_=o("keep-alive",{props:n.keepAliveProps},[_])),o("transition",{props:v,on:m},[_])}},L=["name","mode","appear","css","type","duration","enterClass","leaveClass","appearClass","enterActiveClass","enterActiveClass","leaveActiveClass","appearActiveClass","enterToClass","leaveToClass","appearToClass"],R=["beforeEnter","enter","afterEnter","enterCancelled","beforeLeave","leave","afterLeave","leaveCancelled","beforeAppear","appear","afterAppear","appearCancelled"],T={name:"NuxtError",props:{error:{type:Object,default:null}},computed:{statusCode:function(){return this.error&&this.error.statusCode||500},message:function(){return this.error.message||"Error"}},head:function(){return{title:this.message,meta:[{name:"viewport",content:"width=device-width,initial-scale=1.0,minimum-scale=1.0"}]}}},D=(r(175),r(7)),A=Object(D.a)(T,(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticClass:"__nuxt-error-page"},[r("div",{staticClass:"error"},[r("svg",{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"90",height:"90",fill:"#DBE1EC",viewBox:"0 0 48 48"}},[r("path",{attrs:{d:"M22 30h4v4h-4zm0-16h4v12h-4zm1.99-10C12.94 4 4 12.95 4 24s8.94 20 19.99 20S44 35.05 44 24 35.04 4 23.99 4zM24 40c-8.84 0-16-7.16-16-16S15.16 8 24 8s16 7.16 16 16-7.16 16-16 16z"}})]),t._v(" "),r("div",{staticClass:"title"},[t._v(t._s(t.message))]),t._v(" "),404===t.statusCode?r("p",{staticClass:"description"},[void 0===t.$route?r("a",{staticClass:"error-link",attrs:{href:"/"}}):r("NuxtLink",{staticClass:"error-link",attrs:{to:"/"}},[t._v("Back to the home page")])],1):t._e(),t._v(" "),t._m(0)])])}),[function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticClass:"logo"},[r("a",{attrs:{href:"https://nuxtjs.org",target:"_blank",rel:"noopener"}},[t._v("Nuxt")])])}],!1,null,null,null).exports,N=r(3),I=(r(100),r(101),{name:"Nuxt",components:{NuxtChild:S,NuxtError:A},props:{nuxtChildKey:{type:String,default:void 0},keepAlive:Boolean,keepAliveProps:{type:Object,default:void 0},name:{type:String,default:"default"}},errorCaptured:function(t){this.displayingNuxtError&&(this.errorFromNuxtError=t,this.$forceUpdate())},computed:{routerViewKey:function(){if(void 0!==this.nuxtChildKey||this.$route.matched.length>1)return this.nuxtChildKey||Object(y.c)(this.$route.matched[0].path)(this.$route.params);var t=Object(N.a)(this.$route.matched,1)[0];if(!t)return this.$route.path;var e=t.components.default;if(e&&e.options){var r=e.options;if(r.key)return"function"==typeof r.key?r.key(this.$route):r.key}return/\/$/.test(t.path)?this.$route.path:this.$route.path.replace(/\/$/,"")}},beforeCreate:function(){l.a.util.defineReactive(this,"nuxt",this.$root.$options.nuxt)},render:function(t){var e=this;return this.nuxt.err?this.errorFromNuxtError?(this.$nextTick((function(){return e.errorFromNuxtError=!1})),t("div",{},[t("h2","An error occurred while showing the error page"),t("p","Unfortunately an error occurred and while showing the error page another error occurred"),t("p","Error details: ".concat(this.errorFromNuxtError.toString())),t("nuxt-link",{props:{to:"/"}},"Go back to home")])):(this.displayingNuxtError=!0,this.$nextTick((function(){return e.displayingNuxtError=!1})),t(A,{props:{error:this.nuxt.err}})):t("NuxtChild",{key:this.routerViewKey,props:this.$props})}}),M=(r(21),r(35),r(28),r(29),{name:"NuxtLoading",data:function(){return{percent:0,show:!1,canSucceed:!0,reversed:!1,skipTimerCount:0,rtl:!1,throttle:200,duration:5e3,continuous:!0}},computed:{left:function(){return!(!this.continuous&&!this.rtl)&&(this.rtl?this.reversed?"0px":"auto":this.reversed?"auto":"0px")}},beforeDestroy:function(){this.clear()},methods:{clear:function(){clearInterval(this._timer),clearTimeout(this._throttle),this._timer=null},start:function(){var t=this;return this.clear(),this.percent=0,this.reversed=!1,this.skipTimerCount=0,this.canSucceed=!0,this.throttle?this._throttle=setTimeout((function(){return t.startTimer()}),this.throttle):this.startTimer(),this},set:function(t){return this.show=!0,this.canSucceed=!0,this.percent=Math.min(100,Math.max(0,Math.floor(t))),this},get:function(){return this.percent},increase:function(t){return this.percent=Math.min(100,Math.floor(this.percent+t)),this},decrease:function(t){return this.percent=Math.max(0,Math.floor(this.percent-t)),this},pause:function(){return clearInterval(this._timer),this},resume:function(){return this.startTimer(),this},finish:function(){return this.percent=this.reversed?0:100,this.hide(),this},hide:function(){var t=this;return this.clear(),setTimeout((function(){t.show=!1,t.$nextTick((function(){t.percent=0,t.reversed=!1}))}),500),this},fail:function(t){return this.canSucceed=!1,this},startTimer:function(){var t=this;this.show||(this.show=!0),void 0===this._cut&&(this._cut=1e4/Math.floor(this.duration)),this._timer=setInterval((function(){t.skipTimerCount>0?t.skipTimerCount--:(t.reversed?t.decrease(t._cut):t.increase(t._cut),t.continuous&&(t.percent>=100||t.percent<=0)&&(t.skipTimerCount=1,t.reversed=!t.reversed))}),100)}},render:function(t){var e=t(!1);return this.show&&(e=t("div",{staticClass:"nuxt-progress",class:{"nuxt-progress-notransition":this.skipTimerCount>0,"nuxt-progress-failed":!this.canSucceed},style:{width:this.percent+"%",left:this.left}})),e}}),z=(r(176),Object(D.a)(M,undefined,undefined,!1,null,null,null).exports),B=(r(177),r(142),r(73),l.a.extend({name:"SidebarNavItem",props:{item:{type:Object},parentPath:{type:String},level:{type:Number}},computed:{link:function(){return"/"+this.$i18n.locale+"/"+this.path}},data:function(){var path=this.parentPath?this.parentPath+"/"+this.item.dir:this.item.dir,t=(this.$route.params.pathMatch||"").startsWith(path);return{get path(){return path},collapsed:this.level>=2&&!t}},methods:{toggleCollapsed:function(){this.collapsed=!this.collapsed}}})),F=(r(180),Object(D.a)(B,(function(){var t=this,e=t.$createElement,r=t._self._c||e;return t.item.draft?t._e():r("li",{staticClass:"nav-item"},[t.item.children?t.level>1?r("a",{staticClass:"nav-link",on:{click:t.toggleCollapsed}},[r("span",{staticClass:"title"},[t._v(t._s(t.item.title))]),t._v(" "),r("span",{class:["glyphicon",t.collapsed?"glyphicon-menu-down":"glyphicon-menu-up"]})]):r("div",{staticClass:"nav-link"},[r("span",{staticClass:"title"},[t._v(t._s(t.item.title))])]):r("nuxt-link",{staticClass:"nav-link",attrs:{to:t.link}},[r("span",{staticClass:"title"},[t._v(t._s(t.item.title))])]),t._v(" "),r("ul",{directives:[{name:"show",rawName:"v-show",value:!t.item.draft&&t.item.children&&!t.collapsed,expression:"!item.draft && item.children && !collapsed"}],class:["nav","bd-sidenav","level"+t.level]},t._l(t.item.children,(function(e){return r("SidebarNavItem",{key:e.dir,attrs:{parentPath:t.path,item:e,level:t.level+1}})})),1)],1)}),[],!1,null,null,null).exports),U=l.a.extend({components:{SidebarNavItem:F},data:function(){return{sidebarOpen:!1}},watch:{$route:function(){this.sidebarOpen=!1}},mounted:function(){var t,e=this.$el.querySelector(".nav-link.nuxt-link-active");null===(t=null==e?void 0:e.scrollIntoView)||void 0===t||t.call(e,{block:"nearest",inline:"start"})}}),G=(r(181),Object(D.a)(U,(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{class:"bd-sidebar col-sm-3 col-md-2  "+(t.sidebarOpen?"":"closed")},[r("div",{staticClass:"bd-docs-nav"},[r("ul",{staticClass:"nav bd-sidenav nav-root level0"},t._l(t.$store.state.posts[t.$i18n.locale],(function(t){return r("SidebarNavItem",{key:t.dir,attrs:{item:t,parentPath:"",level:1}})})),1)]),t._v(" "),r("div",{staticClass:"open-sidebar",on:{click:function(e){t.sidebarOpen=!t.sidebarOpen}}},[t.sidebarOpen?r("svg",{staticClass:"h-6 w-6",attrs:{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"}},[r("path",{attrs:{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 19l-7-7 7-7"}})]):r("svg",{staticClass:"h-6 w-6",attrs:{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"}},[r("path",{attrs:{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 5l7 7-7 7"}})])])])}),[],!1,null,null,null).exports),H=Object(D.a)({},(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("nav",{staticClass:"navbar navbar-default navbar-fixed-top",attrs:{role:"navigation"}},[r("div",{staticClass:"container-fluid"},[t._m(0),r("div",{staticClass:"collapse navbar-collapse",attrs:{id:"navbar-collapse"}},[r("ul",{staticClass:"nav navbar-nav navbar-left"},[t._m(1),t._m(2),r("li",{staticClass:"dropdown",attrs:{id:"nav-download"}},[t._m(3),r("ul",{staticClass:"dropdown-menu"},[t._m(4),t._m(5),r("li",[r("a",{attrs:{href:"https://github.com/apache/echarts-custom-series",target:"_blank"}},[t._v("自定义系列下载"),r("svg",{staticClass:"icon-external-link",attrs:{width:"15px",height:"15px",viewbox:"0 0 100 100",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"}},[r("path",{attrs:{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}}),r("polygon",{attrs:{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"}})])])]),t._m(6)])]),t._m(7),t._m(8),r("li",{attrs:{id:"nav-contribute"}},[t._m(9),r("ul",{staticClass:"dropdown-menu"},[t._m(10),t._m(11),t._m(12),t._m(13),t._m(14),t._m(15),r("li",[r("a",{attrs:{href:"https://github.com/apache/echarts",target:"_blank"}},[t._v("源码(GitHub)"),r("svg",{staticClass:"icon-external-link",attrs:{width:"15px",height:"15px",viewbox:"0 0 100 100",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"}},[r("path",{attrs:{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}}),r("polygon",{attrs:{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"}})])])]),r("li",[r("a",{attrs:{href:"https://github.com/apache/echarts/issues",target:"_blank"}},[t._v("Issues(GitHub)"),r("svg",{staticClass:"icon-external-link",attrs:{width:"15px",height:"15px",viewbox:"0 0 100 100",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"}},[r("path",{attrs:{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}}),r("polygon",{attrs:{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"}})])])])])]),r("li",{attrs:{id:"nav-others"}},[t._m(16),r("ul",{staticClass:"dropdown-menu"},[r("li",[r("a",{attrs:{href:"https://www.apache.org/",target:"_blank"}},[t._v("Apache Software Foundation"),r("svg",{staticClass:"icon-external-link",attrs:{width:"15px",height:"15px",viewbox:"0 0 100 100",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"}},[r("path",{attrs:{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}}),r("polygon",{attrs:{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"}})])])]),t._m(17),r("li",[r("a",{attrs:{href:"https://www.apache.org/licenses/",target:"_blank"}},[t._v("版权"),r("svg",{staticClass:"icon-external-link",attrs:{width:"15px",height:"15px",viewbox:"0 0 100 100",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"}},[r("path",{attrs:{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}}),r("polygon",{attrs:{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"}})])])]),r("li",[r("a",{attrs:{href:"https://www.apache.org/events/current-event",target:"_blank"}},[t._v("活动"),r("svg",{staticClass:"icon-external-link",attrs:{width:"15px",height:"15px",viewbox:"0 0 100 100",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"}},[r("path",{attrs:{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}}),r("polygon",{attrs:{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"}})])])]),r("li",[r("a",{attrs:{href:"https://www.apache.org/foundation/sponsorship.html",target:"_blank"}},[t._v("捐赠"),r("svg",{staticClass:"icon-external-link",attrs:{width:"15px",height:"15px",viewbox:"0 0 100 100",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"}},[r("path",{attrs:{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}}),r("polygon",{attrs:{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"}})])])]),r("li",[r("a",{attrs:{href:"https://www.apache.org/foundation/thanks.html",target:"_blank"}},[t._v("鸣谢"),r("svg",{staticClass:"icon-external-link",attrs:{width:"15px",height:"15px",viewbox:"0 0 100 100",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"}},[r("path",{attrs:{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}}),r("polygon",{attrs:{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"}})])])])])])]),r("ul",{staticClass:"nav navbar-nav navbar-right"},[t._m(18),r("li",{attrs:{id:"nav-github"}},[r("a",{attrs:{href:"https://github.com/apache/echarts",target:"_blank"}},[r("svg",{attrs:{width:"22px",height:"22px",viewBox:"0 0 22 22",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"}},[r("g",{attrs:{stroke:"none","stroke-width":"1",fill:"none","fill-rule":"evenodd"}},[r("g",{attrs:{transform:"translate(-262.000000, -2480.000000)",fill:"#333"}},[r("g",{attrs:{transform:"translate(252.000000, 2470.000000)"}},[r("path",{attrs:{d:"M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"}})])])])])])])])])])])}),[function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticClass:"navbar-header"},[r("button",{staticClass:"navbar-toggle collapsed",attrs:{type:"button","data-toggle":"collapse","data-target":"#navbar-collapse","aria-expanded":"false"}},[r("span",{staticClass:"sr-only"},[t._v("Toggle navigation")]),r("span",{staticClass:"icon-bar"}),r("span",{staticClass:"icon-bar"}),r("span",{staticClass:"icon-bar"})]),r("a",{staticClass:"navbar-brand",attrs:{href:"https://echarts.apache.org/zh/index.html"}},[r("img",{staticClass:"navbar-logo",attrs:{src:"https://echarts.apache.org/zh/images/logo.png?_v_=20240226",alt:"echarts logo"}})])])},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("li",{attrs:{id:"nav-index"}},[r("a",{attrs:{href:"https://echarts.apache.org/zh/index.html"}},[t._v("首页")])])},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("li",{staticClass:"dropdown",attrs:{id:"nav-doc"}},[r("a",{staticClass:"dropdown-toggle",attrs:{href:"#","data-toggle":"dropdown"}},[t._v("文档"),r("b",{staticClass:"caret"})]),r("ul",{staticClass:"dropdown-menu"},[r("li",[r("a",{attrs:{href:"https://echarts.apache.org/zh/feature.html"}},[t._v("特性")])]),r("li",[r("a",{attrs:{href:"https://echarts.apache.org/handbook/zh/get-started/"}},[t._v("使用手册")])]),r("li",[r("a",{attrs:{href:"https://echarts.apache.org/zh/api.html"}},[t._v("API")])]),r("li",[r("a",{attrs:{href:"https://echarts.apache.org/zh/option.html"}},[t._v("配置项手册")])]),r("li",[r("a",{attrs:{href:"https://echarts.apache.org/zh/changelog.html"}},[t._v("版本记录")])]),r("li",[r("a",{attrs:{href:"https://echarts.apache.org/zh/faq.html"}},[t._v("常见问题")])]),r("li",[r("a",{attrs:{href:"https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide"}},[t._v("v6 升级指南")])])])])},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("a",{staticClass:"dropdown-toggle",attrs:{href:"#","data-toggle":"dropdown"}},[t._v("下载"),r("b",{staticClass:"caret"})])},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("li",[r("a",{attrs:{href:"https://echarts.apache.org/zh/download.html"}},[t._v("下载")])])},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("li",[r("a",{attrs:{href:"https://echarts.apache.org/zh/download-theme.html"}},[t._v("主题下载")])])},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("li",[r("a",{attrs:{href:"https://echarts.apache.org/zh/download-extension.html"}},[t._v("扩展下载")])])},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("li",{attrs:{id:"nav-examples"}},[r("a",{attrs:{href:"https://echarts.apache.org/examples/zh/index.html"}},[t._v("示例")])])},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("li",{attrs:{id:"nav-resources"}},[r("a",{staticClass:"dropdown-toggle",attrs:{href:"#","data-toggle":"dropdown"}},[t._v("资源"),r("b",{staticClass:"caret"})]),r("ul",{staticClass:"dropdown-menu"},[r("li",[r("a",{attrs:{href:"https://echarts.apache.org/zh/spreadsheet.html"}},[t._v("表格工具")])]),r("li",[r("a",{attrs:{href:"https://echarts.apache.org/zh/theme-builder.html"}},[t._v("主题构建工具")])]),r("li",[r("a",{attrs:{href:"https://echarts.apache.org/zh/cheat-sheet.html"}},[t._v("术语速查手册")])]),r("li",[r("a",{attrs:{href:"https://echarts.apache.org/zh/resources.html"}},[t._v("更多资源")])])])])},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("a",{staticClass:"dropdown-toggle",attrs:{href:"#","data-toggle":"dropdown"}},[t._v("社区"),r("b",{staticClass:"caret"})])},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("li",[r("a",{attrs:{href:"https://echarts.apache.org/zh/events.html"}},[t._v("活动")])])},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("li",[r("a",{attrs:{href:"https://echarts.apache.org/zh/committers.html"}},[t._v("贡献者列表")])])},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("li",[r("a",{attrs:{href:"https://echarts.apache.org/zh/maillist.html"}},[t._v("邮件列表")])])},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("li",[r("a",{attrs:{href:"https://echarts.apache.org/zh/contributing.html"}},[t._v("如何贡献")])])},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("li",[r("a",{attrs:{href:"https://echarts.apache.org/zh/dependencies.html"}},[t._v("依赖项")])])},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("li",[r("a",{attrs:{href:"https://echarts.apache.org/zh/coding-standard.html"}},[t._v("代码规范")])])},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("a",{staticClass:"dropdown-toggle",attrs:{href:"#","data-toggle":"dropdown"}},[t._v("ASF"),r("b",{staticClass:"caret"})])},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("li",[r("a",{attrs:{href:"https://echarts.apache.org/zh/security.html"}},[t._v("安全")])])},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("li",{attrs:{id:"nav-homeen"}},[r("a",{attrs:{href:"javascript:;",onclick:"changeLang('en')"}},[t._v("EN")])])}],!1,null,null,null).exports,V=Object(D.a)({},(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("nav",{staticClass:"navbar navbar-default navbar-fixed-top",attrs:{role:"navigation"}},[r("div",{staticClass:"container-fluid"},[t._m(0),r("div",{staticClass:"collapse navbar-collapse",attrs:{id:"navbar-collapse"}},[r("ul",{staticClass:"nav navbar-nav navbar-left"},[t._m(1),t._m(2),r("li",{staticClass:"dropdown",attrs:{id:"nav-download"}},[t._m(3),r("ul",{staticClass:"dropdown-menu"},[t._m(4),t._m(5),r("li",[r("a",{attrs:{href:"https://github.com/apache/echarts-custom-series",target:"_blank"}},[t._v("Download Custom Series"),r("svg",{staticClass:"icon-external-link",attrs:{width:"15px",height:"15px",viewbox:"0 0 100 100",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"}},[r("path",{attrs:{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}}),r("polygon",{attrs:{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"}})])])]),t._m(6)])]),t._m(7),t._m(8),r("li",{attrs:{id:"nav-contribute"}},[t._m(9),r("ul",{staticClass:"dropdown-menu"},[t._m(10),t._m(11),t._m(12),t._m(13),t._m(14),t._m(15),r("li",[r("a",{attrs:{href:"https://github.com/apache/echarts",target:"_blank"}},[t._v("Source Code (GitHub)"),r("svg",{staticClass:"icon-external-link",attrs:{width:"15px",height:"15px",viewbox:"0 0 100 100",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"}},[r("path",{attrs:{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}}),r("polygon",{attrs:{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"}})])])]),r("li",[r("a",{attrs:{href:"https://github.com/apache/echarts/issues",target:"_blank"}},[t._v("Issues (GitHub)"),r("svg",{staticClass:"icon-external-link",attrs:{width:"15px",height:"15px",viewbox:"0 0 100 100",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"}},[r("path",{attrs:{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}}),r("polygon",{attrs:{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"}})])])])])]),r("li",{attrs:{id:"nav-others"}},[t._m(16),r("ul",{staticClass:"dropdown-menu"},[r("li",[r("a",{attrs:{href:"https://www.apache.org/",target:"_blank"}},[t._v("Apache Software Foundation"),r("svg",{staticClass:"icon-external-link",attrs:{width:"15px",height:"15px",viewbox:"0 0 100 100",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"}},[r("path",{attrs:{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}}),r("polygon",{attrs:{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"}})])])]),t._m(17),r("li",[r("a",{attrs:{href:"https://www.apache.org/licenses/",target:"_blank"}},[t._v("License"),r("svg",{staticClass:"icon-external-link",attrs:{width:"15px",height:"15px",viewbox:"0 0 100 100",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"}},[r("path",{attrs:{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}}),r("polygon",{attrs:{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"}})])])]),r("li",[r("a",{attrs:{href:"https://www.apache.org/events/current-event",target:"_blank"}},[t._v("Events"),r("svg",{staticClass:"icon-external-link",attrs:{width:"15px",height:"15px",viewbox:"0 0 100 100",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"}},[r("path",{attrs:{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}}),r("polygon",{attrs:{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"}})])])]),r("li",[r("a",{attrs:{href:"https://www.apache.org/foundation/sponsorship.html",target:"_blank"}},[t._v("Sponsorship"),r("svg",{staticClass:"icon-external-link",attrs:{width:"15px",height:"15px",viewbox:"0 0 100 100",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"}},[r("path",{attrs:{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}}),r("polygon",{attrs:{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"}})])])]),r("li",[r("a",{attrs:{href:"https://www.apache.org/foundation/thanks.html",target:"_blank"}},[t._v("Thanks"),r("svg",{staticClass:"icon-external-link",attrs:{width:"15px",height:"15px",viewbox:"0 0 100 100",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"}},[r("path",{attrs:{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}}),r("polygon",{attrs:{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"}})])])])])])]),r("ul",{staticClass:"nav navbar-nav navbar-right"},[t._m(18),r("li",{attrs:{id:"nav-github"}},[r("a",{attrs:{href:"https://github.com/apache/echarts",target:"_blank"}},[r("svg",{attrs:{width:"22px",height:"22px",viewBox:"0 0 22 22",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"}},[r("g",{attrs:{stroke:"none","stroke-width":"1",fill:"none","fill-rule":"evenodd"}},[r("g",{attrs:{transform:"translate(-262.000000, -2480.000000)",fill:"#333"}},[r("g",{attrs:{transform:"translate(252.000000, 2470.000000)"}},[r("path",{attrs:{d:"M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"}})])])])])])])])])])])}),[function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticClass:"navbar-header"},[r("button",{staticClass:"navbar-toggle collapsed",attrs:{type:"button","data-toggle":"collapse","data-target":"#navbar-collapse","aria-expanded":"false"}},[r("span",{staticClass:"sr-only"},[t._v("Toggle navigation")]),r("span",{staticClass:"icon-bar"}),r("span",{staticClass:"icon-bar"}),r("span",{staticClass:"icon-bar"})]),r("a",{staticClass:"navbar-brand",attrs:{href:"https://echarts.apache.org/en/index.html"}},[r("img",{staticClass:"navbar-logo",attrs:{src:"https://echarts.apache.org/en/images/logo.png?_v_=20240226",alt:"echarts logo"}})])])},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("li",{attrs:{id:"nav-index"}},[r("a",{attrs:{href:"https://echarts.apache.org/en/index.html"}},[t._v("Home")])])},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("li",{staticClass:"dropdown",attrs:{id:"nav-doc"}},[r("a",{staticClass:"dropdown-toggle",attrs:{href:"#","data-toggle":"dropdown"}},[t._v("Docs"),r("b",{staticClass:"caret"})]),r("ul",{staticClass:"dropdown-menu"},[r("li",[r("a",{attrs:{href:"https://echarts.apache.org/en/feature.html"}},[t._v("Features")])]),r("li",[r("a",{attrs:{href:"https://echarts.apache.org/handbook/en/get-started/"}},[t._v("Handbook")])]),r("li",[r("a",{attrs:{href:"https://echarts.apache.org/en/api.html"}},[t._v("API")])]),r("li",[r("a",{attrs:{href:"https://echarts.apache.org/en/option.html"}},[t._v("Chart Configuration")])]),r("li",[r("a",{attrs:{href:"https://echarts.apache.org/en/changelog.html"}},[t._v("Changelog")])]),r("li",[r("a",{attrs:{href:"https://echarts.apache.org/en/faq.html"}},[t._v("FAQ")])]),r("li",[r("a",{attrs:{href:"https://echarts.apache.org/handbook/en/basics/release-note/v6-upgrade-guide"}},[t._v("V6 Upgrade Guide")])])])])},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("a",{staticClass:"dropdown-toggle",attrs:{href:"#","data-toggle":"dropdown"}},[t._v("Download"),r("b",{staticClass:"caret"})])},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("li",[r("a",{attrs:{href:"https://echarts.apache.org/en/download.html"}},[t._v("Download")])])},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("li",[r("a",{attrs:{href:"https://echarts.apache.org/en/download-theme.html"}},[t._v("Download Themes")])])},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("li",[r("a",{attrs:{href:"https://echarts.apache.org/en/download-extension.html"}},[t._v("Download Extensions")])])},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("li",{attrs:{id:"nav-examples"}},[r("a",{attrs:{href:"https://echarts.apache.org/examples/en/index.html"}},[t._v("Examples")])])},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("li",{attrs:{id:"nav-resources"}},[r("a",{staticClass:"dropdown-toggle",attrs:{href:"#","data-toggle":"dropdown"}},[t._v("Resources"),r("b",{staticClass:"caret"})]),r("ul",{staticClass:"dropdown-menu"},[r("li",[r("a",{attrs:{href:"https://echarts.apache.org/en/spreadsheet.html"}},[t._v("Spread Sheet Tool")])]),r("li",[r("a",{attrs:{href:"https://echarts.apache.org/en/theme-builder.html"}},[t._v("Theme Builder")])]),r("li",[r("a",{attrs:{href:"https://echarts.apache.org/en/cheat-sheet.html"}},[t._v("Cheat Sheet")])]),r("li",[r("a",{attrs:{href:"https://echarts.apache.org/en/resources.html"}},[t._v("More Resources")])])])])},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("a",{staticClass:"dropdown-toggle",attrs:{href:"#","data-toggle":"dropdown"}},[t._v("Community"),r("b",{staticClass:"caret"})])},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("li",[r("a",{attrs:{href:"https://echarts.apache.org/en/events.html"}},[t._v("Events")])])},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("li",[r("a",{attrs:{href:"https://echarts.apache.org/en/committers.html"}},[t._v("Committers")])])},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("li",[r("a",{attrs:{href:"https://echarts.apache.org/en/maillist.html"}},[t._v("Mailing List")])])},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("li",[r("a",{attrs:{href:"https://echarts.apache.org/en/contributing.html"}},[t._v("How to Contribute")])])},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("li",[r("a",{attrs:{href:"https://echarts.apache.org/en/dependencies.html"}},[t._v("Dependencies")])])},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("li",[r("a",{attrs:{href:"https://echarts.apache.org/en/coding-standard.html"}},[t._v("Code Standard")])])},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("a",{staticClass:"dropdown-toggle",attrs:{href:"#","data-toggle":"dropdown"}},[t._v("ASF"),r("b",{staticClass:"caret"})])},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("li",[r("a",{attrs:{href:"https://echarts.apache.org/en/security.html"}},[t._v("Security")])])},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("li",{attrs:{id:"nav-homeen"}},[r("a",{attrs:{href:"javascript:;",onclick:"changeLang('zh')"}},[t._v("中文")])])}],!1,null,null,null).exports,X=l.a.extend({components:{},mounted:function(){var t=this.$i18n.locale;window.changeLang=function(){window.location.href=window.location.href.replace("/".concat(t,"/"),"zh"===t?"/en/":"/zh/")}},computed:{navComponent:function(){return"zh"===this.$i18n.locale?H:V}}}),K=(r(182),{components:{Sidebar:G,Navbar:Object(D.a)(X,(function(){var t=this,e=t.$createElement;return(t._self._c||e)(t.navComponent,{tag:"div"})}),[],!1,null,null,null).exports},head:function(){var t=this.$i18n.locale,e="zh"===t,r=e?"使用手册":"Handbook",n="//echarts.apache.org/".concat(t,"/js/vendors/");return{titleTemplate:function(t){return"".concat(t?t+" - ":"").concat(r," - Apache ECharts")},htmlAttrs:{lang:e?"zh-CN":"en"},link:[{rel:"shortcut icon",type:"image/png",href:"https://echarts.apache.org/".concat(t,"/images/favicon.png")},{rel:"stylesheet",href:"".concat(n,"bootstrap@3.3.7/css/bootstrap.min.css")},{rel:"stylesheet",href:"https://echarts.apache.org/".concat(t,"/css/main.css")},{rel:"stylesheet",href:"".concat(n,"docsearch.js@2.6.3/dist/cdn/docsearch.min.css")}],script:[{innerHTML:"window.ECHARTS_WWW_VENDORS_CDN_ROOT = '".concat(n,"';")},{src:"".concat(n,"jquery@3.7.1/dist/jquery.min.js")},{src:"".concat(n,"bootstrap@3.3.7/js/bootstrap.min.js")},{src:"".concat(n,"docsearch.js@2.6.3/dist/cdn/docsearch.min.js")}],noscript:[{body:!0,innerHTML:'<div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div>'}],__dangerouslyDisableSanitizers:["noscript","script"]}},mounted:function(){var t=location.hash;location.hash="",location.hash=t}}),W=(r(183),Object(D.a)(K,(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",[r("navbar"),t._v(" "),r("div",{staticClass:"page-main"},[r("div",{staticClass:"page-content handbook-content single-page container-fluid row flex-xl-nowrap"},[r("sidebar"),t._v(" "),r("div",{staticClass:"bd-content col-sm-7 pl-sm-2 col-12"},[r("div",{staticClass:"post-content content"},[r("nuxt")],1)])],1)])],1)}),[],!1,null,null,null).exports);function J(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(!t)return;if("string"==typeof t)return Q(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);"Object"===r&&t.constructor&&(r=t.constructor.name);if("Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Q(t,e)}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var i=0,n=function(){};return{s:n,n:function(){return i>=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,c=!0,l=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return c=t.done,t},e:function(t){l=!0,o=t},f:function(){try{c||null==r.return||r.return()}finally{if(l)throw o}}}}function Q(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,r=new Array(e);i<e;i++)r[i]=t[i];return r}var Y={_default:Object(y.s)(W)},Z={render:function(t,e){var r=t("NuxtLoading",{ref:"loading"}),n=t(this.layout||"nuxt"),o=t("div",{domProps:{id:"__layout"},key:this.layoutName},[n]),c=t("transition",{props:{name:"layout",mode:"out-in"},on:{beforeEnter:function(t){window.$nuxt.$nextTick((function(){window.$nuxt.$emit("triggerScroll")}))}}},[o]);return t("div",{domProps:{id:"__nuxt"}},[r,c])},data:function(){return{isOnline:!0,layout:null,layoutName:"",nbFetching:0}},beforeCreate:function(){l.a.util.defineReactive(this,"nuxt",this.$options.nuxt)},created:function(){this.$root.$options.$nuxt=this,window.$nuxt=this,this.refreshOnlineStatus(),window.addEventListener("online",this.refreshOnlineStatus),window.addEventListener("offline",this.refreshOnlineStatus),this.error=this.nuxt.error,this.context=this.$options.context},mounted:function(){var t=this;return Object(n.a)(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t.$loading=t.$refs.loading;case 1:case"end":return e.stop()}}),e)})))()},watch:{"nuxt.err":"errorChanged"},computed:{isOffline:function(){return!this.isOnline},isFetching:function(){return this.nbFetching>0},isPreview:function(){return Boolean(this.$options.previewData)}},methods:{refreshOnlineStatus:function(){void 0===window.navigator.onLine?this.isOnline=!0:this.isOnline=window.navigator.onLine},refresh:function(){var t=this;return Object(n.a)(regeneratorRuntime.mark((function e(){var r,n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if((r=Object(y.h)(t.$route)).length){e.next=3;break}return e.abrupt("return");case 3:return t.$loading.start(),n=r.map((function(e){var p=[];if(e.$options.fetch&&e.$options.fetch.length&&p.push(Object(y.q)(e.$options.fetch,t.context)),e.$fetch)p.push(e.$fetch());else{var r,n=J(Object(y.e)(e.$vnode.componentInstance));try{for(n.s();!(r=n.n()).done;){var component=r.value;p.push(component.$fetch())}}catch(t){n.e(t)}finally{n.f()}}return e.$options.asyncData&&p.push(Object(y.q)(e.$options.asyncData,t.context).then((function(t){for(var r in t)l.a.set(e.$data,r,t[r])}))),Promise.all(p)})),e.prev=5,e.next=8,Promise.all(n);case 8:e.next=15;break;case 10:e.prev=10,e.t0=e.catch(5),t.$loading.fail(e.t0),Object(y.k)(e.t0),t.error(e.t0);case 15:t.$loading.finish();case 16:case"end":return e.stop()}}),e,null,[[5,10]])})))()},errorChanged:function(){if(this.nuxt.err){this.$loading&&(this.$loading.fail&&this.$loading.fail(this.nuxt.err),this.$loading.finish&&this.$loading.finish());var t=(A.options||A).layout;"function"==typeof t&&(t=t(this.context)),this.setLayout(t)}},setLayout:function(t){return t&&Y["_"+t]||(t="default"),this.layoutName=t,this.layout=Y["_"+t],this.layout},loadLayout:function(t){return t&&Y["_"+t]||(t="default"),Promise.resolve(Y["_"+t])}},components:{NuxtLoading:z}};l.a.use(h.a);var tt={};(tt=function(t,e){if((t=t.default||t).commit)throw new Error("[nuxt] ".concat(e," should export a method that returns a Vuex instance."));return"function"!=typeof t&&(t=Object.assign({},t)),function(t,e){if(t.state&&"function"!=typeof t.state){console.warn("'state' should be a method that returns an object in ".concat(e));var r=Object.assign({},t.state);t=Object.assign({},t,{state:function(){return r}})}return t}(t,e)}(r(184),"store/index.js")).modules=tt.modules||{};var et=tt instanceof Function?tt:function(){return new h.a.Store(Object.assign({strict:!1},tt))};var nt=r(16),at=(r(102),r(49),r(96),r(40),r(36),{COMPONENT_OPTIONS_KEY:"nuxtI18n",STRATEGIES:{PREFIX:"prefix",PREFIX_EXCEPT_DEFAULT:"prefix_except_default",PREFIX_AND_DEFAULT:"prefix_and_default",NO_PREFIX:"no_prefix"}}),ot=!0,it=void 0,st={vueI18n:{fallbackLocale:"en",messages:{en:{inThisPage:"In This Page",searchHandbook:"Search Handbook",contributorsWithThisDocument:"Contributors",editInThisDocumentTip:"Edit this Document",editInGithub:"Edit this page on GitHub"},zh:{inThisPage:"本页目录",searchHandbook:"搜索手册",contributorsWithThisDocument:"本文贡献者",editInThisDocumentTip:"编辑本文",editInGithub:"在 GitHub 上编辑本页"}}},vueI18nLoader:!1,locales:["en","zh"],defaultLocale:"en",defaultDirection:"ltr",routesNameSeparator:"___",defaultLocaleRouteNameSuffix:"default",sortRoutes:!0,strategy:"prefix",lazy:!1,langDir:null,rootRedirect:null,detectBrowserLanguage:{alwaysRedirect:!1,cookieCrossOrigin:!1,cookieDomain:null,cookieKey:"i18n_redirected",cookieSecure:!1,fallbackLocale:"",onlyOnNoPrefix:!1,onlyOnRoot:!0,useCookie:!0},differentDomains:!1,seo:!1,baseUrl:"",vuex:{moduleName:"i18n",syncLocale:!1,syncMessages:!1,syncRouteParams:!0},parsePages:!0,pages:{},skipSettingLocaleOnNavigate:!1,beforeLanguageSwitch:function(){return null},onBeforeLanguageSwitch:function(){},onLanguageSwitched:function(){return null},normalizedLocales:[{code:"en"},{code:"zh"}],localeCodes:["en","zh"]},ct=(r(108),r(63),r(185),r(105)),lt=r.n(ct);function ut(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(!t)return;if("string"==typeof t)return ht(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);"Object"===r&&t.constructor&&(r=t.constructor.name);if("Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return ht(t,e)}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var i=0,n=function(){};return{s:n,n:function(){return i>=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,c=!0,l=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return c=t.done,t},e:function(t){l=!0,o=t},f:function(){try{c||null==r.return||r.return()}finally{if(l)throw o}}}}function ht(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,r=new Array(e);i<e;i++)r[i]=t[i];return r}function ft(text){return"[nuxt-i18n] ".concat(text)}function pt(t,e){var r,n=[],o=[],c=ut(t);try{for(c.s();!(r=c.n()).done;){var l=r.value,code=l.code,h=l.iso||code;o.push({code:code,iso:h})}}catch(t){c.e(t)}finally{c.f()}var f,d=ut(e.entries());try{var v=function(){var t=Object(N.a)(f.value,2),r=t[0],c=t[1],l=o.find((function(t){return t.iso.toLowerCase()===c.toLowerCase()}));if(l)return n.push({code:l.code,score:1-r/e.length}),"break"};for(d.s();!(f=d.n()).done;){if("break"===v())break}}catch(t){d.e(t)}finally{d.f()}var m,w=ut(e.entries());try{var x=function(){var t=Object(N.a)(m.value,2),r=t[0],c=t[1].split("-")[0].toLowerCase(),l=o.find((function(t){return t.iso.split("-")[0].toLowerCase()===c}));if(l)return n.push({code:l.code,score:.999-r/e.length}),"break"};for(w.s();!(m=w.n()).done;){if("break"===x())break}}catch(t){w.e(t)}finally{w.f()}return n.length>1&&n.sort((function(t,e){return t.score===e.score?e.code.length-t.code.length:e.score-t.score})),n.length?n[0].code:void 0}function vt(t,e){var r;if(r=window.location.host){var n=t.find((function(t){return t.domain===r}));if(n)return n.code}return""}function mt(t){return new RegExp("^/(".concat(t.join("|"),")(?:/|$)"),"i")}function gt(t,e){var r=e.routesNameSeparator,n=e.defaultLocaleRouteNameSuffix,o="(".concat(t.join("|"),")"),c="(?:".concat(r).concat(n,")?"),l=new RegExp("".concat(r).concat(o).concat(c,"$"),"i"),h=mt(t);return function(t){if(t.name){var e=t.name.match(l);if(e&&e.length>1)return e[1]}else if(t.path){var r=t.path.match(h);if(r&&r.length>1)return r[1]}return""}}function bt(t,e){var r,n=e.useCookie,o=e.cookieKey,c=e.localeCodes;if(n&&((r=lt.a.get(o))&&c.includes(r)))return r}function wt(t,e,r){var n=r.useCookie,o=r.cookieDomain,c=r.cookieKey,l=r.cookieSecure,h=r.cookieCrossOrigin;if(n){var f=new Date,d={expires:new Date(f.setDate(f.getDate()+365)),path:"/",sameSite:h?"none":"lax",secure:h||l};o&&(d.domain=o),lt.a.set(c,t,d)}}var xt=r(43);function _t(object,t){var e=Object.keys(object);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(object);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(object,t).enumerable}))),e.push.apply(e,r)}return e}function yt(t){for(var i=1;i<arguments.length;i++){var source=null!=arguments[i]?arguments[i]:{};i%2?_t(Object(source),!0).forEach((function(e){Object(o.a)(t,e,source[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(source)):_t(Object(source)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(source,e))}))}return t}function Ct(t,e){return kt.apply(this,arguments)}function kt(){return(kt=Object(n.a)(regeneratorRuntime.mark((function t(e,r){var n,o,c;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:n=e.app,(o=n.i18n).loadedLanguages||(o.loadedLanguages=[]),o.loadedLanguages.includes(r)||((c=st.normalizedLocales.find((function(t){return t.code===r})))?c.file||console.warn(ft("Could not find lang file for locale ".concat(r))):console.warn(ft('Attempted to load messages for non-existant locale code "'.concat(r,'"'))));case 4:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function Ot(t,e,r,n){var o=n.differentDomains,c=n.normalizedLocales;if("function"==typeof t)return t(e);if(o&&r){var l=$t(r,e.req,{normalizedLocales:c});if(l)return l}return t}function $t(t,e,r){var n,o=r.normalizedLocales.find((function(e){return e.code===t}));if(o&&o.domain)return Object(xt.hasProtocol)(o.domain)?o.domain:(n=window.location.protocol.split(":")[0],"".concat(n,"://").concat(o.domain));console.warn(ft("Could not find domain name for locale ".concat(t)))}function jt(t,e,r){var n={namespaced:!0,state:function(){return yt(yt(yt({},e.syncLocale?{locale:""}:{}),e.syncMessages?{messages:{}}:{}),e.syncRouteParams?{routeParams:{}}:{})},actions:yt(yt(yt({},e.syncLocale?{setLocale:function(t,e){(0,t.commit)("setLocale",e)}}:{}),e.syncMessages?{setMessages:function(t,e){(0,t.commit)("setMessages",e)}}:{}),e.syncRouteParams?{setRouteParams:function(t,e){(0,t.commit)("setRouteParams",e)}}:{}),mutations:yt(yt(yt({},e.syncLocale?{setLocale:function(t,e){t.locale=e}}:{}),e.syncMessages?{setMessages:function(t,e){t.messages=e}}:{}),e.syncRouteParams?{setRouteParams:function(t,e){t.routeParams=e}}:{}),getters:yt({},e.syncRouteParams?{localeRouteParams:function(t){var e=t.routeParams;return function(t){return e&&e[t]||{}}}}:{})};t.registerModule(e.moduleName,n,{preserveState:!!t.state[e.moduleName]})}function Pt(t){return Et.apply(this,arguments)}function Et(){return Et=Object(n.a)(regeneratorRuntime.mark((function t(e){var r,n,o,c=arguments;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r=c.length>1&&void 0!==c[1]?c[1]:null,n=c.length>2&&void 0!==c[2]?c[2]:null,!(o=c.length>3?c[3]:void 0)||!e){t.next=10;break}if(null===r||!o.syncLocale){t.next=7;break}return t.next=7,e.dispatch(o.moduleName+"/setLocale",r);case 7:if(null===n||!o.syncMessages){t.next=10;break}return t.next=10,e.dispatch(o.moduleName+"/setMessages",n);case 10:case"end":return t.stop()}}),t)}))),Et.apply(this,arguments)}var St=r(141),Lt=r(59),Rt=function(){var t=Object(n.a)(regeneratorRuntime.mark((function t(e){var r,n,o,c,l,h,f;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r=e.app,!e.isHMR){t.next=3;break}return t.abrupt("return");case 3:return t.next=5,r.i18n.__onNavigate(e.route);case 5:n=t.sent,o=Object(N.a)(n,3),c=o[0],l=o[1],h=o[2],c&&l&&(f=h?e.route.query:void 0,e.redirect(c,l,f));case 11:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}();Lt.a.nuxti18n=Rt;var Tt=["params"];function Dt(object,t){var e=Object.keys(object);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(object);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(object,t).enumerable}))),e.push.apply(e,r)}return e}function At(t){for(var i=1;i<arguments.length;i++){var source=null!=arguments[i]?arguments[i]:{};i%2?Dt(Object(source),!0).forEach((function(e){Object(o.a)(t,e,source[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(source)):Dt(Object(source)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(source,e))}))}return t}function Nt(t,e){var r=zt.call(this,t,e);return r?r.route.fullPath:""}function It(t,e){var r=zt.call(this,t,e);return r?r.route:void 0}function Mt(t,e){var r=zt.call(this,t,e);return r?r.location:void 0}function zt(t,e){if(t){var r=this.i18n;if(e=e||r.locale){"string"==typeof t&&(t="/"===t[0]?{path:t}:{name:t});var n=Object.assign({},t);if(n.path&&!n.name){var o=this.router.resolve(n).route,c=this.getRouteBaseName(o);if(c)n={name:qt(c,e),params:o.params,query:o.query,hash:o.hash};else!(e===st.defaultLocale&&[at.STRATEGIES.PREFIX_EXCEPT_DEFAULT,at.STRATEGIES.PREFIX_AND_DEFAULT].includes(st.strategy)||st.strategy===at.STRATEGIES.NO_PREFIX||r.differentDomains)&&(n.path="/".concat(e).concat(n.path)),n.path=it?Object(xt.withTrailingSlash)(n.path,!0):Object(xt.withoutTrailingSlash)(n.path,!0)}else{n.name||n.path||(n.name=this.getRouteBaseName()),n.name=qt(n.name,e);var l=n.params;l&&void 0===l[0]&&l.pathMatch&&(l[0]=l.pathMatch)}var h=this.router.resolve(n);return h.route.name?h:this.router.resolve(t)}}}function Bt(t){var e=this.getRouteBaseName();if(!e)return"";var r=this.i18n,n=this.route,o=this.store,c=n.params,l=Object(St.a)(n,Tt),h={};st.vuex&&st.vuex.syncRouteParams&&o&&(h=o.getters["".concat(st.vuex.moduleName,"/localeRouteParams")](t));var f=Object.assign({},l,{name:e,params:At(At(At({},c),h),{},{0:c.pathMatch})}),path=this.localePath(f,t);if(r.differentDomains){var d={differentDomains:r.differentDomains,normalizedLocales:st.normalizedLocales},v=$t(t,this.req,d);v&&(path=v+path)}return path}function Ft(t){var e=void 0!==t?t:this.route;if(e&&e.name)return e.name.split(st.routesNameSeparator)[0]}function qt(t,e){var r=t+(st.strategy===at.STRATEGIES.NO_PREFIX?"":st.routesNameSeparator+e);return e===st.defaultLocale&&st.strategy===at.STRATEGIES.PREFIX_AND_DEFAULT&&(r+=st.routesNameSeparator+st.defaultLocaleRouteNameSuffix),r}var Ut=function(t){return function(){var e={getRouteBaseName:this.getRouteBaseName,i18n:this.$i18n,localePath:this.localePath,localeRoute:this.localeRoute,localeLocation:this.localeLocation,req:null,route:this.$route,router:this.$router,store:this.$store};return t.call.apply(t,[e].concat(Array.prototype.slice.call(arguments)))}},Gt=function(t,e){return function(){var r=t.app,n=(t.req,t.route),o=t.store,c={getRouteBaseName:r.getRouteBaseName,i18n:r.i18n,localePath:r.localePath,localeLocation:r.localeLocation,localeRoute:r.localeRoute,req:null,route:n,router:r.router,store:o};return e.call.apply(e,[c].concat(Array.prototype.slice.call(arguments)))}},Ht={install:function(t){t.mixin({methods:{localePath:Ut(Nt),localeRoute:Ut(It),localeLocation:Ut(Mt),switchLocalePath:Ut(Bt),getRouteBaseName:Ut(Ft)}})}},Vt=function(t){l.a.use(Ht);var e=t.app,r=t.store;e.localePath=t.localePath=Gt(t,Nt),e.localeRoute=t.localeRoute=Gt(t,It),e.localeLocation=t.localeLocation=Gt(t,Mt),e.switchLocalePath=t.switchLocalePath=Gt(t,Bt),e.getRouteBaseName=t.getRouteBaseName=Gt(t,Ft),r&&(r.localePath=e.localePath,r.localeRoute=e.localeRoute,r.localeLocation=e.localeLocation,r.switchLocalePath=e.switchLocalePath,r.getRouteBaseName=e.getRouteBaseName)},Xt=r(106),Kt=r(140);r(186);function Wt(object,t){var e=Object.keys(object);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(object);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(object,t).enumerable}))),e.push.apply(e,r)}return e}function Jt(t){for(var i=1;i<arguments.length;i++){var source=null!=arguments[i]?arguments[i]:{};i%2?Wt(Object(source),!0).forEach((function(e){Object(o.a)(t,e,source[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(source)):Wt(Object(source)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(source,e))}))}return t}function Qt(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(!t)return;if("string"==typeof t)return Yt(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);"Object"===r&&t.constructor&&(r=t.constructor.name);if("Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Yt(t,e)}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var i=0,n=function(){};return{s:n,n:function(){return i>=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,c=!0,l=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return c=t.done,t},e:function(t){l=!0,o=t},f:function(){try{c||null==r.return||r.return()}finally{if(l)throw o}}}}function Yt(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,r=new Array(e);i<e;i++)r[i]=t[i];return r}function Zt(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.addDirAttribute,r=void 0===e||e,n=t.addSeoAttributes,o=void 0!==n&&n;if(!this.$i18n)return{};var c={htmlAttrs:{},link:[],meta:[]},l=this.$i18n.localeProperties,h=l.iso,d=l.dir||st.defaultDirection;if(r&&(c.htmlAttrs.dir=d),o&&(f.a.hasMetaInfo?f.a.hasMetaInfo(this):this._hasMetaInfo)&&this.$i18n.locale&&this.$i18n.locales&&!1!==this.$options[at.COMPONENT_OPTIONS_KEY]&&(!this.$options[at.COMPONENT_OPTIONS_KEY]||!1!==this.$options[at.COMPONENT_OPTIONS_KEY].seo)){h&&(c.htmlAttrs.lang=h);var v=this.$i18n.locales;m.bind(this)(v,this.$i18n.__baseUrl,c.link),w.bind(this)(this.$i18n.__baseUrl,c.link),x.bind(this)(l,h,c.meta),_.bind(this)(v,h,c.meta)}function m(t,e,link){if(st.strategy!==at.STRATEGIES.NO_PREFIX){var r,n=new Map,o=Qt(t);try{for(o.s();!(r=o.n()).done;){var c=r.value,l=c.iso;if(l){var h=l.split("-"),f=Object(N.a)(h,2),d=f[0],v=f[1];d&&v&&(c.isCatchallLocale||!n.has(d))&&n.set(d,c),n.set(l,c)}else console.warn(ft("Locale ISO code is required to generate alternate link"))}}catch(t){o.e(t)}finally{o.f()}var m,w=Qt(n.entries());try{for(w.s();!(m=w.n()).done;){var x=Object(N.a)(m.value,2),_=x[0],y=x[1],k=this.switchLocalePath(y.code);k&&link.push({hid:"i18n-alt-".concat(_),rel:"alternate",href:C(k,e),hreflang:_})}}catch(t){w.e(t)}finally{w.f()}if(st.defaultLocale){var O=this.switchLocalePath(st.defaultLocale);O&&link.push({hid:"i18n-xd",rel:"alternate",href:C(O,e),hreflang:"x-default"})}}}function w(t,link){var e=this.localeRoute(Jt(Jt({},this.$route),{},{name:this.getRouteBaseName()})),r=e?e.path:null;r&&link.push({hid:"i18n-can",rel:"canonical",href:C(r,t)})}function x(t,e,meta){t&&e&&meta.push({hid:"i18n-og",property:"og:locale",content:y(e)})}function _(t,e,meta){var r=t.filter((function(t){var r=t.iso;return r&&r!==e}));if(r.length){var n=r.map((function(t){return{hid:"i18n-og-alt-".concat(t.iso),property:"og:locale:alternate",content:y(t.iso)}}));meta.push.apply(meta,Object(Kt.a)(n))}}function y(t){return(t||"").replace(/-/g,"_")}function C(t,e){return t.match(/^https?:\/\//)?t:e+t}return c}function te(){return Zt.call(this,{addDirAttribute:!1,addSeoAttributes:!0})}var ee=r(48);function re(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(!t)return;if("string"==typeof t)return ne(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);"Object"===r&&t.constructor&&(r=t.constructor.name);if("Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return ne(t,e)}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var i=0,n=function(){};return{s:n,n:function(){return i>=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,c=!0,l=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return c=t.done,t},e:function(t){l=!0,o=t},f:function(){try{c||null==r.return||r.return()}finally{if(l)throw o}}}}function ne(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,r=new Array(e);i<e;i++)r[i]=t[i];return r}l.a.use(Xt.a);var ae=function(){var t=Object(n.a)(regeneratorRuntime.mark((function t(e){var r,o,c,h,f,d,v,m,w,x,_,y,C,k,O,$,j,P,E,S,L,R,T,D,A,I,M,z,B,F,U,G,H,V,X,K,W,J;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:r=e.app,o=e.route,c=e.store,h=e.req,e.res,f=e.redirect,st.vuex&&c&&jt(c,st.vuex,st.localeCodes),d=st.lazy,d&&(!0===d||!0!==d.skipNuxtState),t.next=9;break;case 7:v=t.sent.default,e.beforeNuxtRender((function(t){var e=t.nuxtState,n={},o=r.i18n,c=o.fallbackLocale,l=o.locale;if(l&&l!==c){var h=r.i18n._getMessages()[l];if(h)try{v(h),n[l]=h}catch(t){}}e.__i18n={langs:n}}));case 9:if(m=st.detectBrowserLanguage,w=m.alwaysRedirect,x=m.fallbackLocale,_=m.onlyOnNoPrefix,y=m.onlyOnRoot,C=m.useCookie,k=m.cookieKey,O=m.cookieDomain,$=m.cookieSecure,j=m.cookieCrossOrigin,P=function(){var t=Object(n.a)(regeneratorRuntime.mark((function t(n){var o,h,d,v,m,w,x,_,y,k,O,$,j,P,E,L,R,T,D=arguments;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(o=D.length>1&&void 0!==D[1]?D[1]:{},h=o.initialSetup,d=void 0!==h&&h,n){t.next=3;break}return t.abrupt("return");case 3:if(d||!r.i18n.differentDomains){t.next=5;break}return t.abrupt("return");case 5:if(v=r.i18n.locale,n!==v){t.next=8;break}return t.abrupt("return");case 8:if(!(m=r.i18n.onBeforeLanguageSwitch(v,n,d,e))||!r.i18n.localeCodes.includes(m)){t.next=13;break}if(m!==v){t.next=12;break}return t.abrupt("return");case 12:n=m;case 13:if(d||r.i18n.beforeLanguageSwitch(v,n),C&&r.i18n.setLocaleCookie(n),!st.langDir){t.next=29;break}if(w=r.i18n.fallbackLocale,!st.lazy){t.next=27;break}if(!w){t.next=23;break}return x=[],Array.isArray(w)?x=w.map((function(t){return Ct(e,t)})):"object"===Object(nt.a)(w)?(w[n]&&(x=x.concat(w[n].map((function(t){return Ct(e,t)})))),w.default&&(x=x.concat(w.default.map((function(t){return Ct(e,t)}))))):n!==w&&x.push(Ct(e,w)),t.next=23,Promise.all(x);case 23:return t.next=25,Ct(e,n);case 25:t.next=29;break;case 27:return t.next=29,Promise.all(st.localeCodes.map((function(t){return Ct(e,t)})));case 29:for(r.i18n.locale=n,_=st.normalizedLocales.find((function(t){return t.code===n}))||{code:n},y=0,k=Object.keys(r.i18n.localeProperties);y<k.length;y++)O=k[y],r.i18n.localeProperties[O]=void 0;for($=0,j=Object.entries(_);$<j.length;$++)P=Object(N.a)(j[$],2),E=P[0],L=P[1],l.a.set(r.i18n.localeProperties,E,Object(ee.a)(L));if(!st.vuex){t.next=36;break}return t.next=36,Pt(c,n,r.i18n.getLocaleMessage(n),st.vuex);case 36:R=e.route,T=S(R,n),d?r.i18n.__redirect=T:(r.i18n.onLanguageSwitched(v,n),T&&f(T));case 39:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}(),E=gt(st.localeCodes,{routesNameSeparator:st.routesNameSeparator,defaultLocaleRouteNameSuffix:st.defaultLocaleRouteNameSuffix}),S=function(t,e){if(!e||r.i18n.differentDomains||st.strategy===at.STRATEGIES.NO_PREFIX)return"";if(E(t)===e&&(!y&&!_||e!==st.defaultLocale||st.strategy!==at.STRATEGIES.PREFIX_AND_DEFAULT))return"";var n=r.switchLocalePath(e);return n||(n=r.localePath(t.fullPath,e)),!n||n===t.fullPath||n.startsWith("//")?"":n},L=function(){var t=Object(n.a)(regeneratorRuntime.mark((function t(n){var o,path,c,l,h;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if("/"!==n.path||!st.rootRedirect){t.next=5;break}return o=302,path=st.rootRedirect,"string"!=typeof st.rootRedirect&&(o=st.rootRedirect.statusCode,path=st.rootRedirect.path),t.abrupt("return",[o,"/".concat(path),!0]);case 5:if(!(c=r.i18n.__redirect)){t.next=9;break}return r.i18n.__redirect=null,t.abrupt("return",[302,c]);case 9:if(l={differentDomains:st.differentDomains,normalizedLocales:st.normalizedLocales},r.i18n.__baseUrl=Ot(st.baseUrl,e,r.i18n.locale,l),h=st.detectBrowserLanguage&&A(n)||E(n)||r.i18n.locale||r.i18n.defaultLocale||"",!st.skipSettingLocaleOnNavigate){t.next=17;break}r.i18n.__pendingLocale=h,r.i18n.__pendingLocalePromise=new Promise((function(t){r.i18n.__resolvePendingLocalePromise=t})),t.next=19;break;case 17:return t.next=19,r.i18n.setLocale(h);case 19:return t.abrupt("return",[null,null]);case 20:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}(),R=function(){var t=Object(n.a)(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r.i18n.__pendingLocale){t.next=2;break}return t.abrupt("return");case 2:return t.next=4,r.i18n.setLocale(r.i18n.__pendingLocale);case 4:r.i18n.__resolvePendingLocalePromise(""),r.i18n.__pendingLocale=null;case 6:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}(),T=function(){var t=Object(n.a)(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!r.i18n.__pendingLocale){t.next=3;break}return t.next=3,r.i18n.__pendingLocalePromise;case 3:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}(),D=function(){return"undefined"!=typeof navigator&&navigator.languages?pt(st.normalizedLocales,navigator.languages):h&&void 0!==h.headers["accept-language"]?pt(st.normalizedLocales,h.headers["accept-language"].split(",").map((function(t){return t.split(";")[0]}))):void 0},A=function(t){if(st.strategy!==at.STRATEGIES.NO_PREFIX)if(y){if("/"!==t.path)return""}else if(_&&!w&&t.path.match(mt(st.localeCodes)))return"";var e;C&&(e=r.i18n.getLocaleCookie())||(e=D());var n=e||x;return!n||C&&!w&&r.i18n.getLocaleCookie()||n===r.i18n.locale?"":n},I=function(t){t.locales=Object(ee.a)(st.locales),t.localeCodes=Object(ee.a)(st.localeCodes),t.localeProperties=l.a.observable(Object(ee.a)(st.normalizedLocales.find((function(e){return e.code===t.locale}))||{code:t.locale})),t.defaultLocale=st.defaultLocale,t.differentDomains=st.differentDomains,t.beforeLanguageSwitch=st.beforeLanguageSwitch,t.onBeforeLanguageSwitch=st.onBeforeLanguageSwitch,t.onLanguageSwitched=st.onLanguageSwitched,t.setLocaleCookie=function(t){return wt(t,0,{useCookie:C,cookieDomain:O,cookieKey:k,cookieSecure:$,cookieCrossOrigin:j})},t.getLocaleCookie=function(){return bt(0,{useCookie:C,cookieKey:k,localeCodes:st.localeCodes})},t.setLocale=function(t){return P(t)},t.getBrowserLocale=function(){return D()},t.finalizePendingLocaleChange=R,t.waitForPendingLocaleChange=T,t.__baseUrl=r.i18n.__baseUrl,t.__pendingLocale=r.i18n.__pendingLocale,t.__pendingLocalePromise=r.i18n.__pendingLocalePromise,t.__resolvePendingLocalePromise=r.i18n.__resolvePendingLocalePromise},"function"!=typeof st.vueI18n){t.next=25;break}return t.next=22,st.vueI18n(e);case 22:t.t0=t.sent,t.next=26;break;case 25:t.t0=Object(ee.a)(st.vueI18n);case 26:if((M=t.t0).componentInstanceCreatedListener=I,r.i18n=e.i18n=new Xt.a(M),r.i18n.locale="",r.i18n.fallbackLocale=M.fallbackLocale||"",I(r.i18n),z={differentDomains:st.differentDomains,normalizedLocales:st.normalizedLocales},r.i18n.__baseUrl=Ot(st.baseUrl,e,"",z),r.i18n.__onNavigate=L,l.a.prototype.$nuxtI18nSeo=te,l.a.prototype.$nuxtI18nHead=Zt,!c){t.next=58;break}if(c.$i18n=r.i18n,!c.state.localeDomains){t.next=58;break}B=re(r.i18n.locales),t.prev=41,B.s();case 43:if((F=B.n()).done){t.next=50;break}if("string"!=typeof(U=F.value)){t.next=47;break}return t.abrupt("continue",48);case 47:U.domain=c.state.localeDomains[U.code];case 48:t.next=43;break;case 50:t.next=55;break;case 52:t.prev=52,t.t1=t.catch(41),B.e(t.t1);case 55:return t.prev=55,B.f(),t.finish(55);case 58:return(G=st.detectBrowserLanguage?A(o):"")||((H=st.vuex)&&H.syncLocale&&c&&""!==c.state[H.moduleName].locale?G=c.state[H.moduleName].locale:r.i18n.differentDomains?(V=vt(st.normalizedLocales),G=V):st.strategy!==at.STRATEGIES.NO_PREFIX&&(X=E(o),G=X)),!G&&C&&(G=r.i18n.getLocaleCookie()),G||(G=r.i18n.defaultLocale||""),t.next=64,P(G,{initialSetup:!0});case 64:if(!ot){t.next=72;break}return t.next=67,L(e.route);case 67:K=t.sent,W=Object(N.a)(K,2),W[0],(J=W[1])&&location.assign(Object(xt.joinURL)(e.base,J));case 72:case"end":return t.stop()}}),t,null,[[41,52,55,58]])})));return function(e){return t.apply(this,arguments)}}();function oe(object,t){var e=Object.keys(object);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(object);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(object,t).enumerable}))),e.push.apply(e,r)}return e}function ie(t){for(var i=1;i<arguments.length;i++){var source=null!=arguments[i]?arguments[i]:{};i%2?oe(Object(source),!0).forEach((function(e){Object(o.a)(t,e,source[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(source)):oe(Object(source)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(source,e))}))}return t}l.a.component(v.a.name,v.a),l.a.component(w.a.name,ie(ie({},w.a),{},{render:function(t,e){return w.a._warned||(w.a._warned=!0,console.warn("<no-ssr> has been deprecated and will be removed in Nuxt 3, please use <client-only> instead")),w.a.render(t,e)}})),l.a.component(S.name,S),l.a.component("NChild",S),l.a.component(I.name,I),Object.defineProperty(l.a.prototype,"$nuxt",{get:function(){var t=this.$root.$options.$nuxt;return t||"undefined"==typeof window?t:window.$nuxt},configurable:!0}),l.a.use(f.a,{keyName:"head",attribute:"data-n-head",ssrAttribute:"data-n-head-ssr",tagIDKeyName:"hid"});var se={name:"page",mode:"out-in",appear:!1,appearClass:"appear",appearActiveClass:"appear-active",appearToClass:"appear-to"},ce=h.a.Store.prototype.registerModule;function le(path,t){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=Array.isArray(path)?!!path.reduce((function(t,path){return t&&t[path]}),this.state):path in this.state;return ce.call(this,path,t,ie({preserveState:r},e))}function ue(t){return he.apply(this,arguments)}function he(){return he=Object(n.a)(regeneratorRuntime.mark((function t(e){var r,o,c,h,f,d,path,v,m=arguments;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return v=function(t,e){if(!t)throw new Error("inject(key, value) has no key provided");if(void 0===e)throw new Error("inject('".concat(t,"', value) has no value provided"));h[t="$"+t]=e,h.context[t]||(h.context[t]=e),c[t]=h[t];var r="__nuxt_"+t+"_installed__";l.a[r]||(l.a[r]=!0,l.a.use((function(){Object.prototype.hasOwnProperty.call(l.a.prototype,t)||Object.defineProperty(l.a.prototype,t,{get:function(){return this.$root.$options[t]}})})))},r=m.length>1&&void 0!==m[1]?m[1]:{},t.next=4,E(0,r);case 4:return o=t.sent,(c=et(e)).$router=o,c.registerModule=le,h=ie({head:{meta:[],link:[],style:[],script:[]},store:c,router:o,nuxt:{defaultTransition:se,transitions:[se],setTransitions:function(t){return Array.isArray(t)||(t=[t]),t=t.map((function(t){return t=t?"string"==typeof t?Object.assign({},se,{name:t}):Object.assign({},se,t):se})),this.$options.nuxt.transitions=t,t},err:null,dateErr:null,error:function(t){t=t||null,h.context._errored=Boolean(t),t=t?Object(y.p)(t):null;var r=h.nuxt;return this&&(r=this.nuxt||this.$options.nuxt),r.dateErr=Date.now(),r.err=t,e&&(e.nuxt.error=t),t}}},Z),c.app=h,f=e?e.next:function(t){return h.router.push(t)},e?d=o.resolve(e.url).route:(path=Object(y.f)(o.options.base,o.options.mode),d=o.resolve(path).route),t.next=14,Object(y.t)(h,{store:c,route:d,next:f,error:h.nuxt.error.bind(h),payload:e?e.payload:void 0,req:e?e.req:void 0,res:e?e.res:void 0,beforeRenderFns:e?e.beforeRenderFns:void 0,ssrContext:e});case 14:v("config",r),window.__NUXT__&&window.__NUXT__.state&&c.replaceState(window.__NUXT__.state),h.context.enablePreview=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};h.previewData=Object.assign({},t),v("preview",t)},t.next=20;break;case 20:return t.next=23,Vt(h.context);case 23:if("function"!=typeof ae){t.next=26;break}return t.next=26,ae(h.context,v);case 26:return h.context.enablePreview=function(){console.warn("You cannot call enablePreview() outside a plugin.")},t.next=29,new Promise((function(t,e){if(!o.resolve(h.context.route.fullPath).route.matched.length)return t();o.replace(h.context.route.fullPath,t,(function(r){if(!r._isRouter)return e(r);if(2!==r.type)return t();var c=o.afterEach(function(){var e=Object(n.a)(regeneratorRuntime.mark((function e(r,n){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=3,Object(y.j)(r);case 3:h.context.route=e.sent,h.context.params=r.params||{},h.context.query=r.query||{},c(),t();case 8:case"end":return e.stop()}}),e)})));return function(t,r){return e.apply(this,arguments)}}())}))}));case 29:return t.abrupt("return",{store:c,app:h,router:o});case 30:case"end":return t.stop()}}),t)}))),he.apply(this,arguments)}},59:function(t,e,r){"use strict";e.a={}},77:function(t,e,r){"use strict";r(40),r(36),r(20),r(23),r(17),r(21),r(19),r(15),r(35),r(28),r(29);var n=r(0),o=r.n(n);function c(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(!t)return;if("string"==typeof t)return l(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);"Object"===r&&t.constructor&&(r=t.constructor.name);if("Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return l(t,e)}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var i=0,n=function(){};return{s:n,n:function(){return i>=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,c=!0,h=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return c=t.done,t},e:function(t){h=!0,o=t},f:function(){try{c||null==r.return||r.return()}finally{if(h)throw o}}}}function l(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,r=new Array(e);i<e;i++)r[i]=t[i];return r}var h=window.requestIdleCallback||function(t){var e=Date.now();return setTimeout((function(){t({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-e))}})}),1)},f=window.cancelIdleCallback||function(t){clearTimeout(t)},d=window.IntersectionObserver&&new window.IntersectionObserver((function(t){t.forEach((function(t){var e=t.intersectionRatio,link=t.target;e<=0||!link.__prefetch||link.__prefetch()}))}));e.a={name:"NuxtLink",extends:o.a.component("RouterLink"),props:{prefetch:{type:Boolean,default:!0},noPrefetch:{type:Boolean,default:!1}},mounted:function(){this.prefetch&&!this.noPrefetch&&(this.handleId=h(this.observe,{timeout:2e3}))},beforeDestroy:function(){f(this.handleId),this.__observed&&(d.unobserve(this.$el),delete this.$el.__prefetch)},methods:{observe:function(){d&&this.shouldPrefetch()&&(this.$el.__prefetch=this.prefetchLink.bind(this),d.observe(this.$el),this.__observed=!0)},shouldPrefetch:function(){return this.getPrefetchComponents().length>0},canPrefetch:function(){var t=navigator.connection;return!(this.$nuxt.isOffline||t&&((t.effectiveType||"").includes("2g")||t.saveData))},getPrefetchComponents:function(){return this.$router.resolve(this.to,this.$route,this.append).resolved.matched.map((function(t){return t.components.default})).filter((function(t){return"function"==typeof t&&!t.options&&!t.__prefetched}))},prefetchLink:function(){if(this.canPrefetch()){d.unobserve(this.$el);var t,e=c(this.getPrefetchComponents());try{for(e.s();!(t=e.n()).done;){var r=t.value,n=r();n instanceof Promise&&n.catch((function(){})),r.__prefetched=!0}}catch(t){e.e(t)}finally{e.f()}}}}}}},[[144,4,1,5]]]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/5a00f6016712a9e609f5.js b/docs/_nuxt/js/5a00f6016712a9e609f5.js
new file mode 100644
index 0000000..68bbaa7
--- /dev/null
+++ b/docs/_nuxt/js/5a00f6016712a9e609f5.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[146],{447:function(n,w,o){"use strict";o.r(w),w.default=""}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/5adf3f95d0916e363ff0.js b/docs/_nuxt/js/5adf3f95d0916e363ff0.js
new file mode 100644
index 0000000..e70d89f
--- /dev/null
+++ b/docs/_nuxt/js/5adf3f95d0916e363ff0.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[79],{380:function(n,e,t){"use strict";t.r(e),e.default="# Apache ECharts 5.2.0 特性介绍\n\n## 全局过渡动画\n\n在 Apache ECharts 中我们一直把自然流畅的过渡动画作为一个重要特性。通过避免数据带来的突变,不仅仅可以改善视觉效果,更为表达数据的关联和演变提供了可能。因此,在 5.2.0 中,我们进一步将过渡动画从表现系列内部数据的变化,泛化到全局能力。接下来,我们会看到这种**全局过渡动画 Universal Transition**是如何为图表增加表现力和叙事能力的。\n\n在之前的版本中,过渡动画有一定的局限性:只能用于相同类型的图形的位置、尺寸、形状,而且只能作用在相同类型的系列上。比如,下面例子就是通过饼图中扇区形状的变化反映了数据分布的变化:\n\n```js live {layout: 'lr'}\nfunction makeRandomData() {\n  return [\n    {\n      value: Math.random(),\n      name: 'A'\n    },\n    {\n      value: Math.random(),\n      name: 'B'\n    },\n    {\n      value: Math.random(),\n      name: 'C'\n    }\n  ];\n}\noption = {\n  series: [\n    {\n      type: 'pie',\n      radius: [0, '50%'],\n      data: makeRandomData()\n    }\n  ]\n};\n\nsetInterval(() => {\n  myChart.setOption({\n    series: {\n      data: makeRandomData()\n    }\n  });\n}, 2000);\n```\n\n而从 5.2.0 开始,我们引入了更强大的全局过渡动画能力,让过渡动画不再局限于相同类型的系列之间。现在,我们可以使用这种跨系列的形变,为任意类型的系列和任意类型的图形做形变动画。\n\n这会有多酷呢?我们一起来感受一下!\n\n### 跨系列的形变动画\n\n在设置`universalTransition: true`开启全局过渡动画后,从饼图切换成柱状图,或者从柱状图切换成散点图,甚至旭日图和矩形树图这类复杂的图表之间,都可以通过形变的方式自然的进行动画过渡。\n\n如下,饼图和柱状图之间的切换:\n\n```js live {layout: 'bt'}\nconst dataset = {\n  dimensions: ['name', 'score'],\n  source: [\n    ['Hannah Krause', 314],\n    ['Zhao Qian', 351],\n    ['Jasmin Krause ', 287],\n    ['Li Lei', 219],\n    ['Karle Neumann', 253],\n    ['Mia Neumann', 165],\n    ['Böhm Fuchs', 318],\n    ['Han Meimei', 366]\n  ]\n};\nconst pieOption = {\n  dataset: [dataset],\n  series: [\n    {\n      type: 'pie',\n      // 通过 id 关联需要过渡动画的系列\n      id: 'Score',\n      radius: [0, '50%'],\n      universalTransition: true,\n      animationDurationUpdate: 1000\n    }\n  ]\n};\nconst barOption = {\n  dataset: [dataset],\n  xAxis: {\n    type: 'category'\n  },\n  yAxis: {},\n  series: [\n    {\n      type: 'bar',\n      // 通过 id 关联需要过渡动画的系列\n      id: 'Score',\n      // 每个数据都是用不同的颜色\n      colorBy: 'data',\n      encode: { x: 'name', y: 'score' },\n      universalTransition: true,\n      animationDurationUpdate: 1000\n    }\n  ]\n};\n\noption = barOption;\n\nsetInterval(() => {\n  option = option === pieOption ? barOption : pieOption;\n  // 使用 notMerge 的形式可以移除坐标轴\n  myChart.setOption(option, true);\n}, 2000);\n```\n\n更多的常见基础图表之间的过渡:\n\n![](images/5-2-0/universal-transition.gif)\n\n这样的动画过渡不再仅仅局限于基础的折、柱、饼中,在柱状图和地图之间:\n\n![](images/5-2-0/universal-transition-2.gif)\n\n或者旭日图和矩形树图之间,甚至非常灵活的自定义系列之间都可以进行动画的过渡。\n\n![](images/5-2-0/universal-transition-3.gif)\n\n> 注意需要配置系列的 id 来保证需要动画过渡的系列之间能够一一对应。\n\n> 按需引入的代码需要单独引入该特性\n>\n> ```ts\n> import { UniversalTransition } from 'echarts/features';\n> echarts.use([UniversalTransition]);\n> ```\n\n### 数据的分裂和合并动画\n\n除了常见的数据值的更新,有时候我们还会碰到数据的聚合、下钻等交互后的更新,这个时候我们就不能直接应用一对一的动画过渡,而需要使用更多像分裂、合并这样的动画效果,来通过正确的图形动画表达出数据的变换。\n\n为了能够表达数据之间可能存在的多对多联系,在 5.2.0 中我们新引入了一个数据组`groupId`的概念,我们可以通过 [series.dataGroupId](${optionPath}series-bar.dataGroupId) 设置整个系列所属的组,或者更细粒度的通过 [series.data.groupId](${optionPath}series-bar.dataGroupId) 设置每个数据所属的组。如果你使用了`dataset`管理数据则更方便了,可以使用`encode.itemGroupId`来指定一个维度编码成`groupId`。\n\n比如我们要实现一个柱状图下钻的动画,可以将下钻后的整个系列的数据都设置同一个`groupId`,然后跟下钻前的数据对应起来:\n\n```js live {layout: 'lr'}\noption = {\n  xAxis: {\n    data: ['Animals', 'Fruits', 'Cars']\n  },\n  yAxis: {},\n  dataGroupId: '',\n  animationDurationUpdate: 500,\n  series: {\n    type: 'bar',\n    id: 'sales',\n    data: [\n      {\n        value: 5,\n        groupId: 'animals'\n      },\n      {\n        value: 2,\n        groupId: 'fruits'\n      },\n      {\n        value: 4,\n        groupId: 'cars'\n      }\n    ],\n    universalTransition: {\n      enabled: true,\n      divideShape: 'clone'\n    }\n  }\n};\n\nconst drilldownData = [\n  {\n    dataGroupId: 'animals',\n    data: [\n      ['Cats', 4],\n      ['Dogs', 2],\n      ['Cows', 1],\n      ['Sheep', 2],\n      ['Pigs', 1]\n    ]\n  },\n  {\n    dataGroupId: 'fruits',\n    data: [\n      ['Apples', 4],\n      ['Oranges', 2]\n    ]\n  },\n  {\n    dataGroupId: 'cars',\n    data: [\n      ['Toyota', 4],\n      ['Opel', 2],\n      ['Volkswagen', 2]\n    ]\n  }\n];\n\nmyChart.on('click', event => {\n  if (event.data) {\n    const subData = drilldownData.find(data => {\n      return data.dataGroupId === event.data.groupId;\n    });\n    if (!subData) {\n      return;\n    }\n    myChart.setOption({\n      xAxis: {\n        data: subData.data.map(item => {\n          return item[0];\n        })\n      },\n      series: {\n        type: 'bar',\n        id: 'sales',\n        dataGroupId: subData.dataGroupId,\n        data: subData.data.map(item => {\n          return item[1];\n        }),\n        universalTransition: {\n          enabled: true,\n          divideShape: 'clone'\n        }\n      },\n      graphic: [\n        {\n          type: 'text',\n          left: 50,\n          top: 20,\n          style: {\n            text: 'Back',\n            fontSize: 18\n          },\n          onclick: function() {\n            myChart.setOption(option, true);\n          }\n        }\n      ]\n    });\n  }\n});\n```\n\n通过`groupId`,我们还可以实现更丰富的聚合,下钻动画。\n\n数据的聚合:\n\n![](images/5-2-0/group-transition.gif)\n\n单系列下钻成两个系列:\n\n![](images/5-2-0/group-transition-2.gif)\n\n全局过渡动画使得数据的关系和演变的表达能力走上新的台阶,为你的可视化创作灵感插上翅膀。\n\n看到这里,我们知道你已经跃跃欲试了。但是别急,5.2.0 还有更多值得一看的新功能。\n\n## 调色盘的取色策略\n\n在上面全局过渡动画的示例中,大家可能有注意到我们使用了一个之前版本没有的`colorBy`配置项,这个配置项也是我们这个版本新增加的一个特性,用来给系列配置不同粒度的调色盘取色。这个配置目前支持两种策略:\n\n- `'series'` 按照系列分配调色盘中的颜色,同一系列中的所有数据都是用相同的颜色。\n- `'data'` 按照数据项分配调色盘中的颜色,每个数据项都使用不同的颜色。\n\n在之前我们是按照系列的类型固定了这个策略,比如柱状图就是固定`'series'`的策略,而饼图则是固定`'data'`的策略。\n\n而现在新增这个配置项后,我们可以在柱状图中给每个数据项都分配不同的颜色:\n\n```js live {layout: 'lr'}\noption = {\n  xAxis: {\n    type: 'category',\n    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']\n  },\n  yAxis: {\n    type: 'value'\n  },\n  series: [\n    {\n      data: [120, 200, 150, 80, 70, 110, 130],\n      type: 'bar',\n      colorBy: 'data'\n    }\n  ]\n};\n```\n\n或者在饼图中统一使用一个颜色:\n\n```js live {layout: 'lr'}\noption = {\n  series: {\n    type: 'pie',\n    colorBy: 'series',\n    radius: [0, '50%'],\n    itemStyle: {\n      borderColor: '#fff',\n      borderWidth: 1\n    },\n    data: [\n      {\n        value: 335,\n        name: 'Direct Visit'\n      },\n      {\n        value: 234,\n        name: 'Union Ad'\n      },\n      {\n        value: 1548,\n        name: 'Search Engine'\n      }\n    ]\n  }\n};\n```\n\n这一配置项可以让我们避免了去找调色盘颜色然后去一一设置的麻烦,可能在特定的场景需求中提供便捷。后续我们会对这个配置项做进一步的增强,提供更多的调色盘取色的策略。\n\n## 极坐标柱状图的标签\n\n这个版本中我们实现了极坐标上的柱状图的标签,并且支持丰富的标签定位配置。下面是一个最常见的标签显示在端点的进度图:\n\n```js live {layout: 'lr'}\noption = {\n  angleAxis: {\n    show: false,\n    max: 10\n  },\n  radiusAxis: {\n    show: false,\n    type: 'category',\n    data: ['AAA', 'BBB', 'CCC', 'DDD']\n  },\n  polar: {},\n  series: [\n    {\n      type: 'bar',\n      data: [3, 4, 5, 6],\n      colorBy: 'data',\n      roundCap: true,\n      label: {\n        show: true,\n        // 试试改成 'insideStart'\n        position: 'start',\n        formatter: '{b}'\n      },\n      coordinateSystem: 'polar'\n    }\n  ]\n};\n```\n\n更多标签位置的配置:\n\n![](images/5-2-0/polar-bar-label.jpg)\n\n这一灵活的标签位置配置项大大丰富了极坐标柱状图的表达能力,让文字清晰地匹配对应的数据。\n\n## 空数据的饼图样式\n\n在之前的版本中,如果饼图没有数据,画面中可能就是完全空白的。因为没有任何的视觉元素,所以用户会疑惑是不是出现了 bug 导致图中没有内容。\n\n为了解决这个问题,这个版本我们会默认在无可显示数据的时候显示一个灰色的占位圆以防止画面中完全空白。我们可以通过`emptyCircleStyle`配置这个占位圆的样式。\n\n```js live {layout: 'lr'}\noption = {\n  series: [\n    {\n      type: 'pie',\n      data: [],\n      // showEmptyCircle: false,\n      emptyCircleStyle: {\n        // 将样式改为空心圆\n        color: 'transparent',\n        borderColor: '#ddd',\n        borderWidth: 1\n      }\n    }\n  ]\n};\n```\n\n如果不想要显示这个灰色的圆,也可以设置`showEmptyCircle: false`关闭。\n\n## 高维数据的性能增强\n\n我们从 4.0 开始引入了 [dataset](${optionPath}dataset) 用来管理图表的数据,通常情况下`dataset`提供了更方便的数据管理方式而且跟传统的方式不会有什么性能上的差别。但是在一些极端的特别高维(>100)数据的场景下,我们还是会碰到一些性能急剧下降的问题,比如下面这种通过一千个系列去可视化千维数据的场景([#11907](https://github.com/apache/echarts/issues/11907)),甚至可能会卡住。\n\n```js\nconst indices = Array.from(Array(1000), (_, i) => {\n  return `index${i}`;\n});\nconst option = {\n  xAxis: { type: 'category' },\n  yAxis: {},\n  dataset: {\n    // dimension: ['date', ...indices],\n    source: Array.from(Array(10), (_, i) => {\n      return {\n        date: i,\n        ...indices.reduce((item, next) => {\n          item[next] = Math.random() * 100;\n          return item;\n        }, {})\n      };\n    })\n  },\n  series: indices.map(index => {\n    return { type: 'line', name: index };\n  })\n};\n```\n\n产生这个性能问题是因为我们在底层每个系列都会按照其需要处理一遍这个 dataset,然后保存一份处理过后的数据以及维度等元信息。这意味着刚才那个例子中需要处理并保存`1000 x 1000`个维度的信息,这带来了巨大的内存和垃圾回收的压力,从而导致了高维度的性能的急剧下降。\n\n在新版本中我们对这个问题做了优化,所有系列都尽可能共享 dataset 的数据(能否共享取决于系列怎么使用这份数据)存储而非每个系列都处理并存储一次,并且只处理和存储了使用到的维度。这些优化保证了内存不会随着 dataset 维度和系列的增长而爆炸,大幅度的提升了极端场景下的初始化性能。刚才例子的渲染耗时也从卡住降低到了可接受的 300 毫秒以下。\n\n这次优化带来收益的还不只是这种高维的场景,在使用维度不高但是数据量很大的 dataset 的时候,因为数据的共享所以多个系列只处理了一遍数据,因此也可以带来显著的性能提升。\n\n## 自定义系列的类型优化\n\n自定义系列提供了非常灵活的创建系列图形的方式,相对于其它系列,自定义系列的学习曲线可能有些陡峭,而且容易出错。因此在这个版本中,我们进一步的优化了自定义系列中的核心方法`renderItem`的类型,对于`renderItem`的参数和返回值类型做了更精确的推断,从而可以根据返回的图形类型推断出可以设置该图形的哪些属性:\n\n```ts\nseries = {\n  type: 'custom',\n  renderItem(params) {\n    return {\n      type: 'group',\n      // group 类型使用 children 存储其它类型的子元素\n      children: [\n        {\n          type: 'circle',\n          // circle 拥有下面这些可以配置的 shape 属性\n          shape: { r: 10, cx: 0, cy: 0 },\n          // 可以配置的样式\n          style: { fill: 'red' }\n        },\n        {\n          type: 'rect',\n          // rect 拥有下面这些可以配置的 shape 属性\n          shape: { x: 0, y: 0, width: 100, height: 100 }\n        },\n        {\n          type: 'path',\n          // 自定义路径图形\n          shape: { d: '...' }\n        }\n      ]\n    };\n  }\n};\n```\n\n## 小结\n\n以上我们介绍了 5.2.0 中的新特性以及优化,如果你对其中的一些特性感兴趣,不妨更新到最新版本的 Apache ECharts 亲自体验一下。\n\n如果你对 Apache ECharts 接下来的计划感兴趣,也可以在 [GitHub Milestone](https://github.com/apache/echarts/milestones) 关注我们的开发计划。也非常欢迎加入我们的贡献者行列(在 [Wiki](https://github.com/apache/echarts/wiki) 中了解更多)。\n\n## 完整更新记录\n\n查看[版本更新](${mainSitePath}/changelog.html#v5-2-0)\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/5dedd0f61ae7a03c4046.js b/docs/_nuxt/js/5dedd0f61ae7a03c4046.js
new file mode 100644
index 0000000..a0ad759
--- /dev/null
+++ b/docs/_nuxt/js/5dedd0f61ae7a03c4046.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[65],{366:function(n,e,t){"use strict";t.r(e),e.default="# Rose Chart(Nightingale Chart)\n\nRose Chart, which was also called the nightingale chart, usually indicates categories by sector of the same radius but different radius.\n\nECharts can implement Rose Chart by defining [`series.roseType`](${optionPath}series-pie.roseType) of pie chart to `'area'`. All other configs are the same as a basic pie chart.\n\n```js live\noption = {\n  series: [\n    {\n      type: 'pie',\n      data: [\n        {\n          value: 100,\n          name: 'A'\n        },\n        {\n          value: 200,\n          name: 'B'\n        },\n        {\n          value: 300,\n          name: 'C'\n        },\n        {\n          value: 400,\n          name: 'D'\n        },\n        {\n          value: 500,\n          name: 'E'\n        }\n      ],\n      roseType: 'area'\n    }\n  ]\n};\n```\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/5e19cbc5187514db7dcd.js b/docs/_nuxt/js/5e19cbc5187514db7dcd.js
new file mode 100644
index 0000000..0d5e4e8
--- /dev/null
+++ b/docs/_nuxt/js/5e19cbc5187514db7dcd.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[51],{352:function(t,e,n){"use strict";n.r(e),e.default="# Get Started\n\n## Getting Apache ECharts\n\nApache ECharts supports several download methods, which are further explained in the next tutorial [Installation](${lang}/basics/download). Here, we take the example of getting it from the [jsDelivr](https://www.jsdelivr.com/package/npm/echarts) CDN and explain how to install it quickly.\n\nAt [https://www.jsdelivr.com/package/npm/echarts](https://www.jsdelivr.com/package/npm/echarts) select `dist/echarts.js`, click and save it as `echarts.js` file.\n\n> More information about these files can be found in the next tutorial [Installation](${lang}/basics/download).\n\n## Including ECharts\n\nCreate a new `index.html` file in the directory where you just saved `echarts.js`, with the following content:\n\n```html\n<!DOCTYPE html>\n<html>\n  <head>\n    <meta charset=\"utf-8\" />\n    \x3c!-- Include the ECharts file you just downloaded --\x3e\n    <script src=\"echarts.js\"><\/script>\n  </head>\n</html>\n```\n\nWhen you open this `index.html`, you will see an empty page. But don't worry. Open the console and make sure that no error message is reported, then you can proceed to the next step.\n\n## Plotting a Simple Chart\n\nBefore drawing we need to prepare a DOM container for ECharts with a defined height and width. Add the following code after the `</head>` tag introduced earlier.\n\n```html\n<body>\n  \x3c!-- Prepare a DOM with a defined width and height for ECharts --\x3e\n  <div id=\"main\" style=\"width: 600px;height:400px;\"></div>\n</body>\n```\n\nThen you can initialize an echarts instance with the [echarts.init](${mainSitePath}api.html#echarts.init) method and set the echarts instance with [setOption](${mainSitePath}api.html#echartsInstance.setOption) method to generate a simple bar chart. Here is the complete code.\n\n```html\n<!DOCTYPE html>\n<html>\n  <head>\n    <meta charset=\"utf-8\" />\n    <title>ECharts</title>\n    \x3c!-- Include the ECharts file you just downloaded --\x3e\n    <script src=\"echarts.js\"><\/script>\n  </head>\n  <body>\n    \x3c!-- Prepare a DOM with a defined width and height for ECharts --\x3e\n    <div id=\"main\" style=\"width: 600px;height:400px;\"></div>\n    <script type=\"text/javascript\">\n      // Initialize the echarts instance based on the prepared dom\n      var myChart = echarts.init(document.getElementById('main'));\n\n      // Specify the configuration items and data for the chart\n      var option = {\n        title: {\n          text: 'ECharts Getting Started Example'\n        },\n        tooltip: {},\n        legend: {\n          data: ['sales']\n        },\n        xAxis: {\n          data: ['Shirts', 'Cardigans', 'Chiffons', 'Pants', 'Heels', 'Socks']\n        },\n        yAxis: {},\n        series: [\n          {\n            name: 'sales',\n            type: 'bar',\n            data: [5, 20, 36, 10, 10, 20]\n          }\n        ]\n      };\n\n      // Display the chart using the configuration items and data just specified.\n      myChart.setOption(option);\n    <\/script>\n  </body>\n</html>\n```\n\nAnd this is your first chart with Apache ECharts!\n\n<md-example src=\"doc-example/getting-started&reset=1&edit=1\"></md-example>\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/5ffc54c98f60a9e99933.js b/docs/_nuxt/js/5ffc54c98f60a9e99933.js
new file mode 100644
index 0000000..19c3d75
--- /dev/null
+++ b/docs/_nuxt/js/5ffc54c98f60a9e99933.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[88],{389:function(t,e,n){"use strict";n.r(e),e.default="# 资源列表\n\n## 官方\n\n- [API](${mainSitePath}api.html)\n- [配置项手册](${mainSitePath}option.html)\n- [官方实例](${mainSitePath}examples/zh/index.html)\n- [术语速查手册](${mainSitePath}cheat-sheet.html)\n\n## 社区\n\n- [MakeAPie](https://www.makeapie.com):社区用户的作品集\n- [awesome-echarts](https://github.com/ecomfe/awesome-echarts):各种 ECharts 相关的资源,包括 AngularJS、Vue 等框架的支持,Java、Python、R 等语言的 ECharts 版本,ECharts VSCode 插件等工具\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/61ecb6b47c982ba018f8.js b/docs/_nuxt/js/61ecb6b47c982ba018f8.js
new file mode 100644
index 0000000..caa008a
--- /dev/null
+++ b/docs/_nuxt/js/61ecb6b47c982ba018f8.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[116],{417:function(n,e,t){"use strict";t.r(e),e.default="# ECharts 中的样式简介\n\n本文主要是大略概述,用哪些方法,可以在 Apache ECharts<sup>TM</sup> 中设置样式,改变图形元素或者文字的颜色、明暗、大小等。\n\n> 为了让表述更通俗易懂,我们在这里用了“样式”这种可能不是很符合数据可视化思维的词\n\n本文介绍这几种方式,他们的功能范畴可能会有交叉(即同一种细节的效果可能可以用不同的方式实现),但是他们各有各的场景偏好。\n\n- 颜色主题(Theme)\n- 调色盘\n- 直接样式设置(itemStyle、lineStyle、areaStyle、label、...)\n- 视觉映射(visualMap)\n\n## 颜色主题(Theme)\n\n最简单的更改全局样式的方式,是直接采用颜色主题(theme)。例如,在 [示例集合](${mainSitePath}examples) 中,可以通过切换深色模式,直接看到采用主题的效果。\n\nECharts5 除了一贯的默认主题外,还内置了`'dark'`主题。可以像这样切换成深色模式:\n\n```js\nvar chart = echarts.init(dom, 'dark');\n```\n\n其他的主题,没有内置在 ECharts 中,需要自己加载。这些主题可以在 [主题编辑器](${mainSitePath}theme-builder.html) 里访问到。也可以使用这个主题编辑器,自己编辑主题。下载下来的主题可以这样使用:\n\n如果主题保存为 JSON 文件,则需要自行加载和注册,例如:\n\n```js\n// 假设主题名称是 \"vintage\"\nfetch('theme/vintage.json')\n  .then(r => r.json())\n  .then(theme => {\n    echarts.registerTheme('vintage', theme);\n    var chart = echarts.init(dom, 'vintage');\n  })\n```\n\n如果保存为 UMD 格式的 JS 文件,文件内部已经做了自注册,直接引入 JS 即可:\n\n```js\n// HTML 引入 vintage.js 文件后(假设主题名称是 \"vintage\")\nvar chart = echarts.init(dom, 'vintage');\n// ...\n```\n\n## 调色盘\n\n调色盘,可以在 option 中设置。它给定了一组颜色,图形、系列会自动从其中选择颜色。\n可以设置全局的调色盘,也可以设置系列自己专属的调色盘。\n\n```js\noption = {\n  // 全局调色盘。\n  color: [\n    '#c23531',\n    '#2f4554',\n    '#61a0a8',\n    '#d48265',\n    '#91c7ae',\n    '#749f83',\n    '#ca8622',\n    '#bda29a',\n    '#6e7074',\n    '#546570',\n    '#c4ccd3'\n  ],\n\n  series: [\n    {\n      type: 'bar',\n      // 此系列自己的调色盘。\n      color: [\n        '#dd6b66',\n        '#759aa0',\n        '#e69d87',\n        '#8dc1a9',\n        '#ea7e53',\n        '#eedd78',\n        '#73a373',\n        '#73b9bc',\n        '#7289ab',\n        '#91ca8c',\n        '#f49f42'\n      ]\n      // ...\n    },\n    {\n      type: 'pie',\n      // 此系列自己的调色盘。\n      color: [\n        '#37A2DA',\n        '#32C5E9',\n        '#67E0E3',\n        '#9FE6B8',\n        '#FFDB5C',\n        '#ff9f7f',\n        '#fb7293',\n        '#E062AE',\n        '#E690D1',\n        '#e7bcf3',\n        '#9d96f5',\n        '#8378EA',\n        '#96BFFF'\n      ]\n      // ...\n    }\n  ]\n};\n```\n\n## 直接的样式设置\n\n直接的样式设置是比较常用设置方式。纵观 ECharts 的 [option](${optionPath}) 中,很多地方可以设置 [itemStyle](${optionPath}series-bar.itemStyle)、[lineStyle](${optionPath}series-line.lineStyle)、[areaStyle](${optionPath}series-line.areaStyle)、[label](${optionPath}series-bar.label) 等等。这些的地方可以直接设置图形元素的颜色、线宽、点的大小、标签的文字、标签的样式等等。\n\n一般来说,ECharts 的各个系列和组件,都遵从这些命名习惯,虽然不同图表和组件中,`itemStyle`、`label` 等可能出现在不同的地方。\n\n在下面例子中我们给气泡图设置了阴影,渐变色等复杂的样式,你可以修改代码中的样式看修改后的效果:\n\n```js live\nvar data = [\n  [\n    [28604, 77, 17096869, 'Australia', 1990],\n    [31163, 77.4, 27662440, 'Canada', 1990],\n    [1516, 68, 1154605773, 'China', 1990],\n    [13670, 74.7, 10582082, 'Cuba', 1990],\n    [28599, 75, 4986705, 'Finland', 1990],\n    [29476, 77.1, 56943299, 'France', 1990],\n    [31476, 75.4, 78958237, 'Germany', 1990],\n    [28666, 78.1, 254830, 'Iceland', 1990],\n    [1777, 57.7, 870601776, 'India', 1990],\n    [29550, 79.1, 122249285, 'Japan', 1990],\n    [2076, 67.9, 20194354, 'North Korea', 1990],\n    [12087, 72, 42972254, 'South Korea', 1990],\n    [24021, 75.4, 3397534, 'New Zealand', 1990],\n    [43296, 76.8, 4240375, 'Norway', 1990],\n    [10088, 70.8, 38195258, 'Poland', 1990],\n    [19349, 69.6, 147568552, 'Russia', 1990],\n    [10670, 67.3, 53994605, 'Turkey', 1990],\n    [26424, 75.7, 57110117, 'United Kingdom', 1990],\n    [37062, 75.4, 252847810, 'United States', 1990]\n  ],\n  [\n    [44056, 81.8, 23968973, 'Australia', 2015],\n    [43294, 81.7, 35939927, 'Canada', 2015],\n    [13334, 76.9, 1376048943, 'China', 2015],\n    [21291, 78.5, 11389562, 'Cuba', 2015],\n    [38923, 80.8, 5503457, 'Finland', 2015],\n    [37599, 81.9, 64395345, 'France', 2015],\n    [44053, 81.1, 80688545, 'Germany', 2015],\n    [42182, 82.8, 329425, 'Iceland', 2015],\n    [5903, 66.8, 1311050527, 'India', 2015],\n    [36162, 83.5, 126573481, 'Japan', 2015],\n    [1390, 71.4, 25155317, 'North Korea', 2015],\n    [34644, 80.7, 50293439, 'South Korea', 2015],\n    [34186, 80.6, 4528526, 'New Zealand', 2015],\n    [64304, 81.6, 5210967, 'Norway', 2015],\n    [24787, 77.3, 38611794, 'Poland', 2015],\n    [23038, 73.13, 143456918, 'Russia', 2015],\n    [19360, 76.5, 78665830, 'Turkey', 2015],\n    [38225, 81.4, 64715810, 'United Kingdom', 2015],\n    [53354, 79.1, 321773631, 'United States', 2015]\n  ]\n];\n\noption = {\n  backgroundColor: {\n    type: 'radial',\n    x: 0.3,\n    y: 0.3,\n    r: 0.8,\n    colorStops: [\n      {\n        offset: 0,\n        color: '#f7f8fa'\n      },\n      {\n        offset: 1,\n        color: '#cdd0d5'\n      }\n    ]\n  },\n  grid: {\n    left: 10,\n    containLabel: true,\n    bottom: 10,\n    top: 10,\n    right: 30\n  },\n  xAxis: {\n    splitLine: {\n      show: false\n    }\n  },\n  yAxis: {\n    splitLine: {\n      show: false\n    },\n    scale: true\n  },\n  series: [\n    {\n      name: '1990',\n      data: data[0],\n      type: 'scatter',\n      symbolSize: function(data) {\n        return Math.sqrt(data[2]) / 5e2;\n      },\n      emphasis: {\n        focus: 'series',\n        label: {\n          show: true,\n          formatter: function(param) {\n            return param.data[3];\n          },\n          position: 'top'\n        }\n      },\n      itemStyle: {\n        shadowBlur: 10,\n        shadowColor: 'rgba(120, 36, 50, 0.5)',\n        shadowOffsetY: 5,\n        color: {\n          type: 'radial',\n          x: 0.4,\n          y: 0.3,\n          r: 1,\n          colorStops: [\n            {\n              offset: 0,\n              color: 'rgb(251, 118, 123)'\n            },\n            {\n              offset: 1,\n              color: 'rgb(204, 46, 72)'\n            }\n          ]\n        }\n      }\n    },\n    {\n      name: '2015',\n      data: data[1],\n      type: 'scatter',\n      symbolSize: function(data) {\n        return Math.sqrt(data[2]) / 5e2;\n      },\n      emphasis: {\n        focus: 'series',\n        label: {\n          show: true,\n          formatter: function(param) {\n            return param.data[3];\n          },\n          position: 'top'\n        }\n      },\n      itemStyle: {\n        shadowBlur: 10,\n        shadowColor: 'rgba(25, 100, 150, 0.5)',\n        shadowOffsetY: 5,\n        color: {\n          type: 'radial',\n          x: 0.4,\n          y: 0.3,\n          r: 1,\n          colorStops: [\n            {\n              offset: 0,\n              color: 'rgb(129, 227, 238)'\n            },\n            {\n              offset: 1,\n              color: 'rgb(25, 183, 207)'\n            }\n          ]\n        }\n      }\n    }\n  ]\n};\n```\n\n## 高亮的样式:emphasis\n\n在鼠标悬浮到图形元素上时,一般会出现高亮的样式。默认情况下,高亮的样式是根据普通样式自动生成的。但是高亮的样式也可以自己定义,主要是通过 [emphasis](${optionPath}series-bar.emphasis) 属性来定制。[emphasis](${optionPath}series-bar.emphasis) 中的结构,和普通样式的结构相同,例如:\n\n```js\noption = {\n  series: {\n    type: 'scatter',\n\n    // 普通样式。\n    itemStyle: {\n      // 点的颜色。\n      color: 'red'\n    },\n    label: {\n      show: true,\n      // 标签的文字。\n      formatter: 'This is a normal label.'\n    },\n\n    // 高亮样式。\n    emphasis: {\n      itemStyle: {\n        // 高亮时点的颜色。\n        color: 'blue'\n      },\n      label: {\n        show: true,\n        // 高亮时标签的文字。\n        formatter: 'This is a emphasis label.'\n      }\n    }\n  }\n};\n```\n\n注意:在 ECharts4 以前,高亮和普通样式的写法,是这样的:\n\n```js\noption = {\n  series: {\n    type: 'scatter',\n\n    itemStyle: {\n      // 普通样式。\n      normal: {\n        // 点的颜色。\n        color: 'red'\n      },\n      // 高亮样式。\n      emphasis: {\n        // 高亮时点的颜色。\n        color: 'blue'\n      }\n    },\n\n    label: {\n      // 普通样式。\n      normal: {\n        show: true,\n        // 标签的文字。\n        formatter: 'This is a normal label.'\n      },\n      // 高亮样式。\n      emphasis: {\n        show: true,\n        // 高亮时标签的文字。\n        formatter: 'This is a emphasis label.'\n      }\n    }\n  }\n};\n```\n\n这种写法 **仍然被兼容**,但是,不再推荐。事实上,多数情况下,开发者只想配置普通状态下的样式,而使用默认的高亮样式。所以在 ECharts4 中,支持不写 `normal` 的配置方法(即前一个代码片段里的写法),使得配置项更扁平简单。\n\n## 通过 visualMap 组件设定样式\n\n[visualMap 组件](${optionPath}visualMap) 能指定数据到颜色、图形尺寸的映射规则,详见 [数据的视觉映射](${lang}/concepts/visual-map)。\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/676965dc8c2d7e00ff99.js b/docs/_nuxt/js/676965dc8c2d7e00ff99.js
new file mode 100644
index 0000000..3da225d
--- /dev/null
+++ b/docs/_nuxt/js/676965dc8c2d7e00ff99.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{450:function(e,t,r){"use strict";r.r(t);var n="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_$",o=/[<>\b\f\n\r\t\0\u2028\u2029]/g,c=/^(?:do|if|in|for|int|let|new|try|var|byte|case|char|else|enum|goto|long|this|void|with|await|break|catch|class|const|final|float|short|super|throw|while|yield|delete|double|export|import|native|return|switch|throws|typeof|boolean|default|extends|finally|package|private|abstract|continue|debugger|function|volatile|interface|protected|transient|implements|instanceof|synchronized)$/,f={"<":"\\u003C",">":"\\u003E","/":"\\u002F","\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"},l=Object.getOwnPropertyNames(Object.prototype).sort().join("\0");function h(e){return Object(e)!==e}function y(e){if("string"==typeof e)return m(e);if(void 0===e)return"void 0";if(0===e&&1/e<0)return"-0";var t=String(e);return"number"==typeof e?t.replace(/^(-)?0\./,"$1."):t}function w(e){return Object.prototype.toString.call(e).slice(8,-1)}function O(e){return f[e]||e}function j(e){return e.replace(o,O)}function m(e){for(var t='"',i=0;i<e.length;i+=1){var r=e.charAt(i),code=r.charCodeAt(0);if('"'===r)t+='\\"';else if(r in f)t+=f[r];else if(code>=55296&&code<=57343){var n=e.charCodeAt(i+1);t+=code<=56319&&n>=56320&&n<=57343?r+e[++i]:"\\u"+code.toString(16).toUpperCase()}else t+=r}return t+='"'}t.default=function(e){var t=new Map;!function e(r){if("function"==typeof r)throw new Error("Cannot stringify a function");if(t.has(r))t.set(r,t.get(r)+1);else if(t.set(r,1),!h(r))switch(w(r)){case"Number":case"String":case"Boolean":case"Date":case"RegExp":return;case"Array":r.forEach(e);break;case"Set":case"Map":Array.from(r).forEach(e);break;default:var n=Object.getPrototypeOf(r);if(n!==Object.prototype&&null!==n&&Object.getOwnPropertyNames(n).sort().join("\0")!==l)throw new Error("Cannot stringify arbitrary non-POJOs");if(Object.getOwnPropertySymbols(r).length>0)throw new Error("Cannot stringify POJOs with symbolic keys");Object.keys(r).forEach((function(t){return e(r[t])}))}}(e);var r=new Map;function o(e){if(r.has(e))return r.get(e);if(h(e))return y(e);var t=w(e);switch(t){case"Number":case"String":case"Boolean":return"Object("+o(e.valueOf())+")";case"RegExp":return"new RegExp("+m(e.source)+', "'+e.flags+'")';case"Date":return"new Date("+e.getTime()+")";case"Array":var n=e.map((function(t,i){return i in e?o(t):""})),c=0===e.length||e.length-1 in e?"":",";return"["+n.join(",")+c+"]";case"Set":case"Map":return"new "+t+"(["+Array.from(e).map(o).join(",")+"])";default:var f="{"+Object.keys(e).map((function(t){return function(e){return/^[_$a-zA-Z][_$a-zA-Z0-9]*$/.test(e)?e:j(JSON.stringify(e))}(t)+":"+o(e[t])})).join(",")+"}";return null===Object.getPrototypeOf(e)?Object.keys(e).length>0?"Object.assign(Object.create(null),"+f+")":"Object.create(null)":f}}Array.from(t).filter((function(e){return e[1]>1})).sort((function(a,b){return b[1]-a[1]})).forEach((function(e,i){r.set(e[0],function(e){var t="";do{t=n[e%n.length]+t,e=~~(e/n.length)-1}while(e>=0);return c.test(t)?t+"_":t}(i))}));var f=o(e);if(r.size){var O=[],v=[],d=[];return r.forEach((function(e,t){if(O.push(e),h(t))d.push(y(t));else switch(w(t)){case"Number":case"String":case"Boolean":d.push("Object("+o(t.valueOf())+")");break;case"RegExp":d.push(t.toString());break;case"Date":d.push("new Date("+t.getTime()+")");break;case"Array":d.push("Array("+t.length+")"),t.forEach((function(t,i){v.push(e+"["+i+"]="+o(t))}));break;case"Set":d.push("new Set"),v.push(e+"."+Array.from(t).map((function(e){return"add("+o(e)+")"})).join("."));break;case"Map":d.push("new Map"),v.push(e+"."+Array.from(t).map((function(e){var t=e[0],r=e[1];return"set("+o(t)+", "+o(r)+")"})).join("."));break;default:d.push(null===Object.getPrototypeOf(t)?"Object.create(null)":"{}"),Object.keys(t).forEach((function(r){v.push(""+e+function(e){return/^[_$a-zA-Z][_$a-zA-Z0-9]*$/.test(e)?"."+e:"["+j(JSON.stringify(e))+"]"}(r)+"="+o(t[r]))}))}})),v.push("return "+f),"(function("+O.join(",")+"){"+v.join(";")+"}("+d.join(",")+"))"}return f}}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/694dcb340a2404ad42a7.js b/docs/_nuxt/js/694dcb340a2404ad42a7.js
new file mode 100644
index 0000000..6361ccc
--- /dev/null
+++ b/docs/_nuxt/js/694dcb340a2404ad42a7.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[63],{364:function(e,n,t){"use strict";t.r(n),n.default="# Basic Pie Chart\n\nPie charts are mainly used to show the proportion of several categories compared with the total. The radians represent the proportion of each category.\n\n## Simple Example\n\nThe config of the pie chart is not completely the same as the line chart and bar chart. There is no need to configure the axis. The name and value of data need to be defined in the series. Let's begin with a basic pie chart:\n\n```js live\noption = {\n  series: [\n    {\n      type: 'pie',\n      data: [\n        {\n          value: 335,\n          name: 'Direct Visit'\n        },\n        {\n          value: 234,\n          name: 'Union Ad'\n        },\n        {\n          value: 1548,\n          name: 'Search Engine'\n        }\n      ]\n    }\n  ]\n};\n```\n\nTo be mentioned, the `value` here does not need to be percentage data. ECharts will proportionately distribute their corresponding radians in the pie chart depending on all the data.\n\n## Customized Pie Chart\n\n### Radius of Pie Chart\n\nThe radius of pie chart can be defined by [`series.radius`](${optionPath}series-pie.radius). Both percent string(`'60%'`) and absolute pixel string(`'200'`) are available. While it is a percent string, it is proportional related to the shorter container(`'div'`) edge.\n\n```js live\noption = {\n  series: [\n    {\n      type: 'pie',\n      data: [\n        {\n          value: 335,\n          name: 'Direct Visit'\n        },\n        {\n          value: 234,\n          name: 'Union Ad'\n        },\n        {\n          value: 1548,\n          name: 'Search Engine'\n        }\n      ],\n      radius: '50%'\n    }\n  ]\n};\n```\n\n## Hide Chart While Data Sum is 0\n\nBy default, if the data sum is 0, the series will divide the shape equally. For instance, if you don't want to show any shape while all 4 series have value equals 0, you could define [`series.stillShowZeroSum`](${optionPath}series-pie.stillShowZeroSum) to `false`.\n\n```js live\noption = {\n  series: [\n    {\n      type: 'pie',\n      stillShowZeroSum: false,\n      data: [\n        {\n          value: 0,\n          name: 'Direct Visit'\n        },\n        {\n          value: 0,\n          name: 'Union Ad'\n        },\n        {\n          value: 0,\n          name: 'Search Engine'\n        }\n      ]\n    }\n  ]\n};\n```\n\nIf you are willing to hide the label as well, define the [`series.label.show`](${optionPath}series-pie.label.show) to `false` as well.\n\n```js live\noption = {\n    series: [{\n        type: 'pie',\n        stillShowZeroSum: false,\n        label: {\n            show: false\n        }\n        data: [{\n            value: 0,\n            name: 'Direct Visit'\n        }, {\n            value: 0,\n            name: 'Union Ad'\n        }, {\n            value: 0,\n            name: 'Search Engine'\n        }]\n    }]\n};\n```\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/69d7b43411a93902e873.js b/docs/_nuxt/js/69d7b43411a93902e873.js
new file mode 100644
index 0000000..50761d7
--- /dev/null
+++ b/docs/_nuxt/js/69d7b43411a93902e873.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[83],{384:function(n,e,t){"use strict";t.r(e),e.default="# Apache ECharts 5.6.0 特性介绍\n\n## 在原始 GeoJSON 数据中定义区域样式\n\nECharts 地图使用 GeoJson 格式定义数据。理论上出于“数据、样式分离的原则”,GeoJson 只负责定义数据,样式应该在 ECharts 中定义。但有些情况下,样式本身也是数据的一种表达(例如:对于争议国界使用虚线表示,这时候“虚线”是一种样式,但是它实际上表达的是数据的概念,所以在 GeoJson 中定义样式是合理的)。\n\n在 ECharts 5.6.0 中,我们支持在原始 GeoJson 数据中定义区域样式,通过指定 `features[].properties.echartsStyle` 来定义样式,和 [data](${optionPath}series-map.data) 一样,支持配置 `itemStyle`、`label`、`tooltip` 等属性。示例:\n\n```ts\ngeoJSON.features[0].properties.echartsStyle = {\n    itemStyle: {\n        areaColor: 'green'\n    }\n}\n\ngeoJSON.features[1].properties.echartsStyle = {\n    selected: true,\n    label: {\n        formatter: 'Default Selected:\\n{b}'\n    }\n}\n\ngeoJSON.features[2].properties.echartsStyle = {\n    itemStyle: {\n        borderType: 'dotted',\n        borderColor: 'blue'\n    }\n}\n\ngeoJSON.features[11].properties.echartsStyle = {\n    itemStyle: {\n        // This region will be overridden as `cyan` by the data item option\n        areaColor: 'black'\n    },\n    tooltip: {\n        formatter: function (params) {\n            return 'This is a custom tooltip from GeoJSON: ' + params.name;\n        }\n    }\n}\n```\n\n## 坐标轴标签支持提示框\n\n在有些情况下,坐标轴标签过长,或我们希望在坐标轴标签上显示更多信息,在 ECharts 5.6.0 中,我们支持在坐标轴标签上添加提示框。使用方法和 `tooltip` 的配置项一致,具体可以参考 [axis.tooltip 文档](${optionPath}xAxis.tooltip)。\n\n![](images/5-6-0/axis-tooltip.png)\n\n## 旭日图支持聚焦所有子孙和祖先节点\n\n在之前版本的旭日图中,[emphasis.focus](${optionPath}series-sunburst.emphasis.focus) 支持以下几种值:\n\n- `'none'` 不淡出其它图形,默认使用该配置。\n- `'self'` 只聚焦(不淡出)当前高亮的数据的图形。\n- `'series'` 聚焦当前高亮的数据所在的系列的所有图形。\n- `'adjacency'` 聚焦关系图中的邻接点和边的图形。\n\n在 ECharts 5.6.0 中,我们新增了 `'relative'` ,表示聚焦所有子孙和祖先节点。\n\n![](images/5-6-0/sunburst-emphasis-relative.png)\n\n## 新增两种语言支持\n\n在这个版本中,新增了瑞典语和波斯语的支持。至此,ECharts 已经支持 22 种语言。\n\n## 折线图性能优化\n\n在这个版本中,我们优化了折线图的渲染性能,解决了折线图内存随时间增长的问题。\n\n## 完整更新记录\n\n查看[版本更新](${mainSitePath}changelog.html#v5-6-0)\n\n下一个大版本 Apache ECharts 6.0.0 正在火热开发中,预计于 2025 年一季度末发布,敬请期待。\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/6a0d4f1469677508287e.js b/docs/_nuxt/js/6a0d4f1469677508287e.js
new file mode 100644
index 0000000..68a7c05
--- /dev/null
+++ b/docs/_nuxt/js/6a0d4f1469677508287e.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[29],{330:function(e,t,r){"use strict";r.r(t),t.default='# Stacked Bar Chart\n\nThe stacked bar chart is an extension of the bar chart. The difference is that the data in the bar chart is placed parallel while stacked together in the stacked bar chart. You can use a stacked bar chart to reflect the total amount of each category, as well as the proportional relationship of each data compared with the category. Therefore, it is very suitable for dealing with the relationship between part and whole.\n\nCompared with the pie chart, a stacked bar chart can display several groups of "part and whole" relationship. For instance, you can use a pie or bar chart to display the statistics of the number of people in each project in a physical education course. You can use a stacked bar chart when you want to distinguish boys and girls in each project. As shown in the chart, it included the info of the "part and whole" relationship of each group.\n\n<iframe max-width="830" width="100%" height="400" \n src="https://gallery.echartsjs.com/view-lite.html?cid=xBk7oUNwEz">\n</iframe>\n\n## Suggestion for Using Stacked Bar Chart\n\n1. Follow the basic rule of bar charts. Please avoid using too many colors so that the chart can be easily understood. Don\'t deliberately display partly data to mislead the user.\n\n2. A Stacked bar chart is not suitable for comparing data inside the group.\n\n3. While there are 2 or 3 categories, a stacked bar chart will show the best effect. It is not recommended to include more than 6 categories. Too many data series will also make it very difficult to read and understand.\n\n4. Try to avoid using a stacked bar chart with categories that included negative values. It will affect understanding or the proportion between part and whole.\n\n5. Most of the stacked bar charts are vertically generated. However, if you have very long labels, try to use the horizontal stack method. \n'}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/6cae345a9044d453ba52.js b/docs/_nuxt/js/6cae345a9044d453ba52.js
new file mode 100644
index 0000000..75fd72e
--- /dev/null
+++ b/docs/_nuxt/js/6cae345a9044d453ba52.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[142],{443:function(n,t,e){"use strict";e.r(t),t.default="# 异步数据的加载与动态更新\n\n## 异步加载\n\n[入门示例](${lang}/get-started)中的数据是在初始化后`setOption`中直接填入的,但是很多时候可能数据需要异步加载后再填入。`ECharts` 中实现异步数据的更新非常简单,在图表初始化后不管任何时候只要通过 jQuery 等工具异步获取数据后通过 `setOption` 填入数据和配置项就行。\n\n```js\nvar myChart = echarts.init(document.getElementById('main'));\n\n$.get('data.json').done(function(data) {\n  // data 的结构:\n  // {\n  //     categories: [\"衬衫\",\"羊毛衫\",\"雪纺衫\",\"裤子\",\"高跟鞋\",\"袜子\"],\n  //     values: [5, 20, 36, 10, 10, 20]\n  // }\n  myChart.setOption({\n    title: {\n      text: '异步数据加载示例'\n    },\n    tooltip: {},\n    legend: {},\n    xAxis: {\n      data: data.categories\n    },\n    yAxis: {},\n    series: [\n      {\n        name: '销量',\n        type: 'bar',\n        data: data.values\n      }\n    ]\n  });\n});\n```\n\n或者先设置完其它的样式,显示一个空的直角坐标轴,然后获取数据后填入数据。\n\n```js\nvar myChart = echarts.init(document.getElementById('main'));\n// 显示标题,图例和空的坐标轴\nmyChart.setOption({\n  title: {\n    text: '异步数据加载示例'\n  },\n  tooltip: {},\n  legend: {\n    data: ['销量']\n  },\n  xAxis: {\n    data: []\n  },\n  yAxis: {},\n  series: [\n    {\n      name: '销量',\n      type: 'bar',\n      data: []\n    }\n  ]\n});\n\n// 异步加载数据\n$.get('data.json').done(function(data) {\n  // 填入数据\n  myChart.setOption({\n    xAxis: {\n      data: data.categories\n    },\n    series: [\n      {\n        // 根据名字对应到相应的系列\n        name: '销量',\n        data: data.data\n      }\n    ]\n  });\n});\n```\n\n如下:\n\n<md-example src=\"doc-example/tutorial-async\"></md-example>\n\nECharts 中在更新数据的时候需要通过`name`属性对应到相应的系列,上面示例中如果`name`不存在也可以根据系列的顺序正常更新,但是更多时候推荐更新数据的时候加上系列的`name`数据。\n\n## loading 动画\n\n如果数据加载时间较长,一个空的坐标轴放在画布上也会让用户觉得是不是产生 bug 了,因此需要一个 loading 的动画来提示用户数据正在加载。\n\nECharts 默认有提供了一个简单的加载动画。只需要调用 [showLoading](${mainSitePath}/api.html#echartsInstance.showLoading) 方法显示。数据加载完成后再调用 [hideLoading](${mainSitePath}/api.html#echartsInstance.hideLoading) 方法隐藏加载动画。\n\n```js\nmyChart.showLoading();\n$.get('data.json').done(function (data) {\n    myChart.hideLoading();\n    myChart.setOption(...);\n});\n```\n\n效果如下:\n\n<md-example src=\"doc-example/tutorial-loading\"></md-example>\n\n## 数据的动态更新\n\nECharts 由数据驱动,数据的改变驱动图表展现的改变,因此动态数据的实现也变得异常简单。\n\n所有数据的更新都通过 [setOption](${mainSitePath}/api.html#echartsInstance.setOption)实现,你只需要定时获取数据,[setOption](${mainSitePath}/api.html#echartsInstance.setOption) 填入数据,而不用考虑数据到底产生了哪些变化,ECharts 会找到两组数据之间的差异然后通过合适的动画去表现数据的变化。\n\n具体可以看下面示例:\n\n<md-example src=\"doc-example/tutorial-dynamic-data\"></md-example>\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/6d0bdeec2b05b46603ad.js b/docs/_nuxt/js/6d0bdeec2b05b46603ad.js
new file mode 100644
index 0000000..b628c42
--- /dev/null
+++ b/docs/_nuxt/js/6d0bdeec2b05b46603ad.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[54],{355:function(e,n,t){"use strict";t.r(n),n.default="# Basic Bar Chart\n\nBar Chart, is a chart that presents the comparisons among discrete data. The length of the bars is proportionally related to the categorical data.\n\nTo set the bar chart, you need to set the `type` of `series` as `'bar'`.\n\n[[Option]](${optionPath}series-bar)\n\n## Simple Example\n\nLet's begin with a basic bar chart:\n\n```js live\noption = {\n  xAxis: {\n    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']\n  },\n  yAxis: {},\n  series: [\n    {\n      type: 'bar',\n      data: [23, 24, 18, 25, 27, 28, 25]\n    }\n  ]\n};\n```\n\nIn this case, the x-axis is under the category type. Therefore, you should define some corresponding values for `'xAxis'`. Meanwhile, the data type of the y-axis is numerical. The range of the y-axis will be generated automatically by the `data` in `'series'`.\n\n## Multi-series Bar Chart\n\nYou may use a series to represent a group of related data. To show multiple series in the same chart, you need to add one more array under the `series`.\n\n```js live\noption = {\n  xAxis: {\n    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']\n  },\n  yAxis: {},\n  series: [\n    {\n      type: 'bar',\n      data: [23, 24, 18, 25, 27, 28, 25]\n    },\n    {\n      type: 'bar',\n      data: [26, 24, 18, 22, 23, 20, 27]\n    }\n  ]\n};\n```\n\n## Customized Bar Chart\n\n### Styles\n\nIt is a good idea to install the style of Bar Chart by using ['series.itemStyle'](${optionPath}series-bar.itemStyle). Description of the SCI:\n\n- Color of column(`'color'`);\n- Outline color(`'borderColor'`), width(`'borderWidth'`), type(`'borderType'`) of column;\n- Border radius of column(`'barBorderRadius'`);\n- Transparency(`'opacity'`);\n- Shadow type(`'shadowBlur'`, `'shadowColor'`, `'shadowOffsetX'`, `'shadowOffsetY'`)\n\nHere is a example:\n\n```js live\noption = {\n  xAxis: {\n    data: ['A', 'B', 'C', 'D', 'E']\n  },\n  yAxis: {},\n  series: [\n    {\n      type: 'bar',\n      data: [\n        10,\n        22,\n        28,\n        {\n          value: 43,\n          // Specify the style for single bar\n          itemStyle: {\n            color: '#91cc75',\n            shadowColor: '#91cc75',\n            borderType: 'dashed',\n            opacity: 0.5\n          }\n        },\n        49\n      ],\n      itemStyle: {\n        barBorderRadius: 5,\n        borderWidth: 1,\n        borderType: 'solid',\n        borderColor: '#73c0de',\n        shadowColor: '#5470c6',\n        shadowBlur: 3\n      }\n    }\n  ]\n};\n```\n\nIn this case, we defined the style of the bar chart by `'itemStyle'` of corresponding `series`. For complete configuration items and their usage, please check the configuration item manual: [`series.itemStyle`](${optionPath}series-bar.itemStyle)。\n\n### Width and Height of Column\n\nYou can use [`barWidth`](${optionPath}#series-bar.barWidth) to change the width of the bar. For instance, the `'barWidth'` in the following case was set to `'20%'`. It indicates that width of each bar is 20% of the category width. As there are 5 data in every series, 20% `'barWidth'` means 4% for the entire x-axis.\n\n```js live\noption = {\n  xAxis: {\n    data: ['A', 'B', 'C', 'D', 'E']\n  },\n  yAxis: {},\n  series: [\n    {\n      type: 'bar',\n      data: [10, 22, 28, 43, 49],\n      barWidth: '20%'\n    }\n  ]\n};\n```\n\nIn addition, [`barMaxWidth`](${optionPath}series-bar.barMaxWidth) has limited the maximum width of the bar. For some small value, you can declare a minimum height for the bar: [`barMinHeight`](${optionPath}series-bar.barMinHeight). When the corresponding height of data is smaller than the limit, ECharts will take 'barMinHeight' as the replaced height.\n\n### Column Spacing\n\nThere are two kinds of column spacing. One is the spacing between different series under the same category: [`barGap`](${optionPath}series-bar.barGap). The other is the spacing between categories: [`barCategoryGap`](${optionPath}series-bar.barCategoryGap).\n\n```js live\noption = {\n  xAxis: {\n    data: ['A', 'B', 'C', 'D', 'E']\n  },\n  yAxis: {},\n  series: [\n    {\n      type: 'bar',\n      data: [23, 24, 18, 25, 18],\n      barGap: '20%',\n      barCategoryGap: '40%'\n    },\n    {\n      type: 'bar',\n      data: [12, 14, 9, 9, 11]\n    }\n  ]\n};\n```\n\nIn this case, the `barGap` is `'20%'`. That means the distance between bars under the same category is 20% of the bar width. For instance, if we set the `barCategoryGap` to `'40%'`, the gap on each side of the bar will take 40% place in categories (compared with the width of the column).\n\nUsually, `barWidth` is not necessary to be clarified if `'barGap'` and `barCategoryGap` was set. If you need to make sure the bar is not too wide while the graph is large, try to use `barMaxWidth` to limit the maximum width of bars.\n\n> In the same cartesian coordinate system, the property will be shared by several column series. To make sure it takes effect on the graph, please set the property on the last bar chart series of the system.\n\n### Add Background Color for Bars\n\nYou might want to change the background color of bars sometimes. After ECharts v4.7.0, this function can be enabled by ['showBackground'](${optionPath}series-bar.showBackground) and configured by ['backgroundStyle'](${optionPath}series-bar.backgroundStyle).\n\n```js live\noption = {\n  xAxis: {\n    type: 'category',\n    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']\n  },\n  yAxis: {\n    type: 'value'\n  },\n  series: [\n    {\n      data: [120, 200, 150, 80, 70, 110, 130],\n      type: 'bar',\n      showBackground: true,\n      backgroundStyle: {\n        color: 'rgba(220, 220, 220, 0.8)'\n      }\n    }\n  ]\n};\n```\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/6df391d32552558f026b.js b/docs/_nuxt/js/6df391d32552558f026b.js
new file mode 100644
index 0000000..c0a71cb
--- /dev/null
+++ b/docs/_nuxt/js/6df391d32552558f026b.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{310:function(e,t,o){"use strict";o.r(t),t.default="# Get Help\n\n## Technical Problems\n\n### Make sure that existing documentation do not solve your problem\n\nECharts has a very large number of users, so it's more than likely that someone else has encountered and solved the problem you've had. By reading the documentation and using the search engine, you can solve your problem quickly by yourself without help from the community.\n\nTherefore, before doing anything else, make sure that current documentation and other resources can't solve your problem. Resources that can be helpful for you include,\n\n- [API](${mainSitePath}api.html)\n- [Option Manual](${mainSitePath}option.html) - you can try to use the search function\n- Articles in this handbook\n- [FAQ](${mainSitePath}faq.html)\n- Searching in [GitHub issue](https://github.com/apache/echarts/issues)\n- Using the search engine\n\n### Create the Minimal Reproducible Demo\n\nCreate an example on [Official Editor](${mainSitePath}examples/editor.html), [CodePen](https://codepen.io/Ovilia/pen/dyYWXWM), [CodeSandbox](https://codesandbox.io/s/echarts-basic-example-template-mpfz1s) or [JSFiddle](https://jsfiddle.net/plainheart/e46ozpqj/7/), which will make it easier for others to reproduce your problem.\n\nThe example should reproduce your problem in the simplest way. Removing unnecessary code and data can enable those who want to help you to locate and then solve the problem more quickly. Please refer to [How to Create a Minimal, Reproducible Example](https://stackoverflow.com/help/minimal-reproducible-example) for more details.\n\n### Determining if It's a Bug\n\n#### Report a Bug or Request a New Feature\n\nIf some behavior is different from the documentation or isn't what you expected, it's probably a bug. If it's a bug, or you have a feature request, please use the [issue template](https://github.com/apache/echarts/issues/new/choose) to create a new issue and describe it in detail as per the prompts.\n\n#### How-To Questions\n\nIf it's not a bug, but you don't know how to achieve something, try the <a href=\"https://stackoverflow.com/questions/tagged/echarts\">stackoverflow.com</a>\n\nIf you don't get an answer, you can also send an email to [dev@echarts.apache.org](mailto:dev@echarts.apache.org). In order for more people to understand your question and to get help in future searches, it is highly recommended to write the email in English.\n\n## Non-technical questions\n\nFor other non-technical questions, you can send an email in English to [dev@echarts.apache.org](mailto:dev@echarts.apache.org).\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/6e19bb4909646d7f1fb9.js b/docs/_nuxt/js/6e19bb4909646d7f1fb9.js
new file mode 100644
index 0000000..5676dc5
--- /dev/null
+++ b/docs/_nuxt/js/6e19bb4909646d7f1fb9.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[57],{358:function(n,e,t){"use strict";t.r(e),e.default="# Waterfall\n\nThere is no waterfall series in Apache ECharts, but we can simulate the effect using a stacked bar chart.\n\nAssuming that the values in the data array represent an increase or decrease from the previous value.\n\n```js\nvar data = [900, 345, 393, -108, -154, 135, 178, 286, -119, -361, -203];\n```\n\nThat is, the first data is `900` and the second data `345` represents the addition of `345` to `900`, etc. When presenting this data as a stepped waterfall chart, we can use three series: the first is a non-interactive transparent series to implement the suspension bar effect, the second series is used to represent positive numbers, and the third series is used to represent negative numbers.\n\n```js live\nvar data = [900, 345, 393, -108, -154, 135, 178, 286, -119, -361, -203];\nvar help = [];\nvar positive = [];\nvar negative = [];\nfor (var i = 0, sum = 0; i < data.length; ++i) {\n  if (data[i] >= 0) {\n    positive.push(data[i]);\n    negative.push('-');\n  } else {\n    positive.push('-');\n    negative.push(-data[i]);\n  }\n\n  if (i === 0) {\n    help.push(0);\n  } else {\n    sum += data[i - 1];\n    if (data[i] < 0) {\n      help.push(sum + data[i]);\n    } else {\n      help.push(sum);\n    }\n  }\n}\n\noption = {\n  title: {\n    text: 'Waterfall'\n  },\n  grid: {\n    left: '3%',\n    right: '4%',\n    bottom: '3%',\n    containLabel: true\n  },\n  xAxis: {\n    type: 'category',\n    splitLine: { show: false },\n    data: (function() {\n      var list = [];\n      for (var i = 1; i <= 11; i++) {\n        list.push('Oct/' + i);\n      }\n      return list;\n    })()\n  },\n  yAxis: {\n    type: 'value'\n  },\n  series: [\n    {\n      type: 'bar',\n      stack: 'all',\n      itemStyle: {\n        normal: {\n          barBorderColor: 'rgba(0,0,0,0)',\n          color: 'rgba(0,0,0,0)'\n        },\n        emphasis: {\n          barBorderColor: 'rgba(0,0,0,0)',\n          color: 'rgba(0,0,0,0)'\n        }\n      },\n      data: help\n    },\n    {\n      name: 'positive',\n      type: 'bar',\n      stack: 'all',\n      data: positive\n    },\n    {\n      name: 'negative',\n      type: 'bar',\n      stack: 'all',\n      data: negative,\n      itemStyle: {\n        color: '#f33'\n      }\n    }\n  ]\n};\n```\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/704c655ef01e9ffcb1f0.js b/docs/_nuxt/js/704c655ef01e9ffcb1f0.js
new file mode 100644
index 0000000..dadc35d
--- /dev/null
+++ b/docs/_nuxt/js/704c655ef01e9ffcb1f0.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[121],{422:function(n,t,e){"use strict";e.r(t),t.default="# 跨系列的全局过渡动画\n\n在[基础的过渡动画](${lang}/how-to/animation/transition)一文中我们介绍了在同一个系列中添加,修改以及移除数据的时候所应用的过渡动画,绝大部分场景下,这些基础的过渡动画效果已经满足我们的诉求,可以很好的表达数据的变化。\n\n有时候我们也会碰到更加复杂的需求,例如想要从一个表达数据对比的柱状图切换成表达数据占比比的饼图,或者想要将多个系列的散点图分布聚合成这几个系列的统计值对比的柱状图等等。在之前我们面对这些需求往往只能放弃动画效果采用直接切换的方式。在 5.2.0 中我们引入了全局过渡动画(Universal Transition)来满足这些更复杂的动画需求。\n\n全局过渡动画可以在切换系列类型的时候通过变形动画过渡,而不是生硬的直接切换。而且可以应用过渡动画的属性也更加丰富,包含了颜色,描边,不透明度等等的样式。\n\n下面是一个基础的柱状图和饼图之间变形过渡的例子:\n\n```js live {layout: 'bt'}\nconst dataset = {\n  dimensions: ['name', 'score'],\n  source: [\n    ['Hannah Krause', 314],\n    ['Zhao Qian', 351],\n    ['Jasmin Krause ', 287],\n    ['Li Lei', 219],\n    ['Karle Neumann', 253],\n    ['Mia Neumann', 165],\n    ['Böhm Fuchs', 318],\n    ['Han Meimei', 366]\n  ]\n};\nconst pieOption = {\n  dataset: [dataset],\n  series: [\n    {\n      type: 'pie',\n      // 通过 id 关联需要过渡动画的系列\n      id: 'Score',\n      radius: [0, '50%'],\n      universalTransition: true,\n      animationDurationUpdate: 1000\n    }\n  ]\n};\nconst barOption = {\n  dataset: [dataset],\n  xAxis: {\n    type: 'category'\n  },\n  yAxis: {},\n  series: [\n    {\n      type: 'bar',\n      // 通过 id 关联需要过渡动画的系列\n      id: 'Score',\n      // 每个数据都是用不同的颜色\n      colorBy: 'data',\n      encode: { x: 'name', y: 'score' },\n      universalTransition: true,\n      animationDurationUpdate: 1000\n    }\n  ]\n};\n\noption = barOption;\n\nsetInterval(() => {\n  option = option === pieOption ? barOption : pieOption;\n  // 使用 notMerge 的形式可以移除坐标轴\n  myChart.setOption(option, true);\n}, 2000);\n```\n\n## 跨系列的形变动画\n\n如上面例子所示,全局过渡动画最常见的一个应用场景就是切换系列类型时实现跨系列的过渡动画。\n\n基础的过渡动画会被应用于同一系列中的数据更新,而如何决定同一系列有两个因素,一个是`type`即系列的类型,还有一个是`name`即系列的名字(如果没有传入`name`则会默认使用`seriesIndex`),这两个组合在一起决定了更新前后是否是同一个系列。\n\n对于跨系列的过渡动画,系列类型已经改变了,我们就需要一个额外的标志来对应前后是否是同一个系列以及是否要应用过渡动画,这个标志就是`id`。\n\n因此我们首先要保证更新的时候给需要动画的系列都指定了唯一的`id`:\n\n```ts\nchart.setOption({\n  series: [\n    {\n      type: 'bar',\n      id: 'Main'\n      //...\n    }\n  ]\n});\n//...\nchart.setOption({\n  series: [\n    {\n      type: 'pie',\n      id: 'Main'\n      //...\n    }\n  ]\n});\n```\n\n然后我们通过`universalTransition`配置项开启全局过渡动画功能,\n\n```ts\nchart.setOption({\n  series: [\n    {\n      type: 'pie',\n      id: 'Main',\n      universalTransition: true\n      //...\n    }\n  ]\n});\n```\n\n开启后如上面例子演示的一样,ECharts 会从柱状图中使用的矩形采用最合适的方式形变成饼图中所使用的扇形。\n\n我们简单介绍一下这中间发生了什么:\n\n1. 在第二次 setOption 后,ECharts 会找到前后两个系列中数据的对应关系,分别执行入场动画,更新动画和移除动画\n\n> 跟基础的过渡动画一样,全局过渡动画也会根据数据的`name`属性进行数据的比对,从而相应的入场,更新和出场动画。\n\n2. 对于入场动画和移除动画,ECharts 会应用默认的淡入淡出动画\n3. 对于更新动画,因为图形的形状已经发生了改变,所以为了能够进行插值动画,ECharts 会先将两个不同的图形路径(矩形和扇形)分别转成贝塞尔曲线集合,进行对齐旋转等操作,从而可以以最自然的方式变形。在动画过程中这些路径都会被绘制成中间态的贝塞尔曲线\n4. 动画完成后继续使用默认的方式绘制。\n\n因此只要前后能够找到对应的数据,不管是什么系列,ECharts 都能够使用形变动画过渡。这是一套通用的方案,并不会有系列类型上的限制。\n\n我们可以在柱状图,饼图,散点图等常规的系列之间变形过渡:\n\n![](images/5-2-0/universal-transition.gif)\n\n在更复杂的柱状图和地图之间:\n\n![](images/5-2-0/universal-transition-2.gif)\n\n或者旭日图和矩形树图之间,甚至非常灵活的自定义系列之间都可以进行动画的过渡。\n\n![](images/5-2-0/universal-transition-3.gif)\n\n## Symbol 的形变动画\n\n除了跨系列过渡动画,对于散点图(scatter),象形柱图(pictorialBar)等图表,还会因为使用不同的`symbol`配置导致图形类型发生改变,在引入全局过渡动画之后,`symbol`的改变也可以实现变形的过渡。\n\n```ts\nchart.setOption({\n  series: {\n    type: 'scatter',\n    symbol: 'rect'\n  }\n});\n// 切换成圆形\nchart.setOption({\n  series: {\n    type: 'scatter',\n    symbol: 'circle',\n    universalTransition: true\n  }\n});\n```\n\n> 在这种情况下,因为是同一个系列内的动画过渡,所以我们不需要像上面跨系列一样指定 id 了。\n\n下面例子演示了不同类型的`symbol`形变的效果。\n\n```ts live { layout: 'bt' }\nlet xData = [];\nlet yData = [];\nlet data = [];\nfor (let y = 0; y < 5; y++) {\n  yData.push(y);\n  for (let x = 0; x < 5; x++) {\n    data.push([x, y, 5]);\n  }\n}\nfor (let x = 0; x < 5; x++) {\n  xData.push(x);\n}\nconst options = [\n  {\n    grid: {\n      left: 0,\n      right: 0,\n      top: 0,\n      bottom: 0\n    },\n    xAxis: {\n      show: false,\n      type: 'category',\n      data: xData\n    },\n    yAxis: {\n      show: false,\n      type: 'category',\n      data: yData\n    },\n    series: [\n      {\n        type: 'scatter',\n        data: data,\n        symbol: 'roundRect',\n        symbolKeepAspect: true,\n        universalTransition: true,\n        symbolSize: 50\n      }\n    ]\n  },\n  {\n    series: [\n      {\n        type: 'scatter',\n        symbol: 'circle'\n      }\n    ]\n  },\n  {\n    // heart\n    series: [\n      {\n        symbol:\n          'path://M23.6 2c-3.363 0-6.258 2.736-7.599 5.594-1.342-2.858-4.237-5.594-7.601-5.594-4.637 0-8.4 3.764-8.4 8.401 0 9.433 9.516 11.906 16.001 21.232 6.13-9.268 15.999-12.1 15.999-21.232 0-4.637-3.763-8.401-8.4-8.401z'\n      }\n    ]\n  },\n  {\n    // happy\n    series: [\n      {\n        symbol:\n          'path://M16 0c-8.837 0-16 7.163-16 16s7.163 16 16 16 16-7.163 16-16-7.163-16-16-16zM22 8c1.105 0 2 1.343 2 3s-0.895 3-2 3-2-1.343-2-3 0.895-3 2-3zM10 8c1.105 0 2 1.343 2 3s-0.895 3-2 3-2-1.343-2-3 0.895-3 2-3zM16 28c-5.215 0-9.544-4.371-10-9.947 2.93 1.691 6.377 2.658 10 2.658s7.070-0.963 10-2.654c-0.455 5.576-4.785 9.942-10 9.942z'\n      }\n    ]\n  },\n  {\n    // evil\n    series: [\n      {\n        symbol:\n          'path://M32 2c0-1.422-0.298-2.775-0.833-4-1.049 2.401-3.014 4.31-5.453 5.287-2.694-2.061-6.061-3.287-9.714-3.287s-7.021 1.226-9.714 3.287c-2.439-0.976-4.404-2.886-5.453-5.287-0.535 1.225-0.833 2.578-0.833 4 0 2.299 0.777 4.417 2.081 6.106-1.324 2.329-2.081 5.023-2.081 7.894 0 8.837 7.163 16 16 16s16-7.163 16-16c0-2.871-0.757-5.565-2.081-7.894 1.304-1.689 2.081-3.806 2.081-6.106zM18.003 11.891c0.064-1.483 1.413-2.467 2.55-3.036 1.086-0.543 2.16-0.814 2.205-0.826 0.536-0.134 1.079 0.192 1.213 0.728s-0.192 1.079-0.728 1.213c-0.551 0.139-1.204 0.379-1.779 0.667 0.333 0.357 0.537 0.836 0.537 1.363 0 1.105-0.895 2-2 2s-2-0.895-2-2c0-0.037 0.001-0.073 0.003-0.109zM8.030 8.758c0.134-0.536 0.677-0.862 1.213-0.728 0.045 0.011 1.119 0.283 2.205 0.826 1.137 0.569 2.486 1.553 2.55 3.036 0.002 0.036 0.003 0.072 0.003 0.109 0 1.105-0.895 2-2 2s-2-0.895-2-2c0-0.527 0.204-1.005 0.537-1.363-0.575-0.288-1.228-0.528-1.779-0.667-0.536-0.134-0.861-0.677-0.728-1.213zM16 26c-3.641 0-6.827-1.946-8.576-4.855l2.573-1.544c1.224 2.036 3.454 3.398 6.003 3.398s4.779-1.362 6.003-3.398l2.573 1.544c-1.749 2.908-4.935 4.855-8.576 4.855z'\n      }\n    ]\n  },\n  {\n    // hipster\n    series: [\n      {\n        symbol:\n          'path://M16 0c-8.837 0-16 7.163-16 16s7.163 16 16 16 16-7.163 16-16-7.163-16-16-16zM22 8c1.105 0 2 0.895 2 2s-0.895 2-2 2-2-0.895-2-2 0.895-2 2-2zM10 8c1.105 0 2 0.895 2 2s-0.895 2-2 2-2-0.895-2-2 0.895-2 2-2zM16.994 21.23c-0.039-0.035-0.078-0.072-0.115-0.109-0.586-0.586-0.878-1.353-0.879-2.121-0 0.768-0.293 1.535-0.879 2.121-0.038 0.038-0.076 0.074-0.115 0.109-2.704 2.453-9.006-0.058-9.006-3.23 1.938 1.25 3.452 0.306 4.879-1.121 1.172-1.172 3.071-1.172 4.243 0 0.586 0.586 0.879 1.353 0.879 2.121 0-0.768 0.293-1.535 0.879-2.121 1.172-1.172 3.071-1.172 4.243 0 1.427 1.427 2.941 2.371 4.879 1.121 0 3.173-6.302 5.684-9.006 3.23z'\n      }\n    ]\n  },\n  {\n    // shocked\n    series: [\n      {\n        symbol:\n          'path://M16 0c-8.837 0-16 7.163-16 16s7.163 16 16 16 16-7.163 16-16-7.163-16-16-16zM10 14c-1.105 0-2-1.343-2-3s0.895-3 2-3 2 1.343 2 3-0.895 3-2 3zM16 26c-2.209 0-4-1.791-4-4s1.791-4 4-4c2.209 0 4 1.791 4 4s-1.791 4-4 4zM22 14c-1.105 0-2-1.343-2-3s0.895-3 2-3 2 1.343 2 3-0.895 3-2 3z'\n      }\n    ]\n  },\n  {\n    // pie chart\n    series: [\n      {\n        symbol:\n          'path://M14 18v-14c-7.732 0-14 6.268-14 14s6.268 14 14 14 14-6.268 14-14c0-2.251-0.532-4.378-1.476-6.262l-12.524 6.262zM28.524 7.738c-2.299-4.588-7.043-7.738-12.524-7.738v14l12.524-6.262z'\n      }\n    ]\n  },\n  {\n    // users\n    series: [\n      {\n        symbol:\n          'path://M10.225 24.854c1.728-1.13 3.877-1.989 6.243-2.513-0.47-0.556-0.897-1.176-1.265-1.844-0.95-1.726-1.453-3.627-1.453-5.497 0-2.689 0-5.228 0.956-7.305 0.928-2.016 2.598-3.265 4.976-3.734-0.529-2.39-1.936-3.961-5.682-3.961-6 0-6 4.029-6 9 0 3.096 1.797 6.191 4 7.432v1.649c-6.784 0.555-12 3.888-12 7.918h8.719c0.454-0.403 0.956-0.787 1.506-1.146zM24 24.082v-1.649c2.203-1.241 4-4.337 4-7.432 0-4.971 0-9-6-9s-6 4.029-6 9c0 3.096 1.797 6.191 4 7.432v1.649c-6.784 0.555-12 3.888-12 7.918h28c0-4.030-5.216-7.364-12-7.918z'\n      }\n    ]\n  },\n  {\n    // mug\n    series: [\n      {\n        symbol:\n          'path://M30 10h-6v-3c0-2.761-5.373-5-12-5s-12 2.239-12 5v20c0 2.761 5.373 5 12 5s12-2.239 12-5v-3h6c1.105 0 2-0.895 2-2v-10c0-1.105-0.895-2-2-2zM5.502 8.075c-1.156-0.381-1.857-0.789-2.232-1.075 0.375-0.286 1.075-0.694 2.232-1.075 1.811-0.597 4.118-0.925 6.498-0.925s4.688 0.329 6.498 0.925c1.156 0.381 1.857 0.789 2.232 1.075-0.375 0.286-1.076 0.694-2.232 1.075-1.811 0.597-4.118 0.925-6.498 0.925s-4.688-0.329-6.498-0.925zM28 20h-4v-6h4v6z'\n      }\n    ]\n  },\n  {\n    // plane\n    series: [\n      {\n        symbol:\n          'path://M24 19.999l-5.713-5.713 13.713-10.286-4-4-17.141 6.858-5.397-5.397c-1.556-1.556-3.728-1.928-4.828-0.828s-0.727 3.273 0.828 4.828l5.396 5.396-6.858 17.143 4 4 10.287-13.715 5.713 5.713v7.999h4l2-6 6-2v-4l-7.999 0z'\n      }\n    ]\n  }\n];\nlet optionIndex = 0;\noption = options[optionIndex];\nsetInterval(function() {\n  optionIndex = (optionIndex + 1) % options.length;\n  myChart.setOption(options[optionIndex]);\n}, 700);\n```\n\n\x3c!--\n## 多对多映射\n\n上面我们介绍的都是在数据更新时一对一的过渡动画,有时候我们的更新是对数据的聚合或者下钻,并不是一对一的,这个时候我们可以采用合并或者分割的动画来表现数据的聚合和下钻效果。\n\n### 数据聚合\n\nECharts 的统计插件 [echarts-stat](https://github.com/ecomfe/echarts-stat) 提供了一些常用的聚合方法,\n\n### 数据下钻\n\n### 如何分割图形 --\x3e\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/72ddf7e6bc0a4da0c13f.js b/docs/_nuxt/js/72ddf7e6bc0a4da0c13f.js
new file mode 100644
index 0000000..1ab1f38
--- /dev/null
+++ b/docs/_nuxt/js/72ddf7e6bc0a4da0c13f.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[32],{333:function(e,t,r){"use strict";r.r(t),t.default='# Area Line Chart\n\bThe area line chart is similar to the basic line chart. They both described the trend of data over time. The difference is that the fill color and texture of the area line chart created a surface that represents the data volume. For a line chart, the filling area can draw attention for users to the trend of the total value. Therefore, the area line chart is mostly used to convey the size of the trend but not single values.\n\n<iframe max-width="830" width="100%" height="400" \nsrc="https://gallery.echartsjs.com/view-lite.html?cid=area-simple"></iframe>\n\n\n## Suggestion for Using Area Line Chart\n\n1. The area line chart uses the filling is to represent the data. While there are several layers in one chart, try to make sure that the data are not overlapping. If the overlapping is not avoidable, you define the color and opacity to an appropriate value to make the chart readable. \n\n<iframe max-width="830" width="100%" height="400" \nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xHJ-4tL84M"></iframe>\n\n2. The area line chart is strong to display two or three categories of data. We suggest not to show more than 4 groups, or there will be too many data series to identify the data like the following chart. So, we need to avoid an area line chart that has more than three series in one chart.\n\n<iframe max-width="830" width="100%" height="400" \nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xHyNDxOo4M"></iframe>\n\n3. You should not use the area line chart while there are no boundaries between data values. As shown below, it is familiar that there are 3 different colors at first glance.\n\n<iframe max-width="830" width="100%" height="400" \nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xSkO64PIEG&v=1"></iframe>\n'}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/72e8528796ba934b83a4.js b/docs/_nuxt/js/72e8528796ba934b83a4.js
new file mode 100644
index 0000000..101c2cc
--- /dev/null
+++ b/docs/_nuxt/js/72e8528796ba934b83a4.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[25],{326:function(e,t,n){"use strict";n.r(t),t.default='# Security Guidelines\n\n## Overview\n\nECharts aims to provide rich and flexible visualization capabilities. Although the vast majority of its APIs do not require special security considerations, sereval APIs are exceptions. For example, the option `tooltip.formatter` accepts a raw HTML string, allowing full control over the component\'s content and layout; the option `title.link` uses the provided URL string directly without automatic sanitization. While this flexibility is powerful, security risks may arise if the input comes from untrusted sources. These APIs are listed below, along with suggestions on how to use these features safely.\n\nAny security issues can be reported according to [ASF Security Page](https://echarts.apache.org/en/security.html).\n\nNote: This document is intended for ECharts API callers. [Security Checklist for Code Contributors](https://github.com/apache/echarts/wiki/Security-Checklist-for-Code-Contributors) is another document used before submitting a pull request to ECharts. It is not intended for ECharts API callers, but they may refer to it if interested.\n\n\n## Security Model and Checklist [[[#security_model_and_checklist]]]\n\nECharts focuses on visualization logic. It generally assumes that inputs originate from trusted sources and does not perform automatic sanitization, as in the case with most frontend UI libraries. In fact, ECharts itself cannot properly sanitize untrusted inputs, because it can not determine which inputs are untrusted, and no universal sanitization rules fit all cases. However, ECharts should clearly identify which APIs (especially ECharts options) require security-related preprocessing or considerations in specific use cases. Given the large number of ECharts options, preprocess all inputs in every case would be impractical and unnecessary.\n\nECharts renders using Canvas or SVG, except for several special components that allow HTML rendering (e.g., [tooltip](${optionPath}tooltip), [dataView](${optionPath}toolbox.feature.dataView)). ECharts APIs accept Non-JS-function inputs and JS-function inputs. JS-function inputs are intended to be execute. Most non-JS-function inputs (e.g., plain text provided to be rendered) are treated as data only, and are inherently prevented from code evaluation and execution. Therefore, they generally do not require sanitization from malicious code. However, several APIs allow embeding potential unsafe content (for example, raw HTML or raw URLs) into the page. These APIs are powerful but vulnerable to Cross-Site Scripting (XSS) and related attacks if the inputs originate from untrusted sources.\n\n**Generally speaking, if no untrusted content is involved, these injection vulnerabilities will not arise.** Untrusted content refers to content that originates from a source that can not be fully controlled, or that can be modified or injected by users or external systems. Developers must assume it unsafe to use directly in HTML, CSS and JS. For example, content is untrusted if it is produced by users or received from a client. However, handling user-provided content is often unavoidable. For example, render user data fetched from a database inside an HTML-based `tooltip` through a customized formatter. In such cases, additional processing is required to ensure correctness and safety -- primarily through HTML escaping, and additionally through sanitization when there are parts that cannot be escaped and originate from untrusted sources.\n\nBefore deploying charts, please review this **checklist** to ensure your usage is safe:\n\n| APIs | Potential Risks and Suggestions |\n| ------|------------------ |\n| **option [tooltip.formatter](${optionPath}tooltip.formatter)**<br>· `formatter` allows HTML string or DOM elements input, which are later rendered directly inside the tooltip, where XSS risks need to be considered.<br>(exceptions): A string directly set to the `formatter` is treated as a simple template for later combining with data internally. [tooltip.renderMode: \'richText\'](${optionPath}tooltip.renderMode) is another level of templating syntax for styling. Both of them are internally implemented and safe from injection.<br><br>**option [toolbox.feature.dataView.optionToContent](${optionPath}toolbox.feature.dataView.optionToContent)**<br>**option [toolbox.feature.dataView.title](${optionPath}toolbox.feature.dataView.title)**<br>**option [toolbox.feature.dataView.lang](${optionPath}toolbox.feature.dataView.lang)**<br>· The `tooltip.dataView` panel is fully rendered in HTML. Certain parts of the HTML string are allowed to be customized via these APIs. | XSS risks should be considered. In most cases, HTML escaping alone is sufficient. But if any unescaped parts originate from untrusted sources, more measures are required (e.g., sanitization, sandboxing).<br><br>See section ["Passing Raw HTML Safely"](${lang}/best-practices/security#passing_raw_html_safely) for safe usage recommendations. |\n| **option [tooltip.extraCssText](${optionPath}tooltip.extraCssText)**<br>· `extraCssText` accepts a raw CSS style string for later directly appending to `tooltipEl.style.cssText`(via the DOM API).<br>(exceptions): this option is not applicable when [tooltip.renderMode: \'richText\'](${optionPath}tooltip.renderMode).<br> | Safe if the input comes from trusted sources; otherwise, a careful assessment is required.<br><br>See section ["Passing inline CSS Safely"](${lang}/best-practices/security#passing_inline_css_safely) for details. |\n| **option [title.link](${optionPath}title.link)**<br>**option [title.sublink](${optionPath}title.sublink)**<br>**option [series-treemap.data.link](${optionPath}series-treemap.data.link)**<br>**option [series-sunburst.data.link](${optionPath}series-sunburst.data.link)**<br>· They accept raw URLs directly for these links. | Safe if the input comes from trusted sources; otherwise, XSS risks should be considered.<br><br>See section ["Passing Raw URLs Safely"](${lang}/best-practices/security#passing_raw_urls_safely) for safe usage recommendations.\n**option [toolbox.feature.saveAsImage.name](${optionPath}toolbox.feature.saveAsImage.name)**<br>**option [toolbox.feature.saveAsImage.type](${optionPath}toolbox.feature.saveAsImage.type)**<br>**option [title[0].text](${optionPath}title.text)**<br>· The download filename is assembled by `{name}.{type}` without validation or sanitization. If `name` is not provided, `title[0].text` (if any) has historically been used instead, although this usage is not recommended. | See section ["Passing Download Filename Safely"](${lang}/best-practices/security#passing_download_filename_safely) for safe usage recommendations. |\n| All JS-function inputs (callbacks) | This is generally not a concern, unless special requirements involve untrusted code.<br><br>See section ["Passing JS Function Safely"](${lang}/best-practices/security#passing_js_function_safely) for details. |\n\n\n## Passing Raw HTML Safely [[[#passing_raw_html_safely]]]\n\nSection ["Security Model and Checklist"](${lang}/best-practices/security#security_model_and_checklist) have listed the APIs that accept raw HTML directly. Untrusted HTML may lead to XSS and related attacks, so additional processing is required before passing content to ECharts. Several commonly used mitigation approaches -- "HTML Escaping", "Sanitization", "Sandboxing" are described below. In most cases, "HTML Escaping" is sufficient, except when unescaped content comes from untrusted sources.\n\n### HTML Escaping [[[#passing_raw_html_safely_html_escaping]]]\nHTML escaping is always necessary for data before assembling it to an HTML string -- not only for security, but also for the basic correctness of display.\n\nA typical and simplest HTML escaping implementation is these character conversions:\n```\n\'&\' => \'&amp;\'\n\'<\' => \'&lt;\'\n\'>\' => \'&gt;\'\n\'"\' => \'&quot;\'\n"\'" => \'&#39;\n```\nIt removes the functionality from the markup characters, thereby closing the attack vector for code injection (e.g., `<script>...<\/script>`), regardless of whether the content is trusted or untrusted.\n\nFor example,\n```js\n// Incorrect and unsafe.\nformatter: params => {\n    const { name, value } = params;\n    // May cause incorrect rendering if `name` or `value` contain functional\n    // charactors like \'<\', \'>\', etc.\n    // Additionally, it introduces XSS risks if `name` or `value` come from\n    // untrusted sources, where malicious code may be injected into that strings.\n    return `${name}, <b>${value}</b>`;\n}\n// Correct and safe.\nformatter: params => {\n    const { name, value } = params;\n    return `${echarts.format.encodeHTML(name)}, <b>${echarts.format.encodeHTML(value)}<b/>`;\n}\n```\n\nOther approaches, like using DOM API `.textContent = `, can also escape HTML.\n\nIn most use cases, untrusted content (e.g., user-provided text) is only used for display as plain text, while markup tokens (i.e., parts not meant to be escaped, such as HTML tags or attributes) are fully controlled by the application owner and therefore trusted. In this scenario, HTML escaping alone is an effective and simple way to prevent from XSS, as lone as all untrusted content is properly escaped.\n\n### Sanitization [[[#passing_raw_html_safely_sanitization]]]\n\nSome use cases require untrusted markup tokens to be interpreted as actual markup. For example, text from a database may include styling or functional tags (e.g., `<em>`, `<a href="...">`) that are meant to be interpreted rather than displayed as plain text. Another example is that users or untrusted sources are allowed to provide HTML templates that define structures and styles, which are later combined with data content to produce the final renderable HTML and passed to ECharts.\n\nIn these cases, the security risks are heightened. Sanitization can be applied to mitigate those risks, provided that no embedded JS and CSS code is allowed to execute. A sanitizer filters HTML content based on predefined whitelists -- for example, removing `<script>` and `<style>` blocks, `<link>` elements, inline CSS, event handler attributes such as `onclick`, and URLs using `javascript:`/`data:` protocol. It\'s recommended to use a well-maintained and widely adopted sanitizer rather than writing your own regex or manual string manipulations.\n\nSanitization may be enforced on the client-side, on the server-side, or both, depending on the product requirements and threat model. For example, concerning content that originates from client (e.g., submitted by users), relying only on client-side sanitization is insufficient because an attacker can bypass the client and submit crafted payloads directly to the server. For instance, an online visual editor lets users compose posts in a WYSIWYG fashion, where users can choose from several built-in HTML snippets/templates or JS-functions (e.g., for [tooltip.formatter](${optionPath}tooltip.formatter) or [label.formatter](${optionPath}series-scatter.label.formatter)). If the selected or generated HTML text or JS-function text are sent from client to server and persisted to the database without any additional handling, an attacker can simulate a network request to inject malicious code. Later, when those options are retrieved and passed to [chart.setOption()](${apiPath}echartsInstance.setOption), the malicious code will execute. There are some recommended mitigations for this case:\n+ Persist only reference (IDs) to this built-in snippets/tempates or JS-functions, not raw code supplied by client.\n+ If user-provided snippets are allowed for expressiveness (beyond built-in selections), some third-party string templating libraries may be introduced to preventing injection.\n+ If user-provided snippets must allow HTML (beyond the approaches above), enforce strict server-side sanitization or validation before persisting. This should include removing all JS, CSS, and other potentially unsafe content. Additionally, consider using a sandboxed iframe to limit the potential impact of any remaining security issues.\n\nAchieving sufficient security through sanitization is sometimes not easy. It requires proper configurations, must be kept up to date with browers changes, and often needs to be combined with other defense mechanisms to be "safe enough" for most real-world use cases. HTML is extremely complex -- the more features are allowed in untrusted content, the more potential attack vectors are introduced.\n\n### Sandboxing [[[#passing_raw_html_sandboxing]]]\n\nIf executing untrusted code is required, or other measures are considered insufficient, a sandboxed iframe can provide a higher level of security, as used by services like JSFiddle and CodePen.\n\n\n## Passing inline CSS Safely [[[#passing_inline_css_safely]]]\n\nAlthough CSS safety issues are covered by the discussion about HTML safety (see section ["Passing Raw HTML Safely"](${lang}/best-practices/security#passing_raw_html_safely)), this section focuses on the APIs that only accept inline CSS strings (those that modify `style` attribute via the DOM API `.style.cssText =`), which are listed in section ["Security Model and Checklist"](${lang}/best-practices/security#security_model_and_checklist).\n\nIf the inline CSS strings come entirely from trusted sources (e.g., they are part of your application), security considerations are minimal -- this is also the most common case.\n\nOtherwise, untrusted CSS can lead to attacks. Some widely adopted HTML sanitizers support CSS sanitization, but may remove all CSS by default, since sanitizing CSS properly is quite complex. Therefore, accepting untrusted CSS requires meticulous assessment base on the specific use case.\n\n\n## Passing Raw URLs Safely [[[#passing_raw_urls_safely]]]\n\nAlthough URL safety issues is covered by the discussion of HTML safety (see section ["Passing Raw HTML Safely"](${lang}/best-practices/security#passing_raw_html_safely)), this section focuses on the APIs that only accept URL strings, which is listed in section ["Security Model and Checklist"](${lang}/best-practices/security#security_model_and_checklist).\n\nIf the URL strings are entirely from trusted sources (e.g., they are part of your application), security considerations are minimal.\n\nOtherwise, untrusted URL strings can lead to attacks, for example, by using protocols, such as `javascript:` or `data:`, to execute malicious code. Therefore, before passing them to ECharts, sanitization should be enforced, typically by validating the protocol against a specified whitelist.\n\n\n## Passing Download Filename Safely [[[#passing_download_filename_safely]]]\n\nCurrently, only the [saveAsImage](${optionPath}toolbox.feature.saveAsImage) feature accepts an input as a filename. This input can be considered safe if it originates from trusted sources, does not exceed the length limit, and contains exclusively ASCII alphabetic characters.\n\nOtherwise, although modern browsers have significantly improved their handling of unsanitized download filenames (e.g., path traversal sequences `../`, `..\\\\` are stripped, and special characters are correctly handled), some risks still remain, including the inconsistent behaviors with reserved characters and length limitations. Furthermore, the behavior of older clients or browsers is unclear and less robust. Therefore, sanitization or preprocessing are required for these untrusted inputs.\n\n\n## Passing JS Function Safely [[[#passing_js_function_safely]]]\n\nECharts options (i.e., the input to [chart.setOption()](${apiPath}echartsInstance.setOption)) are primarily declarative, but some options accept JS-function (callbacks) to provide greater expressiveness and flexibility. Examples include [label.formatter](${optionPath}series-scatter.label.formatter), [axisTick.interval](${optionPath}xAxis.axisTick.interval), and similar. In most use cases, these JS-function options are part of the source code of the application itself and thus fully trusted, so no security risk is introduced.\n\nHowever, certain products may allow JS-function options to originate from untrusted sources, for example, end users. Allowing this introduces both security risks and maintenance costs. Essentially, this scenario carries the same level of risk as allowing code execution in untrusted raw HTML, and can be mitigated using similar approaches, as discussed in ["Passing Raw HTML Safely"](${lang}/best-practices/security#passing_raw_html_safely).\n\n'}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/7548a9b2f9af142ac72f.js b/docs/_nuxt/js/7548a9b2f9af142ac72f.js
new file mode 100644
index 0000000..063cdec
--- /dev/null
+++ b/docs/_nuxt/js/7548a9b2f9af142ac72f.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[71],{372:function(e,t,n){"use strict";n.r(t),t.default='# Intelligent Pointer Snapping\n\nSome interactive elements may be relatively small in charts, so sometimes it is difficult for users to click and do other operations accurately, especially on the mobile. Therefore, in Apache ECharts<sup>TM</sup> 5.4.0, we introduced the concept of "intelligent pointer snapping".\n\nStarting from this version, by default, ECharts enables pointer snapping for mobile charts and disables it for non-mobile charts.\n\n> If it needs to be enabled for all platforms, it can be achieved by setting `opt.useCoarsePointer` to `true` in [init](${mainSitePath}api.html#echarts.init); set to `false` is turned off for all platforms.\n\n## Snapping Algorithm\n\nWhen a mouse or touch event occurs, ECharts will determine whether it is intersecting with an interactive element based on the position of the mouse or touch. If it is, the element is the object to be interacted with, which is the same logic before this optimization. If not, find an element that is closest to the mouse or touch position within a certain range.\n\n> The default range is 44px (see [W3C standard](https://www.w3.org/WAI/WCAG21/Understanding/target-size.html)), developers can set this value through `opt.pointerSize` when [init](${mainSitePath}api.html#echarts.init).\n\nMore specifically, ECharts will loop through different angles and different radii (within `opt.pointerSize`) around the mouse or touch position until it finds an element that intersects it. If found, the element is considered to be the interactive object.\n\n<img width="100%" height="100%" style="max-width: 441px"\nsrc="images/how-to/coarse-pointer-en.gif">\n</img>\n\nThat is, if an element is within the `opt.pointerSize` radius of the mouse or touch position, the closest intersected element is considered the interactive object.\n\n## Performance\n\nAs for the implementation, we first judge the intersection between the mouse or touch position and the AABB bounding box of all interactive elements, so as to quickly eliminate most of the elements that is not intersecting. Then, we perform an accurate path intersection judgment on the remaining elements. Therefore, from the perspective of user experience, there is hardly any perceivable performance loss.\n\nFor chart series with large-scale data (that is, bar charts, scatter charts, etc. with `large: true` enabled), the snapping will not be enabled.\n'}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/7577aef7035f2680e17a.js b/docs/_nuxt/js/7577aef7035f2680e17a.js
new file mode 100644
index 0000000..e82927e
--- /dev/null
+++ b/docs/_nuxt/js/7577aef7035f2680e17a.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[140],{441:function(n,e,t){"use strict";t.r(e),e.default='# 在微信小程序中使用 ECharts\n\n[echarts-for-weixin](https://github.com/ecomfe/echarts-for-weixin) 项目提供了一个小程序组件,用这种方式可以方便地使用 ECharts。\n\n## 使用方式\n\n1. 下载该项目\n2. 如有必要,将 `ec-canvas` 目录下的 `echarts.js` 替换为最新版的 ECharts。如果希望减小包体积大小,可以使用[自定义构建](${mainSitePath}/builder.html)生成并替换 `echarts.js`\n3. `pages` 目录下是使用的示例文件,可以作为参考,或者删除不需要的页面。\n\n更详细的说明请参见 [echarts-for-weixin](https://github.com/ecomfe/echarts-for-weixin) 项目。\n\n## 注意事项\n\n最新版的 ECharts 微信小程序支持微信 Canvas 2d,当用户的基础库版本 >= 2.9.0 且没有设置 `force-use-old-canvas="true"` 的情况下,使用新的 Canvas 2d(默认)。\n\n使用新的 Canvas 2d 可以提升渲染性能,解决非同层渲染问题,强烈建议开启。\n\n更详细的说明请参见 [Canvas 2d 版本要求](https://github.com/ecomfe/echarts-for-weixin#canvas-2d-%E7%89%88%E6%9C%AC%E8%A6%81%E6%B1%82)。\n'}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/76a5bbe4c7d3c081b265.js b/docs/_nuxt/js/76a5bbe4c7d3c081b265.js
new file mode 100644
index 0000000..45ebb86
--- /dev/null
+++ b/docs/_nuxt/js/76a5bbe4c7d3c081b265.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[38],{339:function(e,t,n){"use strict";n.r(t),t.default='# Scatter Chart\n\nThe scatter chart shows the relation between the two variables. Data is embodied as a collection of points, which is appropriate to compare a large number of data without considering the time. The scatter chart can identify the relevant and relation of two variables thus find some trend. The scatter chart is also workable to find outliers or to understand data distribution. The chart above shows the distribution of the height and weight of students in a class.\n\n<iframe max-width="830" width="100%" height="400"\nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xSkCyUwKNG&v=1">\n</iframe>\n\nThe scatter chart can reflect the correlation(relation between variables) of a different type. It can be positively correlated, negatively correlated and uncorrelated.\n\n- Positively Correlated: When one value increases, the other value increases.\n\n- Negatively Correlated: When one value increases, the other value decreases.\n\n- Uncorrelated: Two values have no obvious relation and have no influence on each other.\n\n<img max-width="830" width="100%" height="100%"\nsrc="images/design/scatter/scatter5.jpg">\n</img>\n\nTo be mentioned, the scatter chart can effectively illustrate the correlation between the two variables. However, it cannot strongly prove there exist causality. For example, AD serving and Visits are positively correlated, but we cannot prove that more AD serving must lead to more Visits. However, we have enough reason to increase the AD serving and observe the outcome after we find out the positive correlation between them.\n\n## Suggestion for Using Scatter Chart\n\n1. If no correlation was shown in the scatter chart, then the scatter chart is not the best choice.\n\n2. If the package included a different series, you can use different colors for each series. As an example, add the legend to mark male as blue, female as red. You can not only distinguish the height and weight of different genders but also add an auxiliary line for the average of each series to improve the understanding of the distribution. In this case, females have more amount higher than the average value than lower.\n\n<iframe max-width="830" width="100%" height="400"\nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xBy9E2oufM">\n</iframe>\n\nThe trend line is useful when observing the relationship between two variables. The shape of the trend line can explain the relation type of two variables as well as make a prediction. It is better to include only two trend lines to avoid interference with the reading.\n\n3. The scatter points can present a good appearance only with adequate and relevant data. It is meaningless to draw a chart with very little and unrelated values.\n'}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/7791e886b6b16c20984f.js b/docs/_nuxt/js/7791e886b6b16c20984f.js
new file mode 100644
index 0000000..f4a047e
--- /dev/null
+++ b/docs/_nuxt/js/7791e886b6b16c20984f.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[24],{325:function(n,w,o){"use strict";o.r(w),w.default=""}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/7848ab3e6855a8588bbe.js b/docs/_nuxt/js/7848ab3e6855a8588bbe.js
new file mode 100644
index 0000000..7e73c42
--- /dev/null
+++ b/docs/_nuxt/js/7848ab3e6855a8588bbe.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[131],{432:function(n,e,t){"use strict";t.r(e),e.default="# 阶梯线图\n\n阶梯线图又称方波图,它使用水平和垂直的线来连接两个数据点,而普通折线图则直接将两个点连接起来。阶梯线图能够很好地表达数据的突变。\n\n在 ECharts 中,系列的 `step` 属性用来表征阶梯线图的连接类型,它共有三种取值:`'start'`、`'middle'` 和 `'end'`,分别表示在当前点,当前点与下个点的中间点,下个点拐弯。\n\n```js live\noption = {\n  xAxis: {\n    type: 'category',\n    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']\n  },\n  yAxis: {\n    type: 'value'\n  },\n  series: [\n    {\n      name: 'Step Start',\n      type: 'line',\n      step: 'start',\n      data: [120, 132, 101, 134, 90, 230, 210]\n    },\n    {\n      name: 'Step Middle',\n      type: 'line',\n      step: 'middle',\n      data: [220, 282, 201, 234, 290, 430, 410]\n    },\n    {\n      name: 'Step End',\n      type: 'line',\n      step: 'end',\n      data: [450, 432, 401, 454, 590, 530, 510]\n    }\n  ]\n};\n```\n\n> 请注意这个例子中不同的 `step` 取值对应的数据点和连线的区别。\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/7c8f163eab8103a5839a.js b/docs/_nuxt/js/7c8f163eab8103a5839a.js
new file mode 100644
index 0000000..79945c2
--- /dev/null
+++ b/docs/_nuxt/js/7c8f163eab8103a5839a.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[102],{403:function(n,t,e){"use strict";e.r(t),t.default='# 堆叠面积图\n\n堆积面积图是一种特殊的面积图,可以用来比较在一个区间内的多个变量。堆叠面积图和面积图的区别在于,堆叠面积图每个数据系列的起点都是基于前一个数据系列绘制的,也就是每度量一行就要填满行与行之间的区域。\n\n如果有多个数据系列,并想分析每个类别的部分到整体的关系,并展现部分量对于总量的贡献时,使用堆积面积图是非常合适的选择。例如下图显示某个销售员对总销售额的贡献。\n\n<iframe max-width="830" width="100%" height="400"\nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xHySthj74z">\n</iframe>\n\n有两种不同的堆积面积图类型:\n\n- <b>传统的堆积面积图</b>:直接使用原始值堆叠,显示整个过程如何变化。\n- <b>百分比堆积面积图</b>:百分比堆积显示不同部分之间的关 ​​ 系如何随时间而变化。其中累积的总数不重要,重要的是显示出类别分布在整体中的作用。\n\n<iframe max-width="830" width="100%" height="400"\nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xSyBN2i7Vf">\n</iframe>\n\n## 堆叠面积图的使用建议\n\n1、图表有重叠的数据时,类别数量越多,重叠越多,因此可见度越低。如果使用面积图(如下示例)时会因为系列的重叠而无法阅读。\n\n<iframe max-width="830" width="100%" height="400"\nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xHyNDxOo4M">\n</iframe>\n\n那同样的数据,换成使用堆叠面积图展示,则相对更容易阅读。\n\n<iframe max-width="830" width="100%" height="400"\nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xSyBN2i7Vf">\n</iframe>\n\n<div class="article-look-outside">\n\t<div class="article-look-inside" style="padding-bottom:50%">\n\t    <iframe class="article-look-content"\n\t    src="https://gallery.echartsjs.com/view-lite.html?cid=xHyNDxOo4M">\n\t    </iframe>\n\t</div>\n</div>\n\n2、虽然多数据系列时堆叠面积图比面积图有更好的展示效果,但依然不建议堆叠面积图中包含过多数据系列,最好不要多于 7 个,以免数据难以辨识。\n\n3、堆积面积图要展示部分和整体之间的关系,所以不能用于包含负值的数据的展示。\n\n4、建议堆叠面积图中把变化量较大的数据放在上方,变化量较小的数据放在下方会获得更加的展示效果。\n'}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/7d9ee5c600401a657064.js b/docs/_nuxt/js/7d9ee5c600401a657064.js
new file mode 100644
index 0000000..fd55e5f
--- /dev/null
+++ b/docs/_nuxt/js/7d9ee5c600401a657064.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[99],{400:function(n,t,e){"use strict";e.r(t),t.default='# 仪表盘\n\n仪表盘也被称为拨号图表或速度表图。其显示类似于拨号/速度计上的读数的数据,是一种拟物化的展示形式。仪表盘的颜色可以用来划分指示值的类别,使用刻度标示数据,指针指示维度,指针角度表示数值。\n\n<iframe max-width="830" width="100%" height="400"\nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xH1vxib94f">\n</iframe>\n\n## 仪表盘的使用建议\n\n1、仪表盘非常适合在量化的情况下显示单一的价值和衡量标准,不适合用于比较不同变量或者趋势的分析。\n\n2、仪表盘上可以同时展示不同纬度的数据,但是为了避免指针的重叠影响数据的查看,并且基于常识,仪表盘的指针数量建议最多不要超过 3 根。如果确实有多个数据需要展示,建议可使用多个仪表盘。\n\n<iframe max-width="830" width="100%" height="400"\nsrc="https://gallery.echartsjs.com/view-lite.html?cid=gauge-car">\n</iframe>\n'}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/7f4455d2257202d40708.js b/docs/_nuxt/js/7f4455d2257202d40708.js
new file mode 100644
index 0000000..ccc4d12
--- /dev/null
+++ b/docs/_nuxt/js/7f4455d2257202d40708.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[106],{407:function(n,t,e){"use strict";e.r(t),t.default='# 散点图\n\n散点图在直角坐标系显示数据的两个变量(X 和 Y 轴)之间的关系,数据显示为点的集合,适合用于在不考虑时间的情况下比较大量的数据点。散点图通常用来识别两个变量之间的相关性或用来观察他们的关系,从而发现某种趋势,对于查找异常值或理解数据分布也很有效。如下图某个班级学生身高和体重的分布状况。\n\n<iframe max-width="830" width="100%" height="400"\nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xSkCyUwKNG&v=1">\n</iframe>\n\n散点图会显示不同类型的相关性,相关性即变量之间的关系。通常有正相关、负相关、不相关三种相关性。\n\n- 正相关:数据点从低 x、y 值的点到高 x、y 值,一个变量增加,另一个变量增加。\n\n- 负相关:数据点从高 x、y 值的点到低 x、y 值,一个变量增加,另一个变量减少。\n\n- 不相关:数据没有明显的方向性,一个变量变化对另一个没有影响。\n\n<img max-width="830" width="100%" height="100%"\nsrc="images/design/scatter/scatter5.jpg">\n</img>\n\n需要注意的是,散点图能够有效的说明两个变量之间的相关性,但是并不能有力地证明 \b 其中存在因果关系。例如广告投放量和点击率是正相关的,但是不能说点击率高一定是因为广告投放量多造成的。但是,如果有明显的正相关性,就有足够的理由去增加投放量,然后再去观察数据。\n\n## 散点图的使用建议\n\n1、如果一个散点图没有显示变量之间的任何关系,那么或许该图表类型不是此数据的最佳选择。\n\n2、如果数据包含不同系列,可以给不同系列使用不同的颜色,例如蓝色代表男性,红色代表女性,并增加图例标注出蓝色代表的含义。可以区分了解男女不同性别身高和体重的分布状况。还可以分别添加每个系列平均值的辅助线,可以更好的理解数据的分布情况,如图中女生体重高于平均值的比低于平均值的少。\n\n<iframe max-width="830" width="100%" height="400"\nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xBy9E2oufM">\n</iframe>\n\n在观察两个变量之间的关系时,趋势线是非常有用的,趋势线的形状走向解释了两个变量之间的关系类型,还可以用来预测未来的值。但需要注意的是趋势线最可只能使用两条,以免干扰正常的数据的阅读。\n\n3、散点图只有有足够多的数据点,并且数据之间有相关性时才能呈现很好的结果。如果一份数据只有极少的信息或者数据间没有相关性,那么绘制一个很空的散点图和不相关的散点图都是没有意义的。\n'}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/83058ff5b1edf8425301.js b/docs/_nuxt/js/83058ff5b1edf8425301.js
new file mode 100644
index 0000000..f2e3bb3
--- /dev/null
+++ b/docs/_nuxt/js/83058ff5b1edf8425301.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[93],{394:function(t,n,e){"use strict";e.r(n),n.default="# 安全指南\n\n## 概述\n\nECharts 旨在提供丰富而灵活的可视化能力。虽然其绝大多数 API 不需要额外的安全考虑,但有几个例外。例如,`tooltip.formatter` 允许输入 HTML 字符串,从而完全控制组件的内容与布局;`title.link` 直接使用输入的 URL 字符串而不进行自动的净化处理(sanitization)。这种灵活性虽然强大,但当输入来自“不受信任”的来源时,可能带来安全风险。本文档列出了这些 API,并提供了如何安全使用这些特性的建议。\n\n任何潜在安全问题,可依照 [ASF 安全](https://echarts.apache.org/zh/security.html) 中的渠道进行报告。\n\n注:本文档面向 ECharts API 调用者。而另有一文档 [代码贡献者的安全检查清单](https://github.com/apache/echarts/wiki/Security-Checklist-for-Code-Contributors) 用于 ECharts 贡献者提交 Pull Request 前的检查,并非面向 ECharts API 调用者,但如有兴趣也可参阅。\n\n\n## 安全模型与检查清单 [[[#security_model_and_checklist]]]\n\nECharts 专注于可视化逻辑,一般假定输入内容都是来自“可信任”的来源,不会自动对输入进行净化(sanitization)处理。这和多数前端 UI 库的原则类似。其实 ECharts 自身也不知如何合适地对“不受信任”的内容做净化处理,因为不知哪些输入是“不受信任”的,且不存在适用于所有使用场景的通用净化规则。然而,ECharts 应该明确哪些 API(尤其是 ECharts options)在哪些场景下须在输入前进行安全相关的处理或考量。由于 ECharts options 数量庞大,对所有输入在任何场景下都进行安全处理不现实也无必要。\n\nECharts 通过 Canvas 或 SVG 渲染,只有几个特殊组件例外,允许 HTML 渲染(例如,[tooltip](${optionPath}tooltip) 和 [dataView](${optionPath}toolbox.feature.dataView))。ECharts API 的输入可被分类为“JS 函数”或者“非 JS 函数”。“JS 函数输入”本意就须允许执行。而大多数“非 JS 函数输入”(例如仅用于渲染的纯文本)并无被执行的可能,因此通常无需防范恶意代码注入。然而例外是,某些 API 允许在页面中嵌入不安全内容(如 HTML 或 URL 文本)。这些 API 能带来丰富的定制能力,但当输入来自“不受信任”的来源时,容易遭受 XSS (跨站脚本攻击)或相关攻击。\n\n**一般而言,如果输入的内容都是可被信任的,就不会出现这些注入漏洞。**\n“不受信任”(untrusted)的内容指,内容来自于无法完全控制的来源,或者内容可能被用户或外部系统修改或注入。开发者应该总是假定直接在 HTML、CSS、JS 中使用这些内容会不安全。例如,用户生成的数据或来自浏览器/客户端的输入都应被认为是“不受信任”的。但在许多情况下,处理用户生成的内容不可避免。例如,从数据库获取用户生成的数据,并组装成 HTML 输入 `tooltip.formatter` 来渲染。于是须要额外处理保正渲染正确和安全,通常首先依靠 HTML 转义(HTML escaping);但如果无法被转义的部分也来自“不受信任”的来源,则需要净化处理(sanitization)。\n\n在部署图表之前,请根据以下**检查清单**确认使用是否安全:\n\n| APIs | 潜在风险与建议 |\n| ------ | ------------------ |\n| **option [tooltip.formatter](${optionPath}tooltip.formatter)**<br>· `formatter` 允许 HTML 文本或 DOM 元素传入,并后续直接渲染到 tooltip 内部,于是需要考虑 XSS 风险。<br>(例外):如果 `formatter` 被直接设置成一个字符串,则认为是一个内部实现的简单模版,后续能内部填入数据。[tooltip.renderMode: 'richText'](${optionPath}tooltip.renderMode) 是另一种内部实现的模版,用于定制样式。他们都不涉及 HTML,从而安全。<br><br>**option [toolbox.feature.dataView.optionToContent](${optionPath}toolbox.feature.dataView.optionToContent)**<br>**option [toolbox.feature.dataView.title](${optionPath}toolbox.feature.dataView.title)**<br>**option [toolbox.feature.dataView.lang](${optionPath}toolbox.feature.dataView.lang)**<br>· `tooltip.dataView` 面板完全以 HTML 渲染,这些 API 可自定义 HTML 文本中的部分内容,于是需要考虑 XSS 风险。 | 需要考虑 XSS 风险。一般情况下,仅需 HTML 转义即可。但如果一些不能转义的部分来自“不受信任”的来源,则须更多处理(如净化处理(sanitization)或沙盒隔离)。<br><br>详细描述见 [“传入 HTML 时的安全考虑”](${lang}/best-practices/security#passing_raw_html_safely)。 |\n| **option [tooltip.extraCssText](${optionPath}tooltip.extraCssText)**<br>· `extraCssText` 接受一个原始 CSS style 字符串,并接下来直接拼接进 `tooltipEl.style.cssText`。<br>(例外):[tooltip.renderMode: 'richText'](${optionPath}tooltip.renderMode) 时此 `extraCssText` 无效。 | 若输入来自可信来源,则一般无安全问题,否则需要仔细评估风险。<br><br>详细描述见 [“传入内联 CSS 时的安全考虑”](${lang}/best-practices/security#passing_inline_css_safely)。 |\n| **option [title.link](${optionPath}title.link)**<br>**option [title.sublink](${optionPath}title.sublink)**<br>**option [series-treemap.data.link](${optionPath}series-treemap.data.link)**<br>**option [series-sunburst.data.link](${optionPath}series-sunburst.data.link)**<br>· 这些 option 直接接受原始 URL 字符串。 | 若若输入来自可信来源,则一般无安全问题,否则须要考虑 XSS 风险。<br><br>详细描述见 [\"传入 URL 时的安全考虑\"](${lang}/best-practices/security#passing_raw_urls_safely)。 |\n| **option [toolbox.feature.saveAsImage.name](${optionPath}toolbox.feature.saveAsImage.name)**<br>**option [toolbox.feature.saveAsImage.type](${optionPath}toolbox.feature.saveAsImage.type)**<br>**option [title[0].text](${optionPath}title.text)**<br>· `saveAsImage` 功能的下载文件名由 `{name}.{type}` 拼装而成,并未做额外校验或净化(sanitization)处理。如果 `name` 没有指定,则使用 `title[0].text` 替代,尽管这种用法并不推荐。 | 详细描述见 [“传入下载文件名时的安全考虑”](${lang}/best-practices/security#passing_download_filename_safely)。 |\n| 所有“JS 函数”输入(回调) | 通常无安全问题,除非存在特殊使用场景(例如需要执行不可信来源的函数)。<br><br>详细描述见 [“传入 JS 函数时的安全考虑”](${lang}/best-practices/security#passing_js_function_safely)。 |\n\n\n## 传入 HTML 时的安全考虑 [[[#passing_raw_html_safely]]]\n\n在 [“安全模型与检查清单”](${lang}/best-practices/security#security_model_and_checklist) 一节中已列出会接受原始 HTML 的 API。“不受信任”的 HTML 可能导致 XSS 等攻击,因此在传入 ECharts 前应进行处理。常见的处理方式包括 **HTML 转义(HTML Escaping)**、**净化(Sanitization)**、**沙盒**。大多数情况下,仅进行 HTML 转义即可,除非那些不能被转义的部分来自于“不受信任”的来源。\n\n### HTML 转义(HTML Escaping) [[[#passing_raw_html_safely_html_escaping]]]\n数据组装成 HTML 字符串前总需要进行 HTML 转义。这不仅是安全需要,也是正确显示的前提。\n\n最简单和常见的 HTML 转义是这些字符串转换:\n```\n'&' => '&amp;'\n'<' => '&lt;'\n'>' => '&gt;'\n'\"' => '&quot;'\n\"'\" => '&#39;\n```\n转换后,这些字符的功能被去除了,只能显示,从而也无法通过他们进行注入攻击(如 `<script>...<\/script>`)。\n\n例如:\n```js\n// 功能不正确也不安全。\nformatter: params => {\n    const { name, value } = params;\n    // 如果 name 或 value 中含有功能性字符,如 '<' '>' 等,则可能渲染不正确。\n    // 同时,如果 name 或 value 的值来自于“非受信任”的来源,则可能被注入恶意代码并运行。\n    return `${name}, <b>${value}<b/>`;\n}\n// 功能正确且安全。\nformatter: params => {\n    const { name, value } = params;\n    return `${echarts.format.encodeHTML(name)}, <b>${echarts.format.encodeHTML(value)}</b>`;\n}\n```\n\n使用 DOM API(如 `.textContent = `)也能实现转义。\n\n在大多数场景中,“不受信任”的内容(如用户输入的文本)仅用于显示,而有功能的部分(如 HTML 标签或属性)完全由应用开发者控制且可信。在这种情况下,HTML 转义本身就足以防御 XSS,只要所有“不受信任”的内容都被正确转义。\n\n\n### 净化(Sanitization) [[[#passing_raw_html_safely_sanitization]]]\n\n有些场景中,需要有功能的部分(如 HTML 标签或属性)也来自“不受信任”的来源。例如,数据库里取出的文本中包含有 `<em>`、`<a>` 等标签,并且想要它们被当做 HTML 标记解释运行,而不是原样显示。又例如,允许用户或者“不受信任”的来源提供 HTML 模板,用于定义布局与样式,继而和数据结合形成最终可被渲染的 HTML 传给 ECharts 。\n\n这些场景需要承受相对更高的安全风险,可通过净化(sanitization)机制缓解。净化器(sanitizer)一般基于白名单过滤 HTML 内容,例如移除所有 `<script>`、`<style>`、`<link>`、内联 CSS、事件属性(如 `onclick`)以及 `javascript:`/`data:` 协议的 URL。推荐使用维护良好、社区广泛采用的库,而非用自己写的正则或字符串处理来做这件事。\n\n净化可在前端(指 client)、后端(指 server)或两者同时进行,取决于实际场景和安全需求。例如,对于生成于前端的内容(例如前端提交给后端的内容),仅依赖前端净化不够,攻击者可直接伪造请求绕过前端。比如,一个在线编辑器允许用户以所见即所得(WYSIWYG)的方式创建内容,其中,用户可选择使用内置的几个 HTML 模板或 JS 函数(如 [tooltip.formatter](${optionPath}tooltip.formatter) 或 [label.formatter](${optionPath}series-scatter.label.formatter))。如果这些选好的或者生成的 HTML 文本或 JS 函数文本被传输到后端,并且不做处理直接存于数据库,则攻击者可在这个阶段注入恶意代码。后续它们被从数据库中取出,并传给 `chart.setOption()` 时,恶意代码会被执行。所以建议在这类场景中:\n+ 仅存储内置模板/函数的引用 ID,而不存储原始代码。\n+ 若为了更高的定制能力而允许自定义模板,则可考虑是否引入安全的第三方模板引擎,从而避免注入。\n+ 若必须允许用户自定义 HTML,须要严格的后端净化(sanitization)或校验(如过滤掉所有 JS、CSS 和其他可能有安全隐患的内容),并依据实际情况考虑是否在沙盒中渲染以降低潜在的风险。\n\n通过净化达到足够的安全性有时并不容易。它需要有仔细和合理的配置,并不断随着浏览器/客户端更新,并常需结合其他防御机制从而达到“绝大多数情况下足够安全”。HTML 在能力上本身非常复杂和多变,在“不受信任”的内容上支持的功能越丰富,可攻击的渠道就越多。\n\n\n### 沙盒 [[[#passing_raw_html_sandboxing]]]\n\n若必须执行“不受信任”的代码,或其他措施扔不足以达到足够的安全性,可使用“沙盒 iframe”(sandboxed iframe)进行隔离,提供相对更高安全防护,如 JSFiddle、CodePen 等代码执行平台所采用的机制。\n\n\n## 传入内联 CSS 时的安全考虑 [[[#passing_inline_css_safely]]]\n\nHTML 的安全(见 [“传入 HTML 时的安全考虑”](${lang}/best-practices/security#passing_raw_html_safely) 一节)已经包括了 CSS 相关安全问题,而本节主要讨论那些仅接受内联 CSS 字符串的 API(即通过 `.style.cssText =` 修改 `style` 属性的情形)。在 [“安全模型与检查清单”](${lang}/best-practices/security#security_model_and_checklist) 一节中列出了这些 API。\n\n若内联 CSS 完全来自“可信任”的来源(例如应用自身),则几乎无需担心安全问题,这也是最常见的情况。\n\n否则,“不受信任”的 CSS 可能有安全隐患。一些 HTML 净化库支持 CSS 净化(CSS sanitization),但默认行为可能是删除所有 CSS,毕竟做到理想的 CSS 净化难度很大。因此,若必须运行“不受信任”的 CSS,应结合具体场景谨慎评估实现方式。\n\n\n## 传入 URL 时的安全考虑 [[[#passing_raw_urls_safely]]]\n\nHTML 的安全(见 [“传入 HTML 时的安全考虑”](${lang}/best-practices/security#passing_raw_html_safely) 一节)已经包括了 URL 相关安全问题,而本节专门针对那些仅接受 URL 输入的 API。在 [“安全模型与检查清单”](${lang}/best-practices/security#security_model_and_checklist) 一节中列出了这些 API。\n\n若 URL 完全来自“可信任”的来源(例如应用自身),则几乎无需担心安全问题。\n\n否则,“不受信任”的 URL 可能有安全问题,例如利用 `javascript:` 或 `data:` 协议执行恶意代码。因此,在传入 ECharts 前,应进行校验或净化,通常会依据白名单仅允许安全的协议。\n\n\n## 传入下载文件名时的安全考虑 [[[#passing_download_filename_safely]]]\n\n目前,仅 [SaveAsImage](${optionPath}toolbox.feature.saveAsImage) 功能需要传入文件名。若该输入来自“可信任”的来源、长度合规且仅包含 ASCII 字母数字(可含`-`、`_`、`.`),则安全。\n\n否则,虽然现代浏览器已显著改进了文件名的自动转义和净化处理(如去除 `../` 之类试图访问上级目录的路径、正确处理特殊字符等),但也存在一些风险,例如不同系统对保留字符的处理有差异,长度限制也不同。此外,旧浏览器或客户端的行为不够明确且不足够可信赖。因此,对这些“不受信任”的文件名仍应在输入前净化处理。\n\n\n## 传入 JS 函数时的安全考虑 [[[#passing_js_function_safely]]]\n\nECharts 的 `option`(即 [chart.setOption()](${apiPath}echartsInstance.setOption) 的输入)主要是声明式的,但部分 option 可接受 JS 函数(回调)输入以增强表达能力和灵活性,如 [label.formatter](${optionPath}series-scatter.label.formatter)、[axisTick.interval](${optionPath}xAxis.axisTick.interval) 等。在大多数情况下,这些函数是 app 源代码的一部分于是完全可信任,因此不会引入风险。\n\n但若某些产品允许这些 JS 函数来自于“不受信任”的来源,如用户提供函数,则风险与维护成本显著增加。这种场景实质上与执行“不受信任”的 HTML 代码风险相当,可参考 [“传入 HTML 时的安全考虑”](${lang}/best-practices/security#passing_raw_html_safely) 中的讨论。\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/84f30bf9e6f359ad01dc.js b/docs/_nuxt/js/84f30bf9e6f359ad01dc.js
new file mode 100644
index 0000000..1c41cf4
--- /dev/null
+++ b/docs/_nuxt/js/84f30bf9e6f359ad01dc.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[14],{315:function(e,n,t){"use strict";t.r(n),n.default="# Apache ECharts 5.4.0 Features\n\n## Intelligent Pointer Snapping\n\nSome interactive elements may be relatively small in charts, so sometimes it is difficult for users to click and do other operations accurately, especially on the mobile. Therefore, in Apache ECharts 5.4.0, we introduced the concept of \"intelligent pointer snapping\".\n\nSee [intelligent pointer snapping](${lang}/how-to/interaction/coarse-pointer) for details.\n\n## Using Pie charts in more coordinate systems\n\nA very powerful feature of Apache ECharts is the combination of various chart types, coordinate systems, and components. In this version, we have added the coordinate systems option for pie charts.\n\nThus, pie charts can appear in the Cartesian coordinate systems,\n\n![](images/5-4-0/pie-grid.png)\n\ncalendar coordinate systems,\n\n![](images/5-4-0/pie-calendar.png)\n\ngeographical coordinate systems,\n\n![](images/5-4-0/pie-geo.png)\n\nand even with the Baidu Map and Gaode Map extension.\n\n![](images/5-4-0/pie-bmap.png)\n\n![](images/5-4-0/pie-amap.png)\n\nThis greatly extends the flexibility of pie charts, allowing developers to create more combinations of chart effects using Apache ECharts.\n\n## Ukrainian Translation\n\nIn this release, we added the support of the Ukrainian language. **Now Apache ECharts supports 17 languages!**\n\n> If you need to use a language other than English or Chinese, you need to call `echarts.registerLocale` to initialize the chart before initializing it, and then pass `opts.locale` to modify the chart language during `init`.\n\n## Gauge Label Rotation\n\nIn this version, we support text rotation of the Gauge series.\n\n<md-example src=\"gauge-grade\" width=\"100%\" height=\"400\" />\n\n`axisLabel.rotate` can be set to `'tangential' | 'radial' | number`. If it is of type `number`, it indicates the rotation angle of the label from -90 degrees to 90 degrees, with positive values being counterclockwise. In addition to this, it can also be the strings `'radial'` for radial rotation and `'tangential'` for tangential rotation.\n\n## Full Changelog\n\nView the [Changelog](${mainSitePath}/changelog.html#v5-4-0)\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/8742f2bcb3297290ec2d.js b/docs/_nuxt/js/8742f2bcb3297290ec2d.js
new file mode 100644
index 0000000..5bc240a
--- /dev/null
+++ b/docs/_nuxt/js/8742f2bcb3297290ec2d.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{309:function(n,e,t){"use strict";t.r(e),e.default="# Get Apache ECharts\n\nApache ECharts offers a variety of installation options, so you can choose any of the following options depending on your project.\n\n- Install From npm\n- Use From CDN\n- Download From GitHub\n- Online Customization\n\nWe'll go over each of these installation methods and the directory structure after download.\n\n## Installation\n\n### Install From npm\n\n```sh\nnpm install echarts\n```\n\nSee [Import ECharts](${lang}/basics/import) for details on usage.\n\n### Use From CDN\n\nECharts is available on the following free CDNs:\n\n- [jsDelivr](https://www.jsdelivr.com/package/npm/echarts)\n- [unpkg](https://unpkg.com/browse/echarts/)\n- [cdnjs](https://cdnjs.com/libraries/echarts)\n\n### Download From GitHub\n\nYou can find links to each version on the [releases](https://github.com/apache/echarts/releases) page of the [apache/echarts project](https://github.com/apache/echarts). Click on the Source code under Assets at the bottom of the desired release version. After downloading, unzip the file and locate `echarts.js` file in the `dist` folder to include the full ECharts functionality.\n\n### Online Customization\n\nIf you want to introduce only some modules to reduce package size, you can use the [ECharts online customization](${mainSitePath}builder.html) function to create a customized download of ECharts.\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/8af39ab18edaa2779ab8.js b/docs/_nuxt/js/8af39ab18edaa2779ab8.js
new file mode 100644
index 0000000..c3adc43
--- /dev/null
+++ b/docs/_nuxt/js/8af39ab18edaa2779ab8.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[138],{439:function(r,t,o){"use strict";o.r(t),t.default="# 在百度智能小程序中使用 ECharts\n\n[ECharts 图表](http://smartprogram.baidu.com/docs/develop/framework/echarts/) 以小程序动态库的形式提供了在百度智能小程序中使用 ECharts 的方式。\n\n[baidu-smart-app-echarts-demo](https://github.com/baidu-smart-app/baidu-smart-app-echarts-demo) 项目是使用该动态库的一个示例工程,可以作为参考,一般情况下不需要引入自己的项目。\n\n如有使用上的问题,可以在 [baidu-smart-app-echarts-demo/issues](https://github.com/baidu-smart-app/baidu-smart-app-echarts-demo/issues) 中咨询。\n\n## 使用方式\n\n参见百度智能小程序文档 [ECharts 图表](http://smartprogram.baidu.com/docs/develop/framework/echarts/)。\n\n## 注意事项\n\n百度智能小程序上的 ECharts 以动态库的形式开放,因此开发者的使用方式与[在微信小程序中使用 ECharts](./zh/how-to/cross-platform/wechat-app) 不太相同。尤其需要注意的是,前者需要在指定动态库名称的时候确定 ECharts 的版本号,而不能自行更换或使用自定义构建。这一点是由底层框架的技术实现决定的。具体来说,在指定百度智能小程序动态库名称的时候,需要通过 `provider` 指定动态库名称,具体参见[文档](http://smartprogram.baidu.com/docs/develop/framework/echarts/)的「在项目中引用动态库」章节。\n\n请务必查看[文档](http://smartprogram.baidu.com/docs/develop/framework/echarts/)的「兼容性说明」以了解各功能的实现方式。\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/8bbce1665041a74bf688.js b/docs/_nuxt/js/8bbce1665041a74bf688.js
new file mode 100644
index 0000000..1c05ad8
--- /dev/null
+++ b/docs/_nuxt/js/8bbce1665041a74bf688.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{311:function(n,e,t){"use strict";t.r(e),e.default="# Using ECharts as an NPM Package\n\nThere are two approaches to using ECharts as a package. The simplest approach is to make all functionality immediately available by importing from `echarts`. However, it is encouraged to substantially decrease bundle size by only importing as necessary such as `echarts/core` and `echarts/charts`.\n\n## Install ECharts via NPM\n\nYou can install ECharts via npm using the following command\n\n```shell\nnpm install echarts\n```\n\n## Import All ECharts Functionality\n\nTo include all of ECharts, we simply need to import `echarts`.\n\n```js\nimport * as echarts from 'echarts';\n\n// Create the echarts instance\nvar myChart = echarts.init(document.getElementById('main'));\n\n// Draw the chart\nmyChart.setOption({\n  title: {\n    text: 'ECharts Getting Started Example'\n  },\n  tooltip: {},\n  xAxis: {\n    data: ['shirt', 'cardigan', 'chiffon', 'pants', 'heels', 'socks']\n  },\n  yAxis: {},\n  series: [\n    {\n      name: 'sales',\n      type: 'bar',\n      data: [5, 20, 36, 10, 10, 20]\n    }\n  ]\n});\n```\n\n## Shrinking Bundle Size\n\nThe above code will import all the charts and components in ECharts, but if you don't want to bring in all the components, you can use the tree-shakeable interface provided by ECharts to bundle the required components and get a minimal bundle.\n\n```js\n// Import the echarts core module, which provides the necessary interfaces for using echarts.\nimport * as echarts from 'echarts/core';\n\n// Import bar charts, all suffixed with Chart\nimport { BarChart } from 'echarts/charts';\n\n// Import the title, tooltip, rectangular coordinate system, dataset and transform components\nimport {\n  TitleComponent,\n  TooltipComponent,\n  GridComponent,\n  DatasetComponent,\n  TransformComponent\n} from 'echarts/components';\n\n// Features like Universal Transition and Label Layout\nimport { LabelLayout, UniversalTransition } from 'echarts/features';\n\n// Import the Canvas renderer\n// Note that including the CanvasRenderer or SVGRenderer is a required step\nimport { CanvasRenderer } from 'echarts/renderers';\n\n// Register the required components\necharts.use([\n  BarChart,\n  TitleComponent,\n  TooltipComponent,\n  GridComponent,\n  DatasetComponent,\n  TransformComponent,\n  LabelLayout,\n  UniversalTransition,\n  CanvasRenderer\n]);\n\n// The chart is initialized and configured in the same manner as before\nvar myChart = echarts.init(document.getElementById('main'));\nmyChart.setOption({\n  // ...\n});\n```\n\n> Note that in order to keep the size of the package to a minimum, ECharts does not provide any renderer in the tree-shakeable interface, so you need to choose to import `CanvasRenderer` or `SVGRenderer` as the renderer. The advantage of this is that if you only need to use the SVG rendering mode, the bundle will not include the `CanvasRenderer` module, which is not needed.\n\nThe \"Full Code\" tab on our sample editor page provides a very convenient way to generate a tree-shakable code. It will generate tree-shakable code based on the current option dynamically to use it directly in your project.\n\n## Creating an Option Type in TypeScript\n\nFor developers who are using TypeScript to develop ECharts, type interface is provided to create a minimal `EChartsOption` type. This type will be stricter than the default one provided because it will know exactly what components are being used. This can help you check for missing components or charts more effectively.\n\n```ts\nimport * as echarts from 'echarts/core';\nimport {\n  BarChart,\n  LineChart,\n} from 'echarts/charts';\nimport {\n  TitleComponent,\n  TooltipComponent,\n  GridComponent,\n  // Dataset\n  DatasetComponent,\n  // Built-in transform (filter, sort)\n  TransformComponent\n} from 'echarts/components';\nimport { LabelLayout, UniversalTransition } from 'echarts/features';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport type {\n  // The series option types are defined with the SeriesOption suffix\n  BarSeriesOption, \n  LineSeriesOption,\n} from 'echarts/charts';\nimport type {\n  // The component option types are defined with the ComponentOption suffix\n  TitleComponentOption, \n  TooltipComponentOption,\n  GridComponentOption,\n  DatasetComponentOption\n} from 'echarts/components';\nimport type { \n  ComposeOption, \n} from 'echarts/core';\n\n// Create an Option type with only the required components and charts via ComposeOption\ntype ECOption = ComposeOption<\n  | BarSeriesOption\n  | LineSeriesOption\n  | TitleComponentOption\n  | TooltipComponentOption\n  | GridComponentOption\n  | DatasetComponentOption\n>;\n\n// Register the required components\necharts.use([\n  TitleComponent,\n  TooltipComponent,\n  GridComponent,\n  DatasetComponent,\n  TransformComponent,\n  BarChart,\n  LineChart,\n  LabelLayout,\n  UniversalTransition,\n  CanvasRenderer\n]);\n\nconst option: ECOption = {\n  // ...\n};\n```\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/8c503785a513c4eb2198.js b/docs/_nuxt/js/8c503785a513c4eb2198.js
new file mode 100644
index 0000000..0ee5d43
--- /dev/null
+++ b/docs/_nuxt/js/8c503785a513c4eb2198.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[85],{386:function(e,n,t){"use strict";t.r(n),n.default="# Apache ECharts 5 升级指南\n\n本指南面向那些希望将 echarts 4.x(以下简称 `v4`)升级到 echarts 5.x(以下简称 `v5`)的用户。大家可以在 [ECharts 5 新特性](${lang}/basics/release-note/v5-feature) 中了解这次`v5`带来了哪些值得升级的新特性。在绝大多数情况下,开发者用不着为这个升级做什么额外的事,因为 echarts 一直尽可能地保持 API 的稳定和向后兼容。但是,`v5` 仍然带来了一些非兼容改动,需要特别关注。此外,在一些情况下,`v5` 提供了更好的 API 用来取代之前的 API,这些被取代的 API 将不再被推荐使用(当然,我们尽量兼容了这些改动)。我们会在这篇文档里尽量详尽得解释这些改动。\n\n## 非兼容性改变\n\n### 默认主题(theme)\n\n首先是默认主题的改动,`v5` 在配色等主题设计上做了很多的优化来达到更好的视觉效果。如果大家依旧想保留旧版本的颜色,可以手动声明颜色,如下:\n\n```js\nchart.setOption({\n  color: [\n    '#c23531',\n    '#2f4554',\n    '#61a0a8',\n    '#d48265',\n    '#91c7ae',\n    '#749f83',\n    '#ca8622',\n    '#bda29a',\n    '#6e7074',\n    '#546570',\n    '#c4ccd3'\n  ]\n  // ...\n});\n```\n\n或者,做一个简单的 `v4` 主题:\n\n```js\nvar themeEC4 = {\n  color: [\n    '#c23531',\n    '#2f4554',\n    '#61a0a8',\n    '#d48265',\n    '#91c7ae',\n    '#749f83',\n    '#ca8622',\n    '#bda29a',\n    '#6e7074',\n    '#546570',\n    '#c4ccd3'\n  ]\n};\nvar chart = echarts.init(dom, themeEC4);\nchart.setOption(/* ... */);\n```\n\n### 引用 ECharts\n\n#### 去除 default exports 的支持\n\n如果使用者在 `v4` 中这样引用了 echarts:\n\n```js\nimport echarts from 'echarts';\n// 或者按需引入\nimport echarts from 'echarts/lib/echarts';\n```\n\n这两种方式,`v5` 中不再支持了。\n\n使用者需要如下更改代码解决这个问题:\n\n```js\nimport * as echarts from 'echarts';\n// 按需引入\nimport * as echarts from 'echarts/lib/echarts';\n```\n\n#### 按需引入\n\n在 5.0.1 中,我们引入了新的[按需引入接口](${lang}/basics/import)\n\n```js\nimport * as echarts from 'echarts/core';\nimport { BarChart } from 'echarts/charts';\nimport { GridComponent } from 'echarts/components';\n// 注意,新的接口中默认不再包含 Canvas 渲染器,需要显示引入,如果需要使用 SVG 渲染模式则使用 SVGRenderer\nimport { CanvasRenderer } from 'echarts/renderers';\n\necharts.use([BarChart, GridComponent, CanvasRenderer]);\n```\n\n如果之前是使用`import 'echarts/lib/chart/bar'`引入,新的接口对应的是`import {BarChart} from 'echarts/charts'`;\n\n为了方便大家了解自己的配置项需要引入哪些模块,我们新的示例编辑页面添加了生成按需引入代码的功能,大家可以在示例编辑页的`完整代码`标签下选中按需引入后查看需要引入的模块以及相关代码。\n\n在大部分情况下,我们都推荐大家尽可能用这套新的按需引入接口,它可以最大程度的利用打包工具 tree-shaking 的能力,并且可以有效解决命名空间冲突的问题而且防止了内部结构的暴露。如果你依旧在使用 CommonJS 的模块写法,之前的方式我们也依旧是支持的:\n\n```js\nconst echarts = require('echarts/lib/echarts');\nrequire('echarts/lib/chart/bar');\nrequire('echarts/lib/component/grid');\n```\n\n其次,因为我们的源代码已使用 TypeScript 重写,`v5` 将不再支持从 `echarts/src` 引用文件,需要改为从`echarts/lib`引入。\n\n#### 依赖调整\n\n> 注意:该部分只针对为了保证较小的打包体积而是用按需引入接口的开发者,如果是全量引入的不需要关注\n\n为了保证 tree-shaking 后的体积足够小,我们去除了一些之前会默认被打包进来的依赖。比如前面提到的在使用新的按需引入接口的时候,`CanvasRenderer`将不再被默认引入,这样可以保证只需要使用 SVG 渲染模式的时候不会把不需要的 Canvas 渲染代码也一起打包进来,除此之外,还有下面这些依赖的改动:\n\n- 在使用折线图,柱状图中不再默认引入直角坐标系组件,因此之前使用下面的引入方式\n\n```js\nconst echarts = require('echarts/lib/echarts');\nrequire('echarts/lib/chart/bar');\nrequire('echarts/lib/chart/line');\n```\n\n需要再单独引入`grid`组件\n\n```js\nrequire('echarts/lib/component/grid');\n```\n\n参考 issue:[#14080](https://github.com/apache/echarts/issues/14080), [#13764](https://github.com/apache/echarts/issues/13764)\n\n- 默认不再引入`aria`组件,如果需要的话可以手动引入。\n\n```js\nimport { AriaComponent } from 'echarts/components';\necharts.use(AriaComponent);\n```\n\n或者:\n\n```js\nrequire('echarts/lib/component/aria');\n```\n\n### 去除内置的 geoJSON\n\n`v5` 移除了内置的 geoJSON(原先在 `echarts/map` 文件夹下)。这些 geoJSON 文件本就一直来源于第三方。如果使用者仍然需要他们,可以去从老版本中得到,或者自己寻找更合适的数据然后通过 registerMap 接口注册到 ECharts 中。\n\n### 浏览器兼容性\n\n`v5` 不再支持 IE8 浏览器。我们不再继续维护和升级之前的 [VML 渲染器](https://github.com/ecomfe/zrender/tree/4.3.2/src/vml) 来实现 IE8 的兼容。如果使用者确实有很强的需求,那么欢迎提 pull request 来升级 VML 渲染器,或者单独维护一个第三方 VML 渲染器,我们从 `v5.0.1` 开始支持注册独立的渲染器了。\n\n### 配置项调整\n\n#### Y 轴默认不显示轴线和刻度线\n\n`v5` 去掉了直角坐标系最左侧数据轴 Y 轴的默认显示。如果仍希望展示轴线和刻度线,需要显式配置:\n\n```js\nyAxis: {\n  type: 'value',\n  // 显式设置 `axisLine.show` 和 `axisTick.show` 为 `true`\n  axisLine: {\n    show: true\n  },\n  axisTick: {\n    show: true\n  }\n}\n```\n\n#### 视觉样式设置的优先级改变\n\n`v5` 对调了 [visualMap 组件](${optionPath}visualMap) 和 [itemStyle](${optionPath}series-scatter.itemStyle) | [lineStyle](${optionPath}series-scatter.lineStyle) | [areaStyle](${optionPath}series-scatter.areaStyle) 的视觉样式优先级。\n\n具体来说,`v4` 中,[visualMap 组件](${optionPath}visualMap) 中生成的视觉样式(如,颜色、图形类型、图形尺寸等)的优先级,比开发者在 [itemStyle](${optionPath}series-scatter.itemStyle) | [lineStyle](${optionPath}series-scatter.lineStyle) | [areaStyle](${optionPath}series-scatter.areaStyle) 中设置的样式的优先级高,也就是说如果他们同时设置的话,前者会生效而后者不会生效。这带来了些麻烦:假如使用者在使用 [visualMap 组件](${optionPath}visualMap) 时,又想针对某个数据项对应的图形,设置 [itemStyle](${optionPath}series-scatter.itemStyle) 样式,则做不到。`v5` 中于是提高了 [itemStyle](${optionPath}series-scatter.itemStyle) | [lineStyle](${optionPath}series-scatter.lineStyle) | [areaStyle](${optionPath}series-scatter.areaStyle) 的优先级,使他们能生效。\n\n在绝大多处情况下,这个变化并不会带来什么影响。但是为保险起见,使用者在升级 `v4` 到 `v5` 时,还是可以检查下,是否有同时使用 [visualMap](${optionPath}visualMap) 和 [itemStyle](${optionPath}series-scatter.itemStyle) | [lineStyle](${optionPath}series-scatter.lineStyle) | [areaStyle](${optionPath}series-scatter.areaStyle) 的情况。\n\n#### 富文本的 `padding`\n\n`v5` 调整了 [rich.?.padding](${optionPath}series-scatter.label.rich.<style_name>.padding) 的格式使其更符合 CSS 的规范。`v4` 里,例如 `rich.?.padding: [11, 22, 33, 44]` 表示 `padding-top` 是 `33` 且 `padding-bottom` 是 `11`。在 `v5` 中调整了上下的位置,`rich.?.padding: [11, 22, 33, 44]` 表示 `padding-top` 是 `11` 且 `padding-bottom` 是 `33`。\n\n如果使用者有在使用 [rich.?.padding](${optionPath}series-scatter.label.rich.<style_name>.padding),需要注意调整下这个顺序。\n\n## 扩展的兼容\n\n如果想要升级到 `v5` ,下面这些扩展需要升级到最新的版本实现兼容。\n\n- [echarts-gl](https://github.com/ecomfe/echarts-gl)\n- [echarts-wordcloud](https://github.com/ecomfe/echarts-wordcloud)\n- [echarts-liquidfill](https://github.com/ecomfe/echarts-liquidfill)\n\n## 不再推荐使用的 API\n\n一些 API(包括接口调用,事件监听和配置项)在 `v5` 中不再推荐使用。当然,使用者仍然可以用他们,只是会在 dev 模式下,在 console 中打印一些 warning,并不会影响功能。但是从长远维护考虑,我们还是推荐升级成新的 API。\n\n下面是不再推荐使用的 API 以及推荐的新 API:\n\n- 图形元素 transform 相关的属性被改变了:\n  - 变更点:\n    - `position: [number, number]` 改为 `x: number` / `y: number`。\n    - `scale: [number, number]` 改为 `scaleX: number` / `scaleY: number`。\n    - `origin: [number, number]` 改为 `originX: number` / `originY: number`。\n  - `position`、`scale` 和 `origin` 仍然支持,但已不推荐使用。\n  - 它影响到这些地方:\n    - 在`graphic`组件中:每个元素的声明。\n    - 在 `custom series` 中:`renderItem` 返回的每个元素的声明。\n    - 直接使用 zrender 图形元素时。\n- Text 相关的属性被改变:\n  - 变更点:\n    - 图形元素附带的文本的声明方式被改变:\n      - 除了 `Text` 元素之外,其他元素中的属性 `style.text` 都不推荐使用了。取而代之的是新属性 `textContent` 和 `textConfig`,他们能带来更丰富的功能。\n      - 其中,下面左边部分的这些属性已不推荐使用或废弃。请使用下面的右边部分的属性:\n        - textPosition => textConfig.position\n        - textOffset => textConfig.offset\n        - textRotation => textConfig.rotation\n        - textDistance => textConfig.distance\n    - 下面左边部分的属性在 `style` 和 `style.rich.?` 中已不推荐使用或废弃。请使用下面右边的属性:\n      - textFill => fill\n      - textStroke => stroke\n      - textFont => font\n      - textStrokeWidth => lineWidth\n      - textAlign => align\n      - textVerticalAlign => verticalAlign\n      - textLineHeight => lineHeight\n      - textWidth => width\n      - textHeight => hight\n      - textBackgroundColor => backgroundColor\n      - textPadding => padding\n      - textBorderColor => borderColor\n      - textBorderWidth => borderWidth\n      - textBorderRadius => borderRadius\n      - textBoxShadowColor => shadowColor\n      - textBoxShadowBlur => shadowBlur\n      - textBoxShadowOffsetX => shadowOffsetX\n      - textBoxShadowOffsetY => shadowOffsetY\n    - 注:这些属性并没有变化:\n      - textShadowColor\n      - textShadowBlur\n      - textShadowOffsetX\n      - textShadowOffsetY\n  - 它影响到这些地方:\n    - 在 `graphic` 组件中:每个元素的声明。(原来的写法仍兼容,但在一些很复杂的情况下,可能效果不完全一致。)\n    - 在自定义系列(`custom series`)中:`renderItem` 返回中的每个元素的声明。(原来的写法仍兼容,但在一些很复杂的情况下,可能效果不完全一致。)\n    - 直接使用 zrender API 创建图形元素。(不再兼容,原写法被废弃。)\n- 图表实例上的 API:\n  - `chart.one(...)` 已不推荐使用。\n- `label`。\n  - 属性 `color`、`textBorderColor`、`backgroundColor`、`borderColor` 中,值 `auto` 已不推荐使用,而推荐使用 `'inherit'` 代替。\n- `hoverAnimation`:\n  - 选项 `series.hoverAnimation` 已不推荐使用,使用 `series.emphasis.scale` 代替之。\n- 折线图(`line series`):\n  - 选项 `series.clipOverflow` 已不推荐使用,使用 `series.clip` 代替之。\n- 自定义系列(`custom series`)。\n  - 在 `renderItem` 中,`api.style(...)` 和 `api.styleEmphasis(...)` 已不推荐使用。因为这两个接口其实并不真正必要,也很难保证向后兼容。用户可以通过 `api.visual(...)` 获取系统自动分配的视觉信息。\n- 旭日图(`sunburst`):\n  - 动作类型 `sunburstHighlight` 已被弃用,请使用 `highlight` 代替。\n  - 动作类型 `sunburstUnhighlight` 已被弃用,请使用 `downplay` 代替。\n  - 选项 `series.downplay` 已被弃用,请使用 `series.blur` 代替。\n  - 选项 `series.highlightPolicy` 已不适用,请使用 `series.emphasis.focus` 代替。\n- 饼图(`pie`):\n  - 下面左边部分的 action 名已经不推荐使用。请使用右边的 action 名。\n    - `pieToggleSelect` => `toggleSelect`。\n    - `pieSelect` => `select`。\n    - `pieUnSelect` => `unselect`。\n  - 下面左边部分的事件名已经不推荐使用。请使用右边的事件名。\n    - `pieselectchanged` => `selectchanged`。\n    - `pieselected` => `selected`。\n    - `pieunselected` => `unselected`。\n  - 选项 `series.label.margin` 已经不推荐使用。使用 `series.label.edgeDistance` 代替。\n  - 选项 `series.clockWise` 已经不推荐使用。使用 `series.clockwise` 代替。\n  - 选项 `series.hoverOffset` 已经不推荐使用。使用 `series.emphasis.scaleSize` 代替。\n- 地图(`map series`):\n  - 下文左边部分的 action 名已经不推荐使用。请使用右边的 action 名。\n    - `mapToggleSelect` => `toggleSelect`。\n    - `mapSelect` => `select`。\n    - `mapUnSelect` => `unselect`。\n  - 下面左边部分的事件名已经不推荐使用。请使用右边的事件名。\n    - `mapselectchanged` => `selectchanged`。\n    - `mapselected` => `selected`。\n    - `mapunselected` => `unselected`。\n  - 选项 `series.mapType` 已经不推荐使用。使用 `series.map` 代替。\n  - 选项 `series.mapLocation` 已经不推荐使用。\n- 关系图(`graph series`):\n  - 选项 `series.focusNodeAdjacency` 已经不推荐使用。使用 `series.emphasis: { focus: 'adjacency'}` 代替。\n- 仪表盘(`gauge series`):\n  - 选项 `series.clockWise` 已经不推荐使用。使用 `series.clockwise` 代替。\n  - 选项 `series.hoverOffset` 已经不推荐使用。使用 `series.emphasis.scaleSize` 代替。\n- `dataZoom` 组件:\n  - 选项 `dataZoom.handleIcon` 如果使用 `SVGPath`,需要前缀 `path://`。\n- 雷达图(`radar`):\n  - 选项 `radar.name` 已经不推荐使用。使用 `radar.axisName` 代替。\n  - 选项 `radar.nameGap` 已经不推荐使用。使用 `radar.axisNameGap` 代替。\n- Parse and format:\n  - `echarts.format.formatTime` 已经不推荐使用。使用 `echarts.time.format` 代替。\n  - `echarts.number.parseDate` 已经不推荐使用。使用 `echarts.time.parse` 代替。\n  - `echarts.format.getTextRect` 已经不推荐使用。\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/8cbc28eba39ffdac2c44.js b/docs/_nuxt/js/8cbc28eba39ffdac2c44.js
new file mode 100644
index 0000000..67ec3b4
--- /dev/null
+++ b/docs/_nuxt/js/8cbc28eba39ffdac2c44.js
@@ -0,0 +1,2 @@
+/*! For license information please see ../LICENSES */
+(window.webpackJsonp=window.webpackJsonp||[]).push([[6],Array(190).concat([function(e,t,n){"use strict";var r=Object.prototype.hasOwnProperty;function o(object,e){return r.call(object,e)}function c(e){return!(e>=55296&&e<=57343)&&(!(e>=64976&&e<=65007)&&(65535!=(65535&e)&&65534!=(65535&e)&&(!(e>=0&&e<=8)&&(11!==e&&(!(e>=14&&e<=31)&&(!(e>=127&&e<=159)&&!(e>1114111)))))))}function l(e){if(e>65535){var t=55296+((e-=65536)>>10),n=56320+(1023&e);return String.fromCharCode(t,n)}return String.fromCharCode(e)}var f=/\\([!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~])/g,h=new RegExp(f.source+"|"+/&([a-z#][a-z0-9]{1,31});/gi.source,"gi"),d=/^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i,m=n(206);var v=/[&<>"]/,_=/[&<>"]/g,y={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"};function k(e){return y[e]}var w=/[.?*+^$[\]\\(){}|-]/g;var x=n(193);t.lib={},t.lib.mdurl=n(207),t.lib.ucmicro=n(253),t.assign=function(e){var t=Array.prototype.slice.call(arguments,1);return t.forEach((function(source){if(source){if("object"!=typeof source)throw new TypeError(source+"must be object");Object.keys(source).forEach((function(t){e[t]=source[t]}))}})),e},t.isString=function(e){return"[object String]"===function(e){return Object.prototype.toString.call(e)}(e)},t.has=o,t.unescapeMd=function(e){return e.indexOf("\\")<0?e:e.replace(f,"$1")},t.unescapeAll=function(e){return e.indexOf("\\")<0&&e.indexOf("&")<0?e:e.replace(h,(function(e,t,n){return t||function(e,t){var code=0;return o(m,t)?m[t]:35===t.charCodeAt(0)&&d.test(t)&&c(code="x"===t[1].toLowerCase()?parseInt(t.slice(2),16):parseInt(t.slice(1),10))?l(code):e}(e,n)}))},t.isValidEntityCode=c,t.fromCodePoint=l,t.escapeHtml=function(e){return v.test(e)?e.replace(_,k):e},t.arrayReplaceAt=function(e,t,n){return[].concat(e.slice(0,t),n,e.slice(t+1))},t.isSpace=function(code){switch(code){case 9:case 32:return!0}return!1},t.isWhiteSpace=function(code){if(code>=8192&&code<=8202)return!0;switch(code){case 9:case 10:case 11:case 12:case 13:case 32:case 160:case 5760:case 8239:case 8287:case 12288:return!0}return!1},t.isMdAsciiPunct=function(e){switch(e){case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 124:case 125:case 126:return!0;default:return!1}},t.isPunctChar=function(e){return x.test(e)},t.escapeRE=function(e){return e.replace(w,"\\$&")},t.normalizeReference=function(e){return e=e.trim().replace(/\s+/g," "),"Ṿ"==="ẞ".toLowerCase()&&(e=e.replace(/ẞ/g,"ß")),e.toLowerCase().toUpperCase()}},function(e,t,n){"use strict";n.d(t,"a",(function(){return Te})),n.d(t,"b",(function(){return Me})),n.d(t,"c",(function(){return Ne})),n.d(t,"d",(function(){return be})),n.d(t,"e",(function(){return ye})),n.d(t,"f",(function(){return oe})),n.d(t,"g",(function(){return ae})),n.d(t,"h",(function(){return Se}));var r=function(e,b){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,b){e.__proto__=b}||function(e,b){for(var p in b)Object.prototype.hasOwnProperty.call(b,p)&&(e[p]=b[p])},r(e,b)};var o,c=function(){return c=Object.assign||function(e){for(var s,i=1,t=arguments.length;i<t;i++)for(var p in s=arguments[i])Object.prototype.hasOwnProperty.call(s,p)&&(e[p]=s[p]);return e},c.apply(this,arguments)};function l(e){var s="function"==typeof Symbol&&Symbol.iterator,t=s&&e[s],i=0;if(t)return t.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&i>=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}};throw new TypeError(s?"Object is not iterable.":"Symbol.iterator is not defined.")}function f(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,i=n.call(e),c=[];try{for(;(void 0===t||t-- >0)&&!(r=i.next()).done;)c.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return c}function h(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))}var d=[],m=function(){function e(e){this.active=!0,this.effects=[],this.cleanups=[],this.vm=e}return e.prototype.run=function(e){if(this.active)try{return this.on(),e()}finally{this.off()}else 0},e.prototype.on=function(){this.active&&(d.push(this),o=this)},e.prototype.off=function(){this.active&&(d.pop(),o=d[d.length-1])},e.prototype.stop=function(){this.active&&(this.vm.$destroy(),this.effects.forEach((function(e){return e.stop()})),this.cleanups.forEach((function(e){return e()})),this.active=!1)},e}();!function(e){function t(t){void 0===t&&(t=!1);var n,r=void 0;return function(e){var t=x;x=!1;try{e()}finally{x=t}}((function(){r=W(E())})),n=e.call(this,r)||this,t||function(e,t){var n;if((t=t||o)&&t.active)return void t.effects.push(e);var r=null===(n=D())||void 0===n?void 0:n.proxy;r&&r.$on("hook:destroyed",(function(){return e.stop()}))}(n),n}(function(e,b){if("function"!=typeof b&&null!==b)throw new TypeError("Class extends value "+String(b)+" is not a constructor or null");function t(){this.constructor=e}r(e,b),e.prototype=null===b?Object.create(b):(t.prototype=b.prototype,new t)})(t,e)}(m);function v(){var e,t;return(null===(e=o)||void 0===e?void 0:e.vm)||(null===(t=D())||void 0===t?void 0:t.proxy)}var _=void 0;try{var y=require("vue");y&&C(y)?_=y:y&&"default"in y&&C(y.default)&&(_=y.default)}catch(e){}var k=null,w=null,x=!0,A="__composition_api_installed__";function C(e){return e&&Z(e)&&"Vue"===e.name}function E(){return k}function F(){return k||_}function S(e){if(x){var t=w;null==t||t.scope.off(),null==(w=e)||w.scope.on()}}function D(){return w}var T=new WeakMap;function z(e){if(T.has(e))return T.get(e);var t={proxy:e,update:e.$forceUpdate,type:e.$options,uid:e._uid,emit:e.$emit.bind(e),parent:null,root:null};!function(e){if(!e.scope){var t=new m(e.proxy);e.scope=t,e.proxy.$on("hook:destroyed",(function(){return t.stop()}))}e.scope}(t);return["data","props","attrs","refs","vnode","slots"].forEach((function(n){$(t,n,{get:function(){return e["$".concat(n)]}})})),$(t,"isMounted",{get:function(){return e._isMounted}}),$(t,"isUnmounted",{get:function(){return e._isDestroyed}}),$(t,"isDeactivated",{get:function(){return e._inactive}}),$(t,"emitted",{get:function(){return e._events}}),T.set(e,t),e.$parent&&(t.parent=z(e.$parent)),e.$root&&(t.root=z(e.$root)),t}function O(e){return"function"==typeof e&&/native code/.test(e.toString())}var L="undefined"!=typeof Symbol&&O(Symbol)&&"undefined"!=typeof Reflect&&O(Reflect.ownKeys),I=function(e){return e};function $(e,t,n){var r=n.get,o=n.set;Object.defineProperty(e,t,{enumerable:!0,configurable:!0,get:r||I,set:o||I})}function j(e,t,n,r){Object.defineProperty(e,t,{value:n,enumerable:!!r,writable:!0,configurable:!0})}function P(e,t){return Object.hasOwnProperty.call(e,t)}function R(e){return Array.isArray(e)}var M,N=Object.prototype.toString,B=function(e){return N.call(e)};function H(e){var t=parseFloat(String(e));return t>=0&&Math.floor(t)===t&&isFinite(e)&&t<=4294967295}function U(e){return null!==e&&"object"==typeof e}function V(e){return"[object Object]"===function(e){return Object.prototype.toString.call(e)}(e)}function Z(e){return"function"==typeof e}function G(e,t){return t=t||D()}function W(e,t){void 0===t&&(t={});var n=e.config.silent;e.config.silent=!0;var r=new e(t);return e.config.silent=n,r}function K(e,t){return function(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];if(e.$scopedSlots[t])return e.$scopedSlots[t].apply(e,n)}}function J(e){return L?Symbol.for(e):e}var Y=J("composition-api.preFlushQueue"),Q=J("composition-api.postFlushQueue"),X="composition-api.refKey",ee=new WeakMap,te=new WeakMap,ne=new WeakMap;var re=function(e){$(this,"value",{get:e.get,set:e.set})};function ie(e,t,n){void 0===t&&(t=!1),void 0===n&&(n=!1);var r=new re(e);n&&(r.effect=!0);var o=Object.seal(r);return t&&ne.set(o,!0),o}function oe(e){var t;if(se(e))return e;var n=me(((t={})[X]=e,t));return ie({get:function(){return n[X]},set:function(e){return n[X]=e}})}function se(e){return e instanceof re}function ae(e){return se(e)?e.value:e}function ce(object,e){e in object||function(e,t,n){var r=E().util,o=(r.warn,r.defineReactive),c=e.__ob__;function l(){c&&U(n)&&!P(n,"__ob__")&&de(n)}if(R(e)){if(H(t))return e.length=Math.max(e.length,t),e.splice(t,1,n),l(),n;if("length"===t&&n!==e.length)return e.length=n,null==c||c.dep.notify(),n}t in e&&!(t in Object.prototype)?(e[t]=n,l()):e._isVue||c&&c.vmCount||(c?(o(c.value,t,n),fe(e,t,n),l(),c.dep.notify()):e[t]=n)}(object,e,void 0);var t=object[e];return se(t)?t:ie({get:function(){return object[e]},set:function(t){return object[e]=t}})}function le(e){var t;return Boolean(e&&P(e,"__ob__")&&"object"==typeof e.__ob__&&(null===(t=e.__ob__)||void 0===t?void 0:t.__v_skip))}function ue(e){var t;return Boolean(e&&P(e,"__ob__")&&"object"==typeof e.__ob__&&!(null===(t=e.__ob__)||void 0===t?void 0:t.__v_skip))}function pe(e){if(!(!V(e)||le(e)||R(e)||se(e)||(t=e,n=E(),n&&t instanceof n)||ee.has(e))){var t,n;ee.set(e,!0);for(var r=Object.keys(e),i=0;i<r.length;i++)fe(e,r[i])}}function fe(e,t,n){if("__ob__"!==t&&!le(e[t])){var r,o,c=Object.getOwnPropertyDescriptor(e,t);if(c){if(!1===c.configurable)return;r=c.get,o=c.set,r&&!o||2!==arguments.length||(n=e[t])}pe(n),$(e,t,{get:function(){var o=r?r.call(e):n;return t!==X&&se(o)?o.value:o},set:function(c){r&&!o||(t!==X&&se(n)&&!se(c)?n.value=c:o?(o.call(e,c),n=c):n=c,pe(c))}})}}function he(e){var t,n=F();n.observable?t=n.observable(e):t=W(n,{data:{$$state:e}})._data.$$state;return P(t,"__ob__")||de(t),t}function de(e,t){var n,r;if(void 0===t&&(t=new Set),!t.has(e)&&!P(e,"__ob__")&&Object.isExtensible(e)){j(e,"__ob__",function(e){void 0===e&&(e={});return{value:e,dep:{notify:I,depend:I,addSub:I,removeSub:I}}}(e)),t.add(e);try{for(var o=l(Object.keys(e)),c=o.next();!c.done;c=o.next()){var f=e[c.value];(V(f)||R(f))&&!le(f)&&Object.isExtensible(f)&&de(f,t)}}catch(e){n={error:e}}finally{try{c&&!c.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}}}function ge(){return he({}).__ob__}function me(e){if(!U(e))return e;if(!V(e)&&!R(e)||le(e)||!Object.isExtensible(e))return e;var t=he(e);return pe(t),t}function ve(e){return function(t,n){var r,o=G("on".concat((r=e)[0].toUpperCase()+r.slice(1)),n);return o&&function(e,t,n,r){var o=t.proxy.$options,c=e.config.optionMergeStrategies[n],l=function(e,t){return function(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];var o=D();S(e);try{return t.apply(void 0,h([],f(n),!1))}finally{S(o)}}}(t,r);return o[n]=c(o[n],l),l}(E(),o,e,t)}}ve("beforeMount");var _e,be=ve("mounted"),ye=(ve("beforeUpdate"),ve("updated"),ve("beforeDestroy"),ve("destroyed"));ve("errorCaptured"),ve("activated"),ve("deactivated"),ve("serverPrefetch");function ke(){Ae(this,Y)}function we(){Ae(this,Q)}function xe(){var e=v();return e?function(e){return void 0!==e[Y]}(e)||function(e){e[Y]=[],e[Q]=[],e.$on("hook:beforeUpdate",ke),e.$on("hook:updated",we)}(e):(_e||(_e=W(E())),e=_e),e}function Ae(e,t){for(var n=e[t],r=0;r<n.length;r++)n[r]();n.length=0}function Ce(e,t,n){var r=function(){e.$nextTick((function(){e[Y].length&&Ae(e,Y),e[Q].length&&Ae(e,Q)}))};switch(n){case"pre":r(),e[Y].push(t);break;case"post":r(),e[Q].push(t);break;default:!function(e,t){if(!e)throw new Error("[vue-composition-api] ".concat(t))}(!1,'flush must be one of ["post", "pre", "sync"], but got '.concat(n))}}function Ee(e,t){var n=e.teardown;e.teardown=function(){for(var r=[],o=0;o<arguments.length;o++)r[o]=arguments[o];n.apply(e,r),t()}}function Fe(e,source,t,n){var r;var o,c=n.flush,l="sync"===c,d=function(e){o=function(){try{e()}catch(e){!function(e,t,n){if("undefined"==typeof window||"undefined"==typeof console)throw e;console.error(e)}(e)}}},m=function(){o&&(o(),o=null)},v=function(t){return l||e===_e?t:function(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];return Ce(e,(function(){t.apply(void 0,h([],f(n),!1))}),c)}};if(null===t){var _=!1,y=function(e,t,n,r){var o=e._watchers.length;return e.$watch(t,n,{immediate:r.immediateInvokeCallback,deep:r.deep,lazy:r.noRun,sync:r.sync,before:r.before}),e._watchers[o]}(e,(function(){if(!_)try{_=!0,source(d)}finally{_=!1}}),I,{deep:n.deep||!1,sync:l,before:m});Ee(y,m),y.lazy=!1;var k=y.get.bind(y);return y.get=v(k),function(){y.teardown()}}var w,x=n.deep,A=!1;if(se(source)?w=function(){return source.value}:ue(source)?(w=function(){return source},x=!0):R(source)?(A=!0,w=function(){return source.map((function(s){return se(s)?s.value:ue(s)?De(s):Z(s)?s():I}))}):w=Z(source)?source:I,x){var C=w;w=function(){return De(C())}}var E=function(e,n){if(x||!A||!e.every((function(e,i){return t=e,r=n[i],t===r?0!==t||1/t==1/r:t!=t&&r!=r;var t,r})))return m(),t(e,n,d)},F=v(E);if(n.immediate){var S=F,D=function(e,t){return D=S,E(e,R(e)?[]:t)};F=function(e,t){return D(e,t)}}var T=e.$watch(w,F,{immediate:n.immediate,deep:x,sync:l}),z=e._watchers[e._watchers.length-1];return ue(z.value)&&(null===(r=z.value.__ob__)||void 0===r?void 0:r.dep)&&x&&z.value.__ob__.dep.addSub({update:function(){z.run()}}),Ee(z,m),function(){T()}}function Se(source,e,t){var n=null;Z(e)?n=e:(t=e,n=null);var r=function(e){return c({immediate:!1,deep:!1,flush:"pre"},e)}(t);return Fe(xe(),source,n,r)}function De(e,t){if(void 0===t&&(t=new Set),!U(e)||t.has(e)||te.has(e))return e;if(t.add(e),se(e))De(e.value,t);else if(R(e))for(var i=0;i<e.length;i++)De(e[i],t);else if("[object Set]"===B(e)||function(e){return"[object Map]"===B(e)}(e))e.forEach((function(e){De(e,t)}));else if(V(e))for(var n in e)De(e[n],t);return e}function Te(e){var t,n,r,o,c=v();if(Z(e)?t=e:(t=e.get,n=e.set),c&&!c.$isServer){var l,f=function(){if(!M){var e=W(E(),{computed:{value:function(){return 0}}}),t=e._computedWatchers.value.constructor,n=e._data.__ob__.dep.constructor;M={Watcher:t,Dep:n},e.$destroy()}return M}(),h=f.Watcher,d=f.Dep;o=function(){return l||(l=new h(c,t,I,{lazy:!0})),l.dirty&&l.evaluate(),d.target&&l.depend(),l.value},r=function(e){n&&n(e)}}else{var m=W(E(),{computed:{$$state:{get:t,set:n}}});c&&c.$on("hook:destroyed",(function(){return m.$destroy()})),o=function(){return m.$$state},r=function(e){m.$$state=e}}return ie({get:o,set:r},!n,!0)}var ze={set:function(e,t,n){(e.__composition_api_state__=e.__composition_api_state__||{})[t]=n},get:function(e,t){return(e.__composition_api_state__||{})[t]}};function Oe(e){var t=ze.get(e,"rawBindings")||{};if(t&&Object.keys(t).length){for(var n=e.$refs,r=ze.get(e,"refs")||[],o=0;o<r.length;o++){var c=t[h=r[o]];!n[h]&&c&&se(c)&&(c.value=null)}var l=Object.keys(n),f=[];for(o=0;o<l.length;o++){var h;c=t[h=l[o]];n[h]&&c&&se(c)&&(c.value=n[h],f.push(h))}ze.set(e,"refs",f)}}function Le(e){for(var t=[e._vnode];t.length;){var n=t.pop();if(n&&(n.context&&Oe(n.context),n.children))for(var i=0;i<n.children.length;++i)t.push(n.children[i])}}function qe(e,t){var n,r;if(e){var o=ze.get(e,"attrBindings");if(o||t){if(!o){var c=me({});o={ctx:t,data:c},ze.set(e,"attrBindings",o),$(t,"attrs",{get:function(){return null==o?void 0:o.data},set:function(){}})}var source=e.$attrs,f=function(t){P(o.data,t)||$(o.data,t,{get:function(){return e.$attrs[t]}})};try{for(var h=l(Object.keys(source)),d=h.next();!d.done;d=h.next()){f(d.value)}}catch(e){n={error:e}}finally{try{d&&!d.done&&(r=h.return)&&r.call(h)}finally{if(n)throw n.error}}}}}function Ie(e,t){var n=e.$options._parentVnode;if(n){for(var r=ze.get(e,"slots")||[],o=function(e,t){var n;if(e){if(e._normalized)return e._normalized;for(var r in n={},e)e[r]&&"$"!==r[0]&&(n[r]=!0)}else n={};for(var r in t)r in n||(n[r]=!0);return n}(n.data.scopedSlots,e.$slots),c=0;c<r.length;c++){o[f=r[c]]||delete t[f]}var l=Object.keys(o);for(c=0;c<l.length;c++){var f;t[f=l[c]]||(t[f]=K(e,f))}ze.set(e,"slots",l)}}function $e(e,t,n){var r=D();S(e);try{return t(e)}catch(e){if(!n)throw e;n(e)}finally{S(r)}}function je(e){function t(e,n){if(void 0===n&&(n=new Set),!n.has(e)&&V(e)&&!se(e)&&!ue(e)&&!le(e)){var r=E().util.defineReactive;Object.keys(e).forEach((function(o){var c=e[o];r(e,o,c),c&&(n.add(c),t(c,n))}))}}function n(e,t){return void 0===t&&(t=new Map),t.has(e)?t.get(e):(t.set(e,!1),R(e)&&ue(e)?(t.set(e,!0),!0):!(!V(e)||le(e)||se(e))&&Object.keys(e).some((function(r){return n(e[r],t)})))}e.mixin({beforeCreate:function(){var e=this,r=e.$options,o=r.setup,c=r.render;c&&(r.render=function(){for(var t=this,n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];return $e(z(e),(function(){return c.apply(t,n)}))});if(!o)return;if(!Z(o))return void 0;var data=r.data;r.data=function(){return function(e,r){void 0===r&&(r={});var o,c=e.$options.setup,l=function(e){var t={slots:{}},n=["emit"];["root","parent","refs","listeners","isServer","ssrContext"].forEach((function(n){var r="$".concat(n);$(t,n,{get:function(){return e[r]},set:function(){}})})),qe(e,t),n.forEach((function(n){var r="$".concat(n);$(t,n,{get:function(){return function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];e[r].apply(e,t)}}})})),!1;return t}(e),f=z(e);if(f.setupContext=l,j(r,"__ob__",ge()),Ie(e,l.slots),$e(f,(function(){o=c(r,l)})),!o)return;if(Z(o)){var h=o;return void(e.$options.render=function(){return Ie(e,l.slots),$e(f,(function(){return h()}))})}if(U(o)){ue(o)&&(o=function(e){if(!V(e))return e;var t={};for(var n in e)t[n]=ce(e,n);return t}(o)),ze.set(e,"rawBindings",o);var d=o;return void Object.keys(d).forEach((function(r){var o=d[r];if(!se(o))if(ue(o))R(o)&&(o=oe(o));else if(Z(o)){var c=o;o=o.bind(e),Object.keys(c).forEach((function(e){o[e]=c[e]}))}else U(o)?n(o)&&t(o):o=oe(o);!function(e,t,n){var r=e.$options.props;t in e||r&&P(r,t)||(se(n)?$(e,t,{get:function(){return n.value},set:function(e){n.value=e}}):$(e,t,{get:function(){return ue(n)&&n.__ob__.dep.depend(),n},set:function(e){n=e}}))}(e,r,o)}))}0}(e,e.$props),Z(data)?data.call(e,e):data||{}}},mounted:function(){Le(this)},beforeUpdate:function(){qe(this)},updated:function(){Le(this)}})}function Pe(e,t){if(!e)return t;if(!t)return e;for(var n,r,o,c=L?Reflect.ownKeys(e):Object.keys(e),i=0;i<c.length;i++)"__ob__"!==(n=c[i])&&(r=t[n],o=e[n],P(t,n)?r!==o&&V(r)&&!se(r)&&V(o)&&!se(o)&&Pe(o,r):t[n]=o);return t}function Re(e){(function(e){return k&&P(e,A)})(e)||(e.config.optionMergeStrategies.setup=function(e,t){return function(n,r){return Pe(Z(e)?e(n,r)||{}:void 0,Z(t)?t(n,r)||{}:void 0)}},function(e){k=e,Object.defineProperty(e,A,{configurable:!0,writable:!0,value:!0})}(e),je(e))}var Me={install:function(e){return Re(e)}};function Ne(e){return e}"undefined"!=typeof window&&window.Vue&&window.Vue.use(Me)},function(e,t,n){"use strict";n.d(t,"b",(function(){return D})),n.d(t,"a",(function(){return R}));const r="function"==typeof atob,o="function"==typeof btoa,c="function"==typeof Buffer,l="function"==typeof TextDecoder?new TextDecoder:void 0,f="function"==typeof TextEncoder?new TextEncoder:void 0,h=Array.prototype.slice.call("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="),d=(a=>{let e={};return a.forEach(((t,i)=>e[t]=i)),e})(h),m=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,v=String.fromCharCode.bind(String),_="function"==typeof Uint8Array.from?Uint8Array.from.bind(Uint8Array):(e,t=(e=>e))=>new Uint8Array(Array.prototype.slice.call(e,0).map(t)),y=e=>e.replace(/=/g,"").replace(/[+\/]/g,(e=>"+"==e?"-":"_")),k=s=>s.replace(/[^A-Za-z0-9\+\/]/g,""),w=e=>{let t,n,r,o,c="";const l=e.length%3;for(let i=0;i<e.length;){if((n=e.charCodeAt(i++))>255||(r=e.charCodeAt(i++))>255||(o=e.charCodeAt(i++))>255)throw new TypeError("invalid character found");t=n<<16|r<<8|o,c+=h[t>>18&63]+h[t>>12&63]+h[t>>6&63]+h[63&t]}return l?c.slice(0,l-3)+"===".substring(l):c},x=o?e=>btoa(e):c?e=>Buffer.from(e,"binary").toString("base64"):w,A=c?e=>Buffer.from(e).toString("base64"):e=>{let t=[];for(let i=0,n=e.length;i<n;i+=4096)t.push(v.apply(null,e.subarray(i,i+4096)));return x(t.join(""))},C=e=>{if(e.length<2)return(t=e.charCodeAt(0))<128?e:t<2048?v(192|t>>>6)+v(128|63&t):v(224|t>>>12&15)+v(128|t>>>6&63)+v(128|63&t);var t=65536+1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320);return v(240|t>>>18&7)+v(128|t>>>12&63)+v(128|t>>>6&63)+v(128|63&t)},E=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,F=u=>u.replace(E,C),S=c?s=>Buffer.from(s,"utf8").toString("base64"):f?s=>A(f.encode(s)):s=>x(F(s)),D=(e,t=!1)=>t?y(S(e)):S(e),T=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,z=e=>{switch(e.length){case 4:var t=((7&e.charCodeAt(0))<<18|(63&e.charCodeAt(1))<<12|(63&e.charCodeAt(2))<<6|63&e.charCodeAt(3))-65536;return v(55296+(t>>>10))+v(56320+(1023&t));case 3:return v((15&e.charCodeAt(0))<<12|(63&e.charCodeAt(1))<<6|63&e.charCodeAt(2));default:return v((31&e.charCodeAt(0))<<6|63&e.charCodeAt(1))}},O=b=>b.replace(T,z),L=e=>{if(e=e.replace(/\s+/g,""),!m.test(e))throw new TypeError("malformed base64.");e+="==".slice(2-(3&e.length));let t,n,r,o="";for(let i=0;i<e.length;)t=d[e.charAt(i++)]<<18|d[e.charAt(i++)]<<12|(n=d[e.charAt(i++)])<<6|(r=d[e.charAt(i++)]),o+=64===n?v(t>>16&255):64===r?v(t>>16&255,t>>8&255):v(t>>16&255,t>>8&255,255&t);return o},I=r?e=>atob(k(e)):c?e=>Buffer.from(e,"base64").toString("binary"):L,$=c?a=>_(Buffer.from(a,"base64")):a=>_(I(a),(e=>e.charCodeAt(0))),j=c?a=>Buffer.from(a,"base64").toString("utf8"):l?a=>l.decode($(a)):a=>O(I(a)),P=a=>k(a.replace(/[-_]/g,(e=>"-"==e?"+":"/"))),R=e=>j(P(e))},function(e,t){e.exports=/[!-#%-\*,-\/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4E\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDF55-\uDF59]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDC4B-\uDC4F\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDF3C-\uDF3E]|\uD806[\uDC3B\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDE97-\uDE9A]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD83A[\uDD5E\uDD5F]/},function(e,t,n){"use strict";function r(){this.__rules__=[],this.__cache__=null}r.prototype.__find__=function(e){for(var i=0;i<this.__rules__.length;i++)if(this.__rules__[i].name===e)return i;return-1},r.prototype.__compile__=function(){var e=this,t=[""];e.__rules__.forEach((function(e){e.enabled&&e.alt.forEach((function(e){t.indexOf(e)<0&&t.push(e)}))})),e.__cache__={},t.forEach((function(t){e.__cache__[t]=[],e.__rules__.forEach((function(n){n.enabled&&(t&&n.alt.indexOf(t)<0||e.__cache__[t].push(n.fn))}))}))},r.prototype.at=function(e,t,n){var r=this.__find__(e),o=n||{};if(-1===r)throw new Error("Parser rule not found: "+e);this.__rules__[r].fn=t,this.__rules__[r].alt=o.alt||[],this.__cache__=null},r.prototype.before=function(e,t,n,r){var o=this.__find__(e),c=r||{};if(-1===o)throw new Error("Parser rule not found: "+e);this.__rules__.splice(o,0,{name:t,enabled:!0,fn:n,alt:c.alt||[]}),this.__cache__=null},r.prototype.after=function(e,t,n,r){var o=this.__find__(e),c=r||{};if(-1===o)throw new Error("Parser rule not found: "+e);this.__rules__.splice(o+1,0,{name:t,enabled:!0,fn:n,alt:c.alt||[]}),this.__cache__=null},r.prototype.push=function(e,t,n){var r=n||{};this.__rules__.push({name:e,enabled:!0,fn:t,alt:r.alt||[]}),this.__cache__=null},r.prototype.enable=function(e,t){Array.isArray(e)||(e=[e]);var n=[];return e.forEach((function(e){var r=this.__find__(e);if(r<0){if(t)return;throw new Error("Rules manager: invalid rule name "+e)}this.__rules__[r].enabled=!0,n.push(e)}),this),this.__cache__=null,n},r.prototype.enableOnly=function(e,t){Array.isArray(e)||(e=[e]),this.__rules__.forEach((function(e){e.enabled=!1})),this.enable(e,t)},r.prototype.disable=function(e,t){Array.isArray(e)||(e=[e]);var n=[];return e.forEach((function(e){var r=this.__find__(e);if(r<0){if(t)return;throw new Error("Rules manager: invalid rule name "+e)}this.__rules__[r].enabled=!1,n.push(e)}),this),this.__cache__=null,n},r.prototype.getRules=function(e){return null===this.__cache__&&this.__compile__(),this.__cache__[e]||[]},e.exports=r},function(e,t,n){"use strict";function r(e,t,n){this.type=e,this.tag=t,this.attrs=null,this.map=null,this.nesting=n,this.level=0,this.children=null,this.content="",this.markup="",this.info="",this.meta=null,this.block=!1,this.hidden=!1}r.prototype.attrIndex=function(e){var t,i,n;if(!this.attrs)return-1;for(i=0,n=(t=this.attrs).length;i<n;i++)if(t[i][0]===e)return i;return-1},r.prototype.attrPush=function(e){this.attrs?this.attrs.push(e):this.attrs=[e]},r.prototype.attrSet=function(e,t){var n=this.attrIndex(e),r=[e,t];n<0?this.attrPush(r):this.attrs[n]=r},r.prototype.attrGet=function(e){var t=this.attrIndex(e),n=null;return t>=0&&(n=this.attrs[t][1]),n},r.prototype.attrJoin=function(e,t){var n=this.attrIndex(e);n<0?this.attrPush([e,t]):this.attrs[n][1]=this.attrs[n][1]+" "+t},e.exports=r},,function(e,t){Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/}},function(e,t){Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:Prism.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),Prism.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),Prism.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),Prism.languages.markup&&(Prism.languages.markup.tag.addInlined("script","javascript"),Prism.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),Prism.languages.js=Prism.languages.javascript},function(e,t,n){e.exports={}},function(e,t){e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},function(e,t,n){var r=n(224),o="object"==typeof self&&self&&self.Object===Object&&self,c=r||o||Function("return this")();e.exports=c},function(e,t,n){var r=n(201).Symbol;e.exports=r},,,,function(e,t,n){"use strict";e.exports=n(248)},function(e,t,n){"use strict";e.exports.encode=n(249),e.exports.decode=n(250),e.exports.format=n(251),e.exports.parse=n(252)},function(e,t){e.exports=/[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/},function(e,t){e.exports=/[\0-\x1F\x7F-\x9F]/},function(e,t){e.exports=/[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/},function(e,t,n){"use strict";var r="<[A-Za-z][A-Za-z0-9\\-]*(?:\\s+[a-zA-Z_:][a-zA-Z0-9:._-]*(?:\\s*=\\s*(?:[^\"'=<>`\\x00-\\x20]+|'[^']*'|\"[^\"]*\"))?)*\\s*\\/?>",o="<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>",c=new RegExp("^(?:"+r+"|"+o+"|\x3c!----\x3e|\x3c!--(?:-?[^>-])(?:-?[^-])*--\x3e|<[?][\\s\\S]*?[?]>|<![A-Z]+\\s+[^>]*>|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>)"),l=new RegExp("^(?:"+r+"|"+o+")");e.exports.HTML_TAG_RE=c,e.exports.HTML_OPEN_CLOSE_TAG_RE=l},function(e,t,n){"use strict";function r(e,t){var i,n,r,o,c,l=[],f=t.length;for(i=0;i<f;i++)126===(r=t[i]).marker&&-1!==r.end&&(o=t[r.end],(c=e.tokens[r.token]).type="s_open",c.tag="s",c.nesting=1,c.markup="~~",c.content="",(c=e.tokens[o.token]).type="s_close",c.tag="s",c.nesting=-1,c.markup="~~",c.content="","text"===e.tokens[o.token-1].type&&"~"===e.tokens[o.token-1].content&&l.push(o.token-1));for(;l.length;){for(n=(i=l.pop())+1;n<e.tokens.length&&"s_close"===e.tokens[n].type;)n++;i!==--n&&(c=e.tokens[n],e.tokens[n]=e.tokens[i],e.tokens[i]=c)}}e.exports.tokenize=function(e,t){var i,n,r,o,c=e.pos,marker=e.src.charCodeAt(c);if(t)return!1;if(126!==marker)return!1;if(r=(n=e.scanDelims(e.pos,!0)).length,o=String.fromCharCode(marker),r<2)return!1;for(r%2&&(e.push("text","",0).content=o,r--),i=0;i<r;i+=2)e.push("text","",0).content=o+o,e.delimiters.push({marker:marker,length:0,token:e.tokens.length-1,end:-1,open:n.can_open,close:n.can_close});return e.pos+=n.length,!0},e.exports.postProcess=function(e){var t,n=e.tokens_meta,o=e.tokens_meta.length;for(r(e,e.delimiters),t=0;t<o;t++)n[t]&&n[t].delimiters&&r(e,n[t].delimiters)}},function(e,t,n){"use strict";function r(e,t){var i,n,r,o,c,l;for(i=t.length-1;i>=0;i--)95!==(n=t[i]).marker&&42!==n.marker||-1!==n.end&&(r=t[n.end],l=i>0&&t[i-1].end===n.end+1&&t[i-1].marker===n.marker&&t[i-1].token===n.token-1&&t[n.end+1].token===r.token+1,c=String.fromCharCode(n.marker),(o=e.tokens[n.token]).type=l?"strong_open":"em_open",o.tag=l?"strong":"em",o.nesting=1,o.markup=l?c+c:c,o.content="",(o=e.tokens[r.token]).type=l?"strong_close":"em_close",o.tag=l?"strong":"em",o.nesting=-1,o.markup=l?c+c:c,o.content="",l&&(e.tokens[t[i-1].token].content="",e.tokens[t[n.end+1].token].content="",i--))}e.exports.tokenize=function(e,t){var i,n,r=e.pos,marker=e.src.charCodeAt(r);if(t)return!1;if(95!==marker&&42!==marker)return!1;for(n=e.scanDelims(e.pos,42===marker),i=0;i<n.length;i++)e.push("text","",0).content=String.fromCharCode(marker),e.delimiters.push({marker:marker,length:n.length,token:e.tokens.length-1,end:-1,open:n.can_open,close:n.can_close});return e.pos+=n.length,!0},e.exports.postProcess=function(e){var t,n=e.tokens_meta,o=e.tokens_meta.length;for(r(e,e.delimiters),t=0;t<o;t++)n[t]&&n[t].delimiters&&r(e,n[t].delimiters)}},,function(e,t){!function(){"use strict";if("object"==typeof window)if("IntersectionObserver"in window&&"IntersectionObserverEntry"in window&&"intersectionRatio"in window.IntersectionObserverEntry.prototype)"isIntersecting"in window.IntersectionObserverEntry.prototype||Object.defineProperty(window.IntersectionObserverEntry.prototype,"isIntersecting",{get:function(){return this.intersectionRatio>0}});else{var e=function(e){for(var t=window.document,n=o(t);n;)n=o(t=n.ownerDocument);return t}(),t=[],n=null,r=null;l.prototype.THROTTLE_TIMEOUT=100,l.prototype.POLL_INTERVAL=null,l.prototype.USE_MUTATION_OBSERVER=!0,l._setupCrossOriginUpdater=function(){return n||(n=function(e,n){r=e&&n?v(e,n):{top:0,bottom:0,left:0,right:0,width:0,height:0},t.forEach((function(e){e._checkForIntersections()}))}),n},l._resetCrossOriginUpdater=function(){n=null,r=null},l.prototype.observe=function(e){if(!this._observationTargets.some((function(t){return t.element==e}))){if(!e||1!=e.nodeType)throw new Error("target must be an Element");this._registerInstance(),this._observationTargets.push({element:e,entry:null}),this._monitorIntersections(e.ownerDocument),this._checkForIntersections()}},l.prototype.unobserve=function(e){this._observationTargets=this._observationTargets.filter((function(t){return t.element!=e})),this._unmonitorIntersections(e.ownerDocument),0==this._observationTargets.length&&this._unregisterInstance()},l.prototype.disconnect=function(){this._observationTargets=[],this._unmonitorAllIntersections(),this._unregisterInstance()},l.prototype.takeRecords=function(){var e=this._queuedEntries.slice();return this._queuedEntries=[],e},l.prototype._initThresholds=function(e){var t=e||[0];return Array.isArray(t)||(t=[t]),t.sort().filter((function(e,i,a){if("number"!=typeof e||isNaN(e)||e<0||e>1)throw new Error("threshold must be a number between 0 and 1 inclusively");return e!==a[i-1]}))},l.prototype._parseRootMargin=function(e){var t=(e||"0px").split(/\s+/).map((function(e){var t=/^(-?\d*\.?\d+)(px|%)$/.exec(e);if(!t)throw new Error("rootMargin must be specified in pixels or percent");return{value:parseFloat(t[1]),unit:t[2]}}));return t[1]=t[1]||t[0],t[2]=t[2]||t[0],t[3]=t[3]||t[1],t},l.prototype._monitorIntersections=function(t){var n=t.defaultView;if(n&&-1==this._monitoringDocuments.indexOf(t)){var r=this._checkForIntersections,c=null,l=null;this.POLL_INTERVAL?c=n.setInterval(r,this.POLL_INTERVAL):(f(n,"resize",r,!0),f(t,"scroll",r,!0),this.USE_MUTATION_OBSERVER&&"MutationObserver"in n&&(l=new n.MutationObserver(r)).observe(t,{attributes:!0,childList:!0,characterData:!0,subtree:!0})),this._monitoringDocuments.push(t),this._monitoringUnsubscribes.push((function(){var e=t.defaultView;e&&(c&&e.clearInterval(c),h(e,"resize",r,!0)),h(t,"scroll",r,!0),l&&l.disconnect()}));var d=this.root&&(this.root.ownerDocument||this.root)||e;if(t!=d){var m=o(t);m&&this._monitorIntersections(m.ownerDocument)}}},l.prototype._unmonitorIntersections=function(t){var n=this._monitoringDocuments.indexOf(t);if(-1!=n){var r=this.root&&(this.root.ownerDocument||this.root)||e,c=this._observationTargets.some((function(e){var n=e.element.ownerDocument;if(n==t)return!0;for(;n&&n!=r;){var c=o(n);if((n=c&&c.ownerDocument)==t)return!0}return!1}));if(!c){var l=this._monitoringUnsubscribes[n];if(this._monitoringDocuments.splice(n,1),this._monitoringUnsubscribes.splice(n,1),l(),t!=r){var f=o(t);f&&this._unmonitorIntersections(f.ownerDocument)}}}},l.prototype._unmonitorAllIntersections=function(){var e=this._monitoringUnsubscribes.slice(0);this._monitoringDocuments.length=0,this._monitoringUnsubscribes.length=0;for(var i=0;i<e.length;i++)e[i]()},l.prototype._checkForIntersections=function(){if(this.root||!n||r){var e=this._rootIsInDom(),t=e?this._getRootRect():{top:0,bottom:0,left:0,right:0,width:0,height:0};this._observationTargets.forEach((function(r){var o=r.element,l=d(o),f=this._rootContainsTarget(o),h=r.entry,m=e&&f&&this._computeTargetAndRootIntersection(o,l,t),v=null;this._rootContainsTarget(o)?n&&!this.root||(v=t):v={top:0,bottom:0,left:0,right:0,width:0,height:0};var _=r.entry=new c({time:window.performance&&performance.now&&performance.now(),target:o,boundingClientRect:l,rootBounds:v,intersectionRect:m});h?e&&f?this._hasCrossedThreshold(h,_)&&this._queuedEntries.push(_):h&&h.isIntersecting&&this._queuedEntries.push(_):this._queuedEntries.push(_)}),this),this._queuedEntries.length&&this._callback(this.takeRecords(),this)}},l.prototype._computeTargetAndRootIntersection=function(t,o,c){if("none"!=window.getComputedStyle(t).display){for(var l,f,h,m,_,k,w,x,A=o,C=y(t),E=!1;!E&&C;){var F=null,S=1==C.nodeType?window.getComputedStyle(C):{};if("none"==S.display)return null;if(C==this.root||9==C.nodeType)if(E=!0,C==this.root||C==e)n&&!this.root?!r||0==r.width&&0==r.height?(C=null,F=null,A=null):F=r:F=c;else{var D=y(C),T=D&&d(D),z=D&&this._computeTargetAndRootIntersection(D,T,c);T&&z?(C=D,F=v(T,z)):(C=null,A=null)}else{var O=C.ownerDocument;C!=O.body&&C!=O.documentElement&&"visible"!=S.overflow&&(F=d(C))}if(F&&(l=F,f=A,h=void 0,m=void 0,_=void 0,k=void 0,w=void 0,x=void 0,h=Math.max(l.top,f.top),m=Math.min(l.bottom,f.bottom),_=Math.max(l.left,f.left),k=Math.min(l.right,f.right),x=m-h,A=(w=k-_)>=0&&x>=0&&{top:h,bottom:m,left:_,right:k,width:w,height:x}||null),!A)break;C=C&&y(C)}return A}},l.prototype._getRootRect=function(){var t;if(this.root&&!k(this.root))t=d(this.root);else{var n=k(this.root)?this.root:e,html=n.documentElement,body=n.body;t={top:0,left:0,right:html.clientWidth||body.clientWidth,width:html.clientWidth||body.clientWidth,bottom:html.clientHeight||body.clientHeight,height:html.clientHeight||body.clientHeight}}return this._expandRectByRootMargin(t)},l.prototype._expandRectByRootMargin=function(rect){var e=this._rootMarginValues.map((function(e,i){return"px"==e.unit?e.value:e.value*(i%2?rect.width:rect.height)/100})),t={top:rect.top-e[0],right:rect.right+e[1],bottom:rect.bottom+e[2],left:rect.left-e[3]};return t.width=t.right-t.left,t.height=t.bottom-t.top,t},l.prototype._hasCrossedThreshold=function(e,t){var n=e&&e.isIntersecting?e.intersectionRatio||0:-1,r=t.isIntersecting?t.intersectionRatio||0:-1;if(n!==r)for(var i=0;i<this.thresholds.length;i++){var o=this.thresholds[i];if(o==n||o==r||o<n!=o<r)return!0}},l.prototype._rootIsInDom=function(){return!this.root||_(e,this.root)},l.prototype._rootContainsTarget=function(t){var n=this.root&&(this.root.ownerDocument||this.root)||e;return _(n,t)&&(!this.root||n==t.ownerDocument)},l.prototype._registerInstance=function(){t.indexOf(this)<0&&t.push(this)},l.prototype._unregisterInstance=function(){var e=t.indexOf(this);-1!=e&&t.splice(e,1)},window.IntersectionObserver=l,window.IntersectionObserverEntry=c}function o(e){try{return e.defaultView&&e.defaultView.frameElement||null}catch(e){return null}}function c(e){this.time=e.time,this.target=e.target,this.rootBounds=m(e.rootBounds),this.boundingClientRect=m(e.boundingClientRect),this.intersectionRect=m(e.intersectionRect||{top:0,bottom:0,left:0,right:0,width:0,height:0}),this.isIntersecting=!!e.intersectionRect;var t=this.boundingClientRect,n=t.width*t.height,r=this.intersectionRect,o=r.width*r.height;this.intersectionRatio=n?Number((o/n).toFixed(4)):this.isIntersecting?1:0}function l(e,t){var n,r,o,c=t||{};if("function"!=typeof e)throw new Error("callback must be a function");if(c.root&&1!=c.root.nodeType&&9!=c.root.nodeType)throw new Error("root must be a Document or Element");this._checkForIntersections=(n=this._checkForIntersections.bind(this),r=this.THROTTLE_TIMEOUT,o=null,function(){o||(o=setTimeout((function(){n(),o=null}),r))}),this._callback=e,this._observationTargets=[],this._queuedEntries=[],this._rootMarginValues=this._parseRootMargin(c.rootMargin),this.thresholds=this._initThresholds(c.threshold),this.root=c.root||null,this.rootMargin=this._rootMarginValues.map((function(e){return e.value+e.unit})).join(" "),this._monitoringDocuments=[],this._monitoringUnsubscribes=[]}function f(e,t,n,r){"function"==typeof e.addEventListener?e.addEventListener(t,n,r||!1):"function"==typeof e.attachEvent&&e.attachEvent("on"+t,n)}function h(e,t,n,r){"function"==typeof e.removeEventListener?e.removeEventListener(t,n,r||!1):"function"==typeof e.detachEvent&&e.detachEvent("on"+t,n)}function d(e){var rect;try{rect=e.getBoundingClientRect()}catch(e){}return rect?(rect.width&&rect.height||(rect={top:rect.top,right:rect.right,bottom:rect.bottom,left:rect.left,width:rect.right-rect.left,height:rect.bottom-rect.top}),rect):{top:0,bottom:0,left:0,right:0,width:0,height:0}}function m(rect){return!rect||"x"in rect?rect:{top:rect.top,y:rect.top,bottom:rect.bottom,left:rect.left,x:rect.left,right:rect.right,width:rect.width,height:rect.height}}function v(e,t){var n=t.top-e.top,r=t.left-e.left;return{top:n,left:r,height:t.height,width:t.width,bottom:n+t.height,right:r+t.width}}function _(e,t){for(var n=t;n;){if(n==e)return!0;n=y(n)}return!1}function y(t){var n=t.parentNode;return 9==t.nodeType&&t!=e?o(t):(n&&n.assignedSlot&&(n=n.assignedSlot.parentNode),n&&11==n.nodeType&&n.host?n.host:n)}function k(e){return e&&9===e.nodeType}}()},function(e,t,n){"use strict";(function(e){function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}function o(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function c(e){return function(e){if(Array.isArray(e)){for(var i=0,t=new Array(e.length);i<e.length;i++)t[i]=e[i];return t}}(e)||function(e){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e))return Array.from(e)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}function l(e,t){if(e===t)return!0;if("object"===r(e)){for(var n in e)if(!l(e[n],t[n]))return!1;return!0}return!1}n.d(t,"a",(function(){return m}));var f=function(){function e(t,n,r){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.el=t,this.observer=null,this.frozen=!1,this.createObserver(n,r)}var t,n,r;return t=e,n=[{key:"createObserver",value:function(e,t){var n=this;if(this.observer&&this.destroyObserver(),!this.frozen){var r;if(this.options="function"==typeof(r=e)?{callback:r}:r,this.callback=function(e,t){n.options.callback(e,t),e&&n.options.once&&(n.frozen=!0,n.destroyObserver())},this.callback&&this.options.throttle){var o=(this.options.throttleOptions||{}).leading;this.callback=function(e,t){var n,r,o,l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},f=function(f){for(var h=arguments.length,d=new Array(h>1?h-1:0),m=1;m<h;m++)d[m-1]=arguments[m];if(o=d,!n||f!==r){var v=l.leading;"function"==typeof v&&(v=v(f,r)),n&&f===r||!v||e.apply(void 0,[f].concat(c(o))),r=f,clearTimeout(n),n=setTimeout((function(){e.apply(void 0,[f].concat(c(o))),n=0}),t)}};return f._clear=function(){clearTimeout(n),n=null},f}(this.callback,this.options.throttle,{leading:function(e){return"both"===o||"visible"===o&&e||"hidden"===o&&!e}})}this.oldResult=void 0,this.observer=new IntersectionObserver((function(e){var t=e[0];if(e.length>1){var r=e.find((function(e){return e.isIntersecting}));r&&(t=r)}if(n.callback){var o=t.isIntersecting&&t.intersectionRatio>=n.threshold;if(o===n.oldResult)return;n.oldResult=o,n.callback(o,t)}}),this.options.intersection),t.context.$nextTick((function(){n.observer&&n.observer.observe(n.el)}))}}},{key:"destroyObserver",value:function(){this.observer&&(this.observer.disconnect(),this.observer=null),this.callback&&this.callback._clear&&(this.callback._clear(),this.callback=null)}},{key:"threshold",get:function(){return this.options.intersection&&"number"==typeof this.options.intersection.threshold?this.options.intersection.threshold:0}}],n&&o(t.prototype,n),r&&o(t,r),e}();function h(e,t,n){var r=t.value;if(r)if("undefined"==typeof IntersectionObserver)console.warn("[vue-observe-visibility] IntersectionObserver API is not available in your browser. Please install this polyfill: https://github.com/w3c/IntersectionObserver/tree/master/polyfill");else{var o=new f(e,r,n);e._vue_visibilityState=o}}function d(e){var t=e._vue_visibilityState;t&&(t.destroyObserver(),delete e._vue_visibilityState)}var m={bind:h,update:function(e,t,n){var r=t.value;if(!l(r,t.oldValue)){var o=e._vue_visibilityState;r?o?o.createObserver(r,n):h(e,{value:r},n):d(e)}},unbind:d};var v={version:"1.0.0",install:function(e){e.directive("observe-visibility",m)}},_=null;"undefined"!=typeof window?_=window.Vue:void 0!==e&&(_=e.Vue),_&&_.use(v)}).call(this,n(44))},,function(e,t,n){"use strict";n.d(t,"a",(function(){return h}));var r=n(0),o=n.n(r);function c(){return c=Object.assign||function(e){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var t in source)Object.prototype.hasOwnProperty.call(source,t)&&(e[t]=source[t])}return e},c.apply(this,arguments)}var l="undefined"!=typeof window&&navigator&&/Win/i.test(navigator.platform),f="undefined"!=typeof window&&navigator&&/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform),h=o.a.extend({props:{lineNumbers:{type:Boolean,default:!1},autoStyleLineNumbers:{type:Boolean,default:!0},readonly:{type:Boolean,default:!1},value:{type:String,default:""},highlight:{type:Function,required:!0},tabSize:{type:Number,default:2},insertSpaces:{type:Boolean,default:!0},ignoreTabKey:{type:Boolean,default:!1},placeholder:{type:String,default:""}},data:function(){return{capture:!0,history:{stack:[],offset:-1},lineNumbersHeight:"20px",codeData:""}},watch:{value:{immediate:!0,handler:function(e){this.codeData=e||""}},content:{immediate:!0,handler:function(){var e=this;this.lineNumbers&&this.$nextTick((function(){e.setLineNumbersHeight()}))}},lineNumbers:function(){var e=this;this.$nextTick((function(){e.styleLineNumbers(),e.setLineNumbersHeight()}))}},computed:{isEmpty:function(){return 0===this.codeData.length},content:function(){return this.highlight(this.codeData)+"<br />"},lineNumbersCount:function(){return this.codeData.split(/\r\n|\n/).length}},mounted:function(){this._recordCurrentState(),this.styleLineNumbers()},methods:{setLineNumbersHeight:function(){this.lineNumbersHeight=getComputedStyle(this.$refs.pre).height},styleLineNumbers:function(){if(this.lineNumbers&&this.autoStyleLineNumbers){var e=this.$refs.pre,t=this.$el.querySelector(".prism-editor__line-numbers"),n=window.getComputedStyle(e);this.$nextTick((function(){var r="border-top-left-radius",o="border-bottom-left-radius";if(t){t.style[r]=n[r],t.style[o]=n[o],e.style[r]="0",e.style[o]="0";["background-color","margin-top","padding-top","font-family","font-size","line-height"].forEach((function(style){t.style[style]=n[style]})),t.style["margin-bottom"]="-"+n["padding-top"]}}))}},_recordCurrentState:function(){var input=this.$refs.textarea;if(input){var e=input.value,t=input.selectionStart,n=input.selectionEnd;this._recordChange({value:e,selectionStart:t,selectionEnd:n})}},_getLines:function(text,e){return text.substring(0,e).split("\n")},_applyEdits:function(e){var input=this.$refs.textarea,t=this.history.stack[this.history.offset];t&&input&&(this.history.stack[this.history.offset]=c({},t,{selectionStart:input.selectionStart,selectionEnd:input.selectionEnd})),this._recordChange(e),this._updateInput(e)},_recordChange:function(e,t){void 0===t&&(t=!1);var n=this.history,r=n.stack,o=n.offset;if(r.length&&o>-1){this.history.stack=r.slice(0,o+1);var l=this.history.stack.length;if(l>100){var f=l-100;this.history.stack=r.slice(f,l),this.history.offset=Math.max(this.history.offset-f,0)}}var h=Date.now();if(t){var d=this.history.stack[this.history.offset];if(d&&h-d.timestamp<3e3){var m,v,_=/[^a-z0-9]([a-z0-9]+)$/i,y=null===(m=this._getLines(d.value,d.selectionStart).pop())||void 0===m?void 0:m.match(_),k=null===(v=this._getLines(e.value,e.selectionStart).pop())||void 0===v?void 0:v.match(_);if(y&&k&&k[1].startsWith(y[1]))return void(this.history.stack[this.history.offset]=c({},e,{timestamp:h}))}}this.history.stack.push(c({},e,{timestamp:h})),this.history.offset++},_updateInput:function(e){var input=this.$refs.textarea;input&&(input.value=e.value,input.selectionStart=e.selectionStart,input.selectionEnd=e.selectionEnd,this.$emit("input",e.value))},handleChange:function(e){var t=e.target,n=t.value,r=t.selectionStart,o=t.selectionEnd;this._recordChange({value:n,selectionStart:r,selectionEnd:o},!0),this.$emit("input",n)},_undoEdit:function(){var e=this.history,t=e.stack,n=e.offset,r=t[n-1];r&&(this._updateInput(r),this.history.offset=Math.max(n-1,0))},_redoEdit:function(){var e=this.history,t=e.stack,n=e.offset,r=t[n+1];r&&(this._updateInput(r),this.history.offset=Math.min(n+1,t.length-1))},handleKeyDown:function(e){var t=this.tabSize,n=this.insertSpaces,r=this.ignoreTabKey;if(!this.$listeners.keydown||(this.$emit("keydown",e),!e.defaultPrevented)){27===e.keyCode&&(e.target.blur(),this.$emit("blur",e));var o=e.target,c=o.value,h=o.selectionStart,d=o.selectionEnd,m=(n?" ":"\t").repeat(t);if(9===e.keyCode&&!r&&this.capture)if(e.preventDefault(),e.shiftKey){var v=this._getLines(c,h),_=v.length-1,y=this._getLines(c,d).length-1,k=c.split("\n").map((function(line,i){return i>=_&&i<=y&&line.startsWith(m)?line.substring(m.length):line})).join("\n");if(c!==k){var w=v[_];this._applyEdits({value:k,selectionStart:w.startsWith(m)?h-m.length:h,selectionEnd:d-(c.length-k.length)})}}else if(h!==d){var x=this._getLines(c,h),A=x.length-1,C=this._getLines(c,d).length-1,E=x[A];this._applyEdits({value:c.split("\n").map((function(line,i){return i>=A&&i<=C?m+line:line})).join("\n"),selectionStart:/\S/.test(E)?h+m.length:h,selectionEnd:d+m.length*(C-A+1)})}else{var F=h+m.length;this._applyEdits({value:c.substring(0,h)+m+c.substring(d),selectionStart:F,selectionEnd:F})}else if(8===e.keyCode){var S=h!==d;if(c.substring(0,h).endsWith(m)&&!S){e.preventDefault();var D=h-m.length;this._applyEdits({value:c.substring(0,h-m.length)+c.substring(d),selectionStart:D,selectionEnd:D})}}else if(13===e.keyCode){if(h===d){var line=this._getLines(c,h).pop(),T=null==line?void 0:line.match(/^\s+/);if(T&&T[0]){e.preventDefault();var z="\n"+T[0],O=h+z.length;this._applyEdits({value:c.substring(0,h)+z+c.substring(d),selectionStart:O,selectionEnd:O})}}}else if(57===e.keyCode||219===e.keyCode||222===e.keyCode||192===e.keyCode){var L;57===e.keyCode&&e.shiftKey?L=["(",")"]:219===e.keyCode?L=e.shiftKey?["{","}"]:["[","]"]:222===e.keyCode?L=e.shiftKey?['"','"']:["'","'"]:192!==e.keyCode||e.shiftKey||(L=["`","`"]),h!==d&&L&&(e.preventDefault(),this._applyEdits({value:c.substring(0,h)+L[0]+c.substring(h,d)+L[1]+c.substring(d),selectionStart:h,selectionEnd:d+2}))}else!(f?e.metaKey&&90===e.keyCode:e.ctrlKey&&90===e.keyCode)||e.shiftKey||e.altKey?(f?e.metaKey&&90===e.keyCode&&e.shiftKey:l?e.ctrlKey&&89===e.keyCode:e.ctrlKey&&90===e.keyCode&&e.shiftKey)&&!e.altKey?(e.preventDefault(),this._redoEdit()):77!==e.keyCode||!e.ctrlKey||f&&!e.shiftKey||(e.preventDefault(),this.capture=!this.capture):(e.preventDefault(),this._undoEdit())}}},render:function(e){var t=this,n=e("div",{attrs:{class:"prism-editor__line-width-calc",style:"height: 0px; visibility: hidden; pointer-events: none;"}},"999"),r=e("div",{staticClass:"prism-editor__line-numbers",style:{"min-height":this.lineNumbersHeight},attrs:{"aria-hidden":"true"}},[n,Array.from(Array(this.lineNumbersCount).keys()).map((function(t,n){return e("div",{attrs:{class:"prism-editor__line-number token comment"}},""+ ++n)}))]),textarea=e("textarea",{ref:"textarea",on:{input:this.handleChange,keydown:this.handleKeyDown,click:function(e){t.$emit("click",e)},keyup:function(e){t.$emit("keyup",e)},focus:function(e){t.$emit("focus",e)},blur:function(e){t.$emit("blur",e)}},staticClass:"prism-editor__textarea",class:{"prism-editor__textarea--empty":this.isEmpty},attrs:{spellCheck:"false",autocapitalize:"off",autocomplete:"off",autocorrect:"off","data-gramm":"false",placeholder:this.placeholder,"data-testid":"textarea",readonly:this.readonly},domProps:{value:this.codeData}}),o=e("pre",{ref:"pre",staticClass:"prism-editor__editor",attrs:{"data-testid":"preview"},domProps:{innerHTML:this.content}}),c=e("div",{staticClass:"prism-editor__container"},[textarea,o]);return e("div",{staticClass:"prism-editor-wrapper"},[this.lineNumbers&&r,c])}})},function(e,t,n){e.exports={}},function(e,t,n){(function(t){var n=function(e){var t=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,n=0,r={},o={manual:e.Prism&&e.Prism.manual,disableWorkerMessageHandler:e.Prism&&e.Prism.disableWorkerMessageHandler,util:{encode:function e(t){return t instanceof c?new c(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++n}),e.__id},clone:function e(t,n){var r,c;switch(n=n||{},o.util.type(t)){case"Object":if(c=o.util.objId(t),n[c])return n[c];for(var l in r={},n[c]=r,t)t.hasOwnProperty(l)&&(r[l]=e(t[l],n));return r;case"Array":return c=o.util.objId(t),n[c]?n[c]:(r=[],n[c]=r,t.forEach((function(t,i){r[i]=e(t,n)})),r);default:return t}},getLanguage:function(element){for(;element;){var e=t.exec(element.className);if(e)return e[1].toLowerCase();element=element.parentElement}return"none"},setLanguage:function(element,e){element.className=element.className.replace(RegExp(t,"gi"),""),element.classList.add("language-"+e)},currentScript:function(){if("undefined"==typeof document)return null;if(document.currentScript&&"SCRIPT"===document.currentScript.tagName)return document.currentScript;try{throw new Error}catch(n){var e=(/at [^(\r\n]*\((.*):[^:]+:[^:]+\)$/i.exec(n.stack)||[])[1];if(e){var t=document.getElementsByTagName("script");for(var i in t)if(t[i].src==e)return t[i]}return null}},isActive:function(element,e,t){for(var n="no-"+e;element;){var r=element.classList;if(r.contains(e))return!0;if(r.contains(n))return!1;element=element.parentElement}return!!t}},languages:{plain:r,plaintext:r,text:r,txt:r,extend:function(e,t){var n=o.util.clone(o.languages[e]);for(var r in t)n[r]=t[r];return n},insertBefore:function(e,t,n,r){var c=(r=r||o.languages)[e],l={};for(var f in c)if(c.hasOwnProperty(f)){if(f==t)for(var h in n)n.hasOwnProperty(h)&&(l[h]=n[h]);n.hasOwnProperty(f)||(l[f]=c[f])}var d=r[e];return r[e]=l,o.languages.DFS(o.languages,(function(t,n){n===d&&t!=e&&(this[t]=l)})),l},DFS:function e(t,n,r,c){c=c||{};var l=o.util.objId;for(var i in t)if(t.hasOwnProperty(i)){n.call(t,i,t[i],r||i);var f=t[i],h=o.util.type(f);"Object"!==h||c[l(f)]?"Array"!==h||c[l(f)]||(c[l(f)]=!0,e(f,n,i,c)):(c[l(f)]=!0,e(f,n,null,c))}}},plugins:{},highlightAll:function(e,t){o.highlightAllUnder(document,e,t)},highlightAllUnder:function(e,t,n){var r={callback:n,container:e,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};o.hooks.run("before-highlightall",r),r.elements=Array.prototype.slice.apply(r.container.querySelectorAll(r.selector)),o.hooks.run("before-all-elements-highlight",r);for(var element,i=0;element=r.elements[i++];)o.highlightElement(element,!0===t,r.callback)},highlightElement:function(element,t,n){var r=o.util.getLanguage(element),c=o.languages[r];o.util.setLanguage(element,r);var l=element.parentElement;l&&"pre"===l.nodeName.toLowerCase()&&o.util.setLanguage(l,r);var f={element:element,language:r,grammar:c,code:element.textContent};function h(e){f.highlightedCode=e,o.hooks.run("before-insert",f),f.element.innerHTML=f.highlightedCode,o.hooks.run("after-highlight",f),o.hooks.run("complete",f),n&&n.call(f.element)}if(o.hooks.run("before-sanity-check",f),(l=f.element.parentElement)&&"pre"===l.nodeName.toLowerCase()&&!l.hasAttribute("tabindex")&&l.setAttribute("tabindex","0"),!f.code)return o.hooks.run("complete",f),void(n&&n.call(f.element));if(o.hooks.run("before-highlight",f),f.grammar)if(t&&e.Worker){var d=new Worker(o.filename);d.onmessage=function(e){h(e.data)},d.postMessage(JSON.stringify({language:f.language,code:f.code,immediateClose:!0}))}else h(o.highlight(f.code,f.grammar,f.language));else h(o.util.encode(f.code))},highlight:function(text,e,t){var n={code:text,grammar:e,language:t};if(o.hooks.run("before-tokenize",n),!n.grammar)throw new Error('The language "'+n.language+'" has no grammar.');return n.tokens=o.tokenize(n.code,n.grammar),o.hooks.run("after-tokenize",n),c.stringify(o.util.encode(n.tokens),n.language)},tokenize:function(text,e){var t=e.rest;if(t){for(var n in t)e[n]=t[n];delete e.rest}var r=new h;return d(r,r.head,text),f(text,r,e,r.head,0),function(e){var t=[],n=e.head.next;for(;n!==e.tail;)t.push(n.value),n=n.next;return t}(r)},hooks:{all:{},add:function(e,t){var n=o.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=o.hooks.all[e];if(n&&n.length)for(var r,i=0;r=n[i++];)r(t)}},Token:c};function c(e,content,t,n){this.type=e,this.content=content,this.alias=t,this.length=0|(n||"").length}function l(pattern,e,text,t){pattern.lastIndex=e;var n=pattern.exec(text);if(n&&t&&n[1]){var r=n[1].length;n.index+=r,n[0]=n[0].slice(r)}return n}function f(text,e,t,n,r,h){for(var v in t)if(t.hasOwnProperty(v)&&t[v]){var _=t[v];_=Array.isArray(_)?_:[_];for(var y=0;y<_.length;++y){if(h&&h.cause==v+","+y)return;var k=_[y],w=k.inside,x=!!k.lookbehind,A=!!k.greedy,C=k.alias;if(A&&!k.pattern.global){var E=k.pattern.toString().match(/[imsuy]*$/)[0];k.pattern=RegExp(k.pattern.source,E+"g")}for(var pattern=k.pattern||k,F=n.next,S=r;F!==e.tail&&!(h&&S>=h.reach);S+=F.value.length,F=F.next){var D=F.value;if(e.length>text.length)return;if(!(D instanceof c)){var T,z=1;if(A){if(!(T=l(pattern,S,text,x))||T.index>=text.length)break;var O=T.index,L=T.index+T[0].length,p=S;for(p+=F.value.length;O>=p;)p+=(F=F.next).value.length;if(S=p-=F.value.length,F.value instanceof c)continue;for(var I=F;I!==e.tail&&(p<L||"string"==typeof I.value);I=I.next)z++,p+=I.value.length;z--,D=text.slice(S,p),T.index-=S}else if(!(T=l(pattern,0,D,x)))continue;O=T.index;var $=T[0],j=D.slice(0,O),P=D.slice(O+$.length),R=S+D.length;h&&R>h.reach&&(h.reach=R);var M=F.prev;if(j&&(M=d(e,M,j),S+=j.length),m(e,M,z),F=d(e,M,new c(v,w?o.tokenize($,w):$,C,$)),P&&d(e,F,P),z>1){var N={cause:v+","+y,reach:R};f(text,e,t,F.prev,S,N),h&&N.reach>h.reach&&(h.reach=N.reach)}}}}}}function h(){var head={value:null,prev:null,next:null},e={value:null,prev:head,next:null};head.next=e,this.head=head,this.tail=e,this.length=0}function d(e,t,n){var r=t.next,o={value:n,prev:t,next:r};return t.next=o,r.prev=o,e.length++,o}function m(e,t,n){for(var r=t.next,i=0;i<n&&r!==e.tail;i++)r=r.next;t.next=r,r.prev=t,e.length-=i}if(e.Prism=o,c.stringify=function e(t,n){if("string"==typeof t)return t;if(Array.isArray(t)){var s="";return t.forEach((function(t){s+=e(t,n)})),s}var r={type:t.type,content:e(t.content,n),tag:"span",classes:["token",t.type],attributes:{},language:n},c=t.alias;c&&(Array.isArray(c)?Array.prototype.push.apply(r.classes,c):r.classes.push(c)),o.hooks.run("wrap",r);var l="";for(var f in r.attributes)l+=" "+f+'="'+(r.attributes[f]||"").replace(/"/g,"&quot;")+'"';return"<"+r.tag+' class="'+r.classes.join(" ")+'"'+l+">"+r.content+"</"+r.tag+">"},!e.document)return e.addEventListener?(o.disableWorkerMessageHandler||e.addEventListener("message",(function(t){var n=JSON.parse(t.data),r=n.language,code=n.code,c=n.immediateClose;e.postMessage(o.highlight(code,o.languages[r],r)),c&&e.close()}),!1),o):o;var script=o.util.currentScript();function v(){o.manual||o.highlightAll()}if(script&&(o.filename=script.src,script.hasAttribute("data-manual")&&(o.manual=!0)),!o.manual){var _=document.readyState;"loading"===_||"interactive"===_&&script&&script.defer?document.addEventListener("DOMContentLoaded",v):window.requestAnimationFrame?window.requestAnimationFrame(v):window.setTimeout(v,16)}return o}("undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{});e.exports&&(e.exports=n),void 0!==t&&(t.Prism=n)}).call(this,n(44))},function(e,t,n){"use strict";n.d(t,"a",(function(){return d})),n.d(t,"b",(function(){return m}));var r=null;var o=null;function c(e,t){void 0===t&&(t={});var n=document.createElement(e);return Object.keys(t).forEach((function(e){n[e]=t[e]})),n}function l(e,t,n){return(window.getComputedStyle(e,n||null)||{display:"none"})[t]}function f(e){if(!document.documentElement.contains(e))return{detached:!0,rendered:!1};for(var t=e;t!==document;){if("none"===l(t,"display"))return{detached:!1,rendered:!1};t=t.parentNode}return{detached:!1,rendered:!0}}var h=0,style=null;function d(e,t){if(e.__resize_mutation_handler__||(e.__resize_mutation_handler__=v.bind(e)),!e.__resize_listeners__)if(e.__resize_listeners__=[],window.ResizeObserver){var n=e.offsetWidth,r=e.offsetHeight,o=new ResizeObserver((function(){(e.__resize_observer_triggered__||(e.__resize_observer_triggered__=!0,e.offsetWidth!==n||e.offsetHeight!==r))&&y(e)})),d=f(e),m=d.detached,w=d.rendered;e.__resize_observer_triggered__=!1===m&&!1===w,e.__resize_observer__=o,o.observe(e)}else if(e.attachEvent&&e.addEventListener)e.__resize_legacy_resize_handler__=function(){y(e)},e.attachEvent("onresize",e.__resize_legacy_resize_handler__),document.addEventListener("DOMSubtreeModified",e.__resize_mutation_handler__);else if(h||(style=function(e){var style=document.createElement("style");return style.styleSheet?style.styleSheet.cssText=e:style.appendChild(document.createTextNode(e)),(document.querySelector("head")||document.body).appendChild(style),style}('.resize-triggers{visibility:hidden;opacity:0;pointer-events:none}.resize-contract-trigger,.resize-contract-trigger:before,.resize-expand-trigger,.resize-triggers{content:"";position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden}.resize-contract-trigger,.resize-expand-trigger{background:#eee;overflow:auto}.resize-contract-trigger:before{width:200%;height:200%}')),function(e){var t=l(e,"position");t&&"static"!==t||(e.style.position="relative");e.__resize_old_position__=t,e.__resize_last__={};var n=c("div",{className:"resize-triggers"}),r=c("div",{className:"resize-expand-trigger"}),o=c("div"),f=c("div",{className:"resize-contract-trigger"});r.appendChild(o),n.appendChild(r),n.appendChild(f),e.appendChild(n),e.__resize_triggers__={triggers:n,expand:r,expandChild:o,contract:f},k(e),e.addEventListener("scroll",_,!0),e.__resize_last__={width:e.offsetWidth,height:e.offsetHeight}}(e),e.__resize_rendered__=f(e).rendered,window.MutationObserver){var x=new MutationObserver(e.__resize_mutation_handler__);x.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0}),e.__resize_mutation_observer__=x}e.__resize_listeners__.push(t),h++}function m(e,t){var n=e.__resize_listeners__;if(n){if(t&&n.splice(n.indexOf(t),1),!n.length||!t){if(e.detachEvent&&e.removeEventListener)return e.detachEvent("onresize",e.__resize_legacy_resize_handler__),void document.removeEventListener("DOMSubtreeModified",e.__resize_mutation_handler__);e.__resize_observer__?(e.__resize_observer__.unobserve(e),e.__resize_observer__.disconnect(),e.__resize_observer__=null):(e.__resize_mutation_observer__&&(e.__resize_mutation_observer__.disconnect(),e.__resize_mutation_observer__=null),e.removeEventListener("scroll",_),e.removeChild(e.__resize_triggers__.triggers),e.__resize_triggers__=null),e.__resize_listeners__=null}!--h&&style&&style.parentNode.removeChild(style)}}function v(){var e=f(this),t=e.rendered,n=e.detached;t!==this.__resize_rendered__&&(!n&&this.__resize_triggers__&&(k(this),this.addEventListener("scroll",_,!0)),this.__resize_rendered__=t,y(this))}function _(){var e,t,n=this;k(this),this.__resize_raf__&&(e=this.__resize_raf__,o||(o=(window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||function(e){clearTimeout(e)}).bind(window)),o(e)),this.__resize_raf__=(t=function(){var e,t,r,o,c,l,f=(t=(e=n).__resize_last__,r=t.width,o=t.height,c=e.offsetWidth,l=e.offsetHeight,c!==r||l!==o?{width:c,height:l}:null);f&&(n.__resize_last__=f,y(n))},r||(r=(window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||function(e){return setTimeout(e,16)}).bind(window)),r(t))}function y(e){e&&e.__resize_listeners__&&e.__resize_listeners__.forEach((function(t){t.call(e,e)}))}function k(e){var t=e.__resize_triggers__,n=t.expand,r=t.expandChild,o=t.contract,c=o.scrollWidth,l=o.scrollHeight,f=n.offsetWidth,h=n.offsetHeight,d=n.scrollWidth,m=n.scrollHeight;o.scrollLeft=c,o.scrollTop=l,r.style.width=f+1+"px",r.style.height=h+1+"px",n.scrollLeft=d,n.scrollTop=m}},function(e,t,n){var r=n(200),o=n(223),c=n(225),l=Math.max,f=Math.min;e.exports=function(e,t,n){var h,d,m,v,_,y,k=0,w=!1,x=!1,A=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function C(time){var t=h,n=d;return h=d=void 0,k=time,v=e.apply(n,t)}function E(time){return k=time,_=setTimeout(S,t),w?C(time):v}function F(time){var e=time-y;return void 0===y||e>=t||e<0||x&&time-k>=m}function S(){var time=o();if(F(time))return D(time);_=setTimeout(S,function(time){var e=t-(time-y);return x?f(e,m-(time-k)):e}(time))}function D(time){return _=void 0,A&&h?C(time):(h=d=void 0,v)}function T(){var time=o(),e=F(time);if(h=arguments,d=this,y=time,e){if(void 0===_)return E(y);if(x)return clearTimeout(_),_=setTimeout(S,t),C(y)}return void 0===_&&(_=setTimeout(S,t)),v}return t=c(t)||0,r(n)&&(w=!!n.leading,m=(x="maxWait"in n)?l(c(n.maxWait)||0,t):m,A="trailing"in n?!!n.trailing:A),T.cancel=function(){void 0!==_&&clearTimeout(_),k=0,h=y=d=_=void 0},T.flush=function(){return void 0===_?v:D(o())},T}},function(e,t,n){var r=n(201);e.exports=function(){return r.Date.now()}},function(e,t,n){(function(t){var n="object"==typeof t&&t&&t.Object===Object&&t;e.exports=n}).call(this,n(44))},function(e,t,n){var r=n(226),o=n(200),c=n(228),l=/^[-+]0x[0-9a-f]+$/i,f=/^0b[01]+$/i,h=/^0o[0-7]+$/i,d=parseInt;e.exports=function(e){if("number"==typeof e)return e;if(c(e))return NaN;if(o(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=o(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=r(e);var n=f.test(e);return n||h.test(e)?d(e.slice(2),n?2:8):l.test(e)?NaN:+e}},function(e,t,n){var r=n(227),o=/^\s+/;e.exports=function(e){return e?e.slice(0,r(e)+1).replace(o,""):e}},function(e,t){var n=/\s/;e.exports=function(e){for(var t=e.length;t--&&n.test(e.charAt(t)););return t}},function(e,t,n){var r=n(229),o=n(232);e.exports=function(e){return"symbol"==typeof e||o(e)&&"[object Symbol]"==r(e)}},function(e,t,n){var r=n(202),o=n(230),c=n(231),l=r?r.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":l&&l in Object(e)?o(e):c(e)}},function(e,t,n){var r=n(202),o=Object.prototype,c=o.hasOwnProperty,l=o.toString,f=r?r.toStringTag:void 0;e.exports=function(e){var t=c.call(e,f),n=e[f];try{e[f]=void 0;var r=!0}catch(e){}var o=l.call(e);return r&&(t?e[f]=n:delete e[f]),o}},function(e,t){var n=Object.prototype.toString;e.exports=function(e){return n.call(e)}},function(e,t){e.exports=function(e){return null!=e&&"object"==typeof e}},function(e,t,n){var r;r=function(){return function(){var e={686:function(e,t,n){"use strict";n.d(t,{default:function(){return T}});var r=n(279),o=n.n(r),c=n(370),l=n.n(c),f=n(817),h=n.n(f);function d(e){try{return document.execCommand(e)}catch(e){return!1}}var m=function(e){var t=h()(e);return d("cut"),t},v=function(e,t){var n=function(e){var t="rtl"===document.documentElement.getAttribute("dir"),n=document.createElement("textarea");n.style.fontSize="12pt",n.style.border="0",n.style.padding="0",n.style.margin="0",n.style.position="absolute",n.style[t?"right":"left"]="-9999px";var r=window.pageYOffset||document.documentElement.scrollTop;return n.style.top="".concat(r,"px"),n.setAttribute("readonly",""),n.value=e,n}(e);t.container.appendChild(n);var r=h()(n);return d("copy"),n.remove(),r},_=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{container:document.body},n="";return"string"==typeof e?n=v(e,t):e instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(null==e?void 0:e.type)?n=v(e.value,t):(n=h()(e),d("copy")),n};function y(e){return y="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},y(e)}var k=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.action,n=void 0===t?"copy":t,r=e.container,o=e.target,text=e.text;if("copy"!==n&&"cut"!==n)throw new Error('Invalid "action" value, use either "copy" or "cut"');if(void 0!==o){if(!o||"object"!==y(o)||1!==o.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===n&&o.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===n&&(o.hasAttribute("readonly")||o.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes')}return text?_(text,{container:r}):o?"cut"===n?m(o):_(o,{container:r}):void 0};function w(e){return w="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},w(e)}function x(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function A(e,p){return A=Object.setPrototypeOf||function(e,p){return e.__proto__=p,e},A(e,p)}function C(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=F(e);if(t){var o=F(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return E(this,n)}}function E(e,t){return!t||"object"!==w(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function F(e){return F=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},F(e)}function S(e,element){var t="data-clipboard-".concat(e);if(element.hasAttribute(t))return element.getAttribute(t)}var D=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&A(e,t)}(c,e);var t,n,r,o=C(c);function c(e,t){var n;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,c),(n=o.call(this)).resolveOptions(t),n.listenClick(e),n}return t=c,n=[{key:"resolveOptions",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof e.action?e.action:this.defaultAction,this.target="function"==typeof e.target?e.target:this.defaultTarget,this.text="function"==typeof e.text?e.text:this.defaultText,this.container="object"===w(e.container)?e.container:document.body}},{key:"listenClick",value:function(e){var t=this;this.listener=l()(e,"click",(function(e){return t.onClick(e)}))}},{key:"onClick",value:function(e){var t=e.delegateTarget||e.currentTarget,n=this.action(t)||"copy",text=k({action:n,container:this.container,target:this.target(t),text:this.text(t)});this.emit(text?"success":"error",{action:n,text:text,trigger:t,clearSelection:function(){t&&t.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(e){return S("action",e)}},{key:"defaultTarget",value:function(e){var t=S("target",e);if(t)return document.querySelector(t)}},{key:"defaultText",value:function(e){return S("text",e)}},{key:"destroy",value:function(){this.listener.destroy()}}],r=[{key:"copy",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{container:document.body};return _(e,t)}},{key:"cut",value:function(e){return m(e)}},{key:"isSupported",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["copy","cut"],t="string"==typeof e?[e]:e,n=!!document.queryCommandSupported;return t.forEach((function(e){n=n&&!!document.queryCommandSupported(e)})),n}}],n&&x(t.prototype,n),r&&x(t,r),c}(o()),T=D},828:function(e){if("undefined"!=typeof Element&&!Element.prototype.matches){var t=Element.prototype;t.matches=t.matchesSelector||t.mozMatchesSelector||t.msMatchesSelector||t.oMatchesSelector||t.webkitMatchesSelector}e.exports=function(element,e){for(;element&&9!==element.nodeType;){if("function"==typeof element.matches&&element.matches(e))return element;element=element.parentNode}}},438:function(e,t,n){var r=n(828);function o(element,e,t,n,r){var o=c.apply(this,arguments);return element.addEventListener(t,o,r),{destroy:function(){element.removeEventListener(t,o,r)}}}function c(element,e,t,n){return function(t){t.delegateTarget=r(t.target,e),t.delegateTarget&&n.call(element,t)}}e.exports=function(e,t,n,r,c){return"function"==typeof e.addEventListener?o.apply(null,arguments):"function"==typeof n?o.bind(null,document).apply(null,arguments):("string"==typeof e&&(e=document.querySelectorAll(e)),Array.prototype.map.call(e,(function(element){return o(element,t,n,r,c)})))}},879:function(e,t){t.node=function(e){return void 0!==e&&e instanceof HTMLElement&&1===e.nodeType},t.nodeList=function(e){var n=Object.prototype.toString.call(e);return void 0!==e&&("[object NodeList]"===n||"[object HTMLCollection]"===n)&&"length"in e&&(0===e.length||t.node(e[0]))},t.string=function(e){return"string"==typeof e||e instanceof String},t.fn=function(e){return"[object Function]"===Object.prototype.toString.call(e)}},370:function(e,t,n){var r=n(879),o=n(438);e.exports=function(e,t,n){if(!e&&!t&&!n)throw new Error("Missing required arguments");if(!r.string(t))throw new TypeError("Second argument must be a String");if(!r.fn(n))throw new TypeError("Third argument must be a Function");if(r.node(e))return function(e,t,n){return e.addEventListener(t,n),{destroy:function(){e.removeEventListener(t,n)}}}(e,t,n);if(r.nodeList(e))return function(e,t,n){return Array.prototype.forEach.call(e,(function(e){e.addEventListener(t,n)})),{destroy:function(){Array.prototype.forEach.call(e,(function(e){e.removeEventListener(t,n)}))}}}(e,t,n);if(r.string(e))return function(e,t,n){return o(document.body,e,t,n)}(e,t,n);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}},817:function(e){e.exports=function(element){var e;if("SELECT"===element.nodeName)element.focus(),e=element.value;else if("INPUT"===element.nodeName||"TEXTAREA"===element.nodeName){var t=element.hasAttribute("readonly");t||element.setAttribute("readonly",""),element.select(),element.setSelectionRange(0,element.value.length),t||element.removeAttribute("readonly"),e=element.value}else{element.hasAttribute("contenteditable")&&element.focus();var n=window.getSelection(),r=document.createRange();r.selectNodeContents(element),n.removeAllRanges(),n.addRange(r),e=n.toString()}return e}},279:function(e){function t(){}t.prototype={on:function(e,t,n){var r=this.e||(this.e={});return(r[e]||(r[e]=[])).push({fn:t,ctx:n}),this},once:function(e,t,n){var r=this;function o(){r.off(e,o),t.apply(n,arguments)}return o._=t,this.on(e,o,n)},emit:function(e){for(var data=[].slice.call(arguments,1),t=((this.e||(this.e={}))[e]||[]).slice(),i=0,n=t.length;i<n;i++)t[i].fn.apply(t[i].ctx,data);return this},off:function(e,t){var n=this.e||(this.e={}),r=n[e],o=[];if(r&&t)for(var i=0,c=r.length;i<c;i++)r[i].fn!==t&&r[i].fn._!==t&&o.push(r[i]);return o.length?n[e]=o:delete n[e],this}},e.exports=t,e.exports.TinyEmitter=t}},t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={exports:{}};return e[r](o,o.exports,n),o.exports}return n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,{a:t}),t},n.d=function(e,t){for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n(686)}().default},e.exports=r()},,,function(e,t,n){(function(t){var n=function(e){var t=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,n=0,r={},o={manual:e.Prism&&e.Prism.manual,disableWorkerMessageHandler:e.Prism&&e.Prism.disableWorkerMessageHandler,util:{encode:function e(t){return t instanceof c?new c(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++n}),e.__id},clone:function e(t,n){var r,c;switch(n=n||{},o.util.type(t)){case"Object":if(c=o.util.objId(t),n[c])return n[c];for(var l in r={},n[c]=r,t)t.hasOwnProperty(l)&&(r[l]=e(t[l],n));return r;case"Array":return c=o.util.objId(t),n[c]?n[c]:(r=[],n[c]=r,t.forEach((function(t,i){r[i]=e(t,n)})),r);default:return t}},getLanguage:function(element){for(;element;){var e=t.exec(element.className);if(e)return e[1].toLowerCase();element=element.parentElement}return"none"},setLanguage:function(element,e){element.className=element.className.replace(RegExp(t,"gi"),""),element.classList.add("language-"+e)},currentScript:function(){if("undefined"==typeof document)return null;if(document.currentScript&&"SCRIPT"===document.currentScript.tagName)return document.currentScript;try{throw new Error}catch(n){var e=(/at [^(\r\n]*\((.*):[^:]+:[^:]+\)$/i.exec(n.stack)||[])[1];if(e){var t=document.getElementsByTagName("script");for(var i in t)if(t[i].src==e)return t[i]}return null}},isActive:function(element,e,t){for(var n="no-"+e;element;){var r=element.classList;if(r.contains(e))return!0;if(r.contains(n))return!1;element=element.parentElement}return!!t}},languages:{plain:r,plaintext:r,text:r,txt:r,extend:function(e,t){var n=o.util.clone(o.languages[e]);for(var r in t)n[r]=t[r];return n},insertBefore:function(e,t,n,r){var c=(r=r||o.languages)[e],l={};for(var f in c)if(c.hasOwnProperty(f)){if(f==t)for(var h in n)n.hasOwnProperty(h)&&(l[h]=n[h]);n.hasOwnProperty(f)||(l[f]=c[f])}var d=r[e];return r[e]=l,o.languages.DFS(o.languages,(function(t,n){n===d&&t!=e&&(this[t]=l)})),l},DFS:function e(t,n,r,c){c=c||{};var l=o.util.objId;for(var i in t)if(t.hasOwnProperty(i)){n.call(t,i,t[i],r||i);var f=t[i],h=o.util.type(f);"Object"!==h||c[l(f)]?"Array"!==h||c[l(f)]||(c[l(f)]=!0,e(f,n,i,c)):(c[l(f)]=!0,e(f,n,null,c))}}},plugins:{},highlightAll:function(e,t){o.highlightAllUnder(document,e,t)},highlightAllUnder:function(e,t,n){var r={callback:n,container:e,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};o.hooks.run("before-highlightall",r),r.elements=Array.prototype.slice.apply(r.container.querySelectorAll(r.selector)),o.hooks.run("before-all-elements-highlight",r);for(var element,i=0;element=r.elements[i++];)o.highlightElement(element,!0===t,r.callback)},highlightElement:function(element,t,n){var r=o.util.getLanguage(element),c=o.languages[r];o.util.setLanguage(element,r);var l=element.parentElement;l&&"pre"===l.nodeName.toLowerCase()&&o.util.setLanguage(l,r);var f={element:element,language:r,grammar:c,code:element.textContent};function h(e){f.highlightedCode=e,o.hooks.run("before-insert",f),f.element.innerHTML=f.highlightedCode,o.hooks.run("after-highlight",f),o.hooks.run("complete",f),n&&n.call(f.element)}if(o.hooks.run("before-sanity-check",f),(l=f.element.parentElement)&&"pre"===l.nodeName.toLowerCase()&&!l.hasAttribute("tabindex")&&l.setAttribute("tabindex","0"),!f.code)return o.hooks.run("complete",f),void(n&&n.call(f.element));if(o.hooks.run("before-highlight",f),f.grammar)if(t&&e.Worker){var d=new Worker(o.filename);d.onmessage=function(e){h(e.data)},d.postMessage(JSON.stringify({language:f.language,code:f.code,immediateClose:!0}))}else h(o.highlight(f.code,f.grammar,f.language));else h(o.util.encode(f.code))},highlight:function(text,e,t){var n={code:text,grammar:e,language:t};if(o.hooks.run("before-tokenize",n),!n.grammar)throw new Error('The language "'+n.language+'" has no grammar.');return n.tokens=o.tokenize(n.code,n.grammar),o.hooks.run("after-tokenize",n),c.stringify(o.util.encode(n.tokens),n.language)},tokenize:function(text,e){var t=e.rest;if(t){for(var n in t)e[n]=t[n];delete e.rest}var r=new h;return d(r,r.head,text),f(text,r,e,r.head,0),function(e){var t=[],n=e.head.next;for(;n!==e.tail;)t.push(n.value),n=n.next;return t}(r)},hooks:{all:{},add:function(e,t){var n=o.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=o.hooks.all[e];if(n&&n.length)for(var r,i=0;r=n[i++];)r(t)}},Token:c};function c(e,content,t,n){this.type=e,this.content=content,this.alias=t,this.length=0|(n||"").length}function l(pattern,e,text,t){pattern.lastIndex=e;var n=pattern.exec(text);if(n&&t&&n[1]){var r=n[1].length;n.index+=r,n[0]=n[0].slice(r)}return n}function f(text,e,t,n,r,h){for(var v in t)if(t.hasOwnProperty(v)&&t[v]){var _=t[v];_=Array.isArray(_)?_:[_];for(var y=0;y<_.length;++y){if(h&&h.cause==v+","+y)return;var k=_[y],w=k.inside,x=!!k.lookbehind,A=!!k.greedy,C=k.alias;if(A&&!k.pattern.global){var E=k.pattern.toString().match(/[imsuy]*$/)[0];k.pattern=RegExp(k.pattern.source,E+"g")}for(var pattern=k.pattern||k,F=n.next,S=r;F!==e.tail&&!(h&&S>=h.reach);S+=F.value.length,F=F.next){var D=F.value;if(e.length>text.length)return;if(!(D instanceof c)){var T,z=1;if(A){if(!(T=l(pattern,S,text,x))||T.index>=text.length)break;var O=T.index,L=T.index+T[0].length,p=S;for(p+=F.value.length;O>=p;)p+=(F=F.next).value.length;if(S=p-=F.value.length,F.value instanceof c)continue;for(var I=F;I!==e.tail&&(p<L||"string"==typeof I.value);I=I.next)z++,p+=I.value.length;z--,D=text.slice(S,p),T.index-=S}else if(!(T=l(pattern,0,D,x)))continue;O=T.index;var $=T[0],j=D.slice(0,O),P=D.slice(O+$.length),R=S+D.length;h&&R>h.reach&&(h.reach=R);var M=F.prev;if(j&&(M=d(e,M,j),S+=j.length),m(e,M,z),F=d(e,M,new c(v,w?o.tokenize($,w):$,C,$)),P&&d(e,F,P),z>1){var N={cause:v+","+y,reach:R};f(text,e,t,F.prev,S,N),h&&N.reach>h.reach&&(h.reach=N.reach)}}}}}}function h(){var head={value:null,prev:null,next:null},e={value:null,prev:head,next:null};head.next=e,this.head=head,this.tail=e,this.length=0}function d(e,t,n){var r=t.next,o={value:n,prev:t,next:r};return t.next=o,r.prev=o,e.length++,o}function m(e,t,n){for(var r=t.next,i=0;i<n&&r!==e.tail;i++)r=r.next;t.next=r,r.prev=t,e.length-=i}if(e.Prism=o,c.stringify=function e(t,n){if("string"==typeof t)return t;if(Array.isArray(t)){var s="";return t.forEach((function(t){s+=e(t,n)})),s}var r={type:t.type,content:e(t.content,n),tag:"span",classes:["token",t.type],attributes:{},language:n},c=t.alias;c&&(Array.isArray(c)?Array.prototype.push.apply(r.classes,c):r.classes.push(c)),o.hooks.run("wrap",r);var l="";for(var f in r.attributes)l+=" "+f+'="'+(r.attributes[f]||"").replace(/"/g,"&quot;")+'"';return"<"+r.tag+' class="'+r.classes.join(" ")+'"'+l+">"+r.content+"</"+r.tag+">"},!e.document)return e.addEventListener?(o.disableWorkerMessageHandler||e.addEventListener("message",(function(t){var n=JSON.parse(t.data),r=n.language,code=n.code,c=n.immediateClose;e.postMessage(o.highlight(code,o.languages[r],r)),c&&e.close()}),!1),o):o;var script=o.util.currentScript();function v(){o.manual||o.highlightAll()}if(script&&(o.filename=script.src,script.hasAttribute("data-manual")&&(o.manual=!0)),!o.manual){var _=document.readyState;"loading"===_||"interactive"===_&&script&&script.defer?document.addEventListener("DOMContentLoaded",v):window.requestAnimationFrame?window.requestAnimationFrame(v):window.setTimeout(v,16)}return o}("undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{});e.exports&&(e.exports=n),void 0!==t&&(t.Prism=n),n.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},n.languages.markup.tag.inside["attr-value"].inside.entity=n.languages.markup.entity,n.languages.markup.doctype.inside["internal-subset"].inside=n.languages.markup,n.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&amp;/,"&"))})),Object.defineProperty(n.languages.markup.tag,"addInlined",{value:function(e,t){var r={};r["language-"+t]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:n.languages[t]},r.cdata=/^<!\[CDATA\[|\]\]>$/i;var o={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:r}};o["language-"+t]={pattern:/[\s\S]+/,inside:n.languages[t]};var c={};c[e]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:o},n.languages.insertBefore("markup","cdata",c)}}),Object.defineProperty(n.languages.markup.tag,"addAttribute",{value:function(e,t){n.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:n.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),n.languages.html=n.languages.markup,n.languages.mathml=n.languages.markup,n.languages.svg=n.languages.markup,n.languages.xml=n.languages.extend("markup",{}),n.languages.ssml=n.languages.xml,n.languages.atom=n.languages.xml,n.languages.rss=n.languages.xml,function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+t.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),n.tag.addAttribute("style","css"))}(n),n.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},n.languages.javascript=n.languages.extend("clike",{"class-name":[n.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),n.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,n.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:n.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:n.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:n.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:n.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:n.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),n.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:n.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),n.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),n.languages.markup&&(n.languages.markup.tag.addInlined("script","javascript"),n.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),n.languages.js=n.languages.javascript,function(){if(void 0!==n&&"undefined"!=typeof document){Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector);var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"},t="data-src-status",r="loading",o="loaded",c='pre[data-src]:not([data-src-status="loaded"]):not([data-src-status="loading"])';n.hooks.add("before-highlightall",(function(e){e.selector+=", "+c})),n.hooks.add("before-sanity-check",(function(l){var pre=l.element;if(pre.matches(c)){l.code="",pre.setAttribute(t,r);var code=pre.appendChild(document.createElement("CODE"));code.textContent="Loading…";var f=pre.getAttribute("data-src"),h=l.language;if("none"===h){var d=(/\.(\w+)$/.exec(f)||[,"none"])[1];h=e[d]||d}n.util.setLanguage(code,h),n.util.setLanguage(pre,h);var m=n.plugins.autoloader;m&&m.loadLanguages(h),function(e,t,n){var r=new XMLHttpRequest;r.open("GET",e,!0),r.onreadystatechange=function(){4==r.readyState&&(r.status<400&&r.responseText?t(r.responseText):r.status>=400?n("✖ Error "+r.status+" while fetching file: "+r.statusText):n("✖ Error: File does not exist or is empty"))},r.send(null)}(f,(function(text){pre.setAttribute(t,o);var e=function(e){var t=/^\s*(\d+)\s*(?:(,)\s*(?:(\d+)\s*)?)?$/.exec(e||"");if(t){var n=Number(t[1]),r=t[2],o=t[3];return r?o?[n,Number(o)]:[n,void 0]:[n,n]}}(pre.getAttribute("data-range"));if(e){var r=text.split(/\r\n?|\n/g),c=e[0],l=null==e[1]?r.length:e[1];c<0&&(c+=r.length),c=Math.max(0,Math.min(c-1,r.length)),l<0&&(l+=r.length),l=Math.max(0,Math.min(l,r.length)),text=r.slice(c,l).join("\n"),pre.hasAttribute("data-start")||pre.setAttribute("data-start",String(c+1))}code.textContent=text,n.highlightElement(code)}),(function(e){pre.setAttribute(t,"failed"),code.textContent=e}))}})),n.plugins.fileHighlight={highlight:function(e){for(var element,t=(e||document).querySelectorAll(c),i=0;element=t[i++];)n.highlightElement(element)}};var l=!1;n.fileHighlight=function(){l||(console.warn("Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead."),l=!0),n.plugins.fileHighlight.highlight.apply(this,arguments)}}}()}).call(this,n(44))},function(e,t){!function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(pattern){return pattern=pattern.replace(/<inner>/g,(function(){return t})),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+pattern+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,o=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),c=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source;e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+o+c+"(?:"+o+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+o+c+")(?:"+o+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+o+")"+c+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+o+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\b|\*\*(?:(?!\*)<inner>|\*(?:(?!\*)<inner>)+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\b|\*(?:(?!\*)<inner>|\*\*(?:(?!\*)<inner>)+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~)<inner>)+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\])<inner>)+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\])<inner>)+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach((function(t){["url","bold","italic","strike","code-snippet"].forEach((function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])}))})),e.hooks.add("after-tokenize",(function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var i=0,n=t.length;i<n;i++){var r=t[i];if("code"===r.type){var o=r.content[1],c=r.content[3];if(o&&c&&"code-language"===o.type&&"code-block"===c.type&&"string"==typeof o.content){var l=o.content.replace(/\b#/g,"sharp").replace(/\b\+\+/g,"pp"),f="language-"+(l=(/[a-z][\w-]*/i.exec(l)||[""])[0].toLowerCase());c.alias?"string"==typeof c.alias?c.alias=[c.alias,f]:c.alias.push(f):c.alias=[f]}}else e(r.content)}}(e.tokens)})),e.hooks.add("wrap",(function(t){if("code-block"===t.type){for(var n="",i=0,r=t.classes.length;i<r;i++){var o=t.classes[i],c=/language-(.+)/.exec(o);if(c){n=c[1];break}}var html,d=e.languages[n];if(d)t.content=e.highlight((html=t.content,html.replace(l,"").replace(/&(\w{1,8}|#x?[\da-f]{1,8});/gi,(function(e,code){var t;if("#"===(code=code.toLowerCase())[0])return t="x"===code[1]?parseInt(code.slice(2),16):Number(code.slice(1)),h(t);var n=f[code];return n||e}))),d,n);else if(n&&"none"!==n&&e.plugins.autoloader){var m="md-"+(new Date).valueOf()+"-"+Math.floor(1e16*Math.random());t.attributes.id=m,e.plugins.autoloader.loadLanguages(n,(function(){var t=document.getElementById(m);t&&(t.innerHTML=e.highlight(t.textContent,e.languages[n],n))}))}}}));var l=RegExp(e.languages.markup.tag.pattern.source,"gi"),f={amp:"&",lt:"<",gt:">",quot:'"'},h=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(Prism)},function(e,t){!function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(Prism)},function(e,t){Prism.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity,Prism.languages.markup.doctype.inside["internal-subset"].inside=Prism.languages.markup,Prism.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&amp;/,"&"))})),Object.defineProperty(Prism.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:Prism.languages[t]},n.cdata=/^<!\[CDATA\[|\]\]>$/i;var r={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:n}};r["language-"+t]={pattern:/[\s\S]+/,inside:Prism.languages[t]};var o={};o[e]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:r},Prism.languages.insertBefore("markup","cdata",o)}}),Object.defineProperty(Prism.languages.markup.tag,"addAttribute",{value:function(e,t){Prism.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:Prism.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup,Prism.languages.xml=Prism.languages.extend("markup",{}),Prism.languages.ssml=Prism.languages.xml,Prism.languages.atom=Prism.languages.xml,Prism.languages.rss=Prism.languages.xml},function(e,t){!function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+t.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),n.tag.addAttribute("style","css"))}(Prism)},function(e,t){!function(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var t={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"};Object.keys(t).forEach((function(n){var r=t[n],o=[];/^\w+$/.test(n)||o.push(/\w+/.exec(n)[0]),"diff"===n&&o.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+r+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:o,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(n)[0]}}}})),Object.defineProperty(e.languages.diff,"PREFIXES",{value:t})}(Prism)},function(e,t){!function(){if("undefined"!=typeof Prism){var e=/^diff-([\w-]+)/i,t=/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/g,n=RegExp(/(?:__|[^\r\n<])*(?:\r\n?|\n|(?:__|[^\r\n<])(?![^\r\n]))/.source.replace(/__/g,(function(){return t.source})),"gi"),r=!1;Prism.hooks.add("before-sanity-check",(function(t){var n=t.language;e.test(n)&&!t.grammar&&(t.grammar=Prism.languages[n]=Prism.languages.diff)})),Prism.hooks.add("before-tokenize",(function(t){r||Prism.languages.diff||Prism.plugins.autoloader||(r=!0,console.warn("Prism's Diff Highlight plugin requires the Diff language definition (prism-diff.js).Make sure the language definition is loaded or use Prism's Autoloader plugin."));var n=t.language;e.test(n)&&!Prism.languages[n]&&(Prism.languages[n]=Prism.languages.diff)})),Prism.hooks.add("wrap",(function(r){var o,c;if("diff"!==r.language){var l=e.exec(r.language);if(!l)return;o=l[1],c=Prism.languages[o]}var f=Prism.languages.diff&&Prism.languages.diff.PREFIXES;if(f&&r.type in f){var h,d=r.content.replace(t,"").replace(/&lt;/g,"<").replace(/&amp;/g,"&"),code=d.replace(/(^|[\r\n])./g,"$1");h=c?Prism.highlight(code,c,o):Prism.util.encode(code);var m,v=new Prism.Token("prefix",f[r.type],[/\w+/.exec(r.type)[0]]),_=Prism.Token.stringify(v,r.language),y=[];for(n.lastIndex=0;m=n.exec(h);)y.push(_+m[0]);/(?:^|[\r\n]).$/.test(d)&&y.push(_),r.content=y.join(""),c&&r.classes.push("language-"+o)}}))}}()},,function(e,t,n){"use strict";n(245)("link",(function(e){return function(t){return e(this,"a","href",t)}}))},function(e,t,n){var r=n(4),o=n(9),c=n(37),l=/"/g,f=function(e,t,n,r){var o=String(c(e)),f="<"+t;return""!==n&&(f+=" "+n+'="'+String(r).replace(l,"&quot;")+'"'),f+">"+o+"</"+t+">"};e.exports=function(e,t){var n={};n[e]=t(f),r(r.P+r.F*o((function(){var t=""[e]('"');return t!==t.toLowerCase()||t.split('"').length>3})),"String",n)}},function(e,t,n){"use strict";e.exports=n(247)},function(e,t,n){"use strict";var r=n(190),o=n(255),c=n(259),l=n(260),f=n(268),h=n(282),d=n(295),m=n(207),v=n(297),_={default:n(299),zero:n(300),commonmark:n(301)},y=/^(vbscript|javascript|file|data):/,k=/^data:image\/(gif|png|jpeg|webp);/;function w(e){var t=e.trim().toLowerCase();return!y.test(t)||!!k.test(t)}var x=["http:","https:","mailto:"];function A(e){var t=m.parse(e,!0);if(t.hostname&&(!t.protocol||x.indexOf(t.protocol)>=0))try{t.hostname=v.toASCII(t.hostname)}catch(e){}return m.encode(m.format(t))}function C(e){var t=m.parse(e,!0);if(t.hostname&&(!t.protocol||x.indexOf(t.protocol)>=0))try{t.hostname=v.toUnicode(t.hostname)}catch(e){}return m.decode(m.format(t),m.decode.defaultChars+"%")}function E(e,t){if(!(this instanceof E))return new E(e,t);t||r.isString(e)||(t=e||{},e="default"),this.inline=new h,this.block=new f,this.core=new l,this.renderer=new c,this.linkify=new d,this.validateLink=w,this.normalizeLink=A,this.normalizeLinkText=C,this.utils=r,this.helpers=r.assign({},o),this.options={},this.configure(e),t&&this.set(t)}E.prototype.set=function(e){return r.assign(this.options,e),this},E.prototype.configure=function(e){var t,n=this;if(r.isString(e)&&!(e=_[t=e]))throw new Error('Wrong `markdown-it` preset "'+t+'", check name');if(!e)throw new Error("Wrong `markdown-it` preset, can't be empty");return e.options&&n.set(e.options),e.components&&Object.keys(e.components).forEach((function(t){e.components[t].rules&&n[t].ruler.enableOnly(e.components[t].rules),e.components[t].rules2&&n[t].ruler2.enableOnly(e.components[t].rules2)})),this},E.prototype.enable=function(e,t){var n=[];Array.isArray(e)||(e=[e]),["core","block","inline"].forEach((function(t){n=n.concat(this[t].ruler.enable(e,!0))}),this),n=n.concat(this.inline.ruler2.enable(e,!0));var r=e.filter((function(e){return n.indexOf(e)<0}));if(r.length&&!t)throw new Error("MarkdownIt. Failed to enable unknown rule(s): "+r);return this},E.prototype.disable=function(e,t){var n=[];Array.isArray(e)||(e=[e]),["core","block","inline"].forEach((function(t){n=n.concat(this[t].ruler.disable(e,!0))}),this),n=n.concat(this.inline.ruler2.disable(e,!0));var r=e.filter((function(e){return n.indexOf(e)<0}));if(r.length&&!t)throw new Error("MarkdownIt. Failed to disable unknown rule(s): "+r);return this},E.prototype.use=function(e){var t=[this].concat(Array.prototype.slice.call(arguments,1));return e.apply(e,t),this},E.prototype.parse=function(e,t){if("string"!=typeof e)throw new Error("Input data should be a String");var n=new this.core.State(e,this,t);return this.core.process(n),n.tokens},E.prototype.render=function(e,t){return t=t||{},this.renderer.render(this.parse(e,t),this.options,t)},E.prototype.parseInline=function(e,t){var n=new this.core.State(e,this,t);return n.inlineMode=!0,this.core.process(n),n.tokens},E.prototype.renderInline=function(e,t){return t=t||{},this.renderer.render(this.parseInline(e,t),this.options,t)},e.exports=E},function(e){e.exports=JSON.parse('{"Aacute":"Á","aacute":"á","Abreve":"Ă","abreve":"ă","ac":"∾","acd":"∿","acE":"∾̳","Acirc":"Â","acirc":"â","acute":"´","Acy":"А","acy":"а","AElig":"Æ","aelig":"æ","af":"⁡","Afr":"𝔄","afr":"𝔞","Agrave":"À","agrave":"à","alefsym":"ℵ","aleph":"ℵ","Alpha":"Α","alpha":"α","Amacr":"Ā","amacr":"ā","amalg":"⨿","amp":"&","AMP":"&","andand":"⩕","And":"⩓","and":"∧","andd":"⩜","andslope":"⩘","andv":"⩚","ang":"∠","ange":"⦤","angle":"∠","angmsdaa":"⦨","angmsdab":"⦩","angmsdac":"⦪","angmsdad":"⦫","angmsdae":"⦬","angmsdaf":"⦭","angmsdag":"⦮","angmsdah":"⦯","angmsd":"∡","angrt":"∟","angrtvb":"⊾","angrtvbd":"⦝","angsph":"∢","angst":"Å","angzarr":"⍼","Aogon":"Ą","aogon":"ą","Aopf":"𝔸","aopf":"𝕒","apacir":"⩯","ap":"≈","apE":"⩰","ape":"≊","apid":"≋","apos":"\'","ApplyFunction":"⁡","approx":"≈","approxeq":"≊","Aring":"Å","aring":"å","Ascr":"𝒜","ascr":"𝒶","Assign":"≔","ast":"*","asymp":"≈","asympeq":"≍","Atilde":"Ã","atilde":"ã","Auml":"Ä","auml":"ä","awconint":"∳","awint":"⨑","backcong":"≌","backepsilon":"϶","backprime":"‵","backsim":"∽","backsimeq":"⋍","Backslash":"∖","Barv":"⫧","barvee":"⊽","barwed":"⌅","Barwed":"⌆","barwedge":"⌅","bbrk":"⎵","bbrktbrk":"⎶","bcong":"≌","Bcy":"Б","bcy":"б","bdquo":"„","becaus":"∵","because":"∵","Because":"∵","bemptyv":"⦰","bepsi":"϶","bernou":"ℬ","Bernoullis":"ℬ","Beta":"Β","beta":"β","beth":"ℶ","between":"≬","Bfr":"𝔅","bfr":"𝔟","bigcap":"⋂","bigcirc":"◯","bigcup":"⋃","bigodot":"⨀","bigoplus":"⨁","bigotimes":"⨂","bigsqcup":"⨆","bigstar":"★","bigtriangledown":"▽","bigtriangleup":"△","biguplus":"⨄","bigvee":"⋁","bigwedge":"⋀","bkarow":"⤍","blacklozenge":"⧫","blacksquare":"▪","blacktriangle":"▴","blacktriangledown":"▾","blacktriangleleft":"◂","blacktriangleright":"▸","blank":"␣","blk12":"▒","blk14":"░","blk34":"▓","block":"█","bne":"=⃥","bnequiv":"≡⃥","bNot":"⫭","bnot":"⌐","Bopf":"𝔹","bopf":"𝕓","bot":"⊥","bottom":"⊥","bowtie":"⋈","boxbox":"⧉","boxdl":"┐","boxdL":"╕","boxDl":"╖","boxDL":"╗","boxdr":"┌","boxdR":"╒","boxDr":"╓","boxDR":"╔","boxh":"─","boxH":"═","boxhd":"┬","boxHd":"╤","boxhD":"╥","boxHD":"╦","boxhu":"┴","boxHu":"╧","boxhU":"╨","boxHU":"╩","boxminus":"⊟","boxplus":"⊞","boxtimes":"⊠","boxul":"┘","boxuL":"╛","boxUl":"╜","boxUL":"╝","boxur":"└","boxuR":"╘","boxUr":"╙","boxUR":"╚","boxv":"│","boxV":"║","boxvh":"┼","boxvH":"╪","boxVh":"╫","boxVH":"╬","boxvl":"┤","boxvL":"╡","boxVl":"╢","boxVL":"╣","boxvr":"├","boxvR":"╞","boxVr":"╟","boxVR":"╠","bprime":"‵","breve":"˘","Breve":"˘","brvbar":"¦","bscr":"𝒷","Bscr":"ℬ","bsemi":"⁏","bsim":"∽","bsime":"⋍","bsolb":"⧅","bsol":"\\\\","bsolhsub":"⟈","bull":"•","bullet":"•","bump":"≎","bumpE":"⪮","bumpe":"≏","Bumpeq":"≎","bumpeq":"≏","Cacute":"Ć","cacute":"ć","capand":"⩄","capbrcup":"⩉","capcap":"⩋","cap":"∩","Cap":"⋒","capcup":"⩇","capdot":"⩀","CapitalDifferentialD":"ⅅ","caps":"∩︀","caret":"⁁","caron":"ˇ","Cayleys":"ℭ","ccaps":"⩍","Ccaron":"Č","ccaron":"č","Ccedil":"Ç","ccedil":"ç","Ccirc":"Ĉ","ccirc":"ĉ","Cconint":"∰","ccups":"⩌","ccupssm":"⩐","Cdot":"Ċ","cdot":"ċ","cedil":"¸","Cedilla":"¸","cemptyv":"⦲","cent":"¢","centerdot":"·","CenterDot":"·","cfr":"𝔠","Cfr":"ℭ","CHcy":"Ч","chcy":"ч","check":"✓","checkmark":"✓","Chi":"Χ","chi":"χ","circ":"ˆ","circeq":"≗","circlearrowleft":"↺","circlearrowright":"↻","circledast":"⊛","circledcirc":"⊚","circleddash":"⊝","CircleDot":"⊙","circledR":"®","circledS":"Ⓢ","CircleMinus":"⊖","CirclePlus":"⊕","CircleTimes":"⊗","cir":"○","cirE":"⧃","cire":"≗","cirfnint":"⨐","cirmid":"⫯","cirscir":"⧂","ClockwiseContourIntegral":"∲","CloseCurlyDoubleQuote":"”","CloseCurlyQuote":"’","clubs":"♣","clubsuit":"♣","colon":":","Colon":"∷","Colone":"⩴","colone":"≔","coloneq":"≔","comma":",","commat":"@","comp":"∁","compfn":"∘","complement":"∁","complexes":"ℂ","cong":"≅","congdot":"⩭","Congruent":"≡","conint":"∮","Conint":"∯","ContourIntegral":"∮","copf":"𝕔","Copf":"ℂ","coprod":"∐","Coproduct":"∐","copy":"©","COPY":"©","copysr":"℗","CounterClockwiseContourIntegral":"∳","crarr":"↵","cross":"✗","Cross":"⨯","Cscr":"𝒞","cscr":"𝒸","csub":"⫏","csube":"⫑","csup":"⫐","csupe":"⫒","ctdot":"⋯","cudarrl":"⤸","cudarrr":"⤵","cuepr":"⋞","cuesc":"⋟","cularr":"↶","cularrp":"⤽","cupbrcap":"⩈","cupcap":"⩆","CupCap":"≍","cup":"∪","Cup":"⋓","cupcup":"⩊","cupdot":"⊍","cupor":"⩅","cups":"∪︀","curarr":"↷","curarrm":"⤼","curlyeqprec":"⋞","curlyeqsucc":"⋟","curlyvee":"⋎","curlywedge":"⋏","curren":"¤","curvearrowleft":"↶","curvearrowright":"↷","cuvee":"⋎","cuwed":"⋏","cwconint":"∲","cwint":"∱","cylcty":"⌭","dagger":"†","Dagger":"‡","daleth":"ℸ","darr":"↓","Darr":"↡","dArr":"⇓","dash":"‐","Dashv":"⫤","dashv":"⊣","dbkarow":"⤏","dblac":"˝","Dcaron":"Ď","dcaron":"ď","Dcy":"Д","dcy":"д","ddagger":"‡","ddarr":"⇊","DD":"ⅅ","dd":"ⅆ","DDotrahd":"⤑","ddotseq":"⩷","deg":"°","Del":"∇","Delta":"Δ","delta":"δ","demptyv":"⦱","dfisht":"⥿","Dfr":"𝔇","dfr":"𝔡","dHar":"⥥","dharl":"⇃","dharr":"⇂","DiacriticalAcute":"´","DiacriticalDot":"˙","DiacriticalDoubleAcute":"˝","DiacriticalGrave":"`","DiacriticalTilde":"˜","diam":"⋄","diamond":"⋄","Diamond":"⋄","diamondsuit":"♦","diams":"♦","die":"¨","DifferentialD":"ⅆ","digamma":"ϝ","disin":"⋲","div":"÷","divide":"÷","divideontimes":"⋇","divonx":"⋇","DJcy":"Ђ","djcy":"ђ","dlcorn":"⌞","dlcrop":"⌍","dollar":"$","Dopf":"𝔻","dopf":"𝕕","Dot":"¨","dot":"˙","DotDot":"⃜","doteq":"≐","doteqdot":"≑","DotEqual":"≐","dotminus":"∸","dotplus":"∔","dotsquare":"⊡","doublebarwedge":"⌆","DoubleContourIntegral":"∯","DoubleDot":"¨","DoubleDownArrow":"⇓","DoubleLeftArrow":"⇐","DoubleLeftRightArrow":"⇔","DoubleLeftTee":"⫤","DoubleLongLeftArrow":"⟸","DoubleLongLeftRightArrow":"⟺","DoubleLongRightArrow":"⟹","DoubleRightArrow":"⇒","DoubleRightTee":"⊨","DoubleUpArrow":"⇑","DoubleUpDownArrow":"⇕","DoubleVerticalBar":"∥","DownArrowBar":"⤓","downarrow":"↓","DownArrow":"↓","Downarrow":"⇓","DownArrowUpArrow":"⇵","DownBreve":"̑","downdownarrows":"⇊","downharpoonleft":"⇃","downharpoonright":"⇂","DownLeftRightVector":"⥐","DownLeftTeeVector":"⥞","DownLeftVectorBar":"⥖","DownLeftVector":"↽","DownRightTeeVector":"⥟","DownRightVectorBar":"⥗","DownRightVector":"⇁","DownTeeArrow":"↧","DownTee":"⊤","drbkarow":"⤐","drcorn":"⌟","drcrop":"⌌","Dscr":"𝒟","dscr":"𝒹","DScy":"Ѕ","dscy":"ѕ","dsol":"⧶","Dstrok":"Đ","dstrok":"đ","dtdot":"⋱","dtri":"▿","dtrif":"▾","duarr":"⇵","duhar":"⥯","dwangle":"⦦","DZcy":"Џ","dzcy":"џ","dzigrarr":"⟿","Eacute":"É","eacute":"é","easter":"⩮","Ecaron":"Ě","ecaron":"ě","Ecirc":"Ê","ecirc":"ê","ecir":"≖","ecolon":"≕","Ecy":"Э","ecy":"э","eDDot":"⩷","Edot":"Ė","edot":"ė","eDot":"≑","ee":"ⅇ","efDot":"≒","Efr":"𝔈","efr":"𝔢","eg":"⪚","Egrave":"È","egrave":"è","egs":"⪖","egsdot":"⪘","el":"⪙","Element":"∈","elinters":"⏧","ell":"ℓ","els":"⪕","elsdot":"⪗","Emacr":"Ē","emacr":"ē","empty":"∅","emptyset":"∅","EmptySmallSquare":"◻","emptyv":"∅","EmptyVerySmallSquare":"▫","emsp13":" ","emsp14":" ","emsp":" ","ENG":"Ŋ","eng":"ŋ","ensp":" ","Eogon":"Ę","eogon":"ę","Eopf":"𝔼","eopf":"𝕖","epar":"⋕","eparsl":"⧣","eplus":"⩱","epsi":"ε","Epsilon":"Ε","epsilon":"ε","epsiv":"ϵ","eqcirc":"≖","eqcolon":"≕","eqsim":"≂","eqslantgtr":"⪖","eqslantless":"⪕","Equal":"⩵","equals":"=","EqualTilde":"≂","equest":"≟","Equilibrium":"⇌","equiv":"≡","equivDD":"⩸","eqvparsl":"⧥","erarr":"⥱","erDot":"≓","escr":"ℯ","Escr":"ℰ","esdot":"≐","Esim":"⩳","esim":"≂","Eta":"Η","eta":"η","ETH":"Ð","eth":"ð","Euml":"Ë","euml":"ë","euro":"€","excl":"!","exist":"∃","Exists":"∃","expectation":"ℰ","exponentiale":"ⅇ","ExponentialE":"ⅇ","fallingdotseq":"≒","Fcy":"Ф","fcy":"ф","female":"♀","ffilig":"ffi","fflig":"ff","ffllig":"ffl","Ffr":"𝔉","ffr":"𝔣","filig":"fi","FilledSmallSquare":"◼","FilledVerySmallSquare":"▪","fjlig":"fj","flat":"♭","fllig":"fl","fltns":"▱","fnof":"ƒ","Fopf":"𝔽","fopf":"𝕗","forall":"∀","ForAll":"∀","fork":"⋔","forkv":"⫙","Fouriertrf":"ℱ","fpartint":"⨍","frac12":"½","frac13":"⅓","frac14":"¼","frac15":"⅕","frac16":"⅙","frac18":"⅛","frac23":"⅔","frac25":"⅖","frac34":"¾","frac35":"⅗","frac38":"⅜","frac45":"⅘","frac56":"⅚","frac58":"⅝","frac78":"⅞","frasl":"⁄","frown":"⌢","fscr":"𝒻","Fscr":"ℱ","gacute":"ǵ","Gamma":"Γ","gamma":"γ","Gammad":"Ϝ","gammad":"ϝ","gap":"⪆","Gbreve":"Ğ","gbreve":"ğ","Gcedil":"Ģ","Gcirc":"Ĝ","gcirc":"ĝ","Gcy":"Г","gcy":"г","Gdot":"Ġ","gdot":"ġ","ge":"≥","gE":"≧","gEl":"⪌","gel":"⋛","geq":"≥","geqq":"≧","geqslant":"⩾","gescc":"⪩","ges":"⩾","gesdot":"⪀","gesdoto":"⪂","gesdotol":"⪄","gesl":"⋛︀","gesles":"⪔","Gfr":"𝔊","gfr":"𝔤","gg":"≫","Gg":"⋙","ggg":"⋙","gimel":"ℷ","GJcy":"Ѓ","gjcy":"ѓ","gla":"⪥","gl":"≷","glE":"⪒","glj":"⪤","gnap":"⪊","gnapprox":"⪊","gne":"⪈","gnE":"≩","gneq":"⪈","gneqq":"≩","gnsim":"⋧","Gopf":"𝔾","gopf":"𝕘","grave":"`","GreaterEqual":"≥","GreaterEqualLess":"⋛","GreaterFullEqual":"≧","GreaterGreater":"⪢","GreaterLess":"≷","GreaterSlantEqual":"⩾","GreaterTilde":"≳","Gscr":"𝒢","gscr":"ℊ","gsim":"≳","gsime":"⪎","gsiml":"⪐","gtcc":"⪧","gtcir":"⩺","gt":">","GT":">","Gt":"≫","gtdot":"⋗","gtlPar":"⦕","gtquest":"⩼","gtrapprox":"⪆","gtrarr":"⥸","gtrdot":"⋗","gtreqless":"⋛","gtreqqless":"⪌","gtrless":"≷","gtrsim":"≳","gvertneqq":"≩︀","gvnE":"≩︀","Hacek":"ˇ","hairsp":" ","half":"½","hamilt":"ℋ","HARDcy":"Ъ","hardcy":"ъ","harrcir":"⥈","harr":"↔","hArr":"⇔","harrw":"↭","Hat":"^","hbar":"ℏ","Hcirc":"Ĥ","hcirc":"ĥ","hearts":"♥","heartsuit":"♥","hellip":"…","hercon":"⊹","hfr":"𝔥","Hfr":"ℌ","HilbertSpace":"ℋ","hksearow":"⤥","hkswarow":"⤦","hoarr":"⇿","homtht":"∻","hookleftarrow":"↩","hookrightarrow":"↪","hopf":"𝕙","Hopf":"ℍ","horbar":"―","HorizontalLine":"─","hscr":"𝒽","Hscr":"ℋ","hslash":"ℏ","Hstrok":"Ħ","hstrok":"ħ","HumpDownHump":"≎","HumpEqual":"≏","hybull":"⁃","hyphen":"‐","Iacute":"Í","iacute":"í","ic":"⁣","Icirc":"Î","icirc":"î","Icy":"И","icy":"и","Idot":"İ","IEcy":"Е","iecy":"е","iexcl":"¡","iff":"⇔","ifr":"𝔦","Ifr":"ℑ","Igrave":"Ì","igrave":"ì","ii":"ⅈ","iiiint":"⨌","iiint":"∭","iinfin":"⧜","iiota":"℩","IJlig":"IJ","ijlig":"ij","Imacr":"Ī","imacr":"ī","image":"ℑ","ImaginaryI":"ⅈ","imagline":"ℐ","imagpart":"ℑ","imath":"ı","Im":"ℑ","imof":"⊷","imped":"Ƶ","Implies":"⇒","incare":"℅","in":"∈","infin":"∞","infintie":"⧝","inodot":"ı","intcal":"⊺","int":"∫","Int":"∬","integers":"ℤ","Integral":"∫","intercal":"⊺","Intersection":"⋂","intlarhk":"⨗","intprod":"⨼","InvisibleComma":"⁣","InvisibleTimes":"⁢","IOcy":"Ё","iocy":"ё","Iogon":"Į","iogon":"į","Iopf":"𝕀","iopf":"𝕚","Iota":"Ι","iota":"ι","iprod":"⨼","iquest":"¿","iscr":"𝒾","Iscr":"ℐ","isin":"∈","isindot":"⋵","isinE":"⋹","isins":"⋴","isinsv":"⋳","isinv":"∈","it":"⁢","Itilde":"Ĩ","itilde":"ĩ","Iukcy":"І","iukcy":"і","Iuml":"Ï","iuml":"ï","Jcirc":"Ĵ","jcirc":"ĵ","Jcy":"Й","jcy":"й","Jfr":"𝔍","jfr":"𝔧","jmath":"ȷ","Jopf":"𝕁","jopf":"𝕛","Jscr":"𝒥","jscr":"𝒿","Jsercy":"Ј","jsercy":"ј","Jukcy":"Є","jukcy":"є","Kappa":"Κ","kappa":"κ","kappav":"ϰ","Kcedil":"Ķ","kcedil":"ķ","Kcy":"К","kcy":"к","Kfr":"𝔎","kfr":"𝔨","kgreen":"ĸ","KHcy":"Х","khcy":"х","KJcy":"Ќ","kjcy":"ќ","Kopf":"𝕂","kopf":"𝕜","Kscr":"𝒦","kscr":"𝓀","lAarr":"⇚","Lacute":"Ĺ","lacute":"ĺ","laemptyv":"⦴","lagran":"ℒ","Lambda":"Λ","lambda":"λ","lang":"⟨","Lang":"⟪","langd":"⦑","langle":"⟨","lap":"⪅","Laplacetrf":"ℒ","laquo":"«","larrb":"⇤","larrbfs":"⤟","larr":"←","Larr":"↞","lArr":"⇐","larrfs":"⤝","larrhk":"↩","larrlp":"↫","larrpl":"⤹","larrsim":"⥳","larrtl":"↢","latail":"⤙","lAtail":"⤛","lat":"⪫","late":"⪭","lates":"⪭︀","lbarr":"⤌","lBarr":"⤎","lbbrk":"❲","lbrace":"{","lbrack":"[","lbrke":"⦋","lbrksld":"⦏","lbrkslu":"⦍","Lcaron":"Ľ","lcaron":"ľ","Lcedil":"Ļ","lcedil":"ļ","lceil":"⌈","lcub":"{","Lcy":"Л","lcy":"л","ldca":"⤶","ldquo":"“","ldquor":"„","ldrdhar":"⥧","ldrushar":"⥋","ldsh":"↲","le":"≤","lE":"≦","LeftAngleBracket":"⟨","LeftArrowBar":"⇤","leftarrow":"←","LeftArrow":"←","Leftarrow":"⇐","LeftArrowRightArrow":"⇆","leftarrowtail":"↢","LeftCeiling":"⌈","LeftDoubleBracket":"⟦","LeftDownTeeVector":"⥡","LeftDownVectorBar":"⥙","LeftDownVector":"⇃","LeftFloor":"⌊","leftharpoondown":"↽","leftharpoonup":"↼","leftleftarrows":"⇇","leftrightarrow":"↔","LeftRightArrow":"↔","Leftrightarrow":"⇔","leftrightarrows":"⇆","leftrightharpoons":"⇋","leftrightsquigarrow":"↭","LeftRightVector":"⥎","LeftTeeArrow":"↤","LeftTee":"⊣","LeftTeeVector":"⥚","leftthreetimes":"⋋","LeftTriangleBar":"⧏","LeftTriangle":"⊲","LeftTriangleEqual":"⊴","LeftUpDownVector":"⥑","LeftUpTeeVector":"⥠","LeftUpVectorBar":"⥘","LeftUpVector":"↿","LeftVectorBar":"⥒","LeftVector":"↼","lEg":"⪋","leg":"⋚","leq":"≤","leqq":"≦","leqslant":"⩽","lescc":"⪨","les":"⩽","lesdot":"⩿","lesdoto":"⪁","lesdotor":"⪃","lesg":"⋚︀","lesges":"⪓","lessapprox":"⪅","lessdot":"⋖","lesseqgtr":"⋚","lesseqqgtr":"⪋","LessEqualGreater":"⋚","LessFullEqual":"≦","LessGreater":"≶","lessgtr":"≶","LessLess":"⪡","lesssim":"≲","LessSlantEqual":"⩽","LessTilde":"≲","lfisht":"⥼","lfloor":"⌊","Lfr":"𝔏","lfr":"𝔩","lg":"≶","lgE":"⪑","lHar":"⥢","lhard":"↽","lharu":"↼","lharul":"⥪","lhblk":"▄","LJcy":"Љ","ljcy":"љ","llarr":"⇇","ll":"≪","Ll":"⋘","llcorner":"⌞","Lleftarrow":"⇚","llhard":"⥫","lltri":"◺","Lmidot":"Ŀ","lmidot":"ŀ","lmoustache":"⎰","lmoust":"⎰","lnap":"⪉","lnapprox":"⪉","lne":"⪇","lnE":"≨","lneq":"⪇","lneqq":"≨","lnsim":"⋦","loang":"⟬","loarr":"⇽","lobrk":"⟦","longleftarrow":"⟵","LongLeftArrow":"⟵","Longleftarrow":"⟸","longleftrightarrow":"⟷","LongLeftRightArrow":"⟷","Longleftrightarrow":"⟺","longmapsto":"⟼","longrightarrow":"⟶","LongRightArrow":"⟶","Longrightarrow":"⟹","looparrowleft":"↫","looparrowright":"↬","lopar":"⦅","Lopf":"𝕃","lopf":"𝕝","loplus":"⨭","lotimes":"⨴","lowast":"∗","lowbar":"_","LowerLeftArrow":"↙","LowerRightArrow":"↘","loz":"◊","lozenge":"◊","lozf":"⧫","lpar":"(","lparlt":"⦓","lrarr":"⇆","lrcorner":"⌟","lrhar":"⇋","lrhard":"⥭","lrm":"‎","lrtri":"⊿","lsaquo":"‹","lscr":"𝓁","Lscr":"ℒ","lsh":"↰","Lsh":"↰","lsim":"≲","lsime":"⪍","lsimg":"⪏","lsqb":"[","lsquo":"‘","lsquor":"‚","Lstrok":"Ł","lstrok":"ł","ltcc":"⪦","ltcir":"⩹","lt":"<","LT":"<","Lt":"≪","ltdot":"⋖","lthree":"⋋","ltimes":"⋉","ltlarr":"⥶","ltquest":"⩻","ltri":"◃","ltrie":"⊴","ltrif":"◂","ltrPar":"⦖","lurdshar":"⥊","luruhar":"⥦","lvertneqq":"≨︀","lvnE":"≨︀","macr":"¯","male":"♂","malt":"✠","maltese":"✠","Map":"⤅","map":"↦","mapsto":"↦","mapstodown":"↧","mapstoleft":"↤","mapstoup":"↥","marker":"▮","mcomma":"⨩","Mcy":"М","mcy":"м","mdash":"—","mDDot":"∺","measuredangle":"∡","MediumSpace":" ","Mellintrf":"ℳ","Mfr":"𝔐","mfr":"𝔪","mho":"℧","micro":"µ","midast":"*","midcir":"⫰","mid":"∣","middot":"·","minusb":"⊟","minus":"−","minusd":"∸","minusdu":"⨪","MinusPlus":"∓","mlcp":"⫛","mldr":"…","mnplus":"∓","models":"⊧","Mopf":"𝕄","mopf":"𝕞","mp":"∓","mscr":"𝓂","Mscr":"ℳ","mstpos":"∾","Mu":"Μ","mu":"μ","multimap":"⊸","mumap":"⊸","nabla":"∇","Nacute":"Ń","nacute":"ń","nang":"∠⃒","nap":"≉","napE":"⩰̸","napid":"≋̸","napos":"ʼn","napprox":"≉","natural":"♮","naturals":"ℕ","natur":"♮","nbsp":" ","nbump":"≎̸","nbumpe":"≏̸","ncap":"⩃","Ncaron":"Ň","ncaron":"ň","Ncedil":"Ņ","ncedil":"ņ","ncong":"≇","ncongdot":"⩭̸","ncup":"⩂","Ncy":"Н","ncy":"н","ndash":"–","nearhk":"⤤","nearr":"↗","neArr":"⇗","nearrow":"↗","ne":"≠","nedot":"≐̸","NegativeMediumSpace":"​","NegativeThickSpace":"​","NegativeThinSpace":"​","NegativeVeryThinSpace":"​","nequiv":"≢","nesear":"⤨","nesim":"≂̸","NestedGreaterGreater":"≫","NestedLessLess":"≪","NewLine":"\\n","nexist":"∄","nexists":"∄","Nfr":"𝔑","nfr":"𝔫","ngE":"≧̸","nge":"≱","ngeq":"≱","ngeqq":"≧̸","ngeqslant":"⩾̸","nges":"⩾̸","nGg":"⋙̸","ngsim":"≵","nGt":"≫⃒","ngt":"≯","ngtr":"≯","nGtv":"≫̸","nharr":"↮","nhArr":"⇎","nhpar":"⫲","ni":"∋","nis":"⋼","nisd":"⋺","niv":"∋","NJcy":"Њ","njcy":"њ","nlarr":"↚","nlArr":"⇍","nldr":"‥","nlE":"≦̸","nle":"≰","nleftarrow":"↚","nLeftarrow":"⇍","nleftrightarrow":"↮","nLeftrightarrow":"⇎","nleq":"≰","nleqq":"≦̸","nleqslant":"⩽̸","nles":"⩽̸","nless":"≮","nLl":"⋘̸","nlsim":"≴","nLt":"≪⃒","nlt":"≮","nltri":"⋪","nltrie":"⋬","nLtv":"≪̸","nmid":"∤","NoBreak":"⁠","NonBreakingSpace":" ","nopf":"𝕟","Nopf":"ℕ","Not":"⫬","not":"¬","NotCongruent":"≢","NotCupCap":"≭","NotDoubleVerticalBar":"∦","NotElement":"∉","NotEqual":"≠","NotEqualTilde":"≂̸","NotExists":"∄","NotGreater":"≯","NotGreaterEqual":"≱","NotGreaterFullEqual":"≧̸","NotGreaterGreater":"≫̸","NotGreaterLess":"≹","NotGreaterSlantEqual":"⩾̸","NotGreaterTilde":"≵","NotHumpDownHump":"≎̸","NotHumpEqual":"≏̸","notin":"∉","notindot":"⋵̸","notinE":"⋹̸","notinva":"∉","notinvb":"⋷","notinvc":"⋶","NotLeftTriangleBar":"⧏̸","NotLeftTriangle":"⋪","NotLeftTriangleEqual":"⋬","NotLess":"≮","NotLessEqual":"≰","NotLessGreater":"≸","NotLessLess":"≪̸","NotLessSlantEqual":"⩽̸","NotLessTilde":"≴","NotNestedGreaterGreater":"⪢̸","NotNestedLessLess":"⪡̸","notni":"∌","notniva":"∌","notnivb":"⋾","notnivc":"⋽","NotPrecedes":"⊀","NotPrecedesEqual":"⪯̸","NotPrecedesSlantEqual":"⋠","NotReverseElement":"∌","NotRightTriangleBar":"⧐̸","NotRightTriangle":"⋫","NotRightTriangleEqual":"⋭","NotSquareSubset":"⊏̸","NotSquareSubsetEqual":"⋢","NotSquareSuperset":"⊐̸","NotSquareSupersetEqual":"⋣","NotSubset":"⊂⃒","NotSubsetEqual":"⊈","NotSucceeds":"⊁","NotSucceedsEqual":"⪰̸","NotSucceedsSlantEqual":"⋡","NotSucceedsTilde":"≿̸","NotSuperset":"⊃⃒","NotSupersetEqual":"⊉","NotTilde":"≁","NotTildeEqual":"≄","NotTildeFullEqual":"≇","NotTildeTilde":"≉","NotVerticalBar":"∤","nparallel":"∦","npar":"∦","nparsl":"⫽⃥","npart":"∂̸","npolint":"⨔","npr":"⊀","nprcue":"⋠","nprec":"⊀","npreceq":"⪯̸","npre":"⪯̸","nrarrc":"⤳̸","nrarr":"↛","nrArr":"⇏","nrarrw":"↝̸","nrightarrow":"↛","nRightarrow":"⇏","nrtri":"⋫","nrtrie":"⋭","nsc":"⊁","nsccue":"⋡","nsce":"⪰̸","Nscr":"𝒩","nscr":"𝓃","nshortmid":"∤","nshortparallel":"∦","nsim":"≁","nsime":"≄","nsimeq":"≄","nsmid":"∤","nspar":"∦","nsqsube":"⋢","nsqsupe":"⋣","nsub":"⊄","nsubE":"⫅̸","nsube":"⊈","nsubset":"⊂⃒","nsubseteq":"⊈","nsubseteqq":"⫅̸","nsucc":"⊁","nsucceq":"⪰̸","nsup":"⊅","nsupE":"⫆̸","nsupe":"⊉","nsupset":"⊃⃒","nsupseteq":"⊉","nsupseteqq":"⫆̸","ntgl":"≹","Ntilde":"Ñ","ntilde":"ñ","ntlg":"≸","ntriangleleft":"⋪","ntrianglelefteq":"⋬","ntriangleright":"⋫","ntrianglerighteq":"⋭","Nu":"Ν","nu":"ν","num":"#","numero":"№","numsp":" ","nvap":"≍⃒","nvdash":"⊬","nvDash":"⊭","nVdash":"⊮","nVDash":"⊯","nvge":"≥⃒","nvgt":">⃒","nvHarr":"⤄","nvinfin":"⧞","nvlArr":"⤂","nvle":"≤⃒","nvlt":"<⃒","nvltrie":"⊴⃒","nvrArr":"⤃","nvrtrie":"⊵⃒","nvsim":"∼⃒","nwarhk":"⤣","nwarr":"↖","nwArr":"⇖","nwarrow":"↖","nwnear":"⤧","Oacute":"Ó","oacute":"ó","oast":"⊛","Ocirc":"Ô","ocirc":"ô","ocir":"⊚","Ocy":"О","ocy":"о","odash":"⊝","Odblac":"Ő","odblac":"ő","odiv":"⨸","odot":"⊙","odsold":"⦼","OElig":"Œ","oelig":"œ","ofcir":"⦿","Ofr":"𝔒","ofr":"𝔬","ogon":"˛","Ograve":"Ò","ograve":"ò","ogt":"⧁","ohbar":"⦵","ohm":"Ω","oint":"∮","olarr":"↺","olcir":"⦾","olcross":"⦻","oline":"‾","olt":"⧀","Omacr":"Ō","omacr":"ō","Omega":"Ω","omega":"ω","Omicron":"Ο","omicron":"ο","omid":"⦶","ominus":"⊖","Oopf":"𝕆","oopf":"𝕠","opar":"⦷","OpenCurlyDoubleQuote":"“","OpenCurlyQuote":"‘","operp":"⦹","oplus":"⊕","orarr":"↻","Or":"⩔","or":"∨","ord":"⩝","order":"ℴ","orderof":"ℴ","ordf":"ª","ordm":"º","origof":"⊶","oror":"⩖","orslope":"⩗","orv":"⩛","oS":"Ⓢ","Oscr":"𝒪","oscr":"ℴ","Oslash":"Ø","oslash":"ø","osol":"⊘","Otilde":"Õ","otilde":"õ","otimesas":"⨶","Otimes":"⨷","otimes":"⊗","Ouml":"Ö","ouml":"ö","ovbar":"⌽","OverBar":"‾","OverBrace":"⏞","OverBracket":"⎴","OverParenthesis":"⏜","para":"¶","parallel":"∥","par":"∥","parsim":"⫳","parsl":"⫽","part":"∂","PartialD":"∂","Pcy":"П","pcy":"п","percnt":"%","period":".","permil":"‰","perp":"⊥","pertenk":"‱","Pfr":"𝔓","pfr":"𝔭","Phi":"Φ","phi":"φ","phiv":"ϕ","phmmat":"ℳ","phone":"☎","Pi":"Π","pi":"π","pitchfork":"⋔","piv":"ϖ","planck":"ℏ","planckh":"ℎ","plankv":"ℏ","plusacir":"⨣","plusb":"⊞","pluscir":"⨢","plus":"+","plusdo":"∔","plusdu":"⨥","pluse":"⩲","PlusMinus":"±","plusmn":"±","plussim":"⨦","plustwo":"⨧","pm":"±","Poincareplane":"ℌ","pointint":"⨕","popf":"𝕡","Popf":"ℙ","pound":"£","prap":"⪷","Pr":"⪻","pr":"≺","prcue":"≼","precapprox":"⪷","prec":"≺","preccurlyeq":"≼","Precedes":"≺","PrecedesEqual":"⪯","PrecedesSlantEqual":"≼","PrecedesTilde":"≾","preceq":"⪯","precnapprox":"⪹","precneqq":"⪵","precnsim":"⋨","pre":"⪯","prE":"⪳","precsim":"≾","prime":"′","Prime":"″","primes":"ℙ","prnap":"⪹","prnE":"⪵","prnsim":"⋨","prod":"∏","Product":"∏","profalar":"⌮","profline":"⌒","profsurf":"⌓","prop":"∝","Proportional":"∝","Proportion":"∷","propto":"∝","prsim":"≾","prurel":"⊰","Pscr":"𝒫","pscr":"𝓅","Psi":"Ψ","psi":"ψ","puncsp":" ","Qfr":"𝔔","qfr":"𝔮","qint":"⨌","qopf":"𝕢","Qopf":"ℚ","qprime":"⁗","Qscr":"𝒬","qscr":"𝓆","quaternions":"ℍ","quatint":"⨖","quest":"?","questeq":"≟","quot":"\\"","QUOT":"\\"","rAarr":"⇛","race":"∽̱","Racute":"Ŕ","racute":"ŕ","radic":"√","raemptyv":"⦳","rang":"⟩","Rang":"⟫","rangd":"⦒","range":"⦥","rangle":"⟩","raquo":"»","rarrap":"⥵","rarrb":"⇥","rarrbfs":"⤠","rarrc":"⤳","rarr":"→","Rarr":"↠","rArr":"⇒","rarrfs":"⤞","rarrhk":"↪","rarrlp":"↬","rarrpl":"⥅","rarrsim":"⥴","Rarrtl":"⤖","rarrtl":"↣","rarrw":"↝","ratail":"⤚","rAtail":"⤜","ratio":"∶","rationals":"ℚ","rbarr":"⤍","rBarr":"⤏","RBarr":"⤐","rbbrk":"❳","rbrace":"}","rbrack":"]","rbrke":"⦌","rbrksld":"⦎","rbrkslu":"⦐","Rcaron":"Ř","rcaron":"ř","Rcedil":"Ŗ","rcedil":"ŗ","rceil":"⌉","rcub":"}","Rcy":"Р","rcy":"р","rdca":"⤷","rdldhar":"⥩","rdquo":"”","rdquor":"”","rdsh":"↳","real":"ℜ","realine":"ℛ","realpart":"ℜ","reals":"ℝ","Re":"ℜ","rect":"▭","reg":"®","REG":"®","ReverseElement":"∋","ReverseEquilibrium":"⇋","ReverseUpEquilibrium":"⥯","rfisht":"⥽","rfloor":"⌋","rfr":"𝔯","Rfr":"ℜ","rHar":"⥤","rhard":"⇁","rharu":"⇀","rharul":"⥬","Rho":"Ρ","rho":"ρ","rhov":"ϱ","RightAngleBracket":"⟩","RightArrowBar":"⇥","rightarrow":"→","RightArrow":"→","Rightarrow":"⇒","RightArrowLeftArrow":"⇄","rightarrowtail":"↣","RightCeiling":"⌉","RightDoubleBracket":"⟧","RightDownTeeVector":"⥝","RightDownVectorBar":"⥕","RightDownVector":"⇂","RightFloor":"⌋","rightharpoondown":"⇁","rightharpoonup":"⇀","rightleftarrows":"⇄","rightleftharpoons":"⇌","rightrightarrows":"⇉","rightsquigarrow":"↝","RightTeeArrow":"↦","RightTee":"⊢","RightTeeVector":"⥛","rightthreetimes":"⋌","RightTriangleBar":"⧐","RightTriangle":"⊳","RightTriangleEqual":"⊵","RightUpDownVector":"⥏","RightUpTeeVector":"⥜","RightUpVectorBar":"⥔","RightUpVector":"↾","RightVectorBar":"⥓","RightVector":"⇀","ring":"˚","risingdotseq":"≓","rlarr":"⇄","rlhar":"⇌","rlm":"‏","rmoustache":"⎱","rmoust":"⎱","rnmid":"⫮","roang":"⟭","roarr":"⇾","robrk":"⟧","ropar":"⦆","ropf":"𝕣","Ropf":"ℝ","roplus":"⨮","rotimes":"⨵","RoundImplies":"⥰","rpar":")","rpargt":"⦔","rppolint":"⨒","rrarr":"⇉","Rrightarrow":"⇛","rsaquo":"›","rscr":"𝓇","Rscr":"ℛ","rsh":"↱","Rsh":"↱","rsqb":"]","rsquo":"’","rsquor":"’","rthree":"⋌","rtimes":"⋊","rtri":"▹","rtrie":"⊵","rtrif":"▸","rtriltri":"⧎","RuleDelayed":"⧴","ruluhar":"⥨","rx":"℞","Sacute":"Ś","sacute":"ś","sbquo":"‚","scap":"⪸","Scaron":"Š","scaron":"š","Sc":"⪼","sc":"≻","sccue":"≽","sce":"⪰","scE":"⪴","Scedil":"Ş","scedil":"ş","Scirc":"Ŝ","scirc":"ŝ","scnap":"⪺","scnE":"⪶","scnsim":"⋩","scpolint":"⨓","scsim":"≿","Scy":"С","scy":"с","sdotb":"⊡","sdot":"⋅","sdote":"⩦","searhk":"⤥","searr":"↘","seArr":"⇘","searrow":"↘","sect":"§","semi":";","seswar":"⤩","setminus":"∖","setmn":"∖","sext":"✶","Sfr":"𝔖","sfr":"𝔰","sfrown":"⌢","sharp":"♯","SHCHcy":"Щ","shchcy":"щ","SHcy":"Ш","shcy":"ш","ShortDownArrow":"↓","ShortLeftArrow":"←","shortmid":"∣","shortparallel":"∥","ShortRightArrow":"→","ShortUpArrow":"↑","shy":"­","Sigma":"Σ","sigma":"σ","sigmaf":"ς","sigmav":"ς","sim":"∼","simdot":"⩪","sime":"≃","simeq":"≃","simg":"⪞","simgE":"⪠","siml":"⪝","simlE":"⪟","simne":"≆","simplus":"⨤","simrarr":"⥲","slarr":"←","SmallCircle":"∘","smallsetminus":"∖","smashp":"⨳","smeparsl":"⧤","smid":"∣","smile":"⌣","smt":"⪪","smte":"⪬","smtes":"⪬︀","SOFTcy":"Ь","softcy":"ь","solbar":"⌿","solb":"⧄","sol":"/","Sopf":"𝕊","sopf":"𝕤","spades":"♠","spadesuit":"♠","spar":"∥","sqcap":"⊓","sqcaps":"⊓︀","sqcup":"⊔","sqcups":"⊔︀","Sqrt":"√","sqsub":"⊏","sqsube":"⊑","sqsubset":"⊏","sqsubseteq":"⊑","sqsup":"⊐","sqsupe":"⊒","sqsupset":"⊐","sqsupseteq":"⊒","square":"□","Square":"□","SquareIntersection":"⊓","SquareSubset":"⊏","SquareSubsetEqual":"⊑","SquareSuperset":"⊐","SquareSupersetEqual":"⊒","SquareUnion":"⊔","squarf":"▪","squ":"□","squf":"▪","srarr":"→","Sscr":"𝒮","sscr":"𝓈","ssetmn":"∖","ssmile":"⌣","sstarf":"⋆","Star":"⋆","star":"☆","starf":"★","straightepsilon":"ϵ","straightphi":"ϕ","strns":"¯","sub":"⊂","Sub":"⋐","subdot":"⪽","subE":"⫅","sube":"⊆","subedot":"⫃","submult":"⫁","subnE":"⫋","subne":"⊊","subplus":"⪿","subrarr":"⥹","subset":"⊂","Subset":"⋐","subseteq":"⊆","subseteqq":"⫅","SubsetEqual":"⊆","subsetneq":"⊊","subsetneqq":"⫋","subsim":"⫇","subsub":"⫕","subsup":"⫓","succapprox":"⪸","succ":"≻","succcurlyeq":"≽","Succeeds":"≻","SucceedsEqual":"⪰","SucceedsSlantEqual":"≽","SucceedsTilde":"≿","succeq":"⪰","succnapprox":"⪺","succneqq":"⪶","succnsim":"⋩","succsim":"≿","SuchThat":"∋","sum":"∑","Sum":"∑","sung":"♪","sup1":"¹","sup2":"²","sup3":"³","sup":"⊃","Sup":"⋑","supdot":"⪾","supdsub":"⫘","supE":"⫆","supe":"⊇","supedot":"⫄","Superset":"⊃","SupersetEqual":"⊇","suphsol":"⟉","suphsub":"⫗","suplarr":"⥻","supmult":"⫂","supnE":"⫌","supne":"⊋","supplus":"⫀","supset":"⊃","Supset":"⋑","supseteq":"⊇","supseteqq":"⫆","supsetneq":"⊋","supsetneqq":"⫌","supsim":"⫈","supsub":"⫔","supsup":"⫖","swarhk":"⤦","swarr":"↙","swArr":"⇙","swarrow":"↙","swnwar":"⤪","szlig":"ß","Tab":"\\t","target":"⌖","Tau":"Τ","tau":"τ","tbrk":"⎴","Tcaron":"Ť","tcaron":"ť","Tcedil":"Ţ","tcedil":"ţ","Tcy":"Т","tcy":"т","tdot":"⃛","telrec":"⌕","Tfr":"𝔗","tfr":"𝔱","there4":"∴","therefore":"∴","Therefore":"∴","Theta":"Θ","theta":"θ","thetasym":"ϑ","thetav":"ϑ","thickapprox":"≈","thicksim":"∼","ThickSpace":"  ","ThinSpace":" ","thinsp":" ","thkap":"≈","thksim":"∼","THORN":"Þ","thorn":"þ","tilde":"˜","Tilde":"∼","TildeEqual":"≃","TildeFullEqual":"≅","TildeTilde":"≈","timesbar":"⨱","timesb":"⊠","times":"×","timesd":"⨰","tint":"∭","toea":"⤨","topbot":"⌶","topcir":"⫱","top":"⊤","Topf":"𝕋","topf":"𝕥","topfork":"⫚","tosa":"⤩","tprime":"‴","trade":"™","TRADE":"™","triangle":"▵","triangledown":"▿","triangleleft":"◃","trianglelefteq":"⊴","triangleq":"≜","triangleright":"▹","trianglerighteq":"⊵","tridot":"◬","trie":"≜","triminus":"⨺","TripleDot":"⃛","triplus":"⨹","trisb":"⧍","tritime":"⨻","trpezium":"⏢","Tscr":"𝒯","tscr":"𝓉","TScy":"Ц","tscy":"ц","TSHcy":"Ћ","tshcy":"ћ","Tstrok":"Ŧ","tstrok":"ŧ","twixt":"≬","twoheadleftarrow":"↞","twoheadrightarrow":"↠","Uacute":"Ú","uacute":"ú","uarr":"↑","Uarr":"↟","uArr":"⇑","Uarrocir":"⥉","Ubrcy":"Ў","ubrcy":"ў","Ubreve":"Ŭ","ubreve":"ŭ","Ucirc":"Û","ucirc":"û","Ucy":"У","ucy":"у","udarr":"⇅","Udblac":"Ű","udblac":"ű","udhar":"⥮","ufisht":"⥾","Ufr":"𝔘","ufr":"𝔲","Ugrave":"Ù","ugrave":"ù","uHar":"⥣","uharl":"↿","uharr":"↾","uhblk":"▀","ulcorn":"⌜","ulcorner":"⌜","ulcrop":"⌏","ultri":"◸","Umacr":"Ū","umacr":"ū","uml":"¨","UnderBar":"_","UnderBrace":"⏟","UnderBracket":"⎵","UnderParenthesis":"⏝","Union":"⋃","UnionPlus":"⊎","Uogon":"Ų","uogon":"ų","Uopf":"𝕌","uopf":"𝕦","UpArrowBar":"⤒","uparrow":"↑","UpArrow":"↑","Uparrow":"⇑","UpArrowDownArrow":"⇅","updownarrow":"↕","UpDownArrow":"↕","Updownarrow":"⇕","UpEquilibrium":"⥮","upharpoonleft":"↿","upharpoonright":"↾","uplus":"⊎","UpperLeftArrow":"↖","UpperRightArrow":"↗","upsi":"υ","Upsi":"ϒ","upsih":"ϒ","Upsilon":"Υ","upsilon":"υ","UpTeeArrow":"↥","UpTee":"⊥","upuparrows":"⇈","urcorn":"⌝","urcorner":"⌝","urcrop":"⌎","Uring":"Ů","uring":"ů","urtri":"◹","Uscr":"𝒰","uscr":"𝓊","utdot":"⋰","Utilde":"Ũ","utilde":"ũ","utri":"▵","utrif":"▴","uuarr":"⇈","Uuml":"Ü","uuml":"ü","uwangle":"⦧","vangrt":"⦜","varepsilon":"ϵ","varkappa":"ϰ","varnothing":"∅","varphi":"ϕ","varpi":"ϖ","varpropto":"∝","varr":"↕","vArr":"⇕","varrho":"ϱ","varsigma":"ς","varsubsetneq":"⊊︀","varsubsetneqq":"⫋︀","varsupsetneq":"⊋︀","varsupsetneqq":"⫌︀","vartheta":"ϑ","vartriangleleft":"⊲","vartriangleright":"⊳","vBar":"⫨","Vbar":"⫫","vBarv":"⫩","Vcy":"В","vcy":"в","vdash":"⊢","vDash":"⊨","Vdash":"⊩","VDash":"⊫","Vdashl":"⫦","veebar":"⊻","vee":"∨","Vee":"⋁","veeeq":"≚","vellip":"⋮","verbar":"|","Verbar":"‖","vert":"|","Vert":"‖","VerticalBar":"∣","VerticalLine":"|","VerticalSeparator":"❘","VerticalTilde":"≀","VeryThinSpace":" ","Vfr":"𝔙","vfr":"𝔳","vltri":"⊲","vnsub":"⊂⃒","vnsup":"⊃⃒","Vopf":"𝕍","vopf":"𝕧","vprop":"∝","vrtri":"⊳","Vscr":"𝒱","vscr":"𝓋","vsubnE":"⫋︀","vsubne":"⊊︀","vsupnE":"⫌︀","vsupne":"⊋︀","Vvdash":"⊪","vzigzag":"⦚","Wcirc":"Ŵ","wcirc":"ŵ","wedbar":"⩟","wedge":"∧","Wedge":"⋀","wedgeq":"≙","weierp":"℘","Wfr":"𝔚","wfr":"𝔴","Wopf":"𝕎","wopf":"𝕨","wp":"℘","wr":"≀","wreath":"≀","Wscr":"𝒲","wscr":"𝓌","xcap":"⋂","xcirc":"◯","xcup":"⋃","xdtri":"▽","Xfr":"𝔛","xfr":"𝔵","xharr":"⟷","xhArr":"⟺","Xi":"Ξ","xi":"ξ","xlarr":"⟵","xlArr":"⟸","xmap":"⟼","xnis":"⋻","xodot":"⨀","Xopf":"𝕏","xopf":"𝕩","xoplus":"⨁","xotime":"⨂","xrarr":"⟶","xrArr":"⟹","Xscr":"𝒳","xscr":"𝓍","xsqcup":"⨆","xuplus":"⨄","xutri":"△","xvee":"⋁","xwedge":"⋀","Yacute":"Ý","yacute":"ý","YAcy":"Я","yacy":"я","Ycirc":"Ŷ","ycirc":"ŷ","Ycy":"Ы","ycy":"ы","yen":"¥","Yfr":"𝔜","yfr":"𝔶","YIcy":"Ї","yicy":"ї","Yopf":"𝕐","yopf":"𝕪","Yscr":"𝒴","yscr":"𝓎","YUcy":"Ю","yucy":"ю","yuml":"ÿ","Yuml":"Ÿ","Zacute":"Ź","zacute":"ź","Zcaron":"Ž","zcaron":"ž","Zcy":"З","zcy":"з","Zdot":"Ż","zdot":"ż","zeetrf":"ℨ","ZeroWidthSpace":"​","Zeta":"Ζ","zeta":"ζ","zfr":"𝔷","Zfr":"ℨ","ZHcy":"Ж","zhcy":"ж","zigrarr":"⇝","zopf":"𝕫","Zopf":"ℤ","Zscr":"𝒵","zscr":"𝓏","zwj":"‍","zwnj":"‌"}')},function(e,t,n){"use strict";var r={};function o(e,t,n){var i,c,code,l,f,h="";for("string"!=typeof t&&(n=t,t=o.defaultChars),void 0===n&&(n=!0),f=function(e){var i,t,n=r[e];if(n)return n;for(n=r[e]=[],i=0;i<128;i++)t=String.fromCharCode(i),/^[0-9a-z]$/i.test(t)?n.push(t):n.push("%"+("0"+i.toString(16).toUpperCase()).slice(-2));for(i=0;i<e.length;i++)n[e.charCodeAt(i)]=e[i];return n}(t),i=0,c=e.length;i<c;i++)if(code=e.charCodeAt(i),n&&37===code&&i+2<c&&/^[0-9a-f]{2}$/i.test(e.slice(i+1,i+3)))h+=e.slice(i,i+3),i+=2;else if(code<128)h+=f[code];else if(code>=55296&&code<=57343){if(code>=55296&&code<=56319&&i+1<c&&(l=e.charCodeAt(i+1))>=56320&&l<=57343){h+=encodeURIComponent(e[i]+e[i+1]),i++;continue}h+="%EF%BF%BD"}else h+=encodeURIComponent(e[i]);return h}o.defaultChars=";/?:@&=+$,-_.!~*'()#",o.componentChars="-_.!~*'()",e.exports=o},function(e,t,n){"use strict";var r={};function o(e,t){var n;return"string"!=typeof t&&(t=o.defaultChars),n=function(e){var i,t,n=r[e];if(n)return n;for(n=r[e]=[],i=0;i<128;i++)t=String.fromCharCode(i),n.push(t);for(i=0;i<e.length;i++)n[t=e.charCodeAt(i)]="%"+("0"+t.toString(16).toUpperCase()).slice(-2);return n}(t),e.replace(/(%[a-f0-9]{2})+/gi,(function(e){var i,t,r,o,c,l,f,h="";for(i=0,t=e.length;i<t;i+=3)(r=parseInt(e.slice(i+1,i+3),16))<128?h+=n[r]:192==(224&r)&&i+3<t&&128==(192&(o=parseInt(e.slice(i+4,i+6),16)))?(h+=(f=r<<6&1984|63&o)<128?"��":String.fromCharCode(f),i+=3):224==(240&r)&&i+6<t&&(o=parseInt(e.slice(i+4,i+6),16),c=parseInt(e.slice(i+7,i+9),16),128==(192&o)&&128==(192&c))?(h+=(f=r<<12&61440|o<<6&4032|63&c)<2048||f>=55296&&f<=57343?"���":String.fromCharCode(f),i+=6):240==(248&r)&&i+9<t&&(o=parseInt(e.slice(i+4,i+6),16),c=parseInt(e.slice(i+7,i+9),16),l=parseInt(e.slice(i+10,i+12),16),128==(192&o)&&128==(192&c)&&128==(192&l))?((f=r<<18&1835008|o<<12&258048|c<<6&4032|63&l)<65536||f>1114111?h+="����":(f-=65536,h+=String.fromCharCode(55296+(f>>10),56320+(1023&f))),i+=9):h+="�";return h}))}o.defaultChars=";/?:@&=+$,#",o.componentChars="",e.exports=o},function(e,t,n){"use strict";e.exports=function(e){var t="";return t+=e.protocol||"",t+=e.slashes?"//":"",t+=e.auth?e.auth+"@":"",e.hostname&&-1!==e.hostname.indexOf(":")?t+="["+e.hostname+"]":t+=e.hostname||"",t+=e.port?":"+e.port:"",t+=e.pathname||"",t+=e.search||"",t+=e.hash||""}},function(e,t,n){"use strict";function r(){this.protocol=null,this.slashes=null,this.auth=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.pathname=null}var o=/^([a-z0-9.+-]+:)/i,c=/:[0-9]*$/,l=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,f=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),h=["'"].concat(f),d=["%","/","?",";","#"].concat(h),m=["/","?","#"],v=/^[+a-z0-9A-Z_-]{0,63}$/,_=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,y={javascript:!0,"javascript:":!0},k={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};r.prototype.parse=function(e,t){var i,n,r,c,f,h=e;if(h=h.trim(),!t&&1===e.split("#").length){var w=l.exec(h);if(w)return this.pathname=w[1],w[2]&&(this.search=w[2]),this}var x=o.exec(h);if(x&&(r=(x=x[0]).toLowerCase(),this.protocol=x,h=h.substr(x.length)),(t||x||h.match(/^\/\/[^@\/]+@[^@\/]+/))&&(!(f="//"===h.substr(0,2))||x&&y[x]||(h=h.substr(2),this.slashes=!0)),!y[x]&&(f||x&&!k[x])){var A,C,E=-1;for(i=0;i<m.length;i++)-1!==(c=h.indexOf(m[i]))&&(-1===E||c<E)&&(E=c);for(-1!==(C=-1===E?h.lastIndexOf("@"):h.lastIndexOf("@",E))&&(A=h.slice(0,C),h=h.slice(C+1),this.auth=A),E=-1,i=0;i<d.length;i++)-1!==(c=h.indexOf(d[i]))&&(-1===E||c<E)&&(E=c);-1===E&&(E=h.length),":"===h[E-1]&&E--;var F=h.slice(0,E);h=h.slice(E),this.parseHost(F),this.hostname=this.hostname||"";var S="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!S){var D=this.hostname.split(/\./);for(i=0,n=D.length;i<n;i++){var T=D[i];if(T&&!T.match(v)){for(var z="",O=0,L=T.length;O<L;O++)T.charCodeAt(O)>127?z+="x":z+=T[O];if(!z.match(v)){var I=D.slice(0,i),$=D.slice(i+1),j=T.match(_);j&&(I.push(j[1]),$.unshift(j[2])),$.length&&(h=$.join(".")+h),this.hostname=I.join(".");break}}}}this.hostname.length>255&&(this.hostname=""),S&&(this.hostname=this.hostname.substr(1,this.hostname.length-2))}var P=h.indexOf("#");-1!==P&&(this.hash=h.substr(P),h=h.slice(0,P));var R=h.indexOf("?");return-1!==R&&(this.search=h.substr(R),h=h.slice(0,R)),h&&(this.pathname=h),k[r]&&this.hostname&&!this.pathname&&(this.pathname=""),this},r.prototype.parseHost=function(e){var t=c.exec(e);t&&(":"!==(t=t[0])&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)},e.exports=function(e,t){if(e&&e instanceof r)return e;var u=new r;return u.parse(e,t),u}},function(e,t,n){"use strict";t.Any=n(208),t.Cc=n(209),t.Cf=n(254),t.P=n(193),t.Z=n(210)},function(e,t){e.exports=/[\xAD\u0600-\u0605\u061C\u06DD\u070F\u08E2\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u206F\uFEFF\uFFF9-\uFFFB]|\uD804[\uDCBD\uDCCD]|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|\uDB40[\uDC01\uDC20-\uDC7F]/},function(e,t,n){"use strict";t.parseLinkLabel=n(256),t.parseLinkDestination=n(257),t.parseLinkTitle=n(258)},function(e,t,n){"use strict";e.exports=function(e,t,n){var r,o,marker,c,l=-1,f=e.posMax,h=e.pos;for(e.pos=t+1,r=1;e.pos<f;){if(93===(marker=e.src.charCodeAt(e.pos))&&0===--r){o=!0;break}if(c=e.pos,e.md.inline.skipToken(e),91===marker)if(c===e.pos-1)r++;else if(n)return e.pos=h,-1}return o&&(l=e.pos),e.pos=h,l}},function(e,t,n){"use strict";var r=n(190).unescapeAll;e.exports=function(e,t,n){var code,o,c=t,l={ok:!1,pos:0,lines:0,str:""};if(60===e.charCodeAt(t)){for(t++;t<n;){if(10===(code=e.charCodeAt(t)))return l;if(60===code)return l;if(62===code)return l.pos=t+1,l.str=r(e.slice(c+1,t)),l.ok=!0,l;92===code&&t+1<n?t+=2:t++}return l}for(o=0;t<n&&32!==(code=e.charCodeAt(t))&&!(code<32||127===code);)if(92===code&&t+1<n){if(32===e.charCodeAt(t+1))break;t+=2}else{if(40===code&&++o>32)return l;if(41===code){if(0===o)break;o--}t++}return c===t||0!==o||(l.str=r(e.slice(c,t)),l.lines=0,l.pos=t,l.ok=!0),l}},function(e,t,n){"use strict";var r=n(190).unescapeAll;e.exports=function(e,t,n){var code,marker,o=0,c=t,l={ok:!1,pos:0,lines:0,str:""};if(t>=n)return l;if(34!==(marker=e.charCodeAt(t))&&39!==marker&&40!==marker)return l;for(t++,40===marker&&(marker=41);t<n;){if((code=e.charCodeAt(t))===marker)return l.pos=t+1,l.lines=o,l.str=r(e.slice(c+1,t)),l.ok=!0,l;if(40===code&&41===marker)return l;10===code?o++:92===code&&t+1<n&&(t++,10===e.charCodeAt(t)&&o++),t++}return l}},function(e,t,n){"use strict";var r=n(190).assign,o=n(190).unescapeAll,c=n(190).escapeHtml,l={};function f(){this.rules=r({},l)}l.code_inline=function(e,t,n,r,o){var l=e[t];return"<code"+o.renderAttrs(l)+">"+c(e[t].content)+"</code>"},l.code_block=function(e,t,n,r,o){var l=e[t];return"<pre"+o.renderAttrs(l)+"><code>"+c(e[t].content)+"</code></pre>\n"},l.fence=function(e,t,n,r,l){var f,i,h,d,m,v=e[t],_=v.info?o(v.info).trim():"",y="",k="";return _&&(y=(h=_.split(/(\s+)/g))[0],k=h.slice(2).join("")),0===(f=n.highlight&&n.highlight(v.content,y,k)||c(v.content)).indexOf("<pre")?f+"\n":_?(i=v.attrIndex("class"),d=v.attrs?v.attrs.slice():[],i<0?d.push(["class",n.langPrefix+y]):(d[i]=d[i].slice(),d[i][1]+=" "+n.langPrefix+y),m={attrs:d},"<pre><code"+l.renderAttrs(m)+">"+f+"</code></pre>\n"):"<pre><code"+l.renderAttrs(v)+">"+f+"</code></pre>\n"},l.image=function(e,t,n,r,o){var c=e[t];return c.attrs[c.attrIndex("alt")][1]=o.renderInlineAsText(c.children,n,r),o.renderToken(e,t,n)},l.hardbreak=function(e,t,n){return n.xhtmlOut?"<br />\n":"<br>\n"},l.softbreak=function(e,t,n){return n.breaks?n.xhtmlOut?"<br />\n":"<br>\n":"\n"},l.text=function(e,t){return c(e[t].content)},l.html_block=function(e,t){return e[t].content},l.html_inline=function(e,t){return e[t].content},f.prototype.renderAttrs=function(e){var i,t,n;if(!e.attrs)return"";for(n="",i=0,t=e.attrs.length;i<t;i++)n+=" "+c(e.attrs[i][0])+'="'+c(e.attrs[i][1])+'"';return n},f.prototype.renderToken=function(e,t,n){var r,o="",c=!1,l=e[t];return l.hidden?"":(l.block&&-1!==l.nesting&&t&&e[t-1].hidden&&(o+="\n"),o+=(-1===l.nesting?"</":"<")+l.tag,o+=this.renderAttrs(l),0===l.nesting&&n.xhtmlOut&&(o+=" /"),l.block&&(c=!0,1===l.nesting&&t+1<e.length&&("inline"===(r=e[t+1]).type||r.hidden||-1===r.nesting&&r.tag===l.tag)&&(c=!1)),o+=c?">\n":">")},f.prototype.renderInline=function(e,t,n){for(var r,o="",c=this.rules,i=0,l=e.length;i<l;i++)void 0!==c[r=e[i].type]?o+=c[r](e,i,t,n,this):o+=this.renderToken(e,i,t);return o},f.prototype.renderInlineAsText=function(e,t,n){for(var r="",i=0,o=e.length;i<o;i++)"text"===e[i].type?r+=e[i].content:"image"===e[i].type?r+=this.renderInlineAsText(e[i].children,t,n):"softbreak"===e[i].type&&(r+="\n");return r},f.prototype.render=function(e,t,n){var i,r,o,c="",l=this.rules;for(i=0,r=e.length;i<r;i++)"inline"===(o=e[i].type)?c+=this.renderInline(e[i].children,t,n):void 0!==l[o]?c+=l[e[i].type](e,i,t,n,this):c+=this.renderToken(e,i,t,n);return c},e.exports=f},function(e,t,n){"use strict";var r=n(194),o=[["normalize",n(261)],["block",n(262)],["inline",n(263)],["linkify",n(264)],["replacements",n(265)],["smartquotes",n(266)]];function c(){this.ruler=new r;for(var i=0;i<o.length;i++)this.ruler.push(o[i][0],o[i][1])}c.prototype.process=function(e){var i,t,n;for(i=0,t=(n=this.ruler.getRules("")).length;i<t;i++)n[i](e)},c.prototype.State=n(267),e.exports=c},function(e,t,n){"use strict";var r=/\r\n?|\n/g,o=/\0/g;e.exports=function(e){var t;t=(t=e.src.replace(r,"\n")).replace(o,"�"),e.src=t}},function(e,t,n){"use strict";e.exports=function(e){var t;e.inlineMode?((t=new e.Token("inline","",0)).content=e.src,t.map=[0,1],t.children=[],e.tokens.push(t)):e.md.block.parse(e.src,e.md,e.env,e.tokens)}},function(e,t,n){"use strict";e.exports=function(e){var t,i,n,r=e.tokens;for(i=0,n=r.length;i<n;i++)"inline"===(t=r[i]).type&&e.md.inline.parse(t.content,e.md,e.env,t.children)}},function(e,t,n){"use strict";var r=n(190).arrayReplaceAt;function o(e){return/^<\/a\s*>/i.test(e)}e.exports=function(e){var i,t,n,c,l,f,h,d,text,m,v,_,y,k,w,x,A,C,E=e.tokens;if(e.md.options.linkify)for(t=0,n=E.length;t<n;t++)if("inline"===E[t].type&&e.md.linkify.pretest(E[t].content))for(y=0,i=(c=E[t].children).length-1;i>=0;i--)if("link_close"!==(f=c[i]).type){if("html_inline"===f.type&&(C=f.content,/^<a[>\s]/i.test(C)&&y>0&&y--,o(f.content)&&y++),!(y>0)&&"text"===f.type&&e.md.linkify.test(f.content)){for(text=f.content,A=e.md.linkify.match(text),h=[],_=f.level,v=0,d=0;d<A.length;d++)k=A[d].url,w=e.md.normalizeLink(k),e.md.validateLink(w)&&(x=A[d].text,x=A[d].schema?"mailto:"!==A[d].schema||/^mailto:/i.test(x)?e.md.normalizeLinkText(x):e.md.normalizeLinkText("mailto:"+x).replace(/^mailto:/,""):e.md.normalizeLinkText("http://"+x).replace(/^http:\/\//,""),(m=A[d].index)>v&&((l=new e.Token("text","",0)).content=text.slice(v,m),l.level=_,h.push(l)),(l=new e.Token("link_open","a",1)).attrs=[["href",w]],l.level=_++,l.markup="linkify",l.info="auto",h.push(l),(l=new e.Token("text","",0)).content=x,l.level=_,h.push(l),(l=new e.Token("link_close","a",-1)).level=--_,l.markup="linkify",l.info="auto",h.push(l),v=A[d].lastIndex);v<text.length&&((l=new e.Token("text","",0)).content=text.slice(v),l.level=_,h.push(l)),E[t].children=c=r(c,i,h)}}else for(i--;c[i].level!==f.level&&"link_open"!==c[i].type;)i--}},function(e,t,n){"use strict";var r=/\+-|\.\.|\?\?\?\?|!!!!|,,|--/,o=/\((c|tm|r|p)\)/i,c=/\((c|tm|r|p)\)/gi,l={c:"©",r:"®",p:"§",tm:"™"};function f(e,t){return l[t.toLowerCase()]}function h(e){var i,t,n=0;for(i=e.length-1;i>=0;i--)"text"!==(t=e[i]).type||n||(t.content=t.content.replace(c,f)),"link_open"===t.type&&"auto"===t.info&&n--,"link_close"===t.type&&"auto"===t.info&&n++}function d(e){var i,t,n=0;for(i=e.length-1;i>=0;i--)"text"!==(t=e[i]).type||n||r.test(t.content)&&(t.content=t.content.replace(/\+-/g,"±").replace(/\.{2,}/g,"…").replace(/([?!])…/g,"$1..").replace(/([?!]){4,}/g,"$1$1$1").replace(/,{2,}/g,",").replace(/(^|[^-])---(?=[^-]|$)/gm,"$1—").replace(/(^|\s)--(?=\s|$)/gm,"$1–").replace(/(^|[^-\s])--(?=[^-\s]|$)/gm,"$1–")),"link_open"===t.type&&"auto"===t.info&&n--,"link_close"===t.type&&"auto"===t.info&&n++}e.exports=function(e){var t;if(e.md.options.typographer)for(t=e.tokens.length-1;t>=0;t--)"inline"===e.tokens[t].type&&(o.test(e.tokens[t].content)&&h(e.tokens[t].children),r.test(e.tokens[t].content)&&d(e.tokens[t].children))}},function(e,t,n){"use strict";var r=n(190).isWhiteSpace,o=n(190).isPunctChar,c=n(190).isMdAsciiPunct,l=/['"]/,f=/['"]/g;function h(e,t,n){return e.substr(0,t)+n+e.substr(t+1)}function d(e,t){var i,n,text,l,d,m,v,_,y,k,w,x,A,C,E,F,S,D,T,z,O;for(T=[],i=0;i<e.length;i++){for(n=e[i],v=e[i].level,S=T.length-1;S>=0&&!(T[S].level<=v);S--);if(T.length=S+1,"text"===n.type){d=0,m=(text=n.content).length;e:for(;d<m&&(f.lastIndex=d,l=f.exec(text));){if(E=F=!0,d=l.index+1,D="'"===l[0],y=32,l.index-1>=0)y=text.charCodeAt(l.index-1);else for(S=i-1;S>=0&&("softbreak"!==e[S].type&&"hardbreak"!==e[S].type);S--)if(e[S].content){y=e[S].content.charCodeAt(e[S].content.length-1);break}if(k=32,d<m)k=text.charCodeAt(d);else for(S=i+1;S<e.length&&("softbreak"!==e[S].type&&"hardbreak"!==e[S].type);S++)if(e[S].content){k=e[S].content.charCodeAt(0);break}if(w=c(y)||o(String.fromCharCode(y)),x=c(k)||o(String.fromCharCode(k)),A=r(y),(C=r(k))?E=!1:x&&(A||w||(E=!1)),A?F=!1:w&&(C||x||(F=!1)),34===k&&'"'===l[0]&&y>=48&&y<=57&&(F=E=!1),E&&F&&(E=w,F=x),E||F){if(F)for(S=T.length-1;S>=0&&(_=T[S],!(T[S].level<v));S--)if(_.single===D&&T[S].level===v){_=T[S],D?(z=t.md.options.quotes[2],O=t.md.options.quotes[3]):(z=t.md.options.quotes[0],O=t.md.options.quotes[1]),n.content=h(n.content,l.index,O),e[_.token].content=h(e[_.token].content,_.pos,z),d+=O.length-1,_.token===i&&(d+=z.length-1),m=(text=n.content).length,T.length=S;continue e}E?T.push({token:i,pos:l.index,single:D,level:v}):F&&D&&(n.content=h(n.content,l.index,"’"))}else D&&(n.content=h(n.content,l.index,"’"))}}}}e.exports=function(e){var t;if(e.md.options.typographer)for(t=e.tokens.length-1;t>=0;t--)"inline"===e.tokens[t].type&&l.test(e.tokens[t].content)&&d(e.tokens[t].children,e)}},function(e,t,n){"use strict";var r=n(195);function o(e,t,n){this.src=e,this.env=n,this.tokens=[],this.inlineMode=!1,this.md=t}o.prototype.Token=r,e.exports=o},function(e,t,n){"use strict";var r=n(194),o=[["table",n(269),["paragraph","reference"]],["code",n(270)],["fence",n(271),["paragraph","reference","blockquote","list"]],["blockquote",n(272),["paragraph","reference","blockquote","list"]],["hr",n(273),["paragraph","reference","blockquote","list"]],["list",n(274),["paragraph","reference","blockquote"]],["reference",n(275)],["html_block",n(276),["paragraph","reference","blockquote"]],["heading",n(278),["paragraph","reference","blockquote"]],["lheading",n(279)],["paragraph",n(280)]];function c(){this.ruler=new r;for(var i=0;i<o.length;i++)this.ruler.push(o[i][0],o[i][1],{alt:(o[i][2]||[]).slice()})}c.prototype.tokenize=function(e,t,n){for(var i,r=this.ruler.getRules(""),o=r.length,line=t,c=!1,l=e.md.options.maxNesting;line<n&&(e.line=line=e.skipEmptyLines(line),!(line>=n))&&!(e.sCount[line]<e.blkIndent);){if(e.level>=l){e.line=n;break}for(i=0;i<o&&!r[i](e,line,n,!1);i++);e.tight=!c,e.isEmpty(e.line-1)&&(c=!0),(line=e.line)<n&&e.isEmpty(line)&&(c=!0,line++,e.line=line)}},c.prototype.parse=function(e,t,n,r){var o;e&&(o=new this.State(e,t,n,r),this.tokenize(o,o.line,o.lineMax))},c.prototype.State=n(281),e.exports=c},function(e,t,n){"use strict";var r=n(190).isSpace;function o(e,line){var t=e.bMarks[line]+e.tShift[line],n=e.eMarks[line];return e.src.substr(t,n-t)}function c(e){var t,n=[],r=0,o=e.length,c=!1,l=0,f="";for(t=e.charCodeAt(r);r<o;)124===t&&(c?(f+=e.substring(l,r-1),l=r):(n.push(f+e.substring(l,r)),f="",l=r+1)),c=92===t,r++,t=e.charCodeAt(r);return n.push(f+e.substring(l)),n}e.exports=function(e,t,n,l){var f,h,d,i,m,v,_,y,k,w,x,A,C,E,F,S,D,T;if(t+2>n)return!1;if(v=t+1,e.sCount[v]<e.blkIndent)return!1;if(e.sCount[v]-e.blkIndent>=4)return!1;if((d=e.bMarks[v]+e.tShift[v])>=e.eMarks[v])return!1;if(124!==(D=e.src.charCodeAt(d++))&&45!==D&&58!==D)return!1;if(d>=e.eMarks[v])return!1;if(124!==(T=e.src.charCodeAt(d++))&&45!==T&&58!==T&&!r(T))return!1;if(45===D&&r(T))return!1;for(;d<e.eMarks[v];){if(124!==(f=e.src.charCodeAt(d))&&45!==f&&58!==f&&!r(f))return!1;d++}for(_=(h=o(e,t+1)).split("|"),w=[],i=0;i<_.length;i++){if(!(x=_[i].trim())){if(0===i||i===_.length-1)continue;return!1}if(!/^:?-+:?$/.test(x))return!1;58===x.charCodeAt(x.length-1)?w.push(58===x.charCodeAt(0)?"center":"right"):58===x.charCodeAt(0)?w.push("left"):w.push("")}if(-1===(h=o(e,t).trim()).indexOf("|"))return!1;if(e.sCount[t]-e.blkIndent>=4)return!1;if((_=c(h)).length&&""===_[0]&&_.shift(),_.length&&""===_[_.length-1]&&_.pop(),0===(y=_.length)||y!==w.length)return!1;if(l)return!0;for(E=e.parentType,e.parentType="table",S=e.md.block.ruler.getRules("blockquote"),(k=e.push("table_open","table",1)).map=A=[t,0],(k=e.push("thead_open","thead",1)).map=[t,t+1],(k=e.push("tr_open","tr",1)).map=[t,t+1],i=0;i<_.length;i++)k=e.push("th_open","th",1),w[i]&&(k.attrs=[["style","text-align:"+w[i]]]),(k=e.push("inline","",0)).content=_[i].trim(),k.children=[],k=e.push("th_close","th",-1);for(k=e.push("tr_close","tr",-1),k=e.push("thead_close","thead",-1),v=t+2;v<n&&!(e.sCount[v]<e.blkIndent);v++){for(F=!1,i=0,m=S.length;i<m;i++)if(S[i](e,v,n,!0)){F=!0;break}if(F)break;if(!(h=o(e,v).trim()))break;if(e.sCount[v]-e.blkIndent>=4)break;for((_=c(h)).length&&""===_[0]&&_.shift(),_.length&&""===_[_.length-1]&&_.pop(),v===t+2&&((k=e.push("tbody_open","tbody",1)).map=C=[t+2,0]),(k=e.push("tr_open","tr",1)).map=[v,v+1],i=0;i<y;i++)k=e.push("td_open","td",1),w[i]&&(k.attrs=[["style","text-align:"+w[i]]]),(k=e.push("inline","",0)).content=_[i]?_[i].trim():"",k.children=[],k=e.push("td_close","td",-1);k=e.push("tr_close","tr",-1)}return C&&(k=e.push("tbody_close","tbody",-1),C[1]=v),k=e.push("table_close","table",-1),A[1]=v,e.parentType=E,e.line=v,!0}},function(e,t,n){"use strict";e.exports=function(e,t,n){var r,o,c;if(e.sCount[t]-e.blkIndent<4)return!1;for(o=r=t+1;r<n;)if(e.isEmpty(r))r++;else{if(!(e.sCount[r]-e.blkIndent>=4))break;o=++r}return e.line=o,(c=e.push("code_block","code",0)).content=e.getLines(t,o,4+e.blkIndent,!1)+"\n",c.map=[t,e.line],!0}},function(e,t,n){"use strict";e.exports=function(e,t,n,r){var marker,o,c,l,f,h,d,m=!1,v=e.bMarks[t]+e.tShift[t],_=e.eMarks[t];if(e.sCount[t]-e.blkIndent>=4)return!1;if(v+3>_)return!1;if(126!==(marker=e.src.charCodeAt(v))&&96!==marker)return!1;if(f=v,(o=(v=e.skipChars(v,marker))-f)<3)return!1;if(d=e.src.slice(f,v),c=e.src.slice(v,_),96===marker&&c.indexOf(String.fromCharCode(marker))>=0)return!1;if(r)return!0;for(l=t;!(++l>=n)&&!((v=f=e.bMarks[l]+e.tShift[l])<(_=e.eMarks[l])&&e.sCount[l]<e.blkIndent);)if(e.src.charCodeAt(v)===marker&&!(e.sCount[l]-e.blkIndent>=4||(v=e.skipChars(v,marker))-f<o||(v=e.skipSpaces(v))<_)){m=!0;break}return o=e.sCount[t],e.line=l+(m?1:0),(h=e.push("fence","code",0)).info=c,h.content=e.getLines(t+1,l,o,!0),h.markup=d,h.map=[t,e.line],!0}},function(e,t,n){"use strict";var r=n(190).isSpace;e.exports=function(e,t,n,o){var c,l,i,f,h,d,m,v,_,y,k,w,x,A,C,E,F,S,D,T,z=e.lineMax,O=e.bMarks[t]+e.tShift[t],L=e.eMarks[t];if(e.sCount[t]-e.blkIndent>=4)return!1;if(62!==e.src.charCodeAt(O++))return!1;if(o)return!0;for(f=_=e.sCount[t]+1,32===e.src.charCodeAt(O)?(O++,f++,_++,c=!1,E=!0):9===e.src.charCodeAt(O)?(E=!0,(e.bsCount[t]+_)%4==3?(O++,f++,_++,c=!1):c=!0):E=!1,y=[e.bMarks[t]],e.bMarks[t]=O;O<L&&(l=e.src.charCodeAt(O),r(l));)9===l?_+=4-(_+e.bsCount[t]+(c?1:0))%4:_++,O++;for(k=[e.bsCount[t]],e.bsCount[t]=e.sCount[t]+1+(E?1:0),d=O>=L,A=[e.sCount[t]],e.sCount[t]=_-f,C=[e.tShift[t]],e.tShift[t]=O-e.bMarks[t],S=e.md.block.ruler.getRules("blockquote"),x=e.parentType,e.parentType="blockquote",v=t+1;v<n&&(T=e.sCount[v]<e.blkIndent,!((O=e.bMarks[v]+e.tShift[v])>=(L=e.eMarks[v])));v++)if(62!==e.src.charCodeAt(O++)||T){if(d)break;for(F=!1,i=0,h=S.length;i<h;i++)if(S[i](e,v,n,!0)){F=!0;break}if(F){e.lineMax=v,0!==e.blkIndent&&(y.push(e.bMarks[v]),k.push(e.bsCount[v]),C.push(e.tShift[v]),A.push(e.sCount[v]),e.sCount[v]-=e.blkIndent);break}y.push(e.bMarks[v]),k.push(e.bsCount[v]),C.push(e.tShift[v]),A.push(e.sCount[v]),e.sCount[v]=-1}else{for(f=_=e.sCount[v]+1,32===e.src.charCodeAt(O)?(O++,f++,_++,c=!1,E=!0):9===e.src.charCodeAt(O)?(E=!0,(e.bsCount[v]+_)%4==3?(O++,f++,_++,c=!1):c=!0):E=!1,y.push(e.bMarks[v]),e.bMarks[v]=O;O<L&&(l=e.src.charCodeAt(O),r(l));)9===l?_+=4-(_+e.bsCount[v]+(c?1:0))%4:_++,O++;d=O>=L,k.push(e.bsCount[v]),e.bsCount[v]=e.sCount[v]+1+(E?1:0),A.push(e.sCount[v]),e.sCount[v]=_-f,C.push(e.tShift[v]),e.tShift[v]=O-e.bMarks[v]}for(w=e.blkIndent,e.blkIndent=0,(D=e.push("blockquote_open","blockquote",1)).markup=">",D.map=m=[t,0],e.md.block.tokenize(e,t,v),(D=e.push("blockquote_close","blockquote",-1)).markup=">",e.lineMax=z,e.parentType=x,m[1]=e.line,i=0;i<C.length;i++)e.bMarks[i+t]=y[i],e.tShift[i+t]=C[i],e.sCount[i+t]=A[i],e.bsCount[i+t]=k[i];return e.blkIndent=w,!0}},function(e,t,n){"use strict";var r=n(190).isSpace;e.exports=function(e,t,n,o){var marker,c,l,f,h=e.bMarks[t]+e.tShift[t],d=e.eMarks[t];if(e.sCount[t]-e.blkIndent>=4)return!1;if(42!==(marker=e.src.charCodeAt(h++))&&45!==marker&&95!==marker)return!1;for(c=1;h<d;){if((l=e.src.charCodeAt(h++))!==marker&&!r(l))return!1;l===marker&&c++}return!(c<3)&&(o||(e.line=t+1,(f=e.push("hr","hr",0)).map=[t,e.line],f.markup=Array(c+1).join(String.fromCharCode(marker))),!0)}},function(e,t,n){"use strict";var r=n(190).isSpace;function o(e,t){var marker,n,o,c;return n=e.bMarks[t]+e.tShift[t],o=e.eMarks[t],42!==(marker=e.src.charCodeAt(n++))&&45!==marker&&43!==marker||n<o&&(c=e.src.charCodeAt(n),!r(c))?-1:n}function c(e,t){var n,o=e.bMarks[t]+e.tShift[t],c=o,l=e.eMarks[t];if(c+1>=l)return-1;if((n=e.src.charCodeAt(c++))<48||n>57)return-1;for(;;){if(c>=l)return-1;if(!((n=e.src.charCodeAt(c++))>=48&&n<=57)){if(41===n||46===n)break;return-1}if(c-o>=10)return-1}return c<l&&(n=e.src.charCodeAt(c),!r(n))?-1:c}e.exports=function(e,t,n,r){var l,f,i,h,d,m,v,_,y,k,w,x,A,C,E,F,S,D,T,z,O,L,I,$,j,P,R,M,N=!1,B=!0;if(e.sCount[t]-e.blkIndent>=4)return!1;if(e.listIndent>=0&&e.sCount[t]-e.listIndent>=4&&e.sCount[t]<e.blkIndent)return!1;if(r&&"paragraph"===e.parentType&&e.sCount[t]>=e.blkIndent&&(N=!0),(I=c(e,t))>=0){if(v=!0,j=e.bMarks[t]+e.tShift[t],A=Number(e.src.slice(j,I-1)),N&&1!==A)return!1}else{if(!((I=o(e,t))>=0))return!1;v=!1}if(N&&e.skipSpaces(I)>=e.eMarks[t])return!1;if(x=e.src.charCodeAt(I-1),r)return!0;for(w=e.tokens.length,v?(M=e.push("ordered_list_open","ol",1),1!==A&&(M.attrs=[["start",A]])):M=e.push("bullet_list_open","ul",1),M.map=k=[t,0],M.markup=String.fromCharCode(x),E=t,$=!1,R=e.md.block.ruler.getRules("list"),D=e.parentType,e.parentType="list";E<n;){for(L=I,C=e.eMarks[E],m=F=e.sCount[E]+I-(e.bMarks[t]+e.tShift[t]);L<C;){if(9===(l=e.src.charCodeAt(L)))F+=4-(F+e.bsCount[E])%4;else{if(32!==l)break;F++}L++}if((d=(f=L)>=C?1:F-m)>4&&(d=1),h=m+d,(M=e.push("list_item_open","li",1)).markup=String.fromCharCode(x),M.map=_=[t,0],v&&(M.info=e.src.slice(j,I-1)),O=e.tight,z=e.tShift[t],T=e.sCount[t],S=e.listIndent,e.listIndent=e.blkIndent,e.blkIndent=h,e.tight=!0,e.tShift[t]=f-e.bMarks[t],e.sCount[t]=F,f>=C&&e.isEmpty(t+1)?e.line=Math.min(e.line+2,n):e.md.block.tokenize(e,t,n,!0),e.tight&&!$||(B=!1),$=e.line-t>1&&e.isEmpty(e.line-1),e.blkIndent=e.listIndent,e.listIndent=S,e.tShift[t]=z,e.sCount[t]=T,e.tight=O,(M=e.push("list_item_close","li",-1)).markup=String.fromCharCode(x),E=t=e.line,_[1]=E,f=e.bMarks[t],E>=n)break;if(e.sCount[E]<e.blkIndent)break;if(e.sCount[t]-e.blkIndent>=4)break;for(P=!1,i=0,y=R.length;i<y;i++)if(R[i](e,E,n,!0)){P=!0;break}if(P)break;if(v){if((I=c(e,E))<0)break;j=e.bMarks[E]+e.tShift[E]}else if((I=o(e,E))<0)break;if(x!==e.src.charCodeAt(I-1))break}return(M=v?e.push("ordered_list_close","ol",-1):e.push("bullet_list_close","ul",-1)).markup=String.fromCharCode(x),k[1]=E,e.line=E,e.parentType=D,B&&function(e,t){var i,n,r=e.level+2;for(i=t+2,n=e.tokens.length-2;i<n;i++)e.tokens[i].level===r&&"paragraph_open"===e.tokens[i].type&&(e.tokens[i+2].hidden=!0,e.tokens[i].hidden=!0,i+=2)}(e,w),!0}},function(e,t,n){"use strict";var r=n(190).normalizeReference,o=n(190).isSpace;e.exports=function(e,t,n,c){var l,f,h,d,m,i,v,label,_,y,k,w,x,A,C,title,E=0,F=e.bMarks[t]+e.tShift[t],S=e.eMarks[t],D=t+1;if(e.sCount[t]-e.blkIndent>=4)return!1;if(91!==e.src.charCodeAt(F))return!1;for(;++F<S;)if(93===e.src.charCodeAt(F)&&92!==e.src.charCodeAt(F-1)){if(F+1===S)return!1;if(58!==e.src.charCodeAt(F+1))return!1;break}for(d=e.lineMax,C=e.md.block.ruler.getRules("reference"),y=e.parentType,e.parentType="reference";D<d&&!e.isEmpty(D);D++)if(!(e.sCount[D]-e.blkIndent>3||e.sCount[D]<0)){for(A=!1,i=0,v=C.length;i<v;i++)if(C[i](e,D,d,!0)){A=!0;break}if(A)break}for(S=(x=e.getLines(t,D,e.blkIndent,!1).trim()).length,F=1;F<S;F++){if(91===(l=x.charCodeAt(F)))return!1;if(93===l){_=F;break}(10===l||92===l&&++F<S&&10===x.charCodeAt(F))&&E++}if(_<0||58!==x.charCodeAt(_+1))return!1;for(F=_+2;F<S;F++)if(10===(l=x.charCodeAt(F)))E++;else if(!o(l))break;if(!(k=e.md.helpers.parseLinkDestination(x,F,S)).ok)return!1;if(m=e.md.normalizeLink(k.str),!e.md.validateLink(m))return!1;for(f=F=k.pos,h=E+=k.lines,w=F;F<S;F++)if(10===(l=x.charCodeAt(F)))E++;else if(!o(l))break;for(k=e.md.helpers.parseLinkTitle(x,F,S),F<S&&w!==F&&k.ok?(title=k.str,F=k.pos,E+=k.lines):(title="",F=f,E=h);F<S&&(l=x.charCodeAt(F),o(l));)F++;if(F<S&&10!==x.charCodeAt(F)&&title)for(title="",F=f,E=h;F<S&&(l=x.charCodeAt(F),o(l));)F++;return!(F<S&&10!==x.charCodeAt(F))&&(!!(label=r(x.slice(1,_)))&&(c||(void 0===e.env.references&&(e.env.references={}),void 0===e.env.references[label]&&(e.env.references[label]={title:title,href:m}),e.parentType=y,e.line=t+E+1),!0))}},function(e,t,n){"use strict";var r=n(277),o=n(211).HTML_OPEN_CLOSE_TAG_RE,c=[[/^<(script|pre|style|textarea)(?=(\s|>|$))/i,/<\/(script|pre|style|textarea)>/i,!0],[/^<!--/,/-->/,!0],[/^<\?/,/\?>/,!0],[/^<![A-Z]/,/>/,!0],[/^<!\[CDATA\[/,/\]\]>/,!0],[new RegExp("^</?("+r.join("|")+")(?=(\\s|/?>|$))","i"),/^$/,!0],[new RegExp(o.source+"\\s*$"),/^$/,!1]];e.exports=function(e,t,n,r){var i,o,l,f,h=e.bMarks[t]+e.tShift[t],d=e.eMarks[t];if(e.sCount[t]-e.blkIndent>=4)return!1;if(!e.md.options.html)return!1;if(60!==e.src.charCodeAt(h))return!1;for(f=e.src.slice(h,d),i=0;i<c.length&&!c[i][0].test(f);i++);if(i===c.length)return!1;if(r)return c[i][2];if(o=t+1,!c[i][1].test(f))for(;o<n&&!(e.sCount[o]<e.blkIndent);o++)if(h=e.bMarks[o]+e.tShift[o],d=e.eMarks[o],f=e.src.slice(h,d),c[i][1].test(f)){0!==f.length&&o++;break}return e.line=o,(l=e.push("html_block","",0)).map=[t,o],l.content=e.getLines(t,o,e.blkIndent,!0),!0}},function(e,t,n){"use strict";e.exports=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","section","source","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"]},function(e,t,n){"use strict";var r=n(190).isSpace;e.exports=function(e,t,n,o){var c,l,f,h,d=e.bMarks[t]+e.tShift[t],m=e.eMarks[t];if(e.sCount[t]-e.blkIndent>=4)return!1;if(35!==(c=e.src.charCodeAt(d))||d>=m)return!1;for(l=1,c=e.src.charCodeAt(++d);35===c&&d<m&&l<=6;)l++,c=e.src.charCodeAt(++d);return!(l>6||d<m&&!r(c))&&(o||(m=e.skipSpacesBack(m,d),(f=e.skipCharsBack(m,35,d))>d&&r(e.src.charCodeAt(f-1))&&(m=f),e.line=t+1,(h=e.push("heading_open","h"+String(l),1)).markup="########".slice(0,l),h.map=[t,e.line],(h=e.push("inline","",0)).content=e.src.slice(d,m).trim(),h.map=[t,e.line],h.children=[],(h=e.push("heading_close","h"+String(l),-1)).markup="########".slice(0,l)),!0)}},function(e,t,n){"use strict";e.exports=function(e,t,n){var content,r,i,o,c,l,f,h,marker,d,m=t+1,v=e.md.block.ruler.getRules("paragraph");if(e.sCount[t]-e.blkIndent>=4)return!1;for(d=e.parentType,e.parentType="paragraph";m<n&&!e.isEmpty(m);m++)if(!(e.sCount[m]-e.blkIndent>3)){if(e.sCount[m]>=e.blkIndent&&(l=e.bMarks[m]+e.tShift[m])<(f=e.eMarks[m])&&(45===(marker=e.src.charCodeAt(l))||61===marker)&&(l=e.skipChars(l,marker),(l=e.skipSpaces(l))>=f)){h=61===marker?1:2;break}if(!(e.sCount[m]<0)){for(r=!1,i=0,o=v.length;i<o;i++)if(v[i](e,m,n,!0)){r=!0;break}if(r)break}}return!!h&&(content=e.getLines(t,m,e.blkIndent,!1).trim(),e.line=m+1,(c=e.push("heading_open","h"+String(h),1)).markup=String.fromCharCode(marker),c.map=[t,e.line],(c=e.push("inline","",0)).content=content,c.map=[t,e.line-1],c.children=[],(c=e.push("heading_close","h"+String(h),-1)).markup=String.fromCharCode(marker),e.parentType=d,!0)}},function(e,t,n){"use strict";e.exports=function(e,t){var content,n,i,r,o,c,l=t+1,f=e.md.block.ruler.getRules("paragraph"),h=e.lineMax;for(c=e.parentType,e.parentType="paragraph";l<h&&!e.isEmpty(l);l++)if(!(e.sCount[l]-e.blkIndent>3||e.sCount[l]<0)){for(n=!1,i=0,r=f.length;i<r;i++)if(f[i](e,l,h,!0)){n=!0;break}if(n)break}return content=e.getLines(t,l,e.blkIndent,!1).trim(),e.line=l,(o=e.push("paragraph_open","p",1)).map=[t,e.line],(o=e.push("inline","",0)).content=content,o.map=[t,e.line],o.children=[],o=e.push("paragraph_close","p",-1),e.parentType=c,!0}},function(e,t,n){"use strict";var r=n(195),o=n(190).isSpace;function c(e,t,n,r){var c,s,l,f,h,d,m,v;for(this.src=e,this.md=t,this.env=n,this.tokens=r,this.bMarks=[],this.eMarks=[],this.tShift=[],this.sCount=[],this.bsCount=[],this.blkIndent=0,this.line=0,this.lineMax=0,this.tight=!1,this.ddIndent=-1,this.listIndent=-1,this.parentType="root",this.level=0,this.result="",v=!1,l=f=d=m=0,h=(s=this.src).length;f<h;f++){if(c=s.charCodeAt(f),!v){if(o(c)){d++,9===c?m+=4-m%4:m++;continue}v=!0}10!==c&&f!==h-1||(10!==c&&f++,this.bMarks.push(l),this.eMarks.push(f),this.tShift.push(d),this.sCount.push(m),this.bsCount.push(0),v=!1,d=0,m=0,l=f+1)}this.bMarks.push(s.length),this.eMarks.push(s.length),this.tShift.push(0),this.sCount.push(0),this.bsCount.push(0),this.lineMax=this.bMarks.length-1}c.prototype.push=function(e,t,n){var o=new r(e,t,n);return o.block=!0,n<0&&this.level--,o.level=this.level,n>0&&this.level++,this.tokens.push(o),o},c.prototype.isEmpty=function(line){return this.bMarks[line]+this.tShift[line]>=this.eMarks[line]},c.prototype.skipEmptyLines=function(e){for(var t=this.lineMax;e<t&&!(this.bMarks[e]+this.tShift[e]<this.eMarks[e]);e++);return e},c.prototype.skipSpaces=function(e){for(var t,n=this.src.length;e<n&&(t=this.src.charCodeAt(e),o(t));e++);return e},c.prototype.skipSpacesBack=function(e,t){if(e<=t)return e;for(;e>t;)if(!o(this.src.charCodeAt(--e)))return e+1;return e},c.prototype.skipChars=function(e,code){for(var t=this.src.length;e<t&&this.src.charCodeAt(e)===code;e++);return e},c.prototype.skipCharsBack=function(e,code,t){if(e<=t)return e;for(;e>t;)if(code!==this.src.charCodeAt(--e))return e+1;return e},c.prototype.getLines=function(e,t,n,r){var i,c,l,f,h,d,m,line=e;if(e>=t)return"";for(d=new Array(t-e),i=0;line<t;line++,i++){for(c=0,m=f=this.bMarks[line],h=line+1<t||r?this.eMarks[line]+1:this.eMarks[line];f<h&&c<n;){if(l=this.src.charCodeAt(f),o(l))9===l?c+=4-(c+this.bsCount[line])%4:c++;else{if(!(f-m<this.tShift[line]))break;c++}f++}d[i]=c>n?new Array(c-n+1).join(" ")+this.src.slice(f,h):this.src.slice(f,h)}return d.join("")},c.prototype.Token=r,e.exports=c},function(e,t,n){"use strict";var r=n(194),o=[["text",n(283)],["newline",n(284)],["escape",n(285)],["backticks",n(286)],["strikethrough",n(212).tokenize],["emphasis",n(213).tokenize],["link",n(287)],["image",n(288)],["autolink",n(289)],["html_inline",n(290)],["entity",n(291)]],c=[["balance_pairs",n(292)],["strikethrough",n(212).postProcess],["emphasis",n(213).postProcess],["text_collapse",n(293)]];function l(){var i;for(this.ruler=new r,i=0;i<o.length;i++)this.ruler.push(o[i][0],o[i][1]);for(this.ruler2=new r,i=0;i<c.length;i++)this.ruler2.push(c[i][0],c[i][1])}l.prototype.skipToken=function(e){var t,i,n=e.pos,r=this.ruler.getRules(""),o=r.length,c=e.md.options.maxNesting,l=e.cache;if(void 0===l[n]){if(e.level<c)for(i=0;i<o&&(e.level++,t=r[i](e,!0),e.level--,!t);i++);else e.pos=e.posMax;t||e.pos++,l[n]=e.pos}else e.pos=l[n]},l.prototype.tokenize=function(e){for(var t,i,n=this.ruler.getRules(""),r=n.length,o=e.posMax,c=e.md.options.maxNesting;e.pos<o;){if(e.level<c)for(i=0;i<r&&!(t=n[i](e,!1));i++);if(t){if(e.pos>=o)break}else e.pending+=e.src[e.pos++]}e.pending&&e.pushPending()},l.prototype.parse=function(e,t,n,r){var i,o,c,l=new this.State(e,t,n,r);for(this.tokenize(l),c=(o=this.ruler2.getRules("")).length,i=0;i<c;i++)o[i](l)},l.prototype.State=n(294),e.exports=l},function(e,t,n){"use strict";function r(e){switch(e){case 10:case 33:case 35:case 36:case 37:case 38:case 42:case 43:case 45:case 58:case 60:case 61:case 62:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 125:case 126:return!0;default:return!1}}e.exports=function(e,t){for(var n=e.pos;n<e.posMax&&!r(e.src.charCodeAt(n));)n++;return n!==e.pos&&(t||(e.pending+=e.src.slice(e.pos,n)),e.pos=n,!0)}},function(e,t,n){"use strict";var r=n(190).isSpace;e.exports=function(e,t){var n,o,c,l=e.pos;if(10!==e.src.charCodeAt(l))return!1;if(n=e.pending.length-1,o=e.posMax,!t)if(n>=0&&32===e.pending.charCodeAt(n))if(n>=1&&32===e.pending.charCodeAt(n-1)){for(c=n-1;c>=1&&32===e.pending.charCodeAt(c-1);)c--;e.pending=e.pending.slice(0,c),e.push("hardbreak","br",0)}else e.pending=e.pending.slice(0,-1),e.push("softbreak","br",0);else e.push("softbreak","br",0);for(l++;l<o&&r(e.src.charCodeAt(l));)l++;return e.pos=l,!0}},function(e,t,n){"use strict";for(var r=n(190).isSpace,o=[],i=0;i<256;i++)o.push(0);"\\!\"#$%&'()*+,./:;<=>?@[]^_`{|}~-".split("").forEach((function(e){o[e.charCodeAt(0)]=1})),e.exports=function(e,t){var n,c=e.pos,l=e.posMax;if(92!==e.src.charCodeAt(c))return!1;if(++c<l){if((n=e.src.charCodeAt(c))<256&&0!==o[n])return t||(e.pending+=e.src[c]),e.pos+=2,!0;if(10===n){for(t||e.push("hardbreak","br",0),c++;c<l&&(n=e.src.charCodeAt(c),r(n));)c++;return e.pos=c,!0}}return t||(e.pending+="\\"),e.pos++,!0}},function(e,t,n){"use strict";e.exports=function(e,t){var n,r,marker,o,c,l,f,h,d=e.pos;if(96!==e.src.charCodeAt(d))return!1;for(n=d,d++,r=e.posMax;d<r&&96===e.src.charCodeAt(d);)d++;if(f=(marker=e.src.slice(n,d)).length,e.backticksScanned&&(e.backticks[f]||0)<=n)return t||(e.pending+=marker),e.pos+=f,!0;for(c=l=d;-1!==(c=e.src.indexOf("`",l));){for(l=c+1;l<r&&96===e.src.charCodeAt(l);)l++;if((h=l-c)===f)return t||((o=e.push("code_inline","code",0)).markup=marker,o.content=e.src.slice(d,c).replace(/\n/g," ").replace(/^ (.+) $/,"$1")),e.pos=l,!0;e.backticks[h]=c}return e.backticksScanned=!0,t||(e.pending+=marker),e.pos+=f,!0}},function(e,t,n){"use strict";var r=n(190).normalizeReference,o=n(190).isSpace;e.exports=function(e,t){var n,code,label,c,l,f,h,d,m="",title="",v=e.pos,_=e.posMax,y=e.pos,k=!0;if(91!==e.src.charCodeAt(e.pos))return!1;if(l=e.pos+1,(c=e.md.helpers.parseLinkLabel(e,e.pos,!0))<0)return!1;if((f=c+1)<_&&40===e.src.charCodeAt(f)){for(k=!1,f++;f<_&&(code=e.src.charCodeAt(f),o(code)||10===code);f++);if(f>=_)return!1;if(y=f,(h=e.md.helpers.parseLinkDestination(e.src,f,e.posMax)).ok){for(m=e.md.normalizeLink(h.str),e.md.validateLink(m)?f=h.pos:m="",y=f;f<_&&(code=e.src.charCodeAt(f),o(code)||10===code);f++);if(h=e.md.helpers.parseLinkTitle(e.src,f,e.posMax),f<_&&y!==f&&h.ok)for(title=h.str,f=h.pos;f<_&&(code=e.src.charCodeAt(f),o(code)||10===code);f++);}(f>=_||41!==e.src.charCodeAt(f))&&(k=!0),f++}if(k){if(void 0===e.env.references)return!1;if(f<_&&91===e.src.charCodeAt(f)?(y=f+1,(f=e.md.helpers.parseLinkLabel(e,f))>=0?label=e.src.slice(y,f++):f=c+1):f=c+1,label||(label=e.src.slice(l,c)),!(d=e.env.references[r(label)]))return e.pos=v,!1;m=d.href,title=d.title}return t||(e.pos=l,e.posMax=c,e.push("link_open","a",1).attrs=n=[["href",m]],title&&n.push(["title",title]),e.md.inline.tokenize(e),e.push("link_close","a",-1)),e.pos=f,e.posMax=_,!0}},function(e,t,n){"use strict";var r=n(190).normalizeReference,o=n(190).isSpace;e.exports=function(e,t){var n,code,content,label,c,l,f,h,d,title,m,v,_,y="",k=e.pos,w=e.posMax;if(33!==e.src.charCodeAt(e.pos))return!1;if(91!==e.src.charCodeAt(e.pos+1))return!1;if(l=e.pos+2,(c=e.md.helpers.parseLinkLabel(e,e.pos+1,!1))<0)return!1;if((f=c+1)<w&&40===e.src.charCodeAt(f)){for(f++;f<w&&(code=e.src.charCodeAt(f),o(code)||10===code);f++);if(f>=w)return!1;for(_=f,(d=e.md.helpers.parseLinkDestination(e.src,f,e.posMax)).ok&&(y=e.md.normalizeLink(d.str),e.md.validateLink(y)?f=d.pos:y=""),_=f;f<w&&(code=e.src.charCodeAt(f),o(code)||10===code);f++);if(d=e.md.helpers.parseLinkTitle(e.src,f,e.posMax),f<w&&_!==f&&d.ok)for(title=d.str,f=d.pos;f<w&&(code=e.src.charCodeAt(f),o(code)||10===code);f++);else title="";if(f>=w||41!==e.src.charCodeAt(f))return e.pos=k,!1;f++}else{if(void 0===e.env.references)return!1;if(f<w&&91===e.src.charCodeAt(f)?(_=f+1,(f=e.md.helpers.parseLinkLabel(e,f))>=0?label=e.src.slice(_,f++):f=c+1):f=c+1,label||(label=e.src.slice(l,c)),!(h=e.env.references[r(label)]))return e.pos=k,!1;y=h.href,title=h.title}return t||(content=e.src.slice(l,c),e.md.inline.parse(content,e.md,e.env,v=[]),(m=e.push("image","img",0)).attrs=n=[["src",y],["alt",""]],m.children=v,m.content=content,title&&n.push(["title",title])),e.pos=f,e.posMax=w,!0}},function(e,t,n){"use strict";var r=/^([a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)$/,o=/^([a-zA-Z][a-zA-Z0-9+.\-]{1,31}):([^<>\x00-\x20]*)$/;e.exports=function(e,t){var n,c,l,f,h,d,m=e.pos;if(60!==e.src.charCodeAt(m))return!1;for(h=e.pos,d=e.posMax;;){if(++m>=d)return!1;if(60===(f=e.src.charCodeAt(m)))return!1;if(62===f)break}return n=e.src.slice(h+1,m),o.test(n)?(c=e.md.normalizeLink(n),!!e.md.validateLink(c)&&(t||((l=e.push("link_open","a",1)).attrs=[["href",c]],l.markup="autolink",l.info="auto",(l=e.push("text","",0)).content=e.md.normalizeLinkText(n),(l=e.push("link_close","a",-1)).markup="autolink",l.info="auto"),e.pos+=n.length+2,!0)):!!r.test(n)&&(c=e.md.normalizeLink("mailto:"+n),!!e.md.validateLink(c)&&(t||((l=e.push("link_open","a",1)).attrs=[["href",c]],l.markup="autolink",l.info="auto",(l=e.push("text","",0)).content=e.md.normalizeLinkText(n),(l=e.push("link_close","a",-1)).markup="autolink",l.info="auto"),e.pos+=n.length+2,!0))}},function(e,t,n){"use strict";var r=n(211).HTML_TAG_RE;e.exports=function(e,t){var n,o,c,l=e.pos;return!!e.md.options.html&&(c=e.posMax,!(60!==e.src.charCodeAt(l)||l+2>=c)&&(!(33!==(n=e.src.charCodeAt(l+1))&&63!==n&&47!==n&&!function(e){var t=32|e;return t>=97&&t<=122}(n))&&(!!(o=e.src.slice(l).match(r))&&(t||(e.push("html_inline","",0).content=e.src.slice(l,l+o[0].length)),e.pos+=o[0].length,!0))))}},function(e,t,n){"use strict";var r=n(206),o=n(190).has,c=n(190).isValidEntityCode,l=n(190).fromCodePoint,f=/^&#((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i,h=/^&([a-z][a-z0-9]{1,31});/i;e.exports=function(e,t){var code,n,d=e.pos,m=e.posMax;if(38!==e.src.charCodeAt(d))return!1;if(d+1<m)if(35===e.src.charCodeAt(d+1)){if(n=e.src.slice(d).match(f))return t||(code="x"===n[1][0].toLowerCase()?parseInt(n[1].slice(1),16):parseInt(n[1],10),e.pending+=c(code)?l(code):l(65533)),e.pos+=n[0].length,!0}else if((n=e.src.slice(d).match(h))&&o(r,n[1]))return t||(e.pending+=r[n[1]]),e.pos+=n[0].length,!0;return t||(e.pending+="&"),e.pos++,!0}},function(e,t,n){"use strict";function r(e,t){var n,r,o,c,l,f,h,d,m={},v=t.length;if(v){var _=0,y=-2,k=[];for(n=0;n<v;n++)if(o=t[n],k.push(0),t[_].marker===o.marker&&y===o.token-1||(_=n),y=o.token,o.length=o.length||0,o.close){for(m.hasOwnProperty(o.marker)||(m[o.marker]=[-1,-1,-1,-1,-1,-1]),l=m[o.marker][(o.open?3:0)+o.length%3],f=r=_-k[_]-1;r>l;r-=k[r]+1)if((c=t[r]).marker===o.marker&&c.open&&c.end<0&&(h=!1,(c.close||o.open)&&(c.length+o.length)%3==0&&(c.length%3==0&&o.length%3==0||(h=!0)),!h)){d=r>0&&!t[r-1].open?k[r-1]+1:0,k[n]=n-r+d,k[r]=d,o.open=!1,c.end=n,c.close=!1,f=-1,y=-2;break}-1!==f&&(m[o.marker][(o.open?3:0)+(o.length||0)%3]=f)}}}e.exports=function(e){var t,n=e.tokens_meta,o=e.tokens_meta.length;for(r(0,e.delimiters),t=0;t<o;t++)n[t]&&n[t].delimiters&&r(0,n[t].delimiters)}},function(e,t,n){"use strict";e.exports=function(e){var t,n,r=0,o=e.tokens,c=e.tokens.length;for(t=n=0;t<c;t++)o[t].nesting<0&&r--,o[t].level=r,o[t].nesting>0&&r++,"text"===o[t].type&&t+1<c&&"text"===o[t+1].type?o[t+1].content=o[t].content+o[t+1].content:(t!==n&&(o[n]=o[t]),n++);t!==n&&(o.length=n)}},function(e,t,n){"use strict";var r=n(195),o=n(190).isWhiteSpace,c=n(190).isPunctChar,l=n(190).isMdAsciiPunct;function f(e,t,n,r){this.src=e,this.env=n,this.md=t,this.tokens=r,this.tokens_meta=Array(r.length),this.pos=0,this.posMax=this.src.length,this.level=0,this.pending="",this.pendingLevel=0,this.cache={},this.delimiters=[],this._prev_delimiters=[],this.backticks={},this.backticksScanned=!1}f.prototype.pushPending=function(){var e=new r("text","",0);return e.content=this.pending,e.level=this.pendingLevel,this.tokens.push(e),this.pending="",e},f.prototype.push=function(e,t,n){this.pending&&this.pushPending();var o=new r(e,t,n),c=null;return n<0&&(this.level--,this.delimiters=this._prev_delimiters.pop()),o.level=this.level,n>0&&(this.level++,this._prev_delimiters.push(this.delimiters),this.delimiters=[],c={delimiters:this.delimiters}),this.pendingLevel=this.level,this.tokens.push(o),this.tokens_meta.push(c),o},f.prototype.scanDelims=function(e,t){var n,r,f,h,d,m,v,_,y,k=e,w=!0,x=!0,A=this.posMax,marker=this.src.charCodeAt(e);for(n=e>0?this.src.charCodeAt(e-1):32;k<A&&this.src.charCodeAt(k)===marker;)k++;return f=k-e,r=k<A?this.src.charCodeAt(k):32,v=l(n)||c(String.fromCharCode(n)),y=l(r)||c(String.fromCharCode(r)),m=o(n),(_=o(r))?w=!1:y&&(m||v||(w=!1)),m?x=!1:v&&(_||y||(x=!1)),t?(h=w,d=x):(h=w&&(!x||v),d=x&&(!w||y)),{can_open:h,can_close:d,length:f}},f.prototype.Token=r,e.exports=f},function(e,t,n){"use strict";function r(e){var t=Array.prototype.slice.call(arguments,1);return t.forEach((function(source){source&&Object.keys(source).forEach((function(t){e[t]=source[t]}))})),e}function o(e){return Object.prototype.toString.call(e)}function c(e){return"[object Function]"===o(e)}function l(e){return e.replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")}var f={fuzzyLink:!0,fuzzyEmail:!0,fuzzyIP:!1};var h={"http:":{validate:function(text,e,t){var n=text.slice(e);return t.re.http||(t.re.http=new RegExp("^\\/\\/"+t.re.src_auth+t.re.src_host_port_strict+t.re.src_path,"i")),t.re.http.test(n)?n.match(t.re.http)[0].length:0}},"https:":"http:","ftp:":"http:","//":{validate:function(text,e,t){var n=text.slice(e);return t.re.no_http||(t.re.no_http=new RegExp("^"+t.re.src_auth+"(?:localhost|(?:(?:"+t.re.src_domain+")\\.)+"+t.re.src_domain_root+")"+t.re.src_port+t.re.src_host_terminator+t.re.src_path,"i")),t.re.no_http.test(n)?e>=3&&":"===text[e-3]||e>=3&&"/"===text[e-3]?0:n.match(t.re.no_http)[0].length:0}},"mailto:":{validate:function(text,e,t){var n=text.slice(e);return t.re.mailto||(t.re.mailto=new RegExp("^"+t.re.src_email_name+"@"+t.re.src_host_strict,"i")),t.re.mailto.test(n)?n.match(t.re.mailto)[0].length:0}}},d="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф".split("|");function m(e){var t=e.re=n(296)(e.__opts__),r=e.__tlds__.slice();function f(e){return e.replace("%TLDS%",t.src_tlds)}e.onCompile(),e.__tlds_replaced__||r.push("a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]"),r.push(t.src_xn),t.src_tlds=r.join("|"),t.email_fuzzy=RegExp(f(t.tpl_email_fuzzy),"i"),t.link_fuzzy=RegExp(f(t.tpl_link_fuzzy),"i"),t.link_no_ip_fuzzy=RegExp(f(t.tpl_link_no_ip_fuzzy),"i"),t.host_fuzzy_test=RegExp(f(t.tpl_host_fuzzy_test),"i");var h=[];function d(e,t){throw new Error('(LinkifyIt) Invalid schema "'+e+'": '+t)}e.__compiled__={},Object.keys(e.__schemas__).forEach((function(t){var n=e.__schemas__[t];if(null!==n){var r={validate:null,link:null};if(e.__compiled__[t]=r,"[object Object]"===o(n))return!function(e){return"[object RegExp]"===o(e)}(n.validate)?c(n.validate)?r.validate=n.validate:d(t,n):r.validate=function(e){return function(text,t){var n=text.slice(t);return e.test(n)?n.match(e)[0].length:0}}(n.validate),void(c(n.normalize)?r.normalize=n.normalize:n.normalize?d(t,n):r.normalize=function(e,t){t.normalize(e)});!function(e){return"[object String]"===o(e)}(n)?d(t,n):h.push(t)}})),h.forEach((function(t){e.__compiled__[e.__schemas__[t]]&&(e.__compiled__[t].validate=e.__compiled__[e.__schemas__[t]].validate,e.__compiled__[t].normalize=e.__compiled__[e.__schemas__[t]].normalize)})),e.__compiled__[""]={validate:null,normalize:function(e,t){t.normalize(e)}};var m=Object.keys(e.__compiled__).filter((function(t){return t.length>0&&e.__compiled__[t]})).map(l).join("|");e.re.schema_test=RegExp("(^|(?!_)(?:[><|]|"+t.src_ZPCc+"))("+m+")","i"),e.re.schema_search=RegExp("(^|(?!_)(?:[><|]|"+t.src_ZPCc+"))("+m+")","ig"),e.re.pretest=RegExp("("+e.re.schema_test.source+")|("+e.re.host_fuzzy_test.source+")|@","i"),function(e){e.__index__=-1,e.__text_cache__=""}(e)}function v(e,t){var n=e.__index__,r=e.__last_index__,text=e.__text_cache__.slice(n,r);this.schema=e.__schema__.toLowerCase(),this.index=n+t,this.lastIndex=r+t,this.raw=text,this.text=text,this.url=text}function _(e,t){var n=new v(e,t);return e.__compiled__[n.schema].normalize(n,e),n}function y(e,t){if(!(this instanceof y))return new y(e,t);var n;t||(n=e,Object.keys(n||{}).reduce((function(e,t){return e||f.hasOwnProperty(t)}),!1)&&(t=e,e={})),this.__opts__=r({},f,t),this.__index__=-1,this.__last_index__=-1,this.__schema__="",this.__text_cache__="",this.__schemas__=r({},h,e),this.__compiled__={},this.__tlds__=d,this.__tlds_replaced__=!1,this.re={},m(this)}y.prototype.add=function(e,t){return this.__schemas__[e]=t,m(this),this},y.prototype.set=function(e){return this.__opts__=r(this.__opts__,e),this},y.prototype.test=function(text){if(this.__text_cache__=text,this.__index__=-1,!text.length)return!1;var e,t,n,r,o,c,l,f;if(this.re.schema_test.test(text))for((l=this.re.schema_search).lastIndex=0;null!==(e=l.exec(text));)if(r=this.testSchemaAt(text,e[2],l.lastIndex)){this.__schema__=e[2],this.__index__=e.index+e[1].length,this.__last_index__=e.index+e[0].length+r;break}return this.__opts__.fuzzyLink&&this.__compiled__["http:"]&&(f=text.search(this.re.host_fuzzy_test))>=0&&(this.__index__<0||f<this.__index__)&&null!==(t=text.match(this.__opts__.fuzzyIP?this.re.link_fuzzy:this.re.link_no_ip_fuzzy))&&(o=t.index+t[1].length,(this.__index__<0||o<this.__index__)&&(this.__schema__="",this.__index__=o,this.__last_index__=t.index+t[0].length)),this.__opts__.fuzzyEmail&&this.__compiled__["mailto:"]&&text.indexOf("@")>=0&&null!==(n=text.match(this.re.email_fuzzy))&&(o=n.index+n[1].length,c=n.index+n[0].length,(this.__index__<0||o<this.__index__||o===this.__index__&&c>this.__last_index__)&&(this.__schema__="mailto:",this.__index__=o,this.__last_index__=c)),this.__index__>=0},y.prototype.pretest=function(text){return this.re.pretest.test(text)},y.prototype.testSchemaAt=function(text,e,t){return this.__compiled__[e.toLowerCase()]?this.__compiled__[e.toLowerCase()].validate(text,t,this):0},y.prototype.match=function(text){var e=0,t=[];this.__index__>=0&&this.__text_cache__===text&&(t.push(_(this,e)),e=this.__last_index__);for(var n=e?text.slice(e):text;this.test(n);)t.push(_(this,e)),n=n.slice(this.__last_index__),e+=this.__last_index__;return t.length?t:null},y.prototype.tlds=function(e,t){return e=Array.isArray(e)?e:[e],t?(this.__tlds__=this.__tlds__.concat(e).sort().filter((function(e,t,n){return e!==n[t-1]})).reverse(),m(this),this):(this.__tlds__=e.slice(),this.__tlds_replaced__=!0,m(this),this)},y.prototype.normalize=function(e){e.schema||(e.url="http://"+e.url),"mailto:"!==e.schema||/^mailto:/i.test(e.url)||(e.url="mailto:"+e.url)},y.prototype.onCompile=function(){},e.exports=y},function(e,t,n){"use strict";e.exports=function(e){var t={};t.src_Any=n(208).source,t.src_Cc=n(209).source,t.src_Z=n(210).source,t.src_P=n(193).source,t.src_ZPCc=[t.src_Z,t.src_P,t.src_Cc].join("|"),t.src_ZCc=[t.src_Z,t.src_Cc].join("|");return t.src_pseudo_letter="(?:(?![><|]|"+t.src_ZPCc+")"+t.src_Any+")",t.src_ip4="(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)",t.src_auth="(?:(?:(?!"+t.src_ZCc+"|[@/\\[\\]()]).)+@)?",t.src_port="(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?",t.src_host_terminator="(?=$|[><|]|"+t.src_ZPCc+")(?!-|_|:\\d|\\.-|\\.(?!$|"+t.src_ZPCc+"))",t.src_path="(?:[/?#](?:(?!"+t.src_ZCc+"|"+"[><|]|[()[\\]{}.,\"'?!\\-;]).|\\[(?:(?!"+t.src_ZCc+"|\\]).)*\\]|\\((?:(?!"+t.src_ZCc+"|[)]).)*\\)|\\{(?:(?!"+t.src_ZCc+'|[}]).)*\\}|\\"(?:(?!'+t.src_ZCc+'|["]).)+\\"|\\\'(?:(?!'+t.src_ZCc+"|[']).)+\\'|\\'(?="+t.src_pseudo_letter+"|[-]).|\\.{2,}[a-zA-Z0-9%/&]|\\.(?!"+t.src_ZCc+"|[.]).|"+(e&&e["---"]?"\\-(?!--(?:[^-]|$))(?:-*)|":"\\-+|")+",(?!"+t.src_ZCc+").|;(?!"+t.src_ZCc+").|\\!+(?!"+t.src_ZCc+"|[!]).|\\?(?!"+t.src_ZCc+"|[?]).)+|\\/)?",t.src_email_name='[\\-;:&=\\+\\$,\\.a-zA-Z0-9_][\\-;:&=\\+\\$,\\"\\.a-zA-Z0-9_]*',t.src_xn="xn--[a-z0-9\\-]{1,59}",t.src_domain_root="(?:"+t.src_xn+"|"+t.src_pseudo_letter+"{1,63})",t.src_domain="(?:"+t.src_xn+"|(?:"+t.src_pseudo_letter+")|(?:"+t.src_pseudo_letter+"(?:-|"+t.src_pseudo_letter+"){0,61}"+t.src_pseudo_letter+"))",t.src_host="(?:(?:(?:(?:"+t.src_domain+")\\.)*"+t.src_domain+"))",t.tpl_host_fuzzy="(?:"+t.src_ip4+"|(?:(?:(?:"+t.src_domain+")\\.)+(?:%TLDS%)))",t.tpl_host_no_ip_fuzzy="(?:(?:(?:"+t.src_domain+")\\.)+(?:%TLDS%))",t.src_host_strict=t.src_host+t.src_host_terminator,t.tpl_host_fuzzy_strict=t.tpl_host_fuzzy+t.src_host_terminator,t.src_host_port_strict=t.src_host+t.src_port+t.src_host_terminator,t.tpl_host_port_fuzzy_strict=t.tpl_host_fuzzy+t.src_port+t.src_host_terminator,t.tpl_host_port_no_ip_fuzzy_strict=t.tpl_host_no_ip_fuzzy+t.src_port+t.src_host_terminator,t.tpl_host_fuzzy_test="localhost|www\\.|\\.\\d{1,3}\\.|(?:\\.(?:%TLDS%)(?:"+t.src_ZPCc+"|>|$))",t.tpl_email_fuzzy='(^|[><|]|"|\\(|'+t.src_ZCc+")("+t.src_email_name+"@"+t.tpl_host_fuzzy_strict+")",t.tpl_link_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`||]|"+t.src_ZPCc+"))((?![$+<=>^`||])"+t.tpl_host_port_fuzzy_strict+t.src_path+")",t.tpl_link_no_ip_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`||]|"+t.src_ZPCc+"))((?![$+<=>^`||])"+t.tpl_host_port_no_ip_fuzzy_strict+t.src_path+")",t}},function(e,t,n){(function(e,r){var o;!function(c){t&&t.nodeType,e&&e.nodeType;var l="object"==typeof r&&r;l.global!==l&&l.window!==l&&l.self;var f,h=2147483647,base=36,d=/^xn--/,m=/[^\x20-\x7E]/,v=/[\x2E\u3002\uFF0E\uFF61]/g,_={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},y=Math.floor,k=String.fromCharCode;function w(e){throw new RangeError(_[e])}function map(e,t){for(var n=e.length,r=[];n--;)r[n]=t(e[n]);return r}function x(e,t){var n=e.split("@"),r="";return n.length>1&&(r=n[0]+"@",e=n[1]),r+map((e=e.replace(v,".")).split("."),t).join(".")}function A(e){for(var t,n,output=[],r=0,o=e.length;r<o;)(t=e.charCodeAt(r++))>=55296&&t<=56319&&r<o?56320==(64512&(n=e.charCodeAt(r++)))?output.push(((1023&t)<<10)+(1023&n)+65536):(output.push(t),r--):output.push(t);return output}function C(e){return map(e,(function(e){var output="";return e>65535&&(output+=k((e-=65536)>>>10&1023|55296),e=56320|1023&e),output+=k(e)})).join("")}function E(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function F(e,t,n){var r=0;for(e=n?y(e/700):e>>1,e+=y(e/t);e>455;r+=base)e=y(e/35);return y(r+36*e/(e+38))}function S(input){var e,t,n,r,o,c,l,f,d,m,v,output=[],_=input.length,i=0,k=128,x=72;for((t=input.lastIndexOf("-"))<0&&(t=0),n=0;n<t;++n)input.charCodeAt(n)>=128&&w("not-basic"),output.push(input.charCodeAt(n));for(r=t>0?t+1:0;r<_;){for(o=i,c=1,l=base;r>=_&&w("invalid-input"),((f=(v=input.charCodeAt(r++))-48<10?v-22:v-65<26?v-65:v-97<26?v-97:base)>=base||f>y((h-i)/c))&&w("overflow"),i+=f*c,!(f<(d=l<=x?1:l>=x+26?26:l-x));l+=base)c>y(h/(m=base-d))&&w("overflow"),c*=m;x=F(i-o,e=output.length+1,0==o),y(i/e)>h-k&&w("overflow"),k+=y(i/e),i%=e,output.splice(i++,0,k)}return C(output)}function D(input){var e,t,n,r,o,c,l,q,f,d,m,v,_,x,C,output=[];for(v=(input=A(input)).length,e=128,t=0,o=72,c=0;c<v;++c)(m=input[c])<128&&output.push(k(m));for(n=r=output.length,r&&output.push("-");n<v;){for(l=h,c=0;c<v;++c)(m=input[c])>=e&&m<l&&(l=m);for(l-e>y((h-t)/(_=n+1))&&w("overflow"),t+=(l-e)*_,e=l,c=0;c<v;++c)if((m=input[c])<e&&++t>h&&w("overflow"),m==e){for(q=t,f=base;!(q<(d=f<=o?1:f>=o+26?26:f-o));f+=base)C=q-d,x=base-d,output.push(k(E(d+C%x,0))),q=y(C/x);output.push(k(E(q,0))),o=F(t,_,n==r),t=0,++n}++t,++e}return output.join("")}f={version:"1.4.1",ucs2:{decode:A,encode:C},decode:S,encode:D,toASCII:function(input){return x(input,(function(e){return m.test(e)?"xn--"+D(e):e}))},toUnicode:function(input){return x(input,(function(e){return d.test(e)?S(e.slice(4).toLowerCase()):e}))}},void 0===(o=function(){return f}.call(t,n,t,e))||(e.exports=o)}()}).call(this,n(298)(e),n(44))},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t,n){"use strict";e.exports={options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"“”‘’",highlight:null,maxNesting:100},components:{core:{},block:{},inline:{}}}},function(e,t,n){"use strict";e.exports={options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"“”‘’",highlight:null,maxNesting:20},components:{core:{rules:["normalize","block","inline"]},block:{rules:["paragraph"]},inline:{rules:["text"],rules2:["balance_pairs","text_collapse"]}}}},function(e,t,n){"use strict";e.exports={options:{html:!0,xhtmlOut:!0,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"“”‘’",highlight:null,maxNesting:20},components:{core:{rules:["normalize","block","inline"]},block:{rules:["blockquote","code","fence","heading","hr","html_block","lheading","list","reference","paragraph"]},inline:{rules:["autolink","backticks","emphasis","entity","escape","html_inline","image","link","newline","text"],rules2:["balance_pairs","emphasis","text_collapse"]}}}},function(e,t,n){"use strict";var r=!1,o={false:"push",true:"unshift",after:"push",before:"unshift"},c={isPermalinkSymbol:!0};function l(e,a,i,t){var n;if(!r){var l="Using deprecated markdown-it-anchor permalink option, see https://github.com/valeriangalliat/markdown-it-anchor#todo-anchor-or-file";"object"==typeof process&&process&&process.emitWarning?process.emitWarning(l):console.warn(l),r=!0}var s=[Object.assign(new i.Token("link_open","a",1),{attrs:[].concat(a.permalinkClass?[["class",a.permalinkClass]]:[],[["href",a.permalinkHref(e,i)]],Object.entries(a.permalinkAttrs(e,i)))}),Object.assign(new i.Token("html_block","",0),{content:a.permalinkSymbol,meta:c}),new i.Token("link_close","a",-1)];a.permalinkSpace&&i.tokens[t+1].children[o[a.permalinkBefore]](Object.assign(new i.Token("text","",0),{content:" "})),(n=i.tokens[t+1].children)[o[a.permalinkBefore]].apply(n,s)}function a(e){return"#"+e}function i(e){return{}}var f={class:"header-anchor",symbol:"#",renderHref:a,renderAttrs:i};function h(e){function t(n){return n=Object.assign({},t.defaults,n),function(t,r,a,i){return e(t,n,r,a,i)}}return t.defaults=Object.assign({},f),t.renderPermalinkImpl=e,t}var d=h((function(e,t,a,i,n){var r,l=[Object.assign(new i.Token("link_open","a",1),{attrs:[].concat(t.class?[["class",t.class]]:[],[["href",t.renderHref(e,i)]],t.ariaHidden?[["aria-hidden","true"]]:[],Object.entries(t.renderAttrs(e,i)))}),Object.assign(new i.Token("html_inline","",0),{content:t.symbol,meta:c}),new i.Token("link_close","a",-1)];if(t.space){var s="string"==typeof t.space?t.space:" ";i.tokens[n+1].children[o[t.placement]](Object.assign(new i.Token("string"==typeof t.space?"html_inline":"text","",0),{content:s}))}(r=i.tokens[n+1].children)[o[t.placement]].apply(r,l)}));Object.assign(d.defaults,{space:!0,placement:"after",ariaHidden:!1});var s=h(d.renderPermalinkImpl);s.defaults=Object.assign({},d.defaults,{ariaHidden:!0});var u=h((function(e,t,n,r,a){var i=[Object.assign(new r.Token("link_open","a",1),{attrs:[].concat(t.class?[["class",t.class]]:[],[["href",t.renderHref(e,r)]],Object.entries(t.renderAttrs(e,r)))})].concat(t.safariReaderFix?[new r.Token("span_open","span",1)]:[],r.tokens[a+1].children,t.safariReaderFix?[new r.Token("span_close","span",-1)]:[],[new r.Token("link_close","a",-1)]);r.tokens[a+1]=Object.assign(new r.Token("inline","",0),{children:i})}));Object.assign(u.defaults,{safariReaderFix:!1});var m=h((function(e,t,a,i,n){var r;if(!["visually-hidden","aria-label","aria-describedby","aria-labelledby"].includes(t.style))throw new Error("`permalink.linkAfterHeader` called with unknown style option `"+t.style+"`");if(!["aria-describedby","aria-labelledby"].includes(t.style)&&!t.assistiveText)throw new Error("`permalink.linkAfterHeader` called without the `assistiveText` option in `"+t.style+"` style");if("visually-hidden"===t.style&&!t.visuallyHiddenClass)throw new Error("`permalink.linkAfterHeader` called without the `visuallyHiddenClass` option in `visually-hidden` style");var l=i.tokens[n+1].children.filter((function(e){return"text"===e.type||"code_inline"===e.type})).reduce((function(e,t){return e+t.content}),""),s=[],u=[];if(t.class&&u.push(["class",t.class]),u.push(["href",t.renderHref(e,i)]),u.push.apply(u,Object.entries(t.renderAttrs(e,i))),"visually-hidden"===t.style){if(s.push(Object.assign(new i.Token("span_open","span",1),{attrs:[["class",t.visuallyHiddenClass]]}),Object.assign(new i.Token("text","",0),{content:t.assistiveText(l)}),new i.Token("span_close","span",-1)),t.space){var f="string"==typeof t.space?t.space:" ";s[o[t.placement]](Object.assign(new i.Token("string"==typeof t.space?"html_inline":"text","",0),{content:f}))}s[o[t.placement]](Object.assign(new i.Token("span_open","span",1),{attrs:[["aria-hidden","true"]]}),Object.assign(new i.Token("html_inline","",0),{content:t.symbol,meta:c}),new i.Token("span_close","span",-1))}else s.push(Object.assign(new i.Token("html_inline","",0),{content:t.symbol,meta:c}));"aria-label"===t.style?u.push(["aria-label",t.assistiveText(l)]):["aria-describedby","aria-labelledby"].includes(t.style)&&u.push([t.style,e]);var h=[Object.assign(new i.Token("link_open","a",1),{attrs:u})].concat(s,[new i.Token("link_close","a",-1)]);(r=i.tokens).splice.apply(r,[n+3,0].concat(h)),t.wrapper&&(i.tokens.splice(n,0,Object.assign(new i.Token("html_block","",0),{content:t.wrapper[0]+"\n"})),i.tokens.splice(n+3+h.length+1,0,Object.assign(new i.Token("html_block","",0),{content:t.wrapper[1]+"\n"})))}));function v(e,t,n,r){var a=e,i=r;if(n&&Object.prototype.hasOwnProperty.call(t,a))throw new Error("User defined `id` attribute `"+e+"` is not unique. Please fix it in your Markdown to continue.");for(;Object.prototype.hasOwnProperty.call(t,a);)a=e+"-"+i,i+=1;return t[a]=!0,a}function b(e,t){t=Object.assign({},b.defaults,t),e.core.ruler.push("anchor",(function(e){for(var n,a={},i=e.tokens,r=Array.isArray(t.level)?(n=t.level,function(e){return n.includes(e)}):function(e){return function(t){return t>=e}}(t.level),o=0;o<i.length;o++){var c=i[o];if("heading_open"===c.type&&r(Number(c.tag.substr(1)))){var s=t.getTokensText(i[o+1].children),u=c.attrGet("id");u=null==u?v(t.slugify(s),a,!1,t.uniqueSlugStartIndex):v(u,a,!0,t.uniqueSlugStartIndex),c.attrSet("id",u),!1!==t.tabIndex&&c.attrSet("tabindex",""+t.tabIndex),"function"==typeof t.permalink?t.permalink(u,t,e,o):(t.permalink||t.renderPermalink&&t.renderPermalink!==l)&&t.renderPermalink(u,t,e,o),o=i.indexOf(c),t.callback&&t.callback(c,{slug:u,title:s})}}}))}Object.assign(m.defaults,{style:"visually-hidden",space:!0,placement:"after",wrapper:null}),b.permalink={__proto__:null,legacy:l,renderHref:a,renderAttrs:i,makePermalink:h,linkInsideHeader:d,ariaHidden:s,headerLink:u,linkAfterHeader:m},b.defaults={level:1,slugify:function(e){return encodeURIComponent(String(e).trim().toLowerCase().replace(/\s+/g,"-"))},uniqueSlugStartIndex:1,tabIndex:"-1",getTokensText:function(e){return e.filter((function(e){return["text","code_inline"].includes(e.type)})).map((function(e){return e.content})).join("")},permalink:!1,renderPermalink:l,permalinkClass:s.defaults.class,permalinkSpace:s.defaults.space,permalinkSymbol:"¶",permalinkBefore:"before"===s.defaults.placement,permalinkHref:s.defaults.renderHref,permalinkAttrs:s.defaults.renderAttrs},b.default=b,t.a=b},function(e,t,n){"use strict";const r=n(304),o={leftDelimiter:"{",rightDelimiter:"}",allowedAttributes:[]};function c(e,i,t){const n={match:!1,j:null},r=void 0!==t.shift?i+t.shift:t.position;if(void 0!==t.shift&&r<0)return n;const o=(d=e,(m=r)>=0?d[m]:d[d.length+m]);var d,m;if(void 0===o)return n;for(const e of Object.keys(t))if("shift"!==e&&"position"!==e){if(void 0===o[e])return n;if("children"===e&&l(t.children)){if(0===o.children.length)return n;let e;const r=t.children,l=o.children;if(r.every((e=>void 0!==e.position))){if(e=r.every((e=>c(l,e.position,e).match)),e){const e=h(r).position;n.j=e>=0?e:l.length+e}}else for(let t=0;t<l.length;t++)if(e=r.every((e=>c(l,t,e).match)),e){n.j=t;break}if(!1===e)return n}else switch(typeof t[e]){case"boolean":case"number":case"string":if(o[e]!==t[e])return n;break;case"function":if(!t[e](o[e]))return n;break;case"object":if(f(t[e])){if(!1===t[e].every((t=>t(o[e]))))return n;break}default:throw new Error(`Unknown type of pattern test (key: ${e}). Test should be of type boolean, number, string, function or array of functions.`)}}return n.match=!0,n}function l(e){return Array.isArray(e)&&e.length&&e.every((i=>"object"==typeof i))}function f(e){return Array.isArray(e)&&e.length&&e.every((i=>"function"==typeof i))}function h(e){return e.slice(-1)[0]||{}}e.exports=function(e,t){let n=Object.assign({},o);n=Object.assign(n,t);const l=r(n);e.core.ruler.before("linkify","curly_attributes",(function(e){const t=e.tokens;for(let i=0;i<t.length;i++)for(let p=0;p<l.length;p++){const pattern=l[p];let e=null;if(pattern.tests.every((n=>{const r=c(t,i,n);return null!==r.j&&(e=r.j),r.match})))try{pattern.transform(t,i,e),"inline attributes"!==pattern.name&&"inline nesting 0"!==pattern.name||p--}catch(e){console.error(`markdown-it-attrs: Error in pattern '${pattern.name}': ${e.message}`),console.error(e.stack)}}}))}},function(e,t,n){"use strict";const r=n(305);function o(e){return e.slice(-1)[0]}function c(e){e.hidden=!0,e.children&&e.children.forEach((e=>(e.content="",void c(e))))}e.exports=e=>{const t=new RegExp("^ {0,3}[-*_]{3,} ?"+r.escapeRegExp(e.leftDelimiter)+"[^"+r.escapeRegExp(e.rightDelimiter)+"]");return[{name:"fenced code blocks",tests:[{shift:0,block:!0,info:r.hasDelimiters("end",e)}],transform:(t,i)=>{const n=t[i],o=n.info.lastIndexOf(e.leftDelimiter),c=r.getAttrs(n.info,o,e);r.addAttrs(c,n),n.info=r.removeDelimiter(n.info,e)}},{name:"inline nesting 0",tests:[{shift:0,type:"inline",children:[{shift:-1,type:e=>"image"===e||"code_inline"===e},{shift:0,type:"text",content:r.hasDelimiters("start",e)}]}],transform:(t,i,n)=>{const o=t[i].children[n],c=o.content.indexOf(e.rightDelimiter),l=t[i].children[n-1],f=r.getAttrs(o.content,0,e);r.addAttrs(f,l),o.content.length===c+e.rightDelimiter.length?t[i].children.splice(n,1):o.content=o.content.slice(c+e.rightDelimiter.length)}},{name:"tables",tests:[{shift:0,type:"table_close"},{shift:1,type:"paragraph_open"},{shift:2,type:"inline",content:r.hasDelimiters("only",e)}],transform:(t,i)=>{const n=t[i+2],o=r.getMatchingOpeningToken(t,i),c=r.getAttrs(n.content,0,e);r.addAttrs(c,o),t.splice(i+1,3)}},{name:"tables thead metadata",tests:[{shift:0,type:"tr_close"},{shift:1,type:"thead_close"},{shift:2,type:"tbody_open"}],transform:(e,i)=>{const tr=r.getMatchingOpeningToken(e,i),th=e[i-1];let t=0,n=i;for(;--n;){if(e[n]===tr){e[n-1].meta=Object.assign({},e[n+2].meta,{colsnum:t});break}t+=(e[n].level===th.level&&e[n].type===th.type)>>0}e[i+2].meta=Object.assign({},e[i+2].meta,{colsnum:t})}},{name:"tables tbody calculate",tests:[{shift:0,type:"tbody_close",hidden:!1}],transform:(e,i)=>{let t=i-2;for(;t>0&&"tbody_open"!==e[--t].type;);const n=e[t].meta.colsnum>>0;if(n<2)return;const r=e[i].level+2;for(let o=t;o<i;o++){if(e[o].level>r)continue;const l=e[o],f=l.hidden?0:l.attrGet("rowspan")>>0,h=l.hidden?0:l.attrGet("colspan")>>0;if(f>1){let t=n-(h>0?h:1);for(let n=o,r=f;r>1;n++)"tr_open"==e[n].type&&(e[n].meta=Object.assign({},e[n].meta),e[n].meta&&e[n].meta.colsnum&&(t-=1),e[n].meta.colsnum=t,r--)}if("tr_open"==l.type&&l.meta&&l.meta.colsnum){const t=l.meta.colsnum;for(let n=o,r=0;n<i;n++){if("td_open"==e[n].type)r+=1;else if("tr_close"==e[n].type)break;r>t&&(e[n].hidden||c(e[n]))}}if(h>1){const r=[];let f=o+3,d=n;for(let n=o;n>t;n--){if("tr_open"==e[n].type){d=e[n].meta&&e[n].meta.colsnum||d;break}"td_open"===e[n].type&&r.unshift(n)}for(let t=o+2;t<i;t++){if("tr_close"==e[t].type){f=t;break}"td_open"==e[t].type&&r.push(t)}let m=d-r.indexOf(o);m=m>h?h:m,h>m&&l.attrSet("colspan",m+"");for(let t=r.slice(d+1-n-m)[0];t<f;t++)e[t].hidden||c(e[t])}}}},{name:"inline attributes",tests:[{shift:0,type:"inline",children:[{shift:-1,nesting:-1},{shift:0,type:"text",content:r.hasDelimiters("start",e)}]}],transform:(t,i,n)=>{const o=t[i].children[n],content=o.content,c=r.getAttrs(content,0,e),l=r.getMatchingOpeningToken(t[i].children,n-1);r.addAttrs(c,l),o.content=content.slice(content.indexOf(e.rightDelimiter)+e.rightDelimiter.length)}},{name:"list softbreak",tests:[{shift:-2,type:"list_item_open"},{shift:0,type:"inline",children:[{position:-2,type:"softbreak"},{position:-1,type:"text",content:r.hasDelimiters("only",e)}]}],transform:(t,i,n)=>{const content=t[i].children[n].content,o=r.getAttrs(content,0,e);let c=i-2;for(;t[c-1]&&"ordered_list_open"!==t[c-1].type&&"bullet_list_open"!==t[c-1].type;)c--;r.addAttrs(o,t[c-1]),t[i].children=t[i].children.slice(0,-2)}},{name:"list double softbreak",tests:[{shift:0,type:e=>"bullet_list_close"===e||"ordered_list_close"===e},{shift:1,type:"paragraph_open"},{shift:2,type:"inline",content:r.hasDelimiters("only",e),children:e=>1===e.length},{shift:3,type:"paragraph_close"}],transform:(t,i)=>{const content=t[i+2].content,n=r.getAttrs(content,0,e),o=r.getMatchingOpeningToken(t,i);r.addAttrs(n,o),t.splice(i+1,3)}},{name:"list item end",tests:[{shift:-2,type:"list_item_open"},{shift:0,type:"inline",children:[{position:-1,type:"text",content:r.hasDelimiters("end",e)}]}],transform:(t,i,n)=>{const c=t[i].children[n],content=c.content,l=r.getAttrs(content,content.lastIndexOf(e.leftDelimiter),e);r.addAttrs(l,t[i-2]);const f=content.slice(0,content.lastIndexOf(e.leftDelimiter));c.content=" "!==o(f)?f:f.slice(0,-1)}},{name:"\n{.a} softbreak then curly in start",tests:[{shift:0,type:"inline",children:[{position:-2,type:"softbreak"},{position:-1,type:"text",content:r.hasDelimiters("only",e)}]}],transform:(t,i,n)=>{const o=t[i].children[n],c=r.getAttrs(o.content,0,e);let l=i+1;for(;t[l+1]&&-1===t[l+1].nesting;)l++;const f=r.getMatchingOpeningToken(t,l);r.addAttrs(c,f),t[i].children=t[i].children.slice(0,-2)}},{name:"horizontal rule",tests:[{shift:0,type:"paragraph_open"},{shift:1,type:"inline",children:e=>1===e.length,content:e=>null!==e.match(t)},{shift:2,type:"paragraph_close"}],transform:(t,i)=>{const n=t[i];n.type="hr",n.tag="hr",n.nesting=0;const content=t[i+1].content,o=content.lastIndexOf(e.leftDelimiter),c=r.getAttrs(content,o,e);r.addAttrs(c,n),n.markup=content,t.splice(i+1,2)}},{name:"end of block",tests:[{shift:0,type:"inline",children:[{position:-1,content:r.hasDelimiters("end",e),type:e=>"code_inline"!==e&&"math_inline"!==e}]}],transform:(t,i,n)=>{const c=t[i].children[n],content=c.content,l=r.getAttrs(content,content.lastIndexOf(e.leftDelimiter),e);let f=i+1;do{if(t[f]&&-1===t[f].nesting)break}while(f++<t.length);const h=r.getMatchingOpeningToken(t,f);r.addAttrs(l,h);const d=content.slice(0,content.lastIndexOf(e.leftDelimiter));c.content=" "!==o(d)?d:d.slice(0,-1)}}]}},function(e,t){function n(s){return s.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&")}t.getAttrs=function(e,t,n){const r=/[^\t\n\f />"'=]/,o=[];let c="",l="",f=!0,h=!1;for(let i=t+n.leftDelimiter.length;i<e.length;i++){if(e.slice(i,i+n.rightDelimiter.length)===n.rightDelimiter){""!==c&&o.push([c,l]);break}const t=e.charAt(i);if("="===t&&f)f=!1;else if("."!==t||""!==c)if("#"!==t||""!==c)if('"'!==t||""!==l||h)if('"'===t&&h)h=!1;else if(" "!==t||h)f&&-1===t.search(r)||(f?c+=t:l+=t);else{if(""===c)continue;o.push([c,l]),c="",l="",f=!0}else h=!0;else c="id",f=!1;else"."===e.charAt(i+1)?(c="css-module",i+=1):c="class",f=!1}if(n.allowedAttributes&&n.allowedAttributes.length){const e=n.allowedAttributes;return o.filter((function(t){const n=t[0];return e.some((function(e){return n===e||e instanceof RegExp&&e.test(n)}))}))}return o},t.addAttrs=function(e,t){for(let n=0,r=e.length;n<r;++n){const r=e[n][0];"class"===r?t.attrJoin("class",e[n][1]):"css-module"===r?t.attrJoin("css-module",e[n][1]):t.attrPush(e[n])}return t},t.hasDelimiters=function(e,t){if(!e)throw new Error('Parameter `where` not passed. Should be "start", "end" or "only".');return function(n){const r=t.leftDelimiter.length+1+t.rightDelimiter.length;if(!n||"string"!=typeof n||n.length<r)return!1;let o,c,l,f;const h=r-t.rightDelimiter.length;switch(e){case"start":l=n.slice(0,t.leftDelimiter.length),o=l===t.leftDelimiter?0:-1,c=-1===o?-1:n.indexOf(t.rightDelimiter,h),f=n.charAt(c+t.rightDelimiter.length),f&&-1!==t.rightDelimiter.indexOf(f)&&(c=-1);break;case"end":o=n.lastIndexOf(t.leftDelimiter),c=-1===o?-1:n.indexOf(t.rightDelimiter,o+h),c=c===n.length-t.rightDelimiter.length?c:-1;break;case"only":l=n.slice(0,t.leftDelimiter.length),o=l===t.leftDelimiter?0:-1,l=n.slice(n.length-t.rightDelimiter.length),c=l===t.rightDelimiter?n.length-t.rightDelimiter.length:-1;break;default:throw new Error(`Unexpected case ${e}, expected 'start', 'end' or 'only'`)}return-1!==o&&-1!==c&&function(e){const n="."===e.charAt(t.leftDelimiter.length),o="#"===e.charAt(t.leftDelimiter.length);return n||o?e.length>=r+1:e.length>=r}(n.substring(o,c+t.rightDelimiter.length))}},t.removeDelimiter=function(e,t){const r=n(t.leftDelimiter),o=n(t.rightDelimiter),c=new RegExp("[ \\n]?"+r+"[^"+r+o+"]+"+o+"$"),l=e.search(c);return-1!==l?e.slice(0,l):e},t.escapeRegExp=n,t.getMatchingOpeningToken=function(e,i){if("softbreak"===e[i].type)return!1;if(0===e[i].nesting)return e[i];const t=e[i].level,n=e[i].type.replace("_close","_open");for(;i>=0;--i)if(e[i].type===n&&e[i].level===t)return e[i];return!1};const r=/[&<>"]/,o=/[&<>"]/g,c={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"};function l(e){return c[e]}t.escapeHtml=function(e){return r.test(e)?e.replace(o,l):e}},,function(e,t,n){e.exports=function(){"use strict";function e(){return e=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},e.apply(this,arguments)}var t="undefined"!=typeof window,n=t&&!("onscroll"in window)||"undefined"!=typeof navigator&&/(gle|ing|ro)bot|crawl|spider/i.test(navigator.userAgent),i=t&&"IntersectionObserver"in window,r=t&&"classList"in document.createElement("p"),a=t&&window.devicePixelRatio>1,o={elements_selector:".lazy",container:n||t?document:null,threshold:300,thresholds:null,data_src:"src",data_srcset:"srcset",data_sizes:"sizes",data_bg:"bg",data_bg_hidpi:"bg-hidpi",data_bg_multi:"bg-multi",data_bg_multi_hidpi:"bg-multi-hidpi",data_bg_set:"bg-set",data_poster:"poster",class_applied:"applied",class_loading:"loading",class_loaded:"loaded",class_error:"error",class_entered:"entered",class_exited:"exited",unobserve_completed:!0,unobserve_entered:!1,cancel_on_exit:!0,callback_enter:null,callback_exit:null,callback_applied:null,callback_loading:null,callback_loaded:null,callback_error:null,callback_finish:null,callback_cancel:null,use_native:!1,restore_on_error:!1},c=function(t){return e({},o,t)},l=function(e,t){var n,i="LazyLoad::Initialized",r=new e(t);try{n=new CustomEvent(i,{detail:{instance:r}})}catch(e){(n=document.createEvent("CustomEvent")).initCustomEvent(i,!1,!1,{instance:r})}window.dispatchEvent(n)},u="src",s="srcset",f="sizes",h="poster",d="llOriginalAttrs",g="data",m="loading",b="loaded",v="applied",p="error",_="native",y="data-",k="ll-status",w=function(e,t){return e.getAttribute(y+t)},x=function(e){return w(e,k)},A=function(e,t){return function(e,t,n){var i="data-ll-status";null!==n?e.setAttribute(i,n):e.removeAttribute(i)}(e,0,t)},C=function(e){return A(e,null)},E=function(e){return null===x(e)},F=function(e){return x(e)===_},S=[m,b,v,p],D=function(e,t,n,i){e&&(void 0===i?void 0===n?e(t):e(t,n):e(t,n,i))},T=function(e,t){r?e.classList.add(t):e.className+=(e.className?" ":"")+t},z=function(e,t){r?e.classList.remove(t):e.className=e.className.replace(new RegExp("(^|\\s+)"+t+"(\\s+|$)")," ").replace(/^\s+/,"").replace(/\s+$/,"")},O=function(e){return e.llTempImage},L=function(e,t){if(t){var n=t._observer;n&&n.unobserve(e)}},I=function(e,t){e&&(e.loadingCount+=t)},$=function(e,t){e&&(e.toLoadCount=t)},j=function(e){for(var t,n=[],i=0;t=e.children[i];i+=1)"SOURCE"===t.tagName&&n.push(t);return n},P=function(e,t){var n=e.parentNode;n&&"PICTURE"===n.tagName&&j(n).forEach(t)},R=function(e,t){j(e).forEach(t)},M=[u],N=[u,h],B=[u,s,f],H=[g],U=function(e){return!!e[d]},V=function(e){return e[d]},Z=function(e){return delete e[d]},G=function(e,t){if(!U(e)){var n={};t.forEach((function(t){n[t]=e.getAttribute(t)})),e[d]=n}},q=function(e,t){if(U(e)){var n=V(e);t.forEach((function(t){!function(e,t,n){n?e.setAttribute(t,n):e.removeAttribute(t)}(e,t,n[t])}))}},W=function(e,t,n){T(e,t.class_applied),A(e,v),n&&(t.unobserve_completed&&L(e,t),D(t.callback_applied,e,n))},K=function(e,t,n){T(e,t.class_loading),A(e,m),n&&(I(n,1),D(t.callback_loading,e,n))},J=function(e,t,n){n&&e.setAttribute(t,n)},Y=function(e,t){J(e,f,w(e,t.data_sizes)),J(e,s,w(e,t.data_srcset)),J(e,u,w(e,t.data_src))},Q={IMG:function(e,t){P(e,(function(e){G(e,B),Y(e,t)})),G(e,B),Y(e,t)},IFRAME:function(e,t){G(e,M),J(e,u,w(e,t.data_src))},VIDEO:function(e,t){R(e,(function(e){G(e,M),J(e,u,w(e,t.data_src))})),G(e,N),J(e,h,w(e,t.data_poster)),J(e,u,w(e,t.data_src)),e.load()},OBJECT:function(e,t){G(e,H),J(e,g,w(e,t.data_src))}},X=["IMG","IFRAME","VIDEO","OBJECT"],ee=function(e,t){!t||function(e){return e.loadingCount>0}(t)||function(e){return e.toLoadCount>0}(t)||D(e.callback_finish,t)},te=function(e,t,n){e.addEventListener(t,n),e.llEvLisnrs[t]=n},ne=function(e,t,n){e.removeEventListener(t,n)},re=function(e){return!!e.llEvLisnrs},ie=function(e){if(re(e)){var t=e.llEvLisnrs;for(var n in t){var i=t[n];ne(e,n,i)}delete e.llEvLisnrs}},oe=function(e,t,n){!function(e){delete e.llTempImage}(e),I(n,-1),function(e){e&&(e.toLoadCount-=1)}(n),z(e,t.class_loading),t.unobserve_completed&&L(e,n)},se=function(e,t,n){var i=O(e)||e;re(i)||function(e,t,n){re(e)||(e.llEvLisnrs={});var i="VIDEO"===e.tagName?"loadeddata":"load";te(e,i,t),te(e,"error",n)}(i,(function(r){!function(e,t,n,i){var r=F(t);oe(t,n,i),T(t,n.class_loaded),A(t,b),D(n.callback_loaded,t,i),r||ee(n,i)}(0,e,t,n),ie(i)}),(function(r){!function(e,t,n,i){var r=F(t);oe(t,n,i),T(t,n.class_error),A(t,p),D(n.callback_error,t,i),n.restore_on_error&&q(t,B),r||ee(n,i)}(0,e,t,n),ie(i)}))},ae=function(e,t,n){!function(e){return X.indexOf(e.tagName)>-1}(e)?function(e,t,n){!function(e){e.llTempImage=document.createElement("IMG")}(e),se(e,t,n),function(e){U(e)||(e[d]={backgroundImage:e.style.backgroundImage})}(e),function(e,t,n){var i=w(e,t.data_bg),r=w(e,t.data_bg_hidpi),o=a&&r?r:i;o&&(e.style.backgroundImage='url("'.concat(o,'")'),O(e).setAttribute(u,o),K(e,t,n))}(e,t,n),function(e,t,n){var i=w(e,t.data_bg_multi),r=w(e,t.data_bg_multi_hidpi),o=a&&r?r:i;o&&(e.style.backgroundImage=o,W(e,t,n))}(e,t,n),function(e,t,n){var i=w(e,t.data_bg_set);if(i){var r=i.split("|"),a=r.map((function(e){return"image-set(".concat(e,")")}));e.style.backgroundImage=a.join(),""===e.style.backgroundImage&&(a=r.map((function(e){return"-webkit-image-set(".concat(e,")")})),e.style.backgroundImage=a.join()),W(e,t,n)}}(e,t,n)}(e,t,n):function(e,t,n){se(e,t,n),function(e,t,n){var i=Q[e.tagName];i&&(i(e,t),K(e,t,n))}(e,t,n)}(e,t,n)},ce=function(e){e.removeAttribute(u),e.removeAttribute(s),e.removeAttribute(f)},le=function(e){P(e,(function(e){q(e,B)})),q(e,B)},ue={IMG:le,IFRAME:function(e){q(e,M)},VIDEO:function(e){R(e,(function(e){q(e,M)})),q(e,N),e.load()},OBJECT:function(e){q(e,H)}},pe=function(e,t){(function(e){var t=ue[e.tagName];t?t(e):function(e){if(U(e)){var t=V(e);e.style.backgroundImage=t.backgroundImage}}(e)})(e),function(e,t){E(e)||F(e)||(z(e,t.class_entered),z(e,t.class_exited),z(e,t.class_applied),z(e,t.class_loading),z(e,t.class_loaded),z(e,t.class_error))}(e,t),C(e),Z(e)},fe=["IMG","IFRAME","VIDEO"],he=function(e){return e.use_native&&"loading"in HTMLImageElement.prototype},de=function(e,t,n){e.forEach((function(e){return function(e){return e.isIntersecting||e.intersectionRatio>0}(e)?function(e,t,n,i){var r=function(e){return S.indexOf(x(e))>=0}(e);A(e,"entered"),T(e,n.class_entered),z(e,n.class_exited),function(e,t,n){t.unobserve_entered&&L(e,n)}(e,n,i),D(n.callback_enter,e,t,i),r||ae(e,n,i)}(e.target,e,t,n):function(e,t,n,i){E(e)||(T(e,n.class_exited),function(e,t,n,i){n.cancel_on_exit&&function(e){return x(e)===m}(e)&&"IMG"===e.tagName&&(ie(e),function(e){P(e,(function(e){ce(e)})),ce(e)}(e),le(e),z(e,n.class_loading),I(i,-1),C(e),D(n.callback_cancel,e,t,i))}(e,t,n,i),D(n.callback_exit,e,t,i))}(e.target,e,t,n)}))},ge=function(e){return Array.prototype.slice.call(e)},me=function(e){return e.container.querySelectorAll(e.elements_selector)},ve=function(e){return function(e){return x(e)===p}(e)},_e=function(e,t){return function(e){return ge(e).filter(E)}(e||me(t))},be=function(e,n){var r=c(e);this._settings=r,this.loadingCount=0,function(e,t){i&&!he(e)&&(t._observer=new IntersectionObserver((function(n){de(n,e,t)}),function(e){return{root:e.container===document?null:e.container,rootMargin:e.thresholds||e.threshold+"px"}}(e)))}(r,this),function(e,n){t&&(n._onlineHandler=function(){!function(e,t){var n;(n=me(e),ge(n).filter(ve)).forEach((function(t){z(t,e.class_error),C(t)})),t.update()}(e,n)},window.addEventListener("online",n._onlineHandler))}(r,this),this.update(n)};return be.prototype={update:function(e){var t,r,a=this._settings,o=_e(e,a);$(this,o.length),!n&&i?he(a)?function(e,t,n){e.forEach((function(e){-1!==fe.indexOf(e.tagName)&&function(e,t,n){e.setAttribute("loading","lazy"),se(e,t,n),function(e,t){var n=Q[e.tagName];n&&n(e,t)}(e,t),A(e,_)}(e,t,n)})),$(n,0)}(o,a,this):(r=o,function(e){e.disconnect()}(t=this._observer),function(e,t){t.forEach((function(t){e.observe(t)}))}(t,r)):this.loadAll(o)},destroy:function(){this._observer&&this._observer.disconnect(),t&&window.removeEventListener("online",this._onlineHandler),me(this._settings).forEach((function(e){Z(e)})),delete this._observer,delete this._settings,delete this._onlineHandler,delete this.loadingCount,delete this.toLoadCount},loadAll:function(e){var t=this,n=this._settings;_e(e,n).forEach((function(e){L(e,t),ae(e,n,t)}))},restoreAll:function(){var e=this._settings;me(e).forEach((function(t){pe(t,e)}))}},be.load=function(e,t){var n=c(t);ae(e,n)},be.resetStatus=function(e){C(e)},t&&function(e,t){if(t)if(t.length)for(var n,i=0;n=t[i];i+=1)l(e,n);else l(e,t)}(be,window.lazyLoadOptions),be}()}])]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/8f33680fd6db0eb8092e.js b/docs/_nuxt/js/8f33680fd6db0eb8092e.js
new file mode 100644
index 0000000..8b280ad
--- /dev/null
+++ b/docs/_nuxt/js/8f33680fd6db0eb8092e.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[104],{405:function(n,t,e){"use strict";e.r(t),t.default='# 雷达图\n\n雷达图(Radar Chart)又被叫做蜘蛛网图,适用于显示三个或更多的维度的变量。雷达图是以在同一点开始的轴上显示的三个或更多个变量的二维图表的形式来显示多元数据的方法,其中轴的相对位置和角度通常是无意义的。\n\n\n雷达图的每个变量都有一个从中心向外发射的轴线,所有的轴之间的夹角相等,同时每个轴有相同的刻度,将轴到轴的刻度用网格线链接作为辅助元素,连接每个变量在其各自的轴线的数据点成一条多边形。\n\n<iframe max-width="830" width="100%" height="400" \nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xH1-fnLcVG&v=1">\n</iframe>\n\n雷达图对于查看哪些变量具有相似的值、变量之间是否有异常值都很有用。雷达图表也可用于查看哪些变量在数据集内得分较高或较低,因此非常适合显示性能(见下图)。同样,雷达图也常用于排名、评估、评论等数据的展示。\n\n<iframe max-width="830" width="100%" height="400" \nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xHJH93GqVf&v=1">\n</iframe>\n\n如下图,某幼儿园上周资金流统计的示例中比较了预算和开销。参与比较的六个方面是食品、玩具、绘本、医疗、门票、服饰。每个变量都是通过 0 到 500 之间的金额来比较的。只有玩具一项的支出超出了预算,而服饰花费远低于预算,使用雷达图,哪些方面超出或不足变得一目了然了。\n\n<iframe max-width="830" width="100%" height="400" \nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xrk6EfmqVf">\n</iframe>\n\n\n## 雷达图的使用建议\n\n1、一个雷达图包含的多边形数量是有限的,如果有五个以上要评估的事物,无论是轮廓还是填充区域,都会产生覆盖和混乱,使得数据难以阅读。\n\n2、变量太多会产生太多的轴,也会使图表变得混乱,因此,要保持雷达图的简单并限制其变量数量。\n\n3、由于径向距离很难判断,所以虽然有网格线的参考,但是还是很难直观的比较图表内变量具体的值,如果需要的比较具体值话,建议使用线图。\n\n'}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/916289bebd84533235fa.js b/docs/_nuxt/js/916289bebd84533235fa.js
new file mode 100644
index 0000000..afc2c04
--- /dev/null
+++ b/docs/_nuxt/js/916289bebd84533235fa.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[110],{411:function(n,e,t){"use strict";t.r(e),e.default="# 使用 transform 进行数据转换\n\nApache ECharts<sup>TM</sup> 5 开始支持了“数据转换”( data transform )功能。在 echarts 中,“数据转换” 这个词指的是,给定一个已有的“数据集”([dataset](${optionPath}#dataset))和一个“转换方法”([transform](${optionPath}#dataset.transform)),echarts 能生成一个新的“数据集”,然后可以使用这个新的“数据集”绘制图表。这些工作都可以声明式地完成。\n\n抽象地来说,数据转换是这样一种公式:`outData = f(inputData)`。`f` 是转换方法,例如:`filter`、`sort`、`regression`、`boxplot`、`cluster`、`aggregate`(todo) 等等。有了数据转换能力后,我们就至少可以做到这些事情:\n\n- 把数据分成多份用不同的饼图展现。\n- 进行一些数据统计运算,并展示结果。\n- 用某些数据可视化算法处理数据,并展示结果。\n- 数据排序。\n- 去除或直选择数据项。\n- ...\n\n## 数据转换基础使用\n\n在 echarts 中,数据转换是依托于数据集([dataset](${optionPath}#dataset))来实现的. 我们可以设置 [dataset.transform](${optionPath}#dataset.transform) 来表示,此 dataset 的数据,来自于此 transform 的结果。\n\n下面是上述例子的效果,三个饼图分别显示了 2011、2012、2013 年的数据。\n\n```js live\nvar option = {\n  dataset: [\n    {\n      // 这个 dataset 的 index 是 `0`。\n      source: [\n        ['Product', 'Sales', 'Price', 'Year'],\n        ['Cake', 123, 32, 2011],\n        ['Cereal', 231, 14, 2011],\n        ['Tofu', 235, 5, 2011],\n        ['Dumpling', 341, 25, 2011],\n        ['Biscuit', 122, 29, 2011],\n        ['Cake', 143, 30, 2012],\n        ['Cereal', 201, 19, 2012],\n        ['Tofu', 255, 7, 2012],\n        ['Dumpling', 241, 27, 2012],\n        ['Biscuit', 102, 34, 2012],\n        ['Cake', 153, 28, 2013],\n        ['Cereal', 181, 21, 2013],\n        ['Tofu', 395, 4, 2013],\n        ['Dumpling', 281, 31, 2013],\n        ['Biscuit', 92, 39, 2013],\n        ['Cake', 223, 29, 2014],\n        ['Cereal', 211, 17, 2014],\n        ['Tofu', 345, 3, 2014],\n        ['Dumpling', 211, 35, 2014],\n        ['Biscuit', 72, 24, 2014]\n      ]\n      // id: 'a'\n    },\n    {\n      // 这个 dataset 的 index 是 `1`。\n      // 这个 `transform` 配置,表示,此 dataset 的数据,来自于此 transform 的结果。\n      transform: {\n        type: 'filter',\n        config: { dimension: 'Year', value: 2011 }\n      }\n      // 我们还可以设置这些可选的属性: `fromDatasetIndex` 或 `fromDatasetId`。\n      // 这些属性,指定了,transform 的输入,来自于哪个 dataset。例如,\n      // `fromDatasetIndex: 0` 表示输入来自于 index 为 `0` 的 dataset 。又例如,\n      // `fromDatasetId: 'a'` 表示输入来自于 `id: 'a'` 的 dataset。\n      // 当这些属性都不指定时,默认认为,输入来自于 index 为 `0` 的 dataset 。\n    },\n    {\n      // 这个 dataset 的 index 是 `2`。\n      // 同样,这里因为 `fromDatasetIndex` 和 `fromDatasetId` 都没有被指定,\n      // 那么输入默认来自于 index 为 `0` 的 dataset 。\n      transform: {\n        // 这个类型为 \"filter\" 的 transform 能够遍历并筛选出满足条件的数据项。\n        type: 'filter',\n        // 每个 transform 如果需要有配置参数的话,都须配置在 `config` 里。\n        // 在这个 \"filter\" transform 中,`config` 用于指定筛选条件。\n        // 下面这个筛选条件是:选出维度( dimension )'Year' 中值为 2012 的所有\n        // 数据项。\n        config: { dimension: 'Year', value: 2012 }\n      }\n    },\n    {\n      // 这个 dataset 的 index 是 `3`。\n      transform: {\n        type: 'filter',\n        config: { dimension: 'Year', value: 2013 }\n      }\n    }\n  ],\n  series: [\n    {\n      type: 'pie',\n      radius: 50,\n      center: ['25%', '50%'],\n      // 这个饼图系列,引用了 index 为 `1` 的 dataset 。也就是,引用了上述\n      // 2011 年那个 \"filter\" transform 的结果。\n      datasetIndex: 1\n    },\n    {\n      type: 'pie',\n      radius: 50,\n      center: ['50%', '50%'],\n      datasetIndex: 2\n    },\n    {\n      type: 'pie',\n      radius: 50,\n      center: ['75%', '50%'],\n      datasetIndex: 3\n    }\n  ]\n};\n```\n\n现在我们简单总结下,使用 transform 时的几个要点:\n\n- 在一个空的 dataset 中声明 `transform`, `fromDatasetIndex`/`fromDatasetId` 来表示我们要生成新的数据。\n- 系列引用这个 dataset 。\n\n## 数据转换的进阶使用\n\n#### 链式声明 transform\n\n`transform` 可以被链式声明,这是一个语法糖。\n\n```js\noption = {\n  dataset: [\n    {\n      source: [\n        // 原始数据\n      ]\n    },\n    {\n      // 几个 transform 被声明成 array ,他们构成了一个链,\n      // 前一个 transform 的输出是后一个 transform 的输入。\n      transform: [\n        {\n          type: 'filter',\n          config: { dimension: 'Product', value: 'Tofu' }\n        },\n        {\n          type: 'sort',\n          config: { dimension: 'Year', order: 'desc' }\n        }\n      ]\n    }\n  ],\n  series: {\n    type: 'pie',\n    // 这个系列引用上述 transform 的结果。\n    datasetIndex: 1\n  }\n};\n```\n\n> 注意:理论上,任何 transform 都可能有多个输入或多个输出。但是,如果一个 transform 被链式声明,它只能获取前一个 transform 的第一个输出作为输入(第一个 transform 除外),以及它只能把自己的第一个输出给到后一个 transform (最后一个 transform 除外)。\n\n#### 一个 transform 输出多个 data\n\n在大多数场景下,transform 只需输出一个 data 。但是也有一些场景,需要输出多个 data ,每个 data 可以被不同的 series 或者 dataset 所使用。\n\n例如,在内置的 \"boxplot\" transform 中,除了 boxplot 系列所需要的 data 外,离群点( outlier )也会被生成,并且可以用例如散点图系列显示出来。例如,[example](${exampleEditorPath}boxplot-light-velocity)。\n\n我们提供配置 [dataset.fromTransformResult](${optionPath}#dataset.fromTransformResult) 来满足这种情况,例如:\n\n```js\noption = {\n  dataset: [\n    {\n      // 这个 dataset 的 index 为 `0`。\n      source: [\n        // 原始数据\n      ]\n    },\n    {\n      // 这个 dataset 的 index 为 `1`。\n      transform: {\n        type: 'boxplot'\n      }\n      // 这个 \"boxplot\" transform 生成了两个数据:\n      // result[0]: boxplot series 所需的数据。\n      // result[1]: 离群点数据。\n      // 当其他 series 或者 dataset 引用这个 dataset 时,他们默认只能得到\n      // result[0] 。\n      // 如果想要他们得到 result[1] ,需要额外声明如下这样一个 dataset :\n    },\n    {\n      // 这个 dataset 的 index 为 `2`。\n      // 这个额外的 dataset 指定了数据来源于 index 为 `1` 的 dataset。\n      fromDatasetIndex: 1,\n      // 并且指定了获取 transform result[1] 。\n      fromTransformResult: 1\n    }\n  ],\n  xAxis: {\n    type: 'category'\n  },\n  yAxis: {},\n  series: [\n    {\n      name: 'boxplot',\n      type: 'boxplot',\n      // Reference the data from result[0].\n      // 这个 series 引用 index 为 `1` 的 dataset 。\n      datasetIndex: 1\n    },\n    {\n      name: 'outlier',\n      type: 'scatter',\n      // 这个 series 引用 index 为 `2` 的 dataset 。\n      // 从而也就得到了上述的 transform result[1] (即离群点数据)\n      datasetIndex: 2\n    }\n  ]\n};\n```\n\n另外,[dataset.fromTransformResult](${optionPath}#dataset.fromTransformResult) 和 [dataset.transform](${optionPath}#dataset.transform) 能同时出现在一个 dataset 中,这表示,这个 transform 的输入,是上游的结果中以 `fromTransformResult` 获取的结果。例如:\n\n```js\n{\n  fromDatasetIndex: 1,\n  fromTransformResult: 1,\n  transform: {\n    type: 'sort',\n    config: { dimension: 2, order: 'desc' }\n  }\n}\n```\n\n#### 在开发环境中 debug\n\n使用 transform 时,有时候我们会配不对,显示不出来结果,并且不知道哪里错了。所以,这里提供了一个配置项 `transform.print` 方便 debug 。这个配置项只在开发环境中生效。如下例:\n\n```js\noption = {\n  dataset: [\n    {\n      source: []\n    },\n    {\n      transform: {\n        type: 'filter',\n        config: {},\n        // 配置为 `true` 后, transform 的结果\n        // 会被 console.log 打印出来。\n        print: true\n      }\n    }\n  ]\n  // ...\n};\n```\n\n## 数据转换器 \"filter\"\n\necharts 内置提供了能起过滤作用的数据转换器。我们只需声明 `transform.type: \"filter\"`,以及给出数据筛选条件。如下例:\n\n```js live\noption = {\n  dataset: [\n    {\n      source: [\n        ['Product', 'Sales', 'Price', 'Year'],\n        ['Cake', 123, 32, 2011],\n        ['Latte', 231, 14, 2011],\n        ['Tofu', 235, 5, 2011],\n        ['Milk Tee', 341, 25, 2011],\n        ['Porridge', 122, 29, 2011],\n        ['Cake', 143, 30, 2012],\n        ['Latte', 201, 19, 2012],\n        ['Tofu', 255, 7, 2012],\n        ['Milk Tee', 241, 27, 2012],\n        ['Porridge', 102, 34, 2012],\n        ['Cake', 153, 28, 2013],\n        ['Latte', 181, 21, 2013],\n        ['Tofu', 395, 4, 2013],\n        ['Milk Tee', 281, 31, 2013],\n        ['Porridge', 92, 39, 2013],\n        ['Cake', 223, 29, 2014],\n        ['Latte', 211, 17, 2014],\n        ['Tofu', 345, 3, 2014],\n        ['Milk Tee', 211, 35, 2014],\n        ['Porridge', 72, 24, 2014]\n      ]\n    },\n    {\n      transform: {\n        type: 'filter',\n        config: { dimension: 'Year', '=': 2011 }\n        // 这个筛选条件表示,遍历数据,筛选出维度( dimension )\n        // 'Year' 上值为 2011 的所有数据项。\n      }\n    }\n  ],\n  series: {\n    type: 'pie',\n    datasetIndex: 1\n  }\n};\n```\n\n这是 filter 的另一个例子的效果:\n\n<md-example src=\"data-transform-filter\"></md-example>\n\n在 \"filter\" transform 中,有这些要素:\n\n**关于维度( dimension ):**\n\n`config.dimension` 指定了维度,能设成这样的值:\n\n- 设定成声明在 dataset 中的维度名,例如 `config: { dimension: 'Year', '=': 2011 }`。不过, dataset 中维度名的声明并非强制,所以我们也可以\n- 设定成 dataset 中的维度 index (index 值从 0 开始)例如 `config: { dimension: 3, '=': 2011 }`。\n\n**关于关系比较操作符:**\n\n关系操作符,可以设定这些:\n`>`(`gt`)、`>=`(`gte`)、`<`(`lt`)、`<=`(`lte`)、`=`(`eq`)、`!=`(`ne`、`<>`)、`reg`。(小括号中的符号或名字,是别名,设置起来作用相同)。他们首先基本地能基于数值大小进行比较,然后也有些额外的功能特性:\n\n- 多个关系操作符能声明在一个 {} 中,例如 `{ dimension: 'Price', '>=': 20, '<': 30 }`。这表示“与”的关系,即,筛选出价格大于等于 20 小于 30 的数据项。\n- data 里的值,不仅可以是数值( number ),也可以是“类数值的字符串”(“ numeric string ”)。“类数值的字符串”本身是一个字符串,但是可以被转换为字面所描述的数值,例如 `' 123 '`。转换过程中,空格(全角半角空格)和换行符都能被消除( trim )。\n- 如果我们需要对日期对象(JS `Date`)或者日期字符串(如 '2012-05-12')进行比较,我们需要手动指定 `parser: 'time'`,例如 `config: { dimension: 3, lt: '2012-05-12', parser: 'time' }`。\n- 纯字符串比较也被支持,但是只能用在 `=` 或 `!=` 上。而 `>`, `>=`, `<`, `<=` 并不支持纯字符串比较,也就是说,这四个操作符的右值,不能是字符串。\n- `reg` 操作符能提供正则表达式比较。例如, `{ dimension: 'Name', reg: /\\s+Müller\\s*$/ }` 能在 `'Name'` 维度上选出姓 `'Müller'` 的数据项。\n\n**关于逻辑比较:**\n\n我们也支持了逻辑比较操作符 **与或非**( `and` | `or` | `not` ):\n\n```js\noption = {\n  dataset: [\n    {\n      source: [\n        // ...\n      ]\n    },\n    {\n      transform: {\n        type: 'filter',\n        config: {\n          // 使用 and 操作符。\n          // 类似地,同样的位置也可以使用 “or” 或 “not”。\n          // 但是注意 “not” 后应该跟一个 {...} 而非 [...] 。\n          and: [\n            { dimension: 'Year', '=': 2011 },\n            { dimension: 'Price', '>=': 20, '<': 30 }\n          ]\n        }\n        // 这个表达的是,选出 2011 年价格大于等于 20 但小于 30 的数据项。\n      }\n    }\n  ],\n  series: {\n    type: 'pie',\n    datasetIndex: 1\n  }\n};\n```\n\n`and`/`or`/`not` 自然可以被嵌套,例如:\n\n```js\ntransform: {\n  type: 'filter',\n  config: {\n    or: [{\n      and: [{\n        dimension: 'Price', '>=': 10, '<': 20\n      }, {\n        dimension: 'Sales', '<': 100\n      }, {\n        not: { dimension: 'Product', '=': 'Tofu' }\n      }]\n    }, {\n      and: [{\n        dimension: 'Price', '>=': 10, '<': 20\n      }, {\n        dimension: 'Sales', '<': 100\n      }, {\n        not: { dimension: 'Product', '=': 'Cake' }\n      }]\n    }]\n  }\n}\n```\n\n**关于解析器( parser ):**\n\n还可以指定“解析器”( parser )来对值进行解析后再做比较。现在支持的解析器有:\n\n- `parser: 'time'`:把原始值解析成时间戳( timestamp )后再做比较。这个解析器的行为,和 `echarts.time.parse` 相同,即,当原始值为时间对象( JS `Date` 实例),或者是时间戳,或者是描述时间的字符串(例如 `'2012-05-12 03:11:22'` ),都可以被解析为时间戳,然后就可以基于数值大小进行比较。如果原始数据是其他不可解析为时间戳的值,那么会被解析为 NaN。\n- `parser: 'trim'`:如果原始数据是字符串,则把字符串两端的空格(全角半角)和换行符去掉。如果不是字符串,还保持为原始数据。\n- `parser: 'number'`:强制把原始数据转成数值。如果不能转成有意义的数值,那么转成 `NaN`。在大多数场景下,我们并不需要这个解析器,因为按默认策略,“像数值的字符串”就会被转成数值。但是默认策略比较严格,这个解析器比较宽松,如果我们遇到含有尾缀的字符串(例如 `'33%'`, `12px`),我们需要手动指定 `parser: 'number'`,从而去掉尾缀转为数值才能比较。\n\n这个例子显示了如何使用 `parser: 'time'`:\n\n```js\noption = {\n  dataset: [\n    {\n      source: [\n        ['Product', 'Sales', 'Price', 'Date'],\n        ['Milk Tee', 311, 21, '2012-05-12'],\n        ['Cake', 135, 28, '2012-05-22'],\n        ['Latte', 262, 36, '2012-06-02'],\n        ['Milk Tee', 359, 21, '2012-06-22'],\n        ['Cake', 121, 28, '2012-07-02'],\n        ['Latte', 271, 36, '2012-06-22']\n        // ...\n      ]\n    },\n    {\n      transform: {\n        type: 'filter',\n        config: {\n          dimension: 'Date',\n          '>=': '2012-05',\n          '<': '2012-06',\n          parser: 'time'\n        }\n      }\n    }\n  ]\n};\n```\n\n**形式化定义:**\n\n最后,我们给出,数据转换器 \"filter\" 的 config 的形式化定义:\n\n```ts\ntype FilterTransform = {\n  type: 'filter';\n  config: ConditionalExpressionOption;\n};\ntype ConditionalExpressionOption =\n  | true\n  | false\n  | RelationalExpressionOption\n  | LogicalExpressionOption;\ntype RelationalExpressionOption = {\n  dimension: DimensionName | DimensionIndex;\n  parser?: 'time' | 'trim' | 'number';\n  lt?: DataValue; // less than\n  lte?: DataValue; // less than or equal\n  gt?: DataValue; // greater than\n  gte?: DataValue; // greater than or equal\n  eq?: DataValue; // equal\n  ne?: DataValue; // not equal\n  '<'?: DataValue; // lt\n  '<='?: DataValue; // lte\n  '>'?: DataValue; // gt\n  '>='?: DataValue; // gte\n  '='?: DataValue; // eq\n  '!='?: DataValue; // ne\n  '<>'?: DataValue; // ne (SQL style)\n  reg?: RegExp | string; // RegExp\n};\ntype LogicalExpressionOption = {\n  and?: ConditionalExpressionOption[];\n  or?: ConditionalExpressionOption[];\n  not?: ConditionalExpressionOption;\n};\ntype DataValue = string | number | Date;\ntype DimensionName = string;\ntype DimensionIndex = number;\n```\n\n> 注意:使用[按需引入](${lang}/basics/import#按需引入-echarts-图表和组件)接口时,如果需要使用该内置转换器,除了 `Dataset` 组件,还需引入 `Transform` 组件。\n\n```ts\nimport {\n  DatasetComponent,\n  TransformComponent\n} from 'echarts/components';\n\necharts.use([\n  DatasetComponent,\n  TransformComponent\n]);\n```\n\n## 数据转换器 \"sort\"\n\n\"sort\" 是另一个内置的数据转换器,用于排序数据。目前主要能用于在类目轴( `axis.type: 'category'` )中显示排过序的数据。例如:\n\n```js\noption = {\n  dataset: [\n    {\n      dimensions: ['name', 'age', 'profession', 'score', 'date'],\n      source: [\n        [' Hannah Krause ', 41, 'Engineer', 314, '2011-02-12'],\n        ['Zhao Qian ', 20, 'Teacher', 351, '2011-03-01'],\n        [' Jasmin Krause ', 52, 'Musician', 287, '2011-02-14'],\n        ['Li Lei', 37, 'Teacher', 219, '2011-02-18'],\n        [' Karle Neumann ', 25, 'Engineer', 253, '2011-04-02'],\n        [' Adrian Groß', 19, 'Teacher', null, '2011-01-16'],\n        ['Mia Neumann', 71, 'Engineer', 165, '2011-03-19'],\n        [' Böhm Fuchs', 36, 'Musician', 318, '2011-02-24'],\n        ['Han Meimei ', 67, 'Engineer', 366, '2011-03-12']\n      ]\n    },\n    {\n      transform: {\n        type: 'sort',\n        // 按分数排序\n        config: { dimension: 'score', order: 'asc' }\n      }\n    }\n  ],\n  series: {\n    type: 'bar',\n    datasetIndex: 1\n  }\n  // ...\n};\n```\n\n<md-example src=\"data-transform-sort-bar\"></md-example>\n\n数据转换器 \"sort\" 还有一些额外的功能:\n\n- 可以多重排序,多个维度一起排序。见下面的例子。\n- 排序规则是这样的:\n  - 默认按照数值大小排序。其中,“可转为数值的字符串”也被转换成数值,和其他数值一起按大小排序。\n  - 对于其他“不能转为数值的字符串”,也能在它们之间按字符串进行排序。这个特性有助于这种场景:把相同标签的数据项排到一起,尤其是当多个维度共同排序时。见下面的例子。\n  - 当“数值及可转为数值的字符串”和“不能转为数值的字符串”进行排序时,或者它们和“其他类型的值”进行比较时,它们本身是不知如何进行比较的。那么我们称呼“后者”为“incomparable”,并且可以设置 `incomparable: 'min' | 'max'` 来指定一个“incomparable”在这个比较中是最大还是最小,从而能使它们能产生比较结果。这个设定的用途,比如可以是,决定空值(例如 `null`, `undefined`, `NaN`, `''`, `'-'`)在排序的头还是尾。\n- 解析器 `parser: 'time' | 'trim' | 'number'` 可以被使用,和数据转换器 \"filter\" 中的情况一样。\n  - 如果要对时间进行排序(例如,值为 JS `Date` 实例或者时间字符串如 `'2012-03-12 11:13:54'`),我们需要声明 `parser: 'time'`。\n  - 如果需要对有后缀的数值进行排序(如 `'33%'`, `'16px'`)我们需要声明 `parser: 'number'`。\n\n这是一个“多维度排序”的例子。\n\n```js\noption = {\n  dataset: [\n    {\n      dimensions: ['name', 'age', 'profession', 'score', 'date'],\n      source: [\n        [' Hannah Krause ', 41, 'Engineer', 314, '2011-02-12'],\n        ['Zhao Qian ', 20, 'Teacher', 351, '2011-03-01'],\n        [' Jasmin Krause ', 52, 'Musician', 287, '2011-02-14'],\n        ['Li Lei', 37, 'Teacher', 219, '2011-02-18'],\n        [' Karle Neumann ', 25, 'Engineer', 253, '2011-04-02'],\n        [' Adrian Groß', 19, 'Teacher', null, '2011-01-16'],\n        ['Mia Neumann', 71, 'Engineer', 165, '2011-03-19'],\n        [' Böhm Fuchs', 36, 'Musician', 318, '2011-02-24'],\n        ['Han Meimei ', 67, 'Engineer', 366, '2011-03-12']\n      ]\n    },\n    {\n      transform: {\n        type: 'sort',\n        config: [\n          // 对两个维度按声明的优先级分别排序。\n          { dimension: 'profession', order: 'desc' },\n          { dimension: 'score', order: 'desc' }\n        ]\n      }\n    }\n  ],\n  series: {\n    type: 'bar',\n    datasetIndex: 1\n  }\n  //...\n};\n```\n\n<md-example src=\"doc-example/data-transform-multiple-sort-bar\"></md-example>\n\n最后,我们给出数据转换器 \"sort\" 的 config 的形式化定义。\n\n```ts\ntype SortTransform = {\n  type: 'sort';\n  config: OrderExpression | OrderExpression[];\n};\ntype OrderExpression = {\n  dimension: DimensionName | DimensionIndex;\n  order: 'asc' | 'desc';\n  incomparable?: 'min' | 'max';\n  parser?: 'time' | 'trim' | 'number';\n};\ntype DimensionName = string;\ntype DimensionIndex = number;\n```\n\n> 注意:使用[按需引入](${lang}/basics/import#按需引入-echarts-图表和组件)接口时,如果需要使用该内置转换器,除了 `Dataset` 组件,还需引入 `Transform` 组件。\n\n```ts\nimport {\n  DatasetComponent,\n  TransformComponent\n} from 'echarts/components';\n\necharts.use([\n  DatasetComponent,\n  TransformComponent\n]);\n```\n\n## 使用外部的数据转换器\n\n除了上述的内置的数据转换器外,我们也可以使用外部的数据转换器。外部数据转换器能提供或自己定制更丰富的功能。下面的例子中,我们使用第三方库 [ecStat](https://github.com/ecomfe/echarts-stat) 提供的数据转换器。\n\n生成数据的回归线:\n\n```js\n// 首先要注册外部数据转换器。\necharts.registerTransform(ecStatTransform(ecStat).regression);\n```\n\n```js\noption = {\n  dataset: [\n    {\n      source: rawData\n    },\n    {\n      transform: {\n        // 引用注册的数据转换器。\n        // 注意,每个外部的数据转换器,都有名空间(如 'ecStat:xxx','ecStat' 是名空间)。\n        // 而内置数据转换器(如 'filter', 'sort')没有名空间。\n        type: 'ecStat:regression',\n        config: {\n          // 这里是此外部数据转换器所需的参数。\n          method: 'exponential'\n        }\n      }\n    }\n  ],\n  xAxis: { type: 'category' },\n  yAxis: {},\n  series: [\n    {\n      name: 'scatter',\n      type: 'scatter',\n      datasetIndex: 0\n    },\n    {\n      name: 'regression',\n      type: 'line',\n      symbol: 'none',\n      datasetIndex: 1\n    }\n  ]\n};\n```\n\n一些使用 echarts-stat 的例子:\n\n- [聚集 (Aggregate)](${exampleEditorPath}data-transform-aggregate&edit=1&reset=1)\n- [直方图 (Histogram)](${exampleEditorPath}bar-histogram&edit=1&reset=1)\n- [简单聚类 (Clustering)](${exampleEditorPath}scatter-clustering&edit=1&reset=1)\n- [线性回归线 (Linear Regression)](${exampleEditorPath}scatter-linear-regression&edit=1&reset=1)\n- [指数回归线 (Exponential Regression)](${exampleEditorPath}scatter-exponential-regression&edit=1&reset=1)\n- [对数回归线 (Logarithmic Regression)](${exampleEditorPath}scatter-logarithmic-regression&edit=1&reset=1)\n- [多项式回归线 (Polynomial Regression)](${exampleEditorPath}scatter-polynomial-regression&edit=1&reset=1)\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/932241c77644d8ad058e.js b/docs/_nuxt/js/932241c77644d8ad058e.js
new file mode 100644
index 0000000..008e64d
--- /dev/null
+++ b/docs/_nuxt/js/932241c77644d8ad058e.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[70],{371:function(n,e,t){"use strict";t.r(e),e.default="# Asynchronous Data Loading and Dynamic Update\n\n## Asynchronous Loading\n\nData in [Getting Started Example](${lang}/get-started) is directly updated by using `setOption`. But in many cases, the data needs to be filled by asynchronous loading frequently. `ECharts` can implement asynchronous loading in a simple way. You can get data asynchronously through a function such as jQuery and use `setOption` to fill in data and configs after the chart initialized.\n\n```js\nvar myChart = echarts.init(document.getElementById('main'));\n\n$.get('data.json').done(function(data) {\n  // Structure of data:\n  // {\n  //     categories: [\"Shirt\",\"Wool sweater\",\"Chiffon shirt\",\"Pants\",\"High-heeled shoes\",\"socks\"],\n  //     values: [5, 20, 36, 10, 10, 20]\n  // }\n  myChart.setOption({\n    title: {\n      text: 'Asynchronous Loading Example'\n    },\n    tooltip: {},\n    legend: {},\n    xAxis: {\n      data: data.categories\n    },\n    yAxis: {},\n    series: [\n      {\n        name: 'Sales',\n        type: 'bar',\n        data: data.values\n      }\n    ]\n  });\n});\n```\n\nOr display empty axes with all styles defined before fill in the data:\n\n```js\nvar myChart = echarts.init(document.getElementById('main'));\n// Show title, legends and empty axes\nmyChart.setOption({\n  title: {\n    text: 'Asynchronous Loading Example'\n  },\n  tooltip: {},\n  legend: {\n    data: ['Sales']\n  },\n  xAxis: {\n    data: []\n  },\n  yAxis: {},\n  series: [\n    {\n      name: 'Sales',\n      type: 'bar',\n      data: []\n    }\n  ]\n});\n\n// Asynchronous Data Loading\n$.get('data.json').done(function(data) {\n  // Fill in the data\n  myChart.setOption({\n    xAxis: {\n      data: data.categories\n    },\n    series: [\n      {\n        // Find series by name\n        name: 'Sales',\n        data: data.data\n      }\n    ]\n  });\n});\n```\n\nFor example:\n\n<md-example src=\"doc-example/tutorial-async\"></md-example>\n\nYou need to use `name` to \"navigate\" ECharts when updating data. In the previous example, the chart can update normally depending on the order of series, but we recommend you to add the `name` data while updating data.\n\n## loading Animation\n\nWhen it takes a long time to load the data, the user is facing the empty chart with only axes will wonder if there is a bug.\n\nECharts have a simple loading animation by default. You can call [showLoading](${mainSitePath}/api.html#echartsInstance.showLoading) to display. When the data loading was completed, call [hideLoading](${mainSitePath}/api.html#echartsInstance.hideLoading) to hide the animation.\n\n```js\nmyChart.showLoading();\n$.get('data.json').done(function (data) {\n    myChart.hideLoading();\n    myChart.setOption(...);\n});\n```\n\nHere is the effect:\n\n<md-example src=\"doc-example/tutorial-loading\"></md-example>\n\n## Dynamic Update\n\nECharts was driven by data, change in data will drive changes in the presentation of the chart. Therefore, It's surprisingly simple to implement a dynamic update.\n\nAll data's updates were implemented by [setOption](${mainSitePath}/api.html#echartsInstance.setOption). You only need to fetch the data periodically. ECharts will find the difference between two groups of data to use the proper way to choose the animation.\n\nCheck the following example.\n\n<md-example src=\"doc-example/tutorial-dynamic-data\"></md-example>\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/949ddc72fdec0093e8ad.js b/docs/_nuxt/js/949ddc72fdec0093e8ad.js
new file mode 100644
index 0000000..053f124
--- /dev/null
+++ b/docs/_nuxt/js/949ddc72fdec0093e8ad.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[122],{423:function(n,t,e){"use strict";e.r(t),t.default="# 动态排序柱状图\n\n## 基本设置\n\n动态排序柱状图是一种展示随时间变化的数据排名变化的图表,从 ECharts 5 开始内置支持。\n\n> 动态排序柱状图通常是横向的柱条,如果想要采用纵向的柱条,只要把本教程中的 X 轴和 Y 轴相反设置即可。\n\n1. 柱状图系列的 `realtimeSort` 设为 `true`,表示开启该系列的动态排序效果\n2. `yAxis.inverse` 设为 `true`,表示 Y 轴从下往上是从小到大的排列\n3. `yAxis.animationDuration` 建议设为 `300`,表示第一次柱条排序动画的时长\n4. `yAxis.animationDurationUpdate` 建议设为 `300`,表示第一次后柱条排序动画的时长\n5. 如果想只显示前 _n_ 名,将 `yAxis.max` 设为 _n - 1_,否则显示所有柱条\n6. `xAxis.max` 建议设为 `'dataMax'` 表示用数据的最大值作为 X 轴最大值,视觉效果更好\n7. 如果想要实时改变标签,需要将 `series.label.valueAnimation` 设为 `true`\n8. `animationDuration` 设为 `0`,表示第一份数据不需要从 `0` 开始动画(如果希望从 `0` 开始则设为和 `animationDurationUpdate` 相同的值)\n9. `animationDurationUpdate` 建议设为 `3000` 表示每次更新动画时长,这一数值应与调用 `setOption` 改变数据的频率相同\n10. 以 `animationDurationUpdate` 的频率调用 `setInterval`,更新数据值,显示下一个时间点对应的柱条排序\n\n## 示例\n\n完整的例子如下:\n\n```js live\nvar data = [];\nfor (let i = 0; i < 5; ++i) {\n  data.push(Math.round(Math.random() * 200));\n}\n\noption = {\n  xAxis: {\n    max: 'dataMax'\n  },\n  yAxis: {\n    type: 'category',\n    data: ['A', 'B', 'C', 'D', 'E'],\n    inverse: true,\n    animationDuration: 300,\n    animationDurationUpdate: 300,\n    max: 2 // only the largest 3 bars will be displayed\n  },\n  series: [\n    {\n      realtimeSort: true,\n      name: 'X',\n      type: 'bar',\n      data: data,\n      label: {\n        show: true,\n        position: 'right',\n        valueAnimation: true\n      }\n    }\n  ],\n  legend: {\n    show: true\n  },\n  animationDuration: 3000,\n  animationDurationUpdate: 3000,\n  animationEasing: 'linear',\n  animationEasingUpdate: 'linear'\n};\n\nfunction update() {\n  var data = option.series[0].data;\n  for (var i = 0; i < data.length; ++i) {\n    if (Math.random() > 0.9) {\n      data[i] += Math.round(Math.random() * 2000);\n    } else {\n      data[i] += Math.round(Math.random() * 200);\n    }\n  }\n  myChart.setOption(option);\n}\n\nsetInterval(function() {\n  update();\n}, 3000);\n```\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/94cc006e457d3c978e1c.js b/docs/_nuxt/js/94cc006e457d3c978e1c.js
new file mode 100644
index 0000000..b8d30ba
--- /dev/null
+++ b/docs/_nuxt/js/94cc006e457d3c978e1c.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[84],{385:function(n,e,t){"use strict";t.r(e),e.default='# Apache ECharts 5 新特性\n\n数据可视化在过去的几年中得到了长足的发展。开发者对于可视化产品的期待不再是简单的图表创建工具,而在交互、性能、数据处理等方面有了更高级的需求。\n\nApache ECharts 始终致力于让开发者以更方便的方式创造灵活丰富的可视化作品。在最新推出的 Apache ECharts 5,我们着力加强了图表的叙事能力,让开发者可以以更简单的方式,讲述数据背后的故事。\n\n<img data-src="images/feature-v5/echarts-5.png" width="800px" />\n\n“表·达”是 Apache ECharts 5 的核心,通过五大模块、十五项特性的全面升级,围绕可视化作品的叙事表达能力,让图“表”更能传“达”数据背后的故事,帮助开发者更轻松地创造满足各种场景需求的可视化作品。\n\n## 动态叙事\n\n动画对于人类认知的重要性不言而喻。在之前的作品中,我们会通过初始化动画和过渡动画帮助用户理解数据变换之间的联系,让图表的出现和变换显得不那么生硬。这次,我们更是大幅度增强了我们的动画叙事能力,希望能够进一步发挥动画对于用户认知的帮助作用,借助图表的动态叙事功能,帮助用户更容易理解图表背后表达的故事。\n\n#### 动态排序图\n\nApache ECharts 5 新增支持动态排序柱状图(bar-racing)以及动态排序折线图(line-racing),帮助开发者方便地创建带有时序性的图表,展现数据随着时间维度上的变化,讲述数据的演变过程。\n\n<md-example src="bar-race-country" width="700" height="400" />\n<md-example src="line-race" width="700" height="400" />\n\n动态排序图展现了不同的类目随着时间在排名上的衍变。而开发者只需要通过几行简单的配置项就可以在 ECharts 中开启这样的效果。\n\n#### 自定义系列动画\n\n除了动态排序图,Apache ECharts 5 在自定义系列中提供了更加丰富强大的动画效果,支持标签数值文本的插值动画,图形的形变(morph)、分裂(separate)、合并(combine)等效果的过渡动画。\n\n想象一下,用这些动态效果,你可以创造出多么令人称奇的可视化作品!\n\n## 视觉设计\n\n视觉设计的作用并不仅仅是为了让图表更好看,更重要的是,符合可视化原理的设计可以帮用户更快速地理解图表想表达的内容,并且尽可能消除不良设计带来的误解。\n\n#### 默认设计\n\n我们发现,有很大一部分开发者使用了 ECharts 默认的主题样式,因而设计优雅、符合可视化原理的默认主题设计是非常重要的。在 Apache ECharts 5 中,我们重新设计了默认的主题样式,针对不同的系列和组件分别做了优化调整。以主题色为例,我们考量了颜色之间的区分度、与背景色的对比度、相邻颜色的和谐度等因素,并且确保色觉辨识障碍人士也能清楚地区分数据。\n\n<img data-src="images/feature-v5/theme-color.png" width="400px" />\n\n我们以最常用的柱状图为例,来看看新版本浅色主题和深色主题的样式:\n\n<img data-src="images/feature-v5/new-theme-light.png" width="500px" />\n<img data-src="images/feature-v5/new-theme-dark.png" width="500px" />\n\n对于折线图,我们做了比较直观的一个改变就是去掉了直角坐标系最左侧数据轴Y轴的默认显示。左侧是原本默认的折线图的样式,其实通过中间的几条数据分割线,我们就已经可以定位折线图的每个数据值。因此我们希望通过减少不必要的图形元素,来达到更清晰地传递信息的目的。\n\n<img data-src="images/feature-v5/yAxis-default-style-change.webp" width="500px" />\n\n对于数据区域缩放,时间轴等交互组件,我们也设计了全新的样式并且提供了更好的交互体验:\n\n<img data-src="images/feature-v5/dataZoom.png" width="500px" />\n\n<img data-src="images/feature-v5/timeline.png" width="500px" />\n\n#### 标签\n\n标签是图表中的核心元素之一,清晰而明确的标签可以帮助用户对数据有更准确的理解。Apache ECharts 5 提供了多种新的标签功能,让密集的标签能清晰显示、准确表意。\n\nApache ECharts 5 可以通过一个配置项开启自动隐藏重叠的标签。对于超出显示区域的标签,可以选择自动截断或者换行。密集的饼图标签,现在有了更美观的自动排布。\n\n这些功能可以帮助避免文字过于密集影响可读性。并且,无需开发者编写额外的代码就能默认生效,大大简化了开发者的开发成本。\n\n我们也提供了多个配置项来让开发者主动控制标签的布局策略,例如标签拖动、整体显示在画布边缘,用引导线和图形元素连接,并且仍可联动高亮表达关联关系。\n\n新的标签功能可以让你在移动端这样局限的空间内也可以有很优雅的标签展示:\n\n<img data-src="images/feature-v5/pie-label.png" width="400px" />\n\n#### 时间轴\n\nApache ECharts 5 带来了适于表达时间标签刻度的时间轴。时间轴的默认设计更突出重要的信息,并且提供了更灵活的定制化能力,让开发者根据不同的需求定制时间轴的标签内容。\n\n首先,时间轴不再如之前般绝对平均分割,而是选取年、月、日、整点这类更有意义的点来展示,并且能同时显示不同层级的刻度。标签的 `formatter` 支持了时间模版(例如 `{yyyy}-{MM}-{dd}`),并且可以为不同时间粒度的标签指定不同的 `formatter`,结合已有的富文本标签,可以定制出醒目而多样的时间效果。\n\n不同的 dataZoom 粒度下时间刻度的显示:\n\n<img data-src="images/feature-v5/time-axis.png" width="600px" />\n\n<img data-src="images/feature-v5/time-axis-2.png" width="600px" />\n\n#### 提示框\n\n提示框(Tooltip)是一种最常用的可视化组件,可以帮助用户交互式地了解数据的详细信息。在 Apache ECharts 5 中,我们对提示框的样式进行了优化,通过对字体样式,颜色的调整,指向图形的箭头,跟随图形颜色的边框色等功能,让提示框的默认展示优雅又清晰。并且改进了富文本的渲染逻辑,确保显示效果与 HTML 方式一致,让用户在不同场景下可以选择不同的技术方案实现同样的效果。\n\n<img data-src="images/feature-v5/new-tooltip.png" width="400px" />\n<img data-src="images/feature-v5/new-tooltip-2.png" width="400px" />\n\n除此之外,我们这次也加上了提示框内的列表按照数值大小或者类目顺序排序的功能。\n\n#### 仪表盘\n\n我们看到社区用户创建了很多酷炫的仪表盘图表,但是他们的配置方式往往比较复杂而取巧。因此,我们对仪表盘的功能作了全面升级,支持了图片或者矢量路径绘制指针、也支持了锚点(anchor)配置项、进度条(progress)、圆角效果等等配置项。\n\n不同样式的仪表盘指针:\n\n<img data-src="images/feature-v5/gauge-pointer.png" width="600px" />\n\n这些升级,不仅可以让开发者用更简单的配置项实现酷炫的效果,而且带来了更丰富的定制能力。\n\n<md-example src="gauge-clock" width="600" height="600" />\n\n#### 扇形圆角\n\n圆角可以带来更美观而柔和的视觉,也能够赋予更多的创造力。Apache ECharts 5 支持了饼图、旭日图、矩形树图的扇形圆角。可不要小看了简单的圆角配置项,合理地搭配其他的效果,就可以形成更具个性的的可视化作品。\n\n<md-example src="sunburst-borderRadius" width="400" height="400" />\n\n## 交互能力\n\n可视化作品的交互能力帮助用户探索了解作品,加深对于图表主旨的理解。\n\n#### 状态管理\n\n在 ECharts 4 中有高亮(emphasis)和普通(normal)两个交互的状态,在鼠标移到图形上的时候会进入高亮状态以区分该数据,开发者可以分别设置这两个状态的颜色,阴影等样式。\n\n这次在 Apache ECharts 5 中,我们在原先的鼠标 hover 高亮的基础上,新增加了**淡出**其它非相关元素的效果,从而可以达到聚焦目标数据的目的。\n\n比如在这个[柱状图](https://echarts.apache.org/examples/zh/editor.html?c=bar-y-category-stack)的例子中,鼠标移到一个系列上的时候,其它非相关的系列就会淡出,从而可以更清晰的突出聚焦系列中数据的对比。在关系图,树图,旭日图,桑基等更复杂数据结构的图上,也可以通过淡出非相关元素来观察数据之间的联系。而且颜色,阴影等在高亮(emphasis)中可以设置的样式,现在也可以在淡出(blur)状态中设置了。\n\n除此之外,我们为所有系列还添加了**点击选中**这个之前只有在饼图、地图等少数系列中才能开启的交互,开发者可以设置为单选或多选模式,并且通过监听 `selectchanged` 事件获取到选中的所有图形然后进行更进一步的处理。与高亮和淡出一样,选中的样式也可以在 `select` 中配置。\n\n#### 性能提升\n\n##### 脏矩形渲染\n\nApache ECharts 5 新支持了脏矩形渲染,解决只有局部变化的场景下的性能瓶颈。在使用 Canvas 渲染器时,脏矩形渲染技术探测并只更新视图变化的部分,而不是任何变动都引起画布完全重绘。这能在一些特殊场景下帮助提高渲染帧率,例如在图形很多时候,鼠标频繁触发一些图形高亮的场景。以往这类场景,会使用额外的 Canvas 层以优化性能,但是这种方式不是所有场景都通用,而且对于复杂的样式的效果并不理想。脏矩形渲染很好地同时满足了性能和显示正确。\n\n脏矩形的可视化演示,红色框选部分为该帧重绘区域:\n\n<img data-src="images/feature-v5/dirty-rect.gif" width="500px" />\n\n大家在新的示例页面选择开启脏矩形优化就可以看到该效果。\n\n##### 实时时序数据的折线图性能优化\n\n除此之外,海量数据下折线图的性能也有了大幅度的性能提升。我们经常碰到大量的实时时序数据的高性能绘制的需求,这些数据可能需要几百或者几十毫秒更新一次。\n\nApache ECharts 5 对这些场景下的 CPU 消耗、内存占用、初始化时间都进行了深度的优化,使得百万量级的数据也能做到实时的更新(每次更新耗时少于 30ms),甚至对于千万级的数据,也可以在 1s 内渲染完,并且保持很小的内存占用以及流畅的提示框(tooltip)等交互。\n\n## 开发体验\n\n我们希望如此强大的可视化工具可以被更多开发者以更简单的方式使用,因而开发者的开发体验也是我们非常关注的方面。\n\n#### 数据集\n\nECharts 5 加强了数据集的数据转换能力,让开发者可以使用简单的方式实现常用的数据处理,如:数据过滤(filter)、排序(sort)、聚合(aggregate)、直方图(histogram)、简单聚类(clustering)、回归线计算(regression)等。开发者可以用统一的声明式方式来使用这些功能,可以方便地实现常用的数据操作。\n\n#### 国际化\n\nECharts 原有的国际化方案,采用的是根据不同的语言参数打包出不同的部署文件的形式。​ 这种方式,使动态的语言和静态的代码包绑定在一起,使用的时候只能通过重新加载不同语言版本的 ECharts 代码来达到切换语言的目的。\n\n因此,从 Apache ECharts 5 开始,动态的语言包和静态的代码包分离开。切换语言的时候,只需要加载相应语言包 ​,通过类似挂载主题的方式,使用 `registerLocale` 函数挂载语言包对象 ​,重新初始化后就完成了语言的切换 ​。\n\n```js\n// import the lang object and set when init​\necharts.registerLocale(\'DE\', lang);​\necharts.init(DomElement, null, {​\n   locale: \'DE\'​\n});\n```\n\n#### TypeScript 重构\n\n在近 8 年的时间里,Apache ECharts 已经发展成一个非常复杂的可视化库了,为了可以更安全高效的进行重构和新功能的开发,我们在 Apache ECharts 5 的开发之初,使用 TypeScript 对代码进行了重写,TypeScript 所带来的强类型让我们更有信心地在 ECharts 5 开发的时候对代码进行大刀阔斧的重构以实现更多令人激动人心的特性。\n\n对于开发者,我们也可以从 TypeScript 代码直接生成更好更符合代码的`DTS`类型描述文件。在此之前,ECharts 的类型描述文件一直是由社区开发者帮我们维护并发布到 [DefinitelyTyped](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/echarts),这个有着不小的工作量,非常感谢大家的贡献。\n\n除此之外,如果开发者的组件是按需引入的,我们还提供了一个 `ComposeOption` 类型方法,可以组合出一个只包含了引入组件的配置项类型,可以带来更严格的类型检查,帮助你提前检测到未引入的组件类型。\n\n## 可访问性\n\nApache ECharts 一直非常重视无障碍设计,我们希望让视觉障碍人士也能平等了解图表传递的信息。并且也希望图表的开发者能以极低的开发成本实现这一点,因而有利于让开发者更愿意为视觉障碍人士提供支持。\n\n在上一个大版本中,我们支持了根据不同的图表类型和数据自动一键智能生成图表描述的功能,帮助开发者非常方便地支持图表的 DOM 描述信息。在 ECharts 5 中,我们也做了更多提高可访问性的设计,帮助视觉障碍人士更好地理解图表内容。\n\n#### 主题配色\n\n我们在设计新版默认主题样式的时候,将无障碍设计作为一个重要的考量依据,对颜色的明度和色值都进行反复测试,帮助视觉辨识障碍用户清楚地识别图表数据。​\n\n并且,针对有更进一步无障碍需求的开发者,我们还提供了特殊的高对比度主题,以更高对比度颜色的主题将数据作进一步区分。\n\n#### 贴花图案\n\nECharts 5 还新增提供了贴花的功能,用图案辅助颜色表达,进一步帮助用户区分数据。\n\n<md-example src="doc-example/aria-decal-simple" width="600" height="350" />\n\n此外,贴花图案还能在一些其他的场景下提供帮助,比如:在报纸、书籍之类只有单色或者非常少的颜色的印刷品中,帮助更好地区分数据;用图形元素方便用户对数据产生更直观的理解等。\n\n<md-example src="doc-example/aria-decal-newspaper" width="600" height="350" />\n\n## 小结\n\n除了以上介绍的功能,Apache ECharts 还在非常多的细节中做了改进,帮助开发者更轻松地创建默认好用、配置灵活的图表,用图表讲述数据背后的故事。\n\n感谢所有使用过 ECharts,甚至参与过社区贡献的开发者,正是你们才使得 Apache ECharts 5 成为可能。我们会以更大的热情投入到未来的开发中,Apache ECharts 也会以更大的诚意和大家在 6 相见!\n'}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/958411fcc7493bf53232.js b/docs/_nuxt/js/958411fcc7493bf53232.js
new file mode 100644
index 0000000..059ee96
--- /dev/null
+++ b/docs/_nuxt/js/958411fcc7493bf53232.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[72],{373:function(e,n,t){"use strict";t.r(n),n.default="# An Example: Implement Dragging\n\nThis is a tiny example, introducing how to implement dragging of graphic elements in Apache ECharts<sup>TM</sup>. From this example, we will see how to make an application with rich intractivity based on echarts API.\n\n<md-example src=\"line-draggable\" height=\"400\"></md-example>\n\nThis example mainly implements that dragging points of a curve and by which the curve is modified. Although it is simple example, but we can do more based on that, like edit charts viually. So let's get started from this simple example.\n\n## Implement basic dragging\n\nFirst of all, we create a basic [line chart (line series)](${optionPath}series-line):\n\n```js\nvar symbolSize = 20;\nvar data = [\n  [15, 0],\n  [-50, 10],\n  [-56.5, 20],\n  [-46.5, 30],\n  [-22.1, 40]\n];\n\nmyChart.setOption({\n  xAxis: {\n    min: -100,\n    max: 80,\n    type: 'value',\n    axisLine: { onZero: false }\n  },\n  yAxis: {\n    min: -30,\n    max: 60,\n    type: 'value',\n    axisLine: { onZero: false }\n  },\n  series: [\n    {\n      id: 'a',\n      type: 'line',\n      smooth: true,\n      // Set a big symbolSize for dragging convenience.\n      symbolSize: symbolSize,\n      data: data\n    }\n  ]\n});\n```\n\nSince the symbols in line is not draggable, we make them draggable by using [graphic component](${optionPath}graphic) to add draggable circular elements to symbols respectively.\n\n```js\nmyChart.setOption({\n  // Declare a graphic component, which contains some graphic elements\n  // with the type of 'circle'.\n  // Here we have used the method `echarts.util.map`, which has the same\n  // behavior as Array.prototype.map, and is compatible with ES5-.\n  graphic: echarts.util.map(data, function(dataItem, dataIndex) {\n    return {\n      // 'circle' means this graphic element is a shape of circle.\n      type: 'circle',\n\n      shape: {\n        // The radius of the circle.\n        r: symbolSize / 2\n      },\n      // Transform is used to located the circle. position:\n      // [x, y] means translate the circle to the position [x, y].\n      // The API `convertToPixel` is used to get the position of\n      // the circle, which will introduced later.\n      position: myChart.convertToPixel('grid', dataItem),\n\n      // Make the circle invisible (but mouse event works as normal).\n      invisible: true,\n      // Make the circle draggable.\n      draggable: true,\n      // Give a big z value, which makes the circle cover the symbol\n      // in line series.\n      z: 100,\n      // This is the event handler of dragging, which will be triggered\n      // repeatly while dragging. See more details below.\n      // A util method `echarts.util.curry` is used here to generate a\n      // new function the same as `onPointDragging`, except that the\n      // first parameter is fixed to be the `dataIndex` here.\n      ondrag: echarts.util.curry(onPointDragging, dataIndex)\n    };\n  })\n});\n```\n\nIn the code above, API [convertToPixel](${mainSitePath}api.html#echartsInstance.convertToPixel) is used to convert data to its \"pixel coodinate\", based on which each graphic elements can be rendered on canvas. The term \"pixel coodinate\" means the coordinate is in canvas pixel, whose origin is the top-left of the canvas. In the sentence `myChart.convertToPixel('grid', dataItem)`, the first parameter `'grid'` indicates that `dataItem` should be converted in the first [grid component (cartesian)](${optionPath}grid).\n\n**Notice:** `convertToPixel` should not be called before the first time that `setOption` called. Namely, it can only be used after coordinate systems (grid/polar/...) initialized.\n\nNow points have been made draggable. Then we will bind event listeners on dragging to those points.\n\n```js\n// This function will be called repeatly while dragging.\n// The mission of this function is to update `series.data` based on\n// the new points updated by dragging, and to re-render the line\n// series based on the new data, by which the graphic elements of the\n// line series can be synchronized with dragging.\nfunction onPointDragging(dataIndex) {\n  // Here the `data` is declared in the code block in the beginning\n  // of this article. The `this` refers to the dragged circle.\n  // `this.position` is the current position of the circle.\n  data[dataIndex] = myChart.convertFromPixel('grid', this.position);\n  // Re-render the chart based on the updated `data`.\n  myChart.setOption({\n    series: [\n      {\n        id: 'a',\n        data: data\n      }\n    ]\n  });\n}\n```\n\nIn the code above, API [convertFromPixel](api.html#echartsInstance.convertFromPixel) is used, which is the reversed process of [convertToPixel](api.html#echartsInstance.convertToPixel). `myChart.convertFromPixel('grid', this.position)` converts a pixel coordinate to data item in [grid (cartesian)](${optionPath}grid).\n\nFinally, add those code to make graphic elements responsive to change of canvas size.\n\n```js\nwindow.addEventListener('resize', function() {\n  // Re-calculate the position of each circle and update chart using `setOption`.\n  myChart.setOption({\n    graphic: echarts.util.map(data, function(item, dataIndex) {\n      return {\n        position: myChart.convertToPixel('grid', item)\n      };\n    })\n  });\n});\n```\n\n## Add tooltip component\n\nNow basic functionality have been implemented by parte 1. If we need the data can be displayed realtime when dragging, we can use [tooltip component](${optionPath}tooltip) to do that. Nevertheless, tooltip component has its default \"show/hide rule\", which is not applicable in this case. So we need to customize the \"show/hide rule\" for our case.\n\nAdd these snippets to the code block above:\n\n```js\nmyChart.setOption({\n  // ...,\n  tooltip: {\n    // Means disable default \"show/hide rule\".\n    triggerOn: 'none',\n    formatter: function(params) {\n      return (\n        'X: ' +\n        params.data[0].toFixed(2) +\n        '<br>Y: ' +\n        params.data[1].toFixed(2)\n      );\n    }\n  }\n});\n```\n\n```js\nmyChart.setOption({\n  graphic: data.map(function(item, dataIndex) {\n    return {\n      type: 'circle',\n      // ...,\n      // Customize \"show/hide rule\", show when mouse over, hide when mouse out.\n      onmousemove: echarts.util.curry(showTooltip, dataIndex),\n      onmouseout: echarts.util.curry(hideTooltip, dataIndex)\n    };\n  })\n});\n\nfunction showTooltip(dataIndex) {\n  myChart.dispatchAction({\n    type: 'showTip',\n    seriesIndex: 0,\n    dataIndex: dataIndex\n  });\n}\n\nfunction hideTooltip(dataIndex) {\n  myChart.dispatchAction({\n    type: 'hideTip'\n  });\n}\n```\n\nThe API [dispatchAction](${mainSitePath}/api.html#echartsInstance.dispatchAction) is used to show/hide tooltip content, where actions [showTip](${mainSitePath}/api.html#action.tooltip.showTip) and [hideTip](api.html#action.tooltip.hideTip) is dispatched.\n\n## Full code\n\nFull code is shown as follow:\n\n```js\nimport echarts from 'echarts';\n\nvar symbolSize = 20;\nvar data = [\n  [15, 0],\n  [-50, 10],\n  [-56.5, 20],\n  [-46.5, 30],\n  [-22.1, 40]\n];\nvar myChart = echarts.init(document.getElementById('main'));\nmyChart.setOption({\n  tooltip: {\n    triggerOn: 'none',\n    formatter: function(params) {\n      return (\n        'X: ' +\n        params.data[0].toFixed(2) +\n        '<br />Y: ' +\n        params.data[1].toFixed(2)\n      );\n    }\n  },\n  xAxis: { min: -100, max: 80, type: 'value', axisLine: { onZero: false } },\n  yAxis: { min: -30, max: 60, type: 'value', axisLine: { onZero: false } },\n  series: [\n    { id: 'a', type: 'line', smooth: true, symbolSize: symbolSize, data: data }\n  ]\n});\nmyChart.setOption({\n  graphic: echarts.util.map(data, function(item, dataIndex) {\n    return {\n      type: 'circle',\n      position: myChart.convertToPixel('grid', item),\n      shape: { r: symbolSize / 2 },\n      invisible: true,\n      draggable: true,\n      ondrag: echarts.util.curry(onPointDragging, dataIndex),\n      onmousemove: echarts.util.curry(showTooltip, dataIndex),\n      onmouseout: echarts.util.curry(hideTooltip, dataIndex),\n      z: 100\n    };\n  })\n});\nwindow.addEventListener('resize', function() {\n  myChart.setOption({\n    graphic: echarts.util.map(data, function(item, dataIndex) {\n      return { position: myChart.convertToPixel('grid', item) };\n    })\n  });\n});\nfunction showTooltip(dataIndex) {\n  myChart.dispatchAction({\n    type: 'showTip',\n    seriesIndex: 0,\n    dataIndex: dataIndex\n  });\n}\nfunction hideTooltip(dataIndex) {\n  myChart.dispatchAction({ type: 'hideTip' });\n}\nfunction onPointDragging(dataIndex, dx, dy) {\n  data[dataIndex] = myChart.convertFromPixel('grid', this.position);\n  myChart.setOption({\n    series: [\n      {\n        id: 'a',\n        data: data\n      }\n    ]\n  });\n}\n```\n\nWith knowledge introduced above, more feature can be implemented. For example, [dataZoom component](${optionPath}dataZoom) can be added to cooperate with the cartesian, or we can make a plotting board on coordinate systems. Use your imagination ~\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/97f11de0218aca6a2152.js b/docs/_nuxt/js/97f11de0218aca6a2152.js
new file mode 100644
index 0000000..b5a360b
--- /dev/null
+++ b/docs/_nuxt/js/97f11de0218aca6a2152.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[28],{329:function(e,t,r){"use strict";r.r(t),t.default='# Grouped Bar Chart\n\nA grouped bar chart is also called the gathered bar chart. When more than two data series placed one by one on the same axis, the chart will be grouped bar chart. It is equivalent to a basic bar chart combined with two or more charts.\n\n<iframe max-width="830" width="100%" height="400" \nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xr13FAH54f&v=1">\n</iframe>\n\nA grouped bar chart usually used to compare several groups of data that included the same kind of variables. Same as the bar chart, the length of the bars is proportional related to the categorical data. Every series have an individual color or different saturation of the same color system so that the user can distinguish and compare each set of data.\n\n<iframe max-width="830" width="100%" height="400" \n src="https://gallery.echartsjs.com/view-lite.html?cid=xry8WsXdOW&v=3">\n</iframe>\n\n\n## Suggestion for Using Grouped Bar Chart\n\n1. The difficulty of chart reading will be tremendous if there are many series in one group. Therefore, we suggest you use a stacked bar chart rather than a grouped bar chart in this situation.\n\n2. The gap between the two groups should be bigger than the gap inside the group, to avoid visually incorrect classification.'}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/9c42d2a85c86c4a1d028.js b/docs/_nuxt/js/9c42d2a85c86c4a1d028.js
new file mode 100644
index 0000000..a403c26
--- /dev/null
+++ b/docs/_nuxt/js/9c42d2a85c86c4a1d028.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[87],{388:function(e,n,t){"use strict";t.r(n),n.default="# Apache ECharts 6 升级指南\n\n本指南面向那些希望将 echarts 5.x(以下简称 `v5`)升级到 echarts 6.x(以下简称 `v6`)的用户。大家可以在 [ECharts 6 新特性](${lang}/basics/release-note/v6-feature) 中了解这次`v6`带来了哪些值得升级的新特性。在绝大多数情况下,开发者用不着为这个升级做什么额外的事,因为 echarts 一直尽可能地保持 API 的稳定和向后兼容。但是,`v6` 仍然带来了一些非兼容改动,需要特别关注。此外,在一些情况下,`v6` 提供了更好的 API 用来取代之前的 API,这些被取代的 API 将不再被推荐使用(当然,我们尽量兼容了这些改动)。我们会在这篇文档里尽量详尽得解释这些改动。\n\n## 升级方式\n\n在[官网下载页](${mainSitePath}download.html)可以下载最新版的源码和编译产物。如果使用 npm 安装,升级方式为:\n\n```sh\nnpm install echarts@6\n```\n\n## 非兼容性改变\n\n### 默认主题(theme)\n\n首先是默认主题的改动,`v6` 在配色等主题设计上做了很多的优化来达到更好的视觉效果。如果大家依旧想保留旧版本的颜色,可以使用 [echarts/theme/v5.js](https://github.com/apache/echarts/blob/master/theme/v5.js) 主题文件,并通过以下方式初始化图表:\n\n```js\nimport 'echarts/theme/v5';\nconst chart = echarts.init(document.getElementById('container'), 'v5');\n```\n\n需要注意的事,`v6` 的新样式不仅改变了主题色,也优化调整了部分组件的默认位置和尺寸(例如,默认图例 legend 的位置现在改为在画布底部)。使用 `echarts/theme/v5.js` 后可以恢复到之前的组件默认位置和尺寸。\n\n如果不在意其他的变动,但是想只把默认图表配色恢复到 v5 的默认配色,可以创建一个只定义了 v5 默认配色的主题:\n\n```js\nconst colorPaletteV5 = [\n    '#5470c6',\n    '#91cc75',\n    '#fac858',\n    '#ee6666',\n    '#73c0de',\n    '#3ba272',\n    '#fc8452',\n    '#9a60b4',\n    '#ea7ccc'\n];\necharts.registerTheme('myTheme', { color: colorPaletteV5 });\nconst chart = echarts.init(document.getElementById('container'), 'myTheme');\n```\n\n另外,v5 版本中的 `echarts/src/theme/light.ts` 已迁移至 `echarts/theme/rainbow.js`。\n\n### 标签位置\n\n在直角坐标系中 (`grid` 组件),如果之前坐标轴名称 (`axisName`) 或标签 (`axisLabel`) 溢出画布或发生重叠,升级之后的坐标轴的位置可能会相对之前而言略微偏移,因为默认启用了防止溢出和防止坐标轴名称与标签重叠的机制。在大多数情况下,这些变化肉眼难以察觉。但如果出现不合理的变化,可以通过设置 [grid.outerBoundsMode: 'none'](${mainSitePath}option.html#grid.outerBoundsMode) 选项关闭防溢出机制,或设置 [xAxis/yAxis.nameMoveOverlap: false](${mainSitePath}option.html#xAxis.nameMoveOverlap) 选项关闭防重叠机制。\n\n### 富文本\n\nv6 中 [富文本标签 (label.rich / textStyle.rich)](${mainSitePath}option.html#series-scatter.label.rich) 的这些样式 `fontStyle`、`fontWeight`、`fontSize`、`fontFamily`、`textShadowColor`、`textShadowBlur`、`textShadowOffsetX`、`textShadowOffsetY` 会改为继承 [普通标签 (label / textStyle)](${mainSitePath}option.html#series-scatter.label) 中的同名样式。如需恢复旧行为,可以在 ECharts option 的根级别或 label / textStyle option 中设置 `richInheritPlainLabel: false`。\n\n例如:\n```js\noption = {\n    richInheritPlainLabel: false, // 一般设此即可。\n    xxx1: {\n        // 也可以在此处设置,只控制此 label 。\n        label: {\n            richInheritPlainLabel: false,\n            rich: {/* ... */},\n        }\n    },\n    xxx2: {\n        textStyle: {\n            richInheritPlainLabel: false,\n            rich: {/* ... */},\n        }\n    }\n}\n```\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/a25423249754d69b44dd.js b/docs/_nuxt/js/a25423249754d69b44dd.js
new file mode 100644
index 0000000..83f9369
--- /dev/null
+++ b/docs/_nuxt/js/a25423249754d69b44dd.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[145],{446:function(n,e,o){"use strict";o.r(e),e.default="# 富文本标签\n\nApache ECharts<sup>TM</sup> 中的文本标签从 v3.7 开始支持富文本模式,能够:\n\n- 定制文本块整体的样式(如背景、边框、阴影等)、位置、旋转等。\n- 对文本块中个别片段定义样式(如颜色、字体、高宽、背景、阴影等)、对齐方式等。\n- 在文本中使用图片做小图标或者背景。\n- 特定组合以上的规则,可以做出简单表格、分割线等效果。\n\n开始下面的介绍之前,先说明一下下面会使用的两个名词的含义:\n\n- 文本块(Text Block):文本标签块整体。\n- 文本片段(Text fragment):文本标签块中的部分文本。\n\n如下图示例:\n\n<md-example src=\"doc-example/text-block-fragment\" width=\"450\" height=\"300\"></md-example>\n\n## 文本样式相关的配置项\n\necharts 提供了丰富的文本标签配置项,包括:\n\n- 字体基本样式设置:`fontStyle`、`fontWeight`、`fontSize`、`fontFamily`。\n- 文字颜色:`color`。\n- 文字描边:`textBorderColor`、`textBorderWidth`。\n- 文字阴影:`textShadowColor`、`textShadowBlur`、`textShadowOffsetX`、`textShadowOffsetY`。\n- 文本块或文本片段大小:`lineHeight`、`width`、`height`、`padding`。\n- 文本块或文本片段的对齐:`align`、`verticalAlign`。\n- 文本块或文本片段的边框、背景(颜色或图片):`backgroundColor`、`borderColor`、`borderWidth`、`borderRadius`。\n- 文本块或文本片段的阴影:`shadowColor`、`shadowBlur`、`shadowOffsetX`、`shadowOffsetY`。\n- 文本块的位置和旋转:`position`、`distance`、`rotate`。\n\n可以在各处的 `rich` 属性中定义文本片段样式。例如 [series-bar.label.rich](option.html#series-bar.label.rich)\n\n例如:\n\n```js\nlabelOption = {\n  // 在文本中,可以对部分文本采用 rich 中定义样式。\n  // 这里需要在文本中使用标记符号:\n  // `{styleName|text content text content}` 标记样式名。\n  // 注意,换行仍是使用 '\\n'。\n  formatter: [\n    '{a|这段文本采用样式a}',\n    '{b|这段文本采用样式b}这段用默认样式{x|这段用样式x}'\n  ].join('\\n'),\n\n  // 这里是文本块的样式设置:\n  color: '#333',\n  fontSize: 5,\n  fontFamily: 'Arial',\n  borderWidth: 3,\n  backgroundColor: '#984455',\n  padding: [3, 10, 10, 5],\n  lineHeight: 20,\n\n  // rich 里是文本片段的样式设置:\n  rich: {\n    a: {\n      color: 'red',\n      lineHeight: 10\n    },\n    b: {\n      backgroundColor: {\n        image: 'xxx/xxx.jpg'\n      },\n      height: 40\n    },\n    x: {\n      fontSize: 18,\n      fontFamily: 'Microsoft YaHei',\n      borderColor: '#449933',\n      borderRadius: 4\n    }\n  }\n};\n```\n\n> 注意:如果不定义 `rich`,不能指定文字块的 `width` 和 `height`。\n\n## 文本、文本框、文本片段的基本样式和装饰\n\n每个文本可以设置基本的字体样式:`fontStyle`、`fontWeight`、`fontSize`、`fontFamily`。\n\n可以设置文字的颜色 `color` 和边框的颜色 `textBorderColor`、`textBorderWidth`。\n\n文本框可以设置边框和背景的样式:`borderColor`、`borderWidth`、`backgroundColor`、`padding`。\n\n文本片段也可以设置边框和背景的样式:`borderColor`、`borderWidth`、`backgroundColor`、`padding`。\n\n例如:\n\n```js live\noption = {\n  series: [\n    {\n      type: 'scatter',\n      symbolSize: 1,\n      data: [\n        {\n          value: [0, 0],\n          label: {\n            show: true,\n            formatter: [\n              'Plain text',\n              '{textBorder|textBorderColor + textBorderWidth}',\n              '{textShadow|textShadowColor + textShadowBlur + textShadowOffsetX + textShadowOffsetY}',\n              '{bg|backgroundColor + borderRadius + padding}',\n              '{border|borderColor + borderWidth + borderRadius + padding}',\n              '{shadow|shadowColor + shadowBlur + shadowOffsetX + shadowOffsetY}'\n            ].join('\\n'),\n            backgroundColor: '#eee',\n            borderColor: '#333',\n            borderWidth: 2,\n            borderRadius: 5,\n            padding: 10,\n            color: '#000',\n            fontSize: 14,\n            shadowBlur: 3,\n            shadowColor: '#888',\n            shadowOffsetX: 0,\n            shadowOffsetY: 3,\n            lineHeight: 30,\n            rich: {\n              textBorder: {\n                fontSize: 20,\n                textBorderColor: '#000',\n                textBorderWidth: 3,\n                color: '#fff'\n              },\n              textShadow: {\n                fontSize: 16,\n                textShadowBlur: 5,\n                textShadowColor: '#000',\n                textShadowOffsetX: 3,\n                textShadowOffsetY: 3,\n                color: '#fff'\n              },\n              bg: {\n                backgroundColor: '#339911',\n                color: '#fff',\n                borderRadius: 15,\n                padding: 5\n              },\n              border: {\n                color: '#000',\n                borderColor: '#449911',\n                borderWidth: 1,\n                borderRadius: 3,\n                padding: 5\n              },\n              shadow: {\n                backgroundColor: '#992233',\n                padding: 5,\n                color: '#fff',\n                shadowBlur: 5,\n                shadowColor: '#336699',\n                shadowOffsetX: 6,\n                shadowOffsetY: 6\n              }\n            }\n          }\n        }\n      ]\n    }\n  ],\n  xAxis: {\n    show: false,\n    min: -1,\n    max: 1\n  },\n  yAxis: {\n    show: false,\n    min: -1,\n    max: 1\n  }\n};\n```\n\n## 标签的位置\n\n对于折线图、柱状图、散点图等,均可以使用 `label` 来设置标签。标签的相对于图形元素的位置,一般使用 [label.position](option.html#series-scatter.label.position)、[label.distance](option.html#series-scatter.label.distance) 来配置。\n\n试试在下面例子中修改`position`和`distance` 属性:\n\n```js live\noption = {\n  series: [\n    {\n      type: 'scatter',\n      symbolSize: 160,\n      symbol: 'roundRect',\n      data: [[1, 1]],\n      label: {\n        // 修改 position 和 distance 的值试试\n        // 支持:'left', 'right', 'top', 'bottom', 'inside', 'insideTop', 'insideLeft', 'insideRight', 'insideBottom', 'insideTopLeft', 'insideTopRight', 'insideBottomLeft', 'insideBottomRight'\n        position: 'top',\n        distance: 10,\n\n        show: true,\n        formatter: ['Label Text'].join('\\n'),\n        backgroundColor: '#eee',\n        borderColor: '#555',\n        borderWidth: 2,\n        borderRadius: 5,\n        padding: 10,\n        fontSize: 18,\n        shadowBlur: 3,\n        shadowColor: '#888',\n        shadowOffsetX: 0,\n        shadowOffsetY: 3,\n        textBorderColor: '#000',\n        textBorderWidth: 3,\n        color: '#fff'\n      }\n    }\n  ],\n  xAxis: {\n    max: 2\n  },\n  yAxis: {\n    max: 2\n  }\n};\n```\n\n> 注意:`position` 在不同的图中可取值有所不同。`distance` 并不是在每个图中都支持。详情请参见 [option 文档](${mainSitePath}option.html)。\n\n## 标签的旋转\n\n某些图中,为了能有足够长的空间来显示标签,需要对标签进行旋转。例如:\n\n```js live {layout: 'lr'}\nconst labelOption = {\n  show: true,\n  rotate: 90,\n  formatter: '{c}  {name|{a}}',\n  fontSize: 16,\n  rich: {\n    name: {}\n  }\n};\n\noption = {\n  xAxis: [\n    {\n      type: 'category',\n      data: ['2012', '2013', '2014', '2015', '2016']\n    }\n  ],\n  yAxis: [\n    {\n      type: 'value'\n    }\n  ],\n  series: [\n    {\n      name: 'Forest',\n      type: 'bar',\n      barGap: 0,\n      label: labelOption,\n      emphasis: {\n        focus: 'series'\n      },\n      data: [320, 332, 301, 334, 390]\n    },\n    {\n      name: 'Steppe',\n      type: 'bar',\n      label: labelOption,\n      emphasis: {\n        focus: 'series'\n      },\n      data: [220, 182, 191, 234, 290]\n    }\n  ]\n};\n```\n\n这种场景下,可以结合 [align](option.html#series-bar.label.align) 和 [verticalAlign](option.html#series-bar.label.verticalAlign) 来调整标签位置。\n\n注意,逻辑是,先使用 `align` 和 `verticalAlign` 定位,再旋转。\n\n## 文本片段的排版和对齐\n\n关于排版方式,每个文本片段,可以想象成 CSS 中的 `inline-block`,在文档流中按行放置。\n\n每个文本片段的内容盒尺寸(`content box size`),默认是根据文字大小决定的。但是,也可以设置 `width`、`height` 来强制指定,虽然一般不会这么做(参见下文)。文本片段的边框盒尺寸(`border box size`),由上述本身尺寸,加上文本片段的 `padding` 来得到。\n\n只有 `'\\n'` 是换行符,能导致换行。\n\n一行内,会有多个文本片段。每行的实际高度,由 `lineHeight` 最大的文本片段决定。文本片段的 `lineHeight` 可直接在 `rich` 中指定,也可以在 `rich` 的父层级中统一指定而采用到 `rich` 的所有项中,如果都不指定,则取文本片段的边框盒尺寸(`border box size`)。\n\n在一行的 `lineHeight` 被决定后,一行内,文本片段的竖直位置,由文本片段的 `verticalAlign` 来指定(这里和 CSS 中的规则稍有不同):\n\n- `'bottom'`:文本片段的盒的底边贴住行底。\n- `'top'`:文本片段的盒的顶边贴住行顶。\n- `'middle'`:居行中。\n\n文本块的宽度,可以直接由文本块的 `width` 指定,否则,由最长的行决定。宽度决定后,在一行中进行文本片段的放置。文本片段的 `align` 决定了文本片段在行中的水平位置:\n\n- 首先,从左向右连续紧靠放置 `align` 为 `'left'` 的文本片段盒。\n- 然后,从右向左连续紧靠放置 `align` 为 `'right'` 的文本片段盒。\n- 最后,剩余的没处理的文本片段盒,紧贴着,在中间剩余的区域中居中放置。\n\n关于文字在文本片段盒中的位置:\n\n- 如果 `align` 为 `'center'`,则文字在文本片段盒中是居中的。\n- 如果 `align` 为 `'left'`,则文字在文本片段盒中是居左的。\n- 如果 `align` 为 `'right'`,则文字在文本片段盒中是居右的。\n\n## 特殊效果:图标、分割线、标题块、简单表格\n\n看下面的例子:\n\n```js live {layout: 'lr'}\noption = {\n  series: [\n    {\n      type: 'scatter',\n      data: [\n        {\n          value: [0, 0],\n          label: {\n            formatter: [\n              '{tc|Center Title}{titleBg|}',\n              '  Content text xxxxxxxx {sunny|} xxxxxxxx {cloudy|}  ',\n              '{hr|}',\n              '  xxxxx {showers|} xxxxxxxx  xxxxxxxxx  '\n            ].join('\\n'),\n            rich: {\n              titleBg: {\n                align: 'right'\n              }\n            }\n          }\n        },\n        {\n          value: [0, 1],\n          label: {\n            formatter: [\n              '{titleBg|Left Title}',\n              '  Content text xxxxxxxx {sunny|} xxxxxxxx {cloudy|}  ',\n              '{hr|}',\n              '  xxxxx {showers|} xxxxxxxx  xxxxxxxxx  '\n            ].join('\\n')\n          }\n        },\n        {\n          value: [0, 2],\n          label: {\n            formatter: [\n              '{titleBg|Right Title}',\n              '  Content text xxxxxxxx {sunny|} xxxxxxxx {cloudy|}  ',\n              '{hr|}',\n              '  xxxxx {showers|} xxxxxxxx  xxxxxxxxx  '\n            ].join('\\n'),\n            rich: {\n              titleBg: {\n                align: 'right'\n              }\n            }\n          }\n        }\n      ],\n      symbolSize: 1,\n      label: {\n        show: true,\n        backgroundColor: '#ddd',\n        borderColor: '#555',\n        borderWidth: 1,\n        borderRadius: 5,\n        color: '#000',\n        fontSize: 14,\n        rich: {\n          titleBg: {\n            backgroundColor: '#000',\n            height: 30,\n            borderRadius: [5, 5, 0, 0],\n            padding: [0, 10, 0, 10],\n            width: '100%',\n            color: '#eee'\n          },\n          tc: {\n            align: 'center',\n            color: '#eee'\n          },\n          hr: {\n            borderColor: '#777',\n            width: '100%',\n            borderWidth: 0.5,\n            height: 0\n          },\n          sunny: {\n            height: 30,\n            align: 'left',\n            backgroundColor: {\n              image:\n                'https://echarts.apache.org/examples/data/asset/img/weather/sunny_128.png'\n            }\n          },\n          cloudy: {\n            height: 30,\n            align: 'left',\n            backgroundColor: {\n              image:\n                'https://echarts.apache.org/examples/data/asset/img/weather/cloudy_128.png'\n            }\n          },\n          showers: {\n            height: 30,\n            align: 'left',\n            backgroundColor: {\n              image:\n                'https://echarts.apache.org/examples/data/asset/img/weather/showers_128.png'\n            }\n          }\n        }\n      }\n    }\n  ],\n  xAxis: {\n    show: false,\n    min: -1,\n    max: 1\n  },\n  yAxis: {\n    show: false,\n    min: 0,\n    max: 2,\n    inverse: true\n  }\n};\n```\n\n文本片段的 `backgroundColor` 可以指定为图片后,就可以在文本中使用图标了:\n\n```js\nlabelOption = {\n  rich: {\n    Sunny: {\n      // 这样设定 backgroundColor 就可以是图片了。\n      backgroundColor: {\n        image: './data/asset/img/weather/sunny_128.png'\n      },\n      // 可以只指定图片的高度,从而图片的宽度根据图片的长宽比自动得到。\n      height: 30\n    }\n  }\n};\n```\n\n分割线实际是用 border 实现的:\n\n```js\nlabelOption = {\n  rich: {\n    hr: {\n      borderColor: '#777',\n      // 这里把 width 设置为 '100%',表示分割线的长度充满文本块。\n      // 注意,这里是文本块内容盒(content box)的 100%,而不包含 padding。\n      // 虽然这和 CSS 相关的定义有所不同,但是在这类场景中更加方便。\n      width: '100%',\n      borderWidth: 0.5,\n      height: 0\n    }\n  }\n};\n```\n\n标题块是使用 `backgroundColor` 实现的:\n\n```js\nlabelOption = {\n  // 标题文字居左\n  formatter: '{titleBg|Left Title}',\n  rich: {\n    titleBg: {\n      backgroundColor: '#000',\n      height: 30,\n      borderRadius: [5, 5, 0, 0],\n      padding: [0, 10, 0, 10],\n      width: '100%',\n      color: '#eee'\n    }\n  }\n};\n\n// 标题文字居中。\n// 这个实现有些 tricky,但是,能够不引入更复杂的排版规则而实现这个效果。\nlabelOption = {\n  formatter: '{tc|Center Title}{titleBg|}',\n  rich: {\n    titleBg: {\n      align: 'right',\n      backgroundColor: '#000',\n      height: 30,\n      borderRadius: [5, 5, 0, 0],\n      padding: [0, 10, 0, 10],\n      width: '100%',\n      color: '#eee'\n    }\n  }\n};\n```\n\n简单表格的设定,其实就是给不同行上纵向对应的文本片段设定同样的宽度就可以了。见 [该例子](${exampleEditorPath}pie-rich-text)\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/a3a56a08df179c32c9aa.js b/docs/_nuxt/js/a3a56a08df179c32c9aa.js
new file mode 100644
index 0000000..a3967a5
--- /dev/null
+++ b/docs/_nuxt/js/a3a56a08df179c32c9aa.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[41],{342:function(n,w,o){"use strict";o.r(w),w.default=""}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/a43901784a9ac0405e7c.js b/docs/_nuxt/js/a43901784a9ac0405e7c.js
new file mode 100644
index 0000000..57ff567
--- /dev/null
+++ b/docs/_nuxt/js/a43901784a9ac0405e7c.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[125],{426:function(n,t,c){"use strict";c.r(t),t.default="# 堆叠柱状图\n\n有时候,我们不仅希望知道不同系列各自的数值,还希望知道它们之和的变化,这时候通常使用堆叠柱状图来表现。顾名思义,堆叠柱状图就是一个系列的数值“堆叠”在另一个系列上,因而从他们的高度总和就能表达总量的变化。\n\n使用 EChart 实现堆叠柱状图的方法非常简单,只需要给一个系列的 `stack` 值设置一个字符串类型的值,这一个值表示该系列堆叠的类别。也就是说,拥有同样 `stack` 值的系列将堆叠在一组。\n\n```js live\noption = {\n  xAxis: {\n    data: ['A', 'B', 'C', 'D', 'E']\n  },\n  yAxis: {},\n  series: [\n    {\n      data: [10, 22, 28, 43, 49],\n      type: 'bar',\n      stack: 'x'\n    },\n    {\n      data: [5, 4, 3, 5, 10],\n      type: 'bar',\n      stack: 'x'\n    }\n  ]\n};\n```\n\n在这个例子中,第二个系列所在的位置是在第一个系列的位置的基础上,上升了第二个系列数值对应的高度。因此,从第二个系列的位置,就能看出这两者总和的变化趋势。\n\n> `stack` 的取值用来表明哪些系列将被堆叠在一起,理论上只要取值相同即可,具体的取值并没有什么区别。但在实际的应用中,我们建议使用一些有意义的字符串方便阅读。\n>\n> 比如,在一个统计男女人数的图中,有四个系列,“成年男性”和“男孩”系列需要进行堆叠,“成年女性”和“女孩”系列需要堆叠。这时,这两组的的 `stack` 值就建议分别设为 `'男'` 和 `'女'`。虽然使用 `'a'` 和 `'b'` 这样没有意义的字符串也能实现同样的效果,但是代码的可阅读性就差了。\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/a4651b3ffcd3025d6bd6.js b/docs/_nuxt/js/a4651b3ffcd3025d6bd6.js
new file mode 100644
index 0000000..5f04c9e
--- /dev/null
+++ b/docs/_nuxt/js/a4651b3ffcd3025d6bd6.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[17],{318:function(e,t,n){"use strict";n.r(t),t.default='# New features in ECharts 5\n\nData visualization has come a long way in the last few years. Developers no longer expect visualization products to be simple chart creation tools, but have more advanced needs in terms of interaction, performance, data processing, and more.\n\nApache ECharts has always been committed to making it easier for developers to create flexible and rich visualizations. In the latest release of Apache ECharts 5, we have focused on enhancing the storytelling of charts, allowing developers to tell the story behind the data in a simpler way.\n\n<img data-src="images/feature-v5/echarts-5-en.png" width="800px" />\n\n"The core of Apache ECharts 5 is "Show, do not tell", which is a comprehensive upgrade of five topics and 15 features around the stroy telling of visualizations, allowing charts to better tell the story behind the data. It helps developers to create visualizations that meet the needs of various scenarios more easily.\n\n## Storytelling\n\nThe importance of animation to human cognition cannot be overstated. In our previous work, we used initialization animations and transition animations to help users understand the connection between data transformations, making the appearance of charts and transformations seem less rigid. This time, we have even enhanced our animation capabilities, even more significantly. We hope to further exploit the role of animation to help users\' cognition, and help them understand the story behind the chart more easily with the dynamic stroy function of the chart.\n\n#### Bar/Line Racing\n\nApache ECharts 5 adds support for dynamically sorted bar-racing and dynamically sorted line-racing charts to help developers easily create time-series charts that show changes in data over time and tell the evolution of data.\n\n<md-example src="bar-race-country" width="700" height="400" />\n<md-example src="line-race" width="700" height="400" />\n\nThe dynamic sorting chart shows the derivation of different categories in the ranking over time. The developer can enable this effect in ECharts with a few simple configuration code.\n\n#### Custom Series Animation\n\nIn addition to dynamic sorting charts, Apache ECharts 5 provides even richer and more powerful animations in the custom series, supporting interpolation animations for label value text, transition animations for morph, combine, separate, and other effects of graphics.\n\nImagine what amazing visualizations you can create with these dynamic effects!\n\n## Visual Design\n\nThe role of visual design is not only to make the chart look better, but more importantly, a design that conforms to the principles of visualization can help users understand more quickly what the chart is trying to say and eliminate as much misunderstanding as possible from poor design.\n\n#### Overall Design\n\nWe have found that a large percentage of developers use the default theme style for ECharts, so it is important to have an elegant default theme design. In Apache ECharts 5, we redesigned the default theme style, optimizing it for different charts and components. For example, we took into account factors such as differentiation between colors, contrast with background colors, and harmony with adjacent colors, and ensured that people with color blindness could clearly distinguish data.\n\n<img data-src="images/feature-v5/theme-color.png" width="400px" />\n\nLet\'s look at the new version of the light and dark theme styles using the most commonly used bar chart as an example.\n\n<img data-src="images/feature-v5/new-theme-light.png" width="500px" />\n<img data-src="images/feature-v5/new-theme-dark.png" width="500px" />\n\nFor the line chart, there is an intuitive style change that the axis line and axis tick of the y axis (`value` axis) are hidden by default. Look at the following image, the left one is the default style of the line chart in `v4` and the right one is the new style in `v5`. In fact, we already can figure out the values just by the split lines, so we hope to hide unnecessary elements to deliver the chart message in a clearer way.\n\n<img data-src="images/feature-v5/yAxis-default-style-change.webp" width="500px" />\n\nFor the data area zoom, timeline and other interactive components, we also designed a new style and provide a better interactive experience:\n\n<img data-src="images/feature-v5/dataZoom.png" width="500px" />\n\n<img data-src="images/feature-v5/timeline.png" width="500px" />\n\n#### Label\n\nLabels are one of the core elements of a chart, and clear and unambiguous labels help users to have a more accurate understanding of the data. Apache ECharts 5 provides a variety of new labeling features that allow dense labels to be clearly displayed and accurately represented.\n\nApache ECharts 5 can be enabled to automatically hide overlapping labels through a configuration item. For labels that exceed the display area, you can choose to automatically truncate or line break them. Dense pie chart labels now have a more aesthetically pleasing automatic layout.\n\nThese features can help avoid text that is too dense and affects readability. And, no additional code needs to be written by the developer for them to take effect by default, greatly simplifying the development cost for developers.\n\nWe also provide several configuration options to allow developers to actively control the layout strategy of tabs, such as tab dragging, overall display at the edge of the canvas, connecting with guide lines and graphical elements, and still linking to highlight the associated relationships.\n\nThe new label feature allows you to have very clear label presentation even in a confined space mobile:\n\n<img data-src="images/feature-v5/pie-label.png" width="400px" />\n\n#### Time Axis\n\nApache ECharts 5 brings a time axis suitable for expressing timestamp scales. The default design of the time axis highlights important information more prominently and provides more flexible customization capabilities, allowing developers to tailor the time axis\'s label content to different needs.\n\nFirst of all, the time axis is no longer split absolutely evenly as before, but instead selects more meaningful points like year, month, day, and whole point to display, and can show different levels of scales at the same time. The `formatter` of labels supports templates for time (e.g. `{yyyy}-{MM}-{dd}`), and different `formatter` can be specified for labels with different time granularity, which can be combined with rich text labels to create eye-catching and diverse time effects.\n\nThe display of the time scale at different dataZoom granularities.\n\n<img data-src="images/feature-v5/time-axis.png" width="600px" />\n\n<img data-src="images/feature-v5/time-axis-2.png" width="600px" />\n\n#### Tooltip\n\nTooltip is one of the most commonly used visualization components to help users interactively understand the details of data. In Apache ECharts 5, we have optimized the style of the tooltip, making the default display of the tooltip elegant and clear by adjusting the font style, color, arrow pointing to the graph, border color following the graph color, and other features. The rendering logic of rich text has been improved to ensure that the display is consistent with the HTML way, allowing users to choose different technical solutions to achieve the same effect in different scenarios.\n\n<img data-src="images/feature-v5/new-tooltip.png" width="400px" />\n<img data-src="images/feature-v5/new-tooltip-2.png" width="400px" />\n\nIn addition to this, we have also added the ability to sort the list in the tip box by value size or category order this time.\n\n#### Gauge\n\nWe have seen a lot of cool gauge charts created by community users, but the way they are configured is often complex and tricky. Therefore, we have upgraded the gauge to support image or vector path drawing pointers, anchor configurations, progress bars, rounded corner effects, and more.\n\nDifferent styles of gauge pointers.\n\n<img data-src="images/feature-v5/gauge-pointer.png" width="600px" />\n\nThese upgrades not only allow developers to achieve cool effects with simpler configuration items, but also bring richer customization capabilities.\n\n<md-example src="gauge-clock" width="600" height="600" />\n\n#### Round Corner\n\nApache ECharts 5 supports round corner for pie charts, sunburst charts, and treemap charts. Don\'t underestimate the simplicity of the rounded corners configuration, but combine them with other effects to create a more personalized visualization.\n\n<md-example src="sunburst-borderRadius" width="400" height="400" />\n\n## Interactivity\n\nThe interactivity of the visualization helps users explore the work and deepen their understanding of the main idea of the diagram.\n\n#### Multi-State\n\nIn ECharts 4, there were two interactive states, `emphasis` and `normal`, graph will enter the `emphasis` state when the mouse hovered to distinguish the data.\n\nThis time in Apache ECharts 5, we have added a new effect of **blur** other non-related elements to the original mouse hover highlighting, so that the target data can be focused.\n\nFor example, in this [bar chart](https://echarts.apache.org/examples/en/editor.html?c=bar-y-category-stack) example, when the mouse hovers over a series, other non-related series will fade out, thus highlighting more clearly the comparison of data in the focused series. of data in the comparison. On diagrams with more complex data structures such as relationship, tree, sunburst, sankey, etc., it is also possible to see the connections between data by fading out non-related elements. Also, colors, shadows, and other styles that can be set in `emphasis` can now be set in `blur`.\n\nIn addition, we\'ve added **click to select** to all series, an interaction that was previously only available in a few series such as pie charts and maps, allowing developers to set it to single or multiple selection mode, and to listen to the `selectchanged` event to get all the selected shapes for further processing. As with `emphasis` and `blur`, the selection style can also be configured in `select`.\n\n#### Performance improvements\n\n##### Dirty Rectangle Rendering\n\nApache ECharts 5 has new support for dirty rectangle rendering to address performance bottlenecks in large scenes with only local changes. When using the Canvas renderer, the dirty rectangle rendering technique detects and updates only the parts of the view that have changed, rather than any changes causing a complete redraw of the canvas. This can help improve rendering frame rates in some special scenarios, such as scenes where the mouse frequently triggers some graphical highlighting many times. In the past for such scenes, additional Canvas layers were used to optimize performance, but this approach is not universal for all scenes and does not work well for complex styles. Dirty Rectangle rendering does a good job of satisfying both performance and display correctness.\n\nA visual demonstration of a dirty rectangle, with the red boxed area redrawn for the frame.\n\n<img data-src="images/feature-v5/dirty-rect.gif" width="500px" />\n\nYou can see the effect by enable dirty rectangle optimization on the new example page.\n\n##### Line Chart Performance Optimization for Real-Time Time-Series Data\n\nIn addition, the performance of line graphs with large amounts of data has also seen a significant performance improvement. We often encounter the need for high-performance plotting of large amounts of real-time time-series data, which will be updated every hundreds or tens of milliseconds.\n\nApache ECharts 5 deeply optimizes CPU consumption, memory usage, and initialization time in these scenarios, enabling real-time updates (less than 30ms per update) for millions of data, and even rendering within 1s for ten millions of data, with low memory usage and smooth tooltip interactions.\n\n## Development Experience\n\nWe want such a powerful visualization tool to be used by more developers in a simpler way, so the developer experience is also a very important aspect for us.\n\n#### Datasets\n\nECharts 5 enhances the data transformation capabilities of datasets, allowing developers to implement common data processing such as filtering, sorting, aggregating, histogram, simple clustering, regression, etc. in a simple way. Developers can use these functions in a uniform and declarative way, and can easily implement common data operations.\n\n#### Internationalization\n\nThe original internationalization implementation of ECharts takes the form of different distribution files packaged according to different language parameters. In this way, the dynamic language and main code are bound together, and the only way to switch languages when using ECharts is to reload different language versions of ECharts distributions.\n\nTherefore, starting with Apache ECharts 5, the dynamic language is separated from the main code. To switch languages, you only need to load the corresponding language, use the `registerLocale` function to mount the language object in a similar way to mount the theme, and then reinitialize it to complete the language switch.\n\n```js\n// import the lang object and set when init\necharts.registerLocale(\'DE\', lang);\necharts.init(DomElement, null, {\n  locale: \'DE\'\n});\n```\n\n#### TypeScript Refactoring\n\nIn order to continue to refactor and develop new features more safely and efficiently, we started the development of Apache ECharts 5 by rewriting the code using TypeScript. The strong typing brought by TypeScript gave us the confidence to refactor the code drastically to achieve more exciting features during the development of ECharts 5.\n\nFor developers, we can also generate better and more code-compliant `DTS` type description files directly from TypeScript code. Until now, ECharts type description files have been maintained by community developers and published to [DefinitelyTyped](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/echarts), which is a lot of work, so thanks for your contribution.\n\nIn addition, if a developer\'s component is introduced on-demand, we provide a `ComposeOption` type method that can combine a configuration item type that contains only the introduced components, which can bring stricter type checking and help you detect unintroduced component types in advance.\n\n## Accessibility\n\nApache ECharts has always taken accessibility design seriously, and we want to make the information conveyed by charts equally to be accessed. We also want to make this possible for chart developers at a very low development cost, thus making developers more willing to support the accessibility.\n\nIn the last major release, we supported automatic intelligent generation of chart descriptions based on different chart types and data, making it very easy for developers to support DOM description information for charts. In ECharts 5, we have also made more accessibility improvements to help people with visual impairments better understand the chart content.\n\n#### Theme Colors\n\nWe took accessibility into account when designing the new default theme, and we repeatedly tested the brightness and color values of the colors to help accessibility users clearly identify the chart data.\n\nMoreover, for developers with further accessibility needs, we also provide special high-contrast themes to further differentiate the data with higher contrast colors.\n\n#### Decal Patterns\n\nECharts 5 also provides a new feature of decals to help users further differentiate data by using patterns to assist with color representation.\n\n<md-example src="doc-example/aria-decal-simple" width="600" height="350" />\n\nIn addition, decal patterns can also help in some other scenarios, such as: helping to better distinguish data in printed materials like newspapers and books that have only a single color or very few colors; using graphical elements to facilitate a more intuitive understanding of the data by the user.\n\n<md-example src="doc-example/aria-decal-newspaper" width="600" height="350" />\n\n## Summary\n\nIn addition to the features described above, Apache ECharts has been improved in a very large number of details to help developers more easily create charts that good by default, are flexible in configuration, and tell the story behind the data with charts.\n\nThank you to all the developers who have used ECharts, and even participated in community contributions, for making Apache ECharts 5 possible. We\'ll be working on future developments with even more enthusiasm, and we\'ll see you all in 6 with even more enthusiasm!\n'}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/a742e0550564ed2f9bec.js b/docs/_nuxt/js/a742e0550564ed2f9bec.js
new file mode 100644
index 0000000..9b77d6b
--- /dev/null
+++ b/docs/_nuxt/js/a742e0550564ed2f9bec.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[94],{395:function(n,t,h){"use strict";h.r(t),t.default='# 基础柱状图\n\n柱状图是最常见的图表类型,通过使用水平或垂直方向 \b 柱子的高度来显示不同类别的数值,其中柱状图的一个轴显示比较的类别,而另一个轴代表对应的数值。\n\n<iframe max-width="830" width="100%" height="400"\nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xS18jqmX4f">\n</iframe>\n\n纵向柱状图的柱是垂直方向的,横向柱状图的柱是水平方向的,又称条形图。条形图与横向柱状图表达数据的形式是一样的,不过,当图表的数据标签很长或者有超过 10 个项目进行比较时,横向柱状图会无法完全显示完标签,或者只能倾斜展示,影响美观。因此当数据标签过长时,选择用条形图可以获得更好的展示效果。\n\n<iframe max-width="830" width="100%" height="400"\nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xByXtUE7Vz">\n</iframe>\n\n## 柱状图的使用建议\n\n1、避免使用太多颜色,一般情况一个柱状图(条形图)表示一组相同的度量,所以建议使用相同的颜色或同一颜色的不同色调。如果需要强调某个数据时,可以使用对比色或者变化色调来突出显示有意义的数据点。\n\n<iframe max-width="830" width="100%" height="400"\nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xByYRlN7Ef">\n</iframe>\n\n2、柱状图柱子间的宽度和间隙要适当。当柱子太窄时,用户的视觉可能会集中在两个柱中间的负空间,而这里是不承载任何数据的。合理的宽度和间隙应该是 \b 单个柱子的宽度不小于柱间间隙的两倍。\n\n3、Y 轴数据应该从 0 基线开始,以恰当地反映数值。如果展示的是被截断的数据,那很可能会误导观众做出错误的判断。例如左侧图表显示出的数据结果是 2017 年收入是 2014 年收入的五倍,而实际上如右侧图表完整显示的数据表明 2017 年收入相对于 2014 年其实只提升了 25%。\n\n<img max-width="830" width="100%" height="100%"\nsrc="images/design/bar/bar03.jpg">\n</img>\n\n4、对多个数据系列排序时,如果不涉及到日期等特定数据,最好能符合一定的逻辑用直观的方式引导用户更好地查看数据。可以通过升序或降序排布,例如按照数量从多到少来对数据进行排序,也可以按照字母顺序等来排布。总之,按照逻辑排序可以一定程度上引导人们更好地阅读数据。\n\n<iframe max-width="830" width="100%" height="400"\nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xHJhWhGm4M">\n</iframe>\n\n5、一般情况下不建议使用三维柱状图,与三维饼图一样,对于数据传达不太精准,甚至还不得不猜测哪个才是数据的顶端。\n\n<img max-width="830" width="100%" height="100%"\nsrc="images/design/bar/bar04.jpg">\n</img>\n'}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/aa789a4d72f8e70a662e.js b/docs/_nuxt/js/aa789a4d72f8e70a662e.js
new file mode 100644
index 0000000..07c2dba
--- /dev/null
+++ b/docs/_nuxt/js/aa789a4d72f8e70a662e.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[46],{347:function(n,w,o){"use strict";o.r(w),w.default=""}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/b01942efec5173e9a13d.js b/docs/_nuxt/js/b01942efec5173e9a13d.js
new file mode 100644
index 0000000..d49e013
--- /dev/null
+++ b/docs/_nuxt/js/b01942efec5173e9a13d.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[68],{369:function(e,n,t){"use strict";t.r(n),n.default="# Server-Side Rendering\n\nNormally, Apache ECharts<sup>TM</sup> renders the chart dynamically in the browser and will re-render after user interactions. However, there are specific scenarios where we also need to render charts on the server side:\n\n- Reducing the FCP time and ensuring the chart is displayed immediately.\n- Embedding charts in the environments such as Markdown, PDF that do not support scripts.\n\nIn these scenarios, ECharts offers both SVG and Canvas server-side rendering (SSR) solutions.\n\n| Solution           | Rendering Result  | Pros              |\n| ----------------- | ----------------- | ----------------- |\n| Server-Side SVG Rendering     | SVG string | Smaller than Canvas images;<br>Vector SVG images are not blurred;<br>Support for initial animation |\n| Server-Side Canvas Rendering  | Image       | The image format is available for a wider range of scenarios, and is optional for scenarios that do not support SVG |\n\nIn general, the server-side SVG rendering solution should be preferred, or if SVG is not applicable, the Canvas rendering solution can be considered.\n\nServer-side rendering also has some limitations, especially some operations related to interaction cannot be supported. Therefore, if you have interaction requirements, you can refer to \"Server-Side Rendering with Hydration\" below.\n\n## Server-Side Rendering\n\n### Server-Side SVG Rendering\n\n> Version Update:\n>\n> - 5.3.0: Introduced a new zero-dependency server-side string based SVG rendering solution, and support for initial animation\n> - 5.5.0: Added a lightweight client runtime, which allows some interaction without the need to load the full ECharts on the client side\n\nWe introduced a new zero-dependency server-side string based SVG rendering solution in 5.3.0.\n\n```ts\n// Server-side code\nconst echarts = require('echarts');\n\n// In SSR mode the first container parameter is not required\nlet chart = echarts.init(null, null, {\n  renderer: 'svg', // must use SVG rendering mode\n  ssr: true, // enable SSR\n  width: 400, // need to specify height and width\n  height: 300\n});\n\n// use setOption as normal\nchart.setOption({\n  //...\n});\n\n// Output a string\nconst svgStr = chart.renderToSVGString();\n\n// If chart is no longer useful, consider disposing it to release memory.\nchart.dispose();\nchart = null;\n```\n\nThe overall code structure is the almost same as in the browser, starting with `init` to initialise a chart example and then setting the configuration items for the chart via `setOption`. However, the parameters passed to `init` will be different from those used in the browser.\n\n- Firstly, since the SVG is rendered on the server side is string based, we don't need a container to display the rendered content, so we can pass `null` or `undefined` as the first `container` parameter in the `init`.\n- Then in the third parameter of `init` we need to tell ECharts that we need to enable server-side rendering mode by specifying `ssr: true` in the display. Then ECharts will know it needs to disable the animation loop and event modules.\n- We also have to specify the `height` and `width` of the chart, so if your chart size needs to be responsive to the container, you may need to think about whether server-side rendering is appropriate for your scenario.\n\nIn the browser ECharts automatically renders the result to the page after `setOption` and then determines at each frame if there is an animation that needs to be redrawn, but in Node.js we don't do this after setting `ssr: true`. Instead, we use `renderToSVGString` to render the current chart to an SVG string, which can then be returned to the front-end via HTTP Response or saved to a local file.\n\nResponse to the browser (using Express.js as example):\n\n```ts\nres.writeHead(200, {\n  'Content-Type': 'application/xml'\n});\nres.write(svgStr); // svgStr is the result of chart.renderToSVGString()\nres.end();\n```\n\nOr save to a local file\n\n```ts\nfs.writeFile('bar.svg', svgStr, 'utf-8');\n```\n\n#### Animations in Server-Side Rendering\n\nAs you can see in the example above, even using server-side rendering, ECharts can still provide animation effects, which are achieved by embedding CSS animations in the output SVG string. There is no need for additional JavaScript to play the animation.\n\nHowever, the limitations of CSS animation prevent us from implementing more flexible animations in server-side rendering, such as bar chart racing animations, label animations, and special effects animations in the `lines` series. Animation of some of the series, such as the `pie`, have been specially optimised for server-side rendering.\n\nIf you don't want this animation, you can turn it off by setting `animation: false` when `setOption`.\n\n```ts\nsetOption({\n  animation: false\n});\n```\n\n### Server-Side Canvas Rendering\n\nIf you want the output to be an image rather than an SVG string, or if you're still using an older version, we'd recommend using [node-canvas](https://github.com/Automattic/node-canvas) for server-side rendering, [node-canvas](https://github.com/Automattic/node-canvas) is Canvas implementations on Node.js that provide an interface that is almost identical to the Canvas in the browser.\n\nHere's a simple example\n\n```ts\nvar echarts = require('echarts');\nconst { createCanvas } = require('canvas');\n\n// In versions earlier than 5.3.0, you had to register the canvas factory with setCanvasCreator.\n// Not necessary since 5.3.0\necharts.setCanvasCreator(() => {\n  return createCanvas();\n});\n\nconst canvas = createCanvas(800, 600);\n// ECharts can use the Canvas instance created by node-canvas as a container directly\nlet chart = echarts.init(canvas);\n\n// setOption as normal\nchart.setOption({\n  //...\n});\n\nconst buffer = canvas.toBuffer('image/png');\n\n// If chart is no longer useful, consider disposing it to release memory.\nchart.dispose();\nchart = null;\n\n// Output the PNG image via Response\nres.writeHead(200, {\n  'Content-Type': 'image/png'\n});\nres.write(buffer);\nres.end();\n```\n\n#### Loading of images\n\n[node-canvas](https://github.com/Automattic/node-canvas) provides an `Image` implementation for image loading. If you use to images in your code, we can adapt them using the `setPlatformAPI` interface that was introduced in `5.3.0`.\n\n```ts\necharts.setPlatformAPI({\n  // Same with the old setCanvasCreator\n  createCanvas() {\n    return createCanvas();\n  },\n  loadImage(src, onload, onerror) {\n    const img = new Image();\n    // must be bound to this context.\n    img.onload = onload.bind(img);\n    img.onerror = onerror.bind(img);\n    img.src = src;\n    return img;\n  }\n});\n```\n\nIf you are using images from remote, we recommend that you prefetch the image via an http request to get `base64` before passing it on as the URL of the image, to ensure that the image is loaded when render.\n\n## Client Hydration\n\n### Lazy-Loading Full ECharts\n\nWith the latest version of ECharts, the server-side rendering solution can do the following things along with rendering the chart:\n\n- Support for initial animation (i.e., the animation that is played when the chart is first rendered)\n- Highlighting styles (i.e., the highlighting effect when the mouse moves over a bar in a bar chart)\n\nBut there are features that cannot be supported by server-side rendering:\n\n- Dynamically changing data\n- Clicking on a legend to toggle whether the series is displayed or not\n- Moving the mouse to show a tooltip\n- Other interaction-related features\n\nIf you have such requirements, you can consider using server-side rendering to quickly output the first screen chart, then wait for `echarts.js` to finish loading and re-render the same chart on the client side, so that you can achieve normal interaction effects and dynamically change the data. Note that when rendering on the client side, you should turn on interactive components like `tooltip: { show: true }` and turn off the initial animation with `animation: 0` (the initial animation should be done by the SVG animation of the rendered result on the server side).\n\nAs we can see, from the user experience point of view, there is almost no secondary rendering process, and the whole switching effect is very seamless. You can also use a library like [pace-js](https://www.npmjs.com/package/pace-js) to display the loading progress bar during the loading of `echarts.js` as in the above example to solve the problem of no interactive feedback before the ECharts are fully loaded.\n\nUsing server-side rendering with client-side rendering along with a lazy-loading `echarts.js` on the client side is a good solution for scenarios where the first screen needs to be rendered quickly and then the interaction needs to be supported. However, it takes some time to load the `echarts.js` and before it is fully loaded, there is no interactive feedback, in which case, a \"Loading\" text might be displayed to the user. This is a commonly recommended solution for scenarios where the first screen needs to be rendered quickly and then the interaction needs to be supported.\n\n### Lightweight Client Runtime\n\nSolution A provides a way for implementing complete interactions, but in some scenarios, we don't need complex interactions, we just hope to be able to perform some simple interactions on the client side based on server-side rendering, such as: clicking the legend to toggle whether the series is displayed. In this case, can we avoid loading at least a few hundred KBs of ECharts code on the client side?\n\nStarting from version v5.5.0, if the chart only needs the following effects and interactions, it can be achieved through server-side SVG rendering + client-side lightweight runtime:\n\n- Initial chart animation (implementation principle: the SVG rendered by the server comes with CSS animation)\n- Highlight style (implementation principle: the SVG rendered by the server comes with CSS animation)\n- Dynamically changing data (implementation principle: the lightweight runtime requests the server for secondary rendering)\n- Click the legend to toggle whether the series is displayed (implementation principle: the lightweight runtime requests the server for secondary rendering)\n\n```html\n<div id=\"chart-container\" style=\"width:800px;height:600px\"></div>\n\n<script src=\"https://cdn.jsdelivr.net/npm/echarts/ssr/client/dist/index.min.js\"><\/script>\n<script>\nconst ssrClient = window['echarts-ssr-client'];\n\nconst isSeriesShown = {\n  a: true,\n  b: true\n};\n\nfunction updateChart(svgStr) {\n  const container = document.getElementById('chart-container');\n  container.innerHTML = svgStr;\n\n  // Use the lightweight runtime to give the chart interactive capabilities\n  ssrClient.hydrate(container, {\n    on: {\n      click: (params) => {\n        if (params.ssrType === 'legend') {\n          // Click the legend element, request the server for secondary rendering\n          isSeriesShown[params.seriesName] = !isSeriesShown[params.seriesName];\n          fetch('...?series=' + JSON.stringify(isSeriesShown))\n            .then(res => res.text())\n            .then(svgStr => {\n              updateChart(svgStr);\n            });\n        }\n      }\n    }\n  });\n}\n\n// Get the SVG string rendered by the server through an AJAX request\nfetch('...')\n  .then(res => res.text())\n  .then(svgStr => {\n    updateChart(svgStr);\n  });\n<\/script>\n```\n\nThe server side performs secondary rendering based on the information passed by the client about whether each series is displayed (`isSeriesShown`) and returns a new SVG string. The server-side code [is the same as above](#server-side-svg-rendering), and will not be repeated.\n\n> About state recording: Compared with pure client-side rendering, developers need to record and maintain some additional information (such as whether each series is displayed in this example). This is inevitable because HTTP requests are stateless. If you want to implement a state, either the client records the state and passes it like the above example, or the server retains the state (for example, through a session, but it requires more server memory and more complex destruction logic, so it is not recommended).\n\nUsing server-side SVG rendering plus client-side lightweight runtime, the advantage is that the client no longer needs to load hundreds of KBs of ECharts code, only needs to load a less than 4KB lightweight runtime code; and from the user experience, very little is sacrificed (supports initial animation, mouse highlighting). The disadvantage is that it requires a certain development cost to maintain additional state information, and it does not support interactions with high real-time requirements (such as displaying tooltips when moving the mouse). Overall, **it is recommended to use it in environments with very strict requirements for code volume**.\n\n## Using Lightweight Runtime\n\nThe client-side lightweight runtime enables interaction with the SVG charts rendered by the server-side by understanding the content.\n\nThe client-side lightweight runtime can be imported in the following ways:\n\n```html\n\x3c!-- Method one: Using CDN --\x3e\n<script src=\"https://cdn.jsdelivr.net/npm/echarts/ssr/client/dist/index.min.js\"><\/script>\n\x3c!-- Method two: Using NPM --\x3e\n<script src=\"node_modules/echarts/ssr/client/dist/index.js\"><\/script>\n```\n\n### API\n\nThe following APIs are provided in the global variable `window['echarts-ssr-client']`:\n\n#### hydrate(dom: HTMLElement, options: ECSSRClientOptions)\n\n- `dom`: The chart container, the content of which should be set as the SVG chart rendered by the server-side before calling this method\n- `options`: Configuration items\n\n##### ECSSRClientOptions\n\n```ts\non?: {\n  mouseover?: (params: ECSSRClientEventParams) => void,\n  mouseout?: (params: ECSSRClientEventParams) => void,\n  click?: (params: ECSSRClientEventParams) => void\n}\n```\n\nJust like the [chart mouse events](${mainSitePath}api.html#events.Mouse%20events), the events here are for the chart items (e.g., the bars of a bar chart, the data item of a line chart, etc.), not for the chart container.\n\n##### ECSSRClientEventParams\n\n```ts\n{\n  type: 'mouseover' | 'mouseout' | 'click';\n  ssrType: 'legend' | 'chart';\n  seriesIndex?: number;\n  dataIndex?: number;\n  event: Event;\n}\n```\n\n- `type`: Event type\n- `ssrType`: Event object type, `legend` represents legend data, `chart` represents chart data object\n- `seriesIndex`: Series index\n- `dataIndex`: Data index\n- `event`: Native event object\n\n### Example\n\nSee the \"Lightweight Client Runtime\" section above.\n\n## Summary\n\nAbove, we introduced several different rendering solutions, including:\n\n- Client-side rendering\n- Server-side SVG rendering\n- Server-side Canvas rendering\n- Client-side lightweight runtime rendering\n\nThese four rendering methods can be used in combination. Let's summarize their respective applicable scenarios:\n\n| Rendering Solution | Loading Volume | Loss of Function and Interaction | Relative Development Workload | Recommended Scenario |\n| --- | --- | --- | --- | --- |\n| Client-side rendering | Largest | None | Minimum | The first screen load time is not sensitive, and there is a high demand for complete functionality and interaction |\n| Client-side rendering ([partial package importing](${lang}/basics/import#shrinking-bundle-size) on demand) | Large | Large: the packages not included cannot use the corresponding functions | Small | The first screen load time is not sensitive, there is no strict requirement for code volume but hope to be as small as possible, only use a small part of ECharts functions, no server resources |\n| One-time server-side SVG rendering | Small | Large: unable to dynamically change data, does not support legend toggle series display, does not support tooltips and other interactions with high real-time requirements | Medium | The first screen load time is sensitive, low demand for complete functionality and interaction |\n| One-time server-side Canvas rendering | Large | Largest: the same as above and does not support initial animation, larger image volume, blurry when enlarged | Medium | The first screen load time is sensitive, low demand for complete functionality and interaction, platform restrictions cannot use SVG |\n| Server-side SVG rendering plus client-side ECharts lazy loading | Small, then large | Medium: cannot interact before lazy loading is completed | Medium | The first screen load time is sensitive, high demand for complete functionality and interaction, the chart is best not needed for interaction immediately after loading |\n| Server-side SVG rendering plus client-side lightweight runtime | Small | Medium: Cannot implement interactions with high real-time requirements | Large (need to maintain chart status, define client-server interface protocol) | The first screen load time is sensitive, low demand for complete functionality and interaction, very strict requirements for code volume, not strict requirements for interaction real-time |\n| Server-side SVG rendering plus client-side ECharts lazy loading, using lightweight runtime before lazy loading is completed | Small, then large | Small: Cannot perform complex interactions before lazy loading is completed | Largest | The first screen load time is sensitive, high demand for complete functionality and interaction, sufficient development time |\n\nOf course, there are some other combination possibilities, but the most common ones are the above. I believe that if you understand the characteristics of these rendering solutions, you can choose the appropriate solution based on your own scenario.\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/b24184ccdb1d41bbb836.js b/docs/_nuxt/js/b24184ccdb1d41bbb836.js
new file mode 100644
index 0000000..a4b9208
--- /dev/null
+++ b/docs/_nuxt/js/b24184ccdb1d41bbb836.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[59],{360:function(e,n,t){"use strict";t.r(n),n.default="# Basic Line Chart\n\n## Simple Example\n\nWe can use the following code to build a line chart which has x-axis as `category`, y-axis as `value`:\n\n```js live\noption = {\n  xAxis: {\n    type: 'category',\n    data: ['A', 'B', 'C']\n  },\n  yAxis: {\n    type: 'value'\n  },\n  series: [\n    {\n      data: [120, 200, 150],\n      type: 'line'\n    }\n  ]\n};\n```\n\nIn this case, we set the type of axis to `category` and `value` under `xAxis` and `yAxis`. We also clarified the content on the x-axis through `data`. In `series`, we set the type to `line`, and specify the values of three points through `data`. In this way, we got a simple line chart.\n\n> The `type` here can be omitted because the defaults of the axis are `value` while `xAxis` has specified the category's `data`. In this case, `ECharts` can recognize that this is a category axis.\n\n## Line Chart in Cartesian Coordinate System\n\nHow to implement if we want the line chart to be continuous? The answer is simple, as long as every value in `data` of the `series` is represented by an array containing two elements.\n\n```js live\noption = {\n  xAxis: {},\n  yAxis: {},\n  series: [\n    {\n      data: [\n        [20, 120],\n        [50, 200],\n        [40, 50]\n      ],\n      type: 'line'\n    }\n  ]\n};\n```\n\n## Customized Line Chart\n\n### Line Style\n\nLine style can be changed by `lineStyle` setting. You can specify color, line width, polyline type and opacity etc.. For details, please see the handbook [`series.lineStyle`](${optionPath}series-line.lineStyle) to figure out.\n\nHere is an example of setting color, line width and type.\n\n```js live\noption = {\n  xAxis: {\n    data: ['A', 'B', 'C', 'D', 'E']\n  },\n  yAxis: {},\n  series: [\n    {\n      data: [10, 22, 28, 23, 19],\n      type: 'line',\n      lineStyle: {\n        normal: {\n          color: 'green',\n          width: 4,\n          type: 'dashed'\n        }\n      }\n    }\n  ]\n};\n```\n\nWhen we set the line width here, the line width of items will not change. The line style of items needs to be set separately.\n\n### Item Style\n\nItem style can be change by [`series.itemStyle`](${optionPath}series-line.itemStyle). It included `color`, `borderColor`, `borderStyle`, `borderWidth`, `borderType`, `shadowColor`, `opacity` and so on. It works the same as the `lineType`, so we will not do further discuss.\n\n## Display Value on Items.\n\nIn the series, the label of the item was specified by [`series.label`](${optionPath}series-line.label). If we change the `show` under `label` to `true`, the value will be displayed by default. Otherwise, if [`series.emphasis.label.show`](${optionPath}series-line.emphasis.label.show) is `true`, the label will show only if the mouse moved across the item.\n\n```js live\noption = {\n  xAxis: {\n    data: ['A', 'B', 'C', 'D', 'E']\n  },\n  yAxis: {},\n  series: [\n    {\n      data: [10, 22, 28, 23, 19],\n      type: 'line',\n      label: {\n        show: true,\n        position: 'bottom',\n        textStyle: {\n          fontSize: 20\n        }\n      }\n    }\n  ]\n};\n```\n\n## Empty Data\n\nIn a `series`, there are empty data. It has some difference with `0`. While there are empty elements, the lines chart will ignore that point without pass through it----empty elements will not be connected by the points next by.\n\nIn ECharts, we use `'-'` to represent null data, It is applicable for data in other series.\n\n```js live\noption = {\n  xAxis: {\n    data: ['A', 'B', 'C', 'D', 'E']\n  },\n  yAxis: {},\n  series: [\n    {\n      data: [0, 22, '-', 23, 19],\n      type: 'line'\n    }\n  ]\n};\n```\n\n> Please note the difference between the empty data and 0.\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/b8ad6f75a23add5dc80c.js b/docs/_nuxt/js/b8ad6f75a23add5dc80c.js
new file mode 100644
index 0000000..3a6cbfd
--- /dev/null
+++ b/docs/_nuxt/js/b8ad6f75a23add5dc80c.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[77],{378:function(n,t,e){"use strict";e.r(t),t.default="# 在项目中引入 Apache ECharts\n\n假如你的开发环境使用了 `npm` 或者 `yarn` 等包管理工具,并且使用 `webpack` 等打包工具进行构建,本文将会介绍如何引入 Apache ECharts<sup>TM</sup> 并通过 tree-shaking 特性只打包需要的模块以减少包体积。\n\n## NPM 安装 ECharts\n\n你可以使用如下命令通过 npm 安装 ECharts\n\n```shell\nnpm install echarts --save\n```\n\n## 引入 ECharts\n\n```js\nimport * as echarts from 'echarts';\n\n// 基于准备好的dom,初始化echarts实例\nvar myChart = echarts.init(document.getElementById('main'));\n// 绘制图表\nmyChart.setOption({\n  title: {\n    text: 'ECharts 入门示例'\n  },\n  tooltip: {},\n  xAxis: {\n    data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']\n  },\n  yAxis: {},\n  series: [\n    {\n      name: '销量',\n      type: 'bar',\n      data: [5, 20, 36, 10, 10, 20]\n    }\n  ]\n});\n```\n\n## 按需引入 ECharts 图表和组件\n\n上面的代码会引入 ECharts 中所有的图表和组件,如果你不想引入所有组件,也可以使用 ECharts 提供的按需引入的接口来打包必须的组件。\n\n```js\n// 引入 echarts 核心模块,核心模块提供了 echarts 使用必须要的接口。\nimport * as echarts from 'echarts/core';\n// 引入柱状图图表,图表后缀都为 Chart\nimport { BarChart } from 'echarts/charts';\n// 引入标题,提示框,直角坐标系,数据集,内置数据转换器组件,组件后缀都为 Component\nimport {\n  TitleComponent,\n  TooltipComponent,\n  GridComponent,\n  DatasetComponent,\n  TransformComponent\n} from 'echarts/components';\n// 标签自动布局、全局过渡动画等特性\nimport { LabelLayout, UniversalTransition } from 'echarts/features';\n// 引入 Canvas 渲染器,注意引入 CanvasRenderer 或者 SVGRenderer 是必须的一步\nimport { CanvasRenderer } from 'echarts/renderers';\n\n// 注册必须的组件\necharts.use([\n  TitleComponent,\n  TooltipComponent,\n  GridComponent,\n  DatasetComponent,\n  TransformComponent,\n  BarChart,\n  LabelLayout,\n  UniversalTransition,\n  CanvasRenderer\n]);\n\n// 接下来的使用就跟之前一样,初始化图表,设置配置项\nvar myChart = echarts.init(document.getElementById('main'));\nmyChart.setOption({\n  // ...\n});\n```\n\n> 需要注意的是为了保证打包的体积是最小的,ECharts 按需引入的时候不再提供任何渲染器,所以需要选择引入 `CanvasRenderer` 或者 `SVGRenderer` 作为渲染器。这样的好处是假如你只需要使用 svg 渲染模式,打包的结果中就不会再包含无需使用的 `CanvasRenderer` 模块。\n\n我们在示例编辑页的“完整代码”标签提供了非常方便的生成按需引入代码的功能。这个功能会根据当前的配置项动态生成最小的按需引入的代码。你可以直接在你的项目中使用。\n\n> v5.5.0 版本开始使用 ESM 作为默认的模块规范,查看可能的 [Breaking Changes](https://github.com/apache/echarts/pull/19513#issuecomment-1916237700) 以及 [Pull Request](https://github.com/apache/echarts/pull/19513)。\n\n## 在 TypeScript 中按需引入\n\n对于使用了 TypeScript 来开发 ECharts 的开发者,我们提供了类型接口来组合出最小的 `EChartsOption` 类型。这个更严格的类型可以有效帮助你检查出是否少加载了组件或者图表。\n\n```ts\nimport * as echarts from 'echarts/core';\nimport {\n  BarChart,\n  LineChart\n} from 'echarts/charts';\nimport {\n  TitleComponent,\n  TooltipComponent,\n  GridComponent,\n  // 数据集组件\n  DatasetComponent,\n  // 内置数据转换器组件 (filter, sort)\n  TransformComponent\n} from 'echarts/components';\nimport { LabelLayout, UniversalTransition } from 'echarts/features';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport type {\n  // 系列类型的定义后缀都为 SeriesOption\n  BarSeriesOption,\n  LineSeriesOption\n} from 'echarts/charts';\nimport type {\n  // 组件类型的定义后缀都为 ComponentOption\n  TitleComponentOption,\n  TooltipComponentOption,\n  GridComponentOption,\n  DatasetComponentOption\n} from 'echarts/components';\nimport type {\n  ComposeOption,\n} from 'echarts/core';\n\n// 通过 ComposeOption 来组合出一个只有必须组件和图表的 Option 类型\ntype ECOption = ComposeOption<\n  | BarSeriesOption\n  | LineSeriesOption\n  | TitleComponentOption\n  | TooltipComponentOption\n  | GridComponentOption\n  | DatasetComponentOption\n>;\n\n// 注册必须的组件\necharts.use([\n  TitleComponent,\n  TooltipComponent,\n  GridComponent,\n  DatasetComponent,\n  TransformComponent,\n  BarChart,\n  LineChart,\n  LabelLayout,\n  UniversalTransition,\n  CanvasRenderer\n]);\n\nconst option: ECOption = {\n  // ...\n};\n```\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/b8f50a18e5476ce0be99.js b/docs/_nuxt/js/b8f50a18e5476ce0be99.js
new file mode 100644
index 0000000..c94f191
--- /dev/null
+++ b/docs/_nuxt/js/b8f50a18e5476ce0be99.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[118],{419:function(n,e,t){"use strict";t.r(e),e.default="# 数据的视觉映射\n\n数据可视化是数据到视觉元素的映射过程(这个过程也可称为视觉编码,视觉元素也可称为视觉通道)。\n\nECharts 的每种图表本身就内置了这种映射过程,比如折线图把数据映射到“线”,柱状图把数据映射到“长度”。一些更复杂的图表,如关系图、事件河流图、树图也都会做出各自内置的映射。\n\n此外,ECharts 还提供了 [visualMap 组件](${optionPath}visualMap) 来提供通用的视觉映射。`visualMap` 组件中可以使用的视觉元素有:\n\n- 图形类别(symbol)、图形大小(symbolSize)\n- 颜色(color)、透明度(opacity)、颜色透明度(colorAlpha)、\n- 颜色明暗度(colorLightness)、颜色饱和度(colorSaturation)、色调(colorHue)\n\n下面对 `visualMap` 组件的使用方式进行简要的介绍。\n\n## 数据和维度\n\nECharts 中的数据,一般存放于 [`series.data`](${optionPath}series.data) 中。根据图表类型不同,数据的具体形式也可能有些许差异。比如可能是“线性表“、“树“、“图“等。但他们都有个共性:都是“数据项(dataItem)“的集合。每个数据项含有“数据值(value)“和其他信息(如果需要的话)。每个数据值,可以是单一的数值(一维)或者一个数组(多维)。\n\n例如,[series.data](${optionPath}series.data) 最常见的形式,是“线性表“,即一个普通数组:\n\n```js\nseries: {\n  data: [\n    {\n      // 这里每一个项就是数据项(dataItem)\n      value: 2323, // 这是数据项的数据值(value)\n      itemStyle: {}\n    },\n    1212, // 也可以直接是 dataItem 的 value,这更常见。\n    2323, // 每个 value 都是“一维“的。\n    4343,\n    3434\n  ];\n}\n```\n\n```js\nseries: {\n  data: [\n    {\n      // 这里每一个项就是数据项(dataItem)\n      value: [3434, 129, '圣马力诺'], // 这是数据项的数据值(value)\n      itemStyle: {}\n    },\n    [1212, 5454, '梵蒂冈'], // 也可以直接是 dataItem 的 value,这更常见。\n    [2323, 3223, '瑙鲁'], // 每个 value 都是“三维“的,每列是一个维度。\n    [4343, 23, '图瓦卢'] // 假如是“气泡图“,常见第一维度映射到x轴,\n    // 第二维度映射到y轴,\n    // 第三维度映射到气泡半径(symbolSize)\n  ];\n}\n```\n\n在图表中,往往默认把 value 的前一两个维度进行映射,比如取第一个维度映射到 x 轴,取第二个维度映射到 y 轴。如果想要把更多的维度展现出来,可以借助 `visualMap`。最常见的情况,[散点图(scatter)](${optionPath}series-scatter) 使用半径展现了第三个维度。\n\n## visualMap 组件\n\nvisualMap 组件定义了把数据的*哪个维度*映射到*什么视觉元素上*。\n\n现在提供如下两种类型的 visualMap 组件,通过 [visualMap.type](${optionPath}visualMap.type) 来区分。\n\n其定义结构例如:\n\n```js\noption = {\n  visualMap: [\n    // 可以同时定义多个 visualMap 组件。\n    {\n      // 第一个 visualMap 组件\n      type: 'continuous' // 定义为连续型 visualMap\n      // ...\n    },\n    {\n      // 第二个 visualMap 组件\n      type: 'piecewise' // 定义为分段型 visualMap\n      // ...\n    }\n  ]\n  // ...\n};\n```\n\n## 连续型与分段型视觉映射组件\n\nECharts 的视觉映射组件分为连续型([visualMapContinuous](${optionPath}visualMap-continuous))与分段型([visualMapPiecewise](${optionPath}visualMap-piecewise))。\n\n连续型的意思是,进行视觉映射的数据维度是连续的数值;而分段型则是数据被分成了多段或者是离散型的数据。\n\n### 连续型视觉映射\n\n连续型视觉映射通过指定最大值、最小值,就可以确定视觉映射的范围。\n\n```js\noption = {\n  visualMap: [\n    {\n      type: 'continuous',\n      min: 0,\n      max: 5000,\n      dimension: 3, // series.data 的第四个维度(即 value[3])被映射\n      seriesIndex: 4, // 对第四个系列进行映射。\n      inRange: {\n        // 选中范围中的视觉配置\n        color: ['blue', '#121122', 'red'], // 定义了图形颜色映射的颜色列表,\n        // 数据最小值映射到'blue'上,\n        // 最大值映射到'red'上,\n        // 其余自动线性计算。\n        symbolSize: [30, 100] // 定义了图形尺寸的映射范围,\n        // 数据最小值映射到30上,\n        // 最大值映射到100上,\n        // 其余自动线性计算。\n      },\n      outOfRange: {\n        // 选中范围外的视觉配置\n        symbolSize: [30, 100]\n      }\n    }\n    //    ...\n  ]\n};\n```\n\n其中,[visualMap.inRange](${optionPath}visualMap.inRange) 表示在数据映射范围内的数据采用的样式;而 [visualMap.outOfRange](${optionPath}visualMap.outOfRange) 则指定了超出映射范围外的数据的样式。\n\n[visualMap.dimension](~visualMap.dimension) 则指定了将数据的哪个维度做视觉映射。\n\n### 分段型视觉映射\n\n分段型视觉映射组件有三种模式:\n\n- 连续型数据平均分段:依据 [visualMap-piecewise.splitNumber](${optionPath}visualMap-piecewise.splitNumber) 来自动平均分割成若干块。\n- 连续型数据自定义分段:依据 [visualMap-piecewise.pieces](${optionPath}visualMap-piecewise.pieces) 来定义每块范围。\n- 离散数据(类别性数据):类别定义在 [visualMap-piecewise.categories](${optionPath}visualMap-piecewise.categories) 中。\n\n使用分段型视觉映射时,需要将 `type` 设为 `'piecewise'`,并且将上面的三个配置项选其一配置即可,其他配置项类似连续型视觉映射。\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/b95c0f832a3abb5b9074.js b/docs/_nuxt/js/b95c0f832a3abb5b9074.js
new file mode 100644
index 0000000..66502df
--- /dev/null
+++ b/docs/_nuxt/js/b95c0f832a3abb5b9074.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[33],{334:function(e,t,n){"use strict";n.r(t),t.default='# Basic Line Chart.\n\nThe line chart is basically used to show the phase trend over time. The line chart is pretty useful to display a continuous 2D dataset like the fluctuation in the number of website visitors or sales prices.\n\n<iframe max-width="830" width="100%" height="400"\nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xB1kG1rLEG&v=1">\n</iframe>\n\nExcept for displaying the trend of developing things, the line chart can be used to compare several different datasets. As shown below, we use a line chart to compare the sales of three different commodities and analyze which one is the best.\n\n<iframe max-width="830" width="100%" height="400"\n src="https://gallery.echartsjs.com/view-lite.html?cid=xSkBiMSU4M&v=1">>\n </iframe>\n\nA line chart is drawn by connecting data points with lines. For the beauty of special effects, you can also connect points with curves as shown in the chart above. This chart is also called a curve chart or spline chart. The usage of the spline chart is the same as the line chart. The only difference is that the connection between data points is a curve but not a straight line.\n\n## Suggestion for Using Line Chart\n\n1. To make sure the data readability, use solid lines in charts if you can separate the data line and axis.\n\n2. Do not draw more than 4 lines in a chart. As shown below, lines are entangled together without obvious contrast that makes the whole chart confusing and difficult to read.\n\n<iframe max-width="830" width="100%" height="400"\nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xBJzdEItVz&v=1">\n</iframe>\n\n3. Don\'t use decorates to separate charts. The legend is helpful, but sometimes distracting users:\n\n<iframe max-width="830" width="100%" height="400"\nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xS1Tbdr8EG&v=1">\n</iframe>\n\n4. When displaying the data of the line chart, avoid deliberately distorting the trend. The meaningful volatility analysis chart should make the height of the item be two-thirds of the height of the y-axis.\n\n<img max-width="830" width="100%" height="100%"\nsrc="images/design/line/line01.jpg"></img>\n'}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/b964c20bb1562bc48da6.js b/docs/_nuxt/js/b964c20bb1562bc48da6.js
new file mode 100644
index 0000000..5ce6428
--- /dev/null
+++ b/docs/_nuxt/js/b964c20bb1562bc48da6.js
@@ -0,0 +1,2 @@
+/*! For license information please see ../LICENSES */
+(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{103:function(t,e,n){"use strict";var r={name:"ClientOnly",functional:!0,props:{placeholder:String,placeholderTag:{type:String,default:"div"}},render:function(t,e){var n=e.parent,r=e.slots,o=e.props,l=r(),c=l.default;void 0===c&&(c=[]);var f=l.placeholder;return n._isMounted?c:(n.$once("hook:mounted",(function(){n.$forceUpdate()})),o.placeholderTag&&(o.placeholder||f)?t(o.placeholderTag,{class:["client-only-placeholder"]},o.placeholder||f):c.length>0?c.map((function(){return t(!1)})):t(!1))}};t.exports=r},106:function(t,e,n){"use strict";var r=["compactDisplay","currency","currencyDisplay","currencySign","localeMatcher","notation","numberingSystem","signDisplay","style","unit","unitDisplay","useGrouping","minimumIntegerDigits","minimumFractionDigits","maximumFractionDigits","minimumSignificantDigits","maximumSignificantDigits"],o=["dateStyle","timeStyle","calendar","localeMatcher","hour12","hourCycle","timeZone","formatMatcher","weekday","era","year","month","day","hour","minute","second","timeZoneName"];function l(t,e){"undefined"!=typeof console&&(console.warn("[vue-i18n] "+t),e&&console.warn(e.stack))}var c=Array.isArray;function f(t){return null!==t&&"object"==typeof t}function h(t){return"string"==typeof t}var m=Object.prototype.toString;function _(t){return"[object Object]"===m.call(t)}function v(t){return null==t}function d(t){return"function"==typeof t}function y(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var n=null,r=null;return 1===t.length?f(t[0])||c(t[0])?r=t[0]:"string"==typeof t[0]&&(n=t[0]):2===t.length&&("string"==typeof t[0]&&(n=t[0]),(f(t[1])||c(t[1]))&&(r=t[1])),{locale:n,params:r}}function w(t){return JSON.parse(JSON.stringify(t))}function k(t,e){return!!~t.indexOf(e)}var F=Object.prototype.hasOwnProperty;function $(t,e){return F.call(t,e)}function M(t){for(var e=arguments,output=Object(t),i=1;i<arguments.length;i++){var source=e[i];if(null!=source){var n=void 0;for(n in source)$(source,n)&&(f(source[n])?output[n]=M(output[n],source[n]):output[n]=source[n])}}return output}function O(a,b){if(a===b)return!0;var t=f(a),e=f(b);if(!t||!e)return!t&&!e&&String(a)===String(b);try{var n=c(a),r=c(b);if(n&&r)return a.length===b.length&&a.every((function(t,i){return O(t,b[i])}));if(n||r)return!1;var o=Object.keys(a),l=Object.keys(b);return o.length===l.length&&o.every((function(t){return O(a[t],b[t])}))}catch(t){return!1}}function T(t){return null!=t&&Object.keys(t).forEach((function(e){"string"==typeof t[e]&&(t[e]=t[e].replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;"))})),t}var j={name:"i18n",functional:!0,props:{tag:{type:[String,Boolean,Object],default:"span"},path:{type:String,required:!0},locale:{type:String},places:{type:[Array,Object]}},render:function(t,e){var data=e.data,n=e.parent,r=e.props,o=e.slots,l=n.$i18n;if(l){var path=r.path,c=r.locale,f=r.places,h=o(),m=l.i(path,c,function(t){var e;for(e in t)if("default"!==e)return!1;return Boolean(e)}(h)||f?function(t,e){var n=e?function(t){0;return Array.isArray(t)?t.reduce(I,{}):Object.assign({},t)}(e):{};if(!t)return n;var r=(t=t.filter((function(t){return t.tag||""!==t.text.trim()}))).every(D);0;return t.reduce(r?C:I,n)}(h.default,f):h),_=r.tag&&!0!==r.tag||!1===r.tag?r.tag:"span";return _?t(_,data,m):m}}};function C(t,e){return e.data&&e.data.attrs&&e.data.attrs.place&&(t[e.data.attrs.place]=e),t}function I(t,e,n){return t[n]=e,t}function D(t){return Boolean(t.data&&t.data.attrs&&t.data.attrs.place)}var L,S={name:"i18n-n",functional:!0,props:{tag:{type:[String,Boolean,Object],default:"span"},value:{type:Number,required:!0},format:{type:[String,Object]},locale:{type:String}},render:function(t,e){var n=e.props,o=e.parent,data=e.data,l=o.$i18n;if(!l)return null;var c=null,m=null;h(n.format)?c=n.format:f(n.format)&&(n.format.key&&(c=n.format.key),m=Object.keys(n.format).reduce((function(t,e){var o;return k(r,e)?Object.assign({},t,((o={})[e]=n.format[e],o)):t}),null));var _=n.locale||l.locale,v=l._ntp(n.value,_,c,m),d=v.map((function(t,e){var n,slot=data.scopedSlots&&data.scopedSlots[t.type];return slot?slot(((n={})[t.type]=t.value,n.index=e,n.parts=v,n)):t.value})),y=n.tag&&!0!==n.tag||!1===n.tag?n.tag:"span";return y?t(y,{attrs:data.attrs,class:data.class,staticClass:data.staticClass},d):d}};function x(t,e,n){W(t,n)&&R(t,e,n)}function E(t,e,n,r){if(W(t,n)){var o=n.context.$i18n;(function(t,e){var n=e.context;return t._locale===n.$i18n.locale})(t,n)&&O(e.value,e.oldValue)&&O(t._localeMessage,o.getLocaleMessage(o.locale))||R(t,e,n)}}function N(t,e,n,r){if(n.context){var o=n.context.$i18n||{};e.modifiers.preserve||o.preserveDirectiveContent||(t.textContent=""),t._vt=void 0,delete t._vt,t._locale=void 0,delete t._locale,t._localeMessage=void 0,delete t._localeMessage}else l("Vue instance does not exists in VNode context")}function W(t,e){var n=e.context;return n?!!n.$i18n||(l("VueI18n instance does not exists in Vue instance"),!1):(l("Vue instance does not exists in VNode context"),!1)}function R(t,e,n){var r,o,c=function(t){var path,e,n,r;h(t)?path=t:_(t)&&(path=t.path,e=t.locale,n=t.args,r=t.choice);return{path:path,locale:e,args:n,choice:r}}(e.value),path=c.path,f=c.locale,m=c.args,v=c.choice;if(path||f||m)if(path){var d=n.context;t._vt=t.textContent=null!=v?(r=d.$i18n).tc.apply(r,[path,v].concat(P(f,m))):(o=d.$i18n).t.apply(o,[path].concat(P(f,m))),t._locale=d.$i18n.locale,t._localeMessage=d.$i18n.getLocaleMessage(d.$i18n.locale)}else l("`path` is required in v-t directive");else l("value type not supported")}function P(t,e){var n=[];return t&&n.push(t),e&&(Array.isArray(e)||_(e))&&n.push(e),n}function A(t,e){void 0===e&&(e={bridge:!1}),A.installed=!0;(L=t).version&&Number(L.version.split(".")[0]);(function(t){t.prototype.hasOwnProperty("$i18n")||Object.defineProperty(t.prototype,"$i18n",{get:function(){return this._i18n}}),t.prototype.$t=function(t){for(var e=[],n=arguments.length-1;n-- >0;)e[n]=arguments[n+1];var r=this.$i18n;return r._t.apply(r,[t,r.locale,r._getMessages(),this].concat(e))},t.prototype.$tc=function(t,e){for(var n=[],r=arguments.length-2;r-- >0;)n[r]=arguments[r+2];var o=this.$i18n;return o._tc.apply(o,[t,o.locale,o._getMessages(),this,e].concat(n))},t.prototype.$te=function(t,e){var n=this.$i18n;return n._te(t,n.locale,n._getMessages(),e)},t.prototype.$d=function(t){for(var e,n=[],r=arguments.length-1;r-- >0;)n[r]=arguments[r+1];return(e=this.$i18n).d.apply(e,[t].concat(n))},t.prototype.$n=function(t){for(var e,n=[],r=arguments.length-1;r-- >0;)n[r]=arguments[r+1];return(e=this.$i18n).n.apply(e,[t].concat(n))}})(L),L.mixin(function(t){function e(){this!==this.$root&&this.$options.__INTLIFY_META__&&this.$el&&this.$el.setAttribute("data-intlify",this.$options.__INTLIFY_META__)}return void 0===t&&(t=!1),t?{mounted:e}:{beforeCreate:function(){var t=this.$options;if(t.i18n=t.i18n||(t.__i18nBridge||t.__i18n?{}:null),t.i18n){if(t.i18n instanceof at){if(t.__i18nBridge||t.__i18n)try{var e=t.i18n&&t.i18n.messages?t.i18n.messages:{};(t.__i18nBridge||t.__i18n).forEach((function(t){e=M(e,JSON.parse(t))})),Object.keys(e).forEach((function(n){t.i18n.mergeLocaleMessage(n,e[n])}))}catch(t){}this._i18n=t.i18n,this._i18nWatcher=this._i18n.watchI18nData()}else if(_(t.i18n)){var n=this.$root&&this.$root.$i18n&&this.$root.$i18n instanceof at?this.$root.$i18n:null;if(n&&(t.i18n.root=this.$root,t.i18n.formatter=n.formatter,t.i18n.fallbackLocale=n.fallbackLocale,t.i18n.formatFallbackMessages=n.formatFallbackMessages,t.i18n.silentTranslationWarn=n.silentTranslationWarn,t.i18n.silentFallbackWarn=n.silentFallbackWarn,t.i18n.pluralizationRules=n.pluralizationRules,t.i18n.preserveDirectiveContent=n.preserveDirectiveContent),t.__i18nBridge||t.__i18n)try{var r=t.i18n&&t.i18n.messages?t.i18n.messages:{};(t.__i18nBridge||t.__i18n).forEach((function(t){r=M(r,JSON.parse(t))})),t.i18n.messages=r}catch(t){}var o=t.i18n.sharedMessages;o&&_(o)&&(t.i18n.messages=M(t.i18n.messages,o)),this._i18n=new at(t.i18n),this._i18nWatcher=this._i18n.watchI18nData(),(void 0===t.i18n.sync||t.i18n.sync)&&(this._localeWatcher=this.$i18n.watchLocale()),n&&n.onComponentInstanceCreated(this._i18n)}}else this.$root&&this.$root.$i18n&&this.$root.$i18n instanceof at?this._i18n=this.$root.$i18n:t.parent&&t.parent.$i18n&&t.parent.$i18n instanceof at&&(this._i18n=t.parent.$i18n)},beforeMount:function(){var t=this.$options;t.i18n=t.i18n||(t.__i18nBridge||t.__i18n?{}:null),t.i18n?(t.i18n instanceof at||_(t.i18n))&&(this._i18n.subscribeDataChanging(this),this._subscribing=!0):(this.$root&&this.$root.$i18n&&this.$root.$i18n instanceof at||t.parent&&t.parent.$i18n&&t.parent.$i18n instanceof at)&&(this._i18n.subscribeDataChanging(this),this._subscribing=!0)},mounted:e,beforeDestroy:function(){if(this._i18n){var t=this;this.$nextTick((function(){t._subscribing&&(t._i18n.unsubscribeDataChanging(t),delete t._subscribing),t._i18nWatcher&&(t._i18nWatcher(),t._i18n.destroyVM(),delete t._i18nWatcher),t._localeWatcher&&(t._localeWatcher(),delete t._localeWatcher)}))}}}}(e.bridge)),L.directive("t",{bind:x,update:E,unbind:N}),L.component(j.name,j),L.component(S.name,S),L.config.optionMergeStrategies.i18n=function(t,e){return void 0===e?t:e}}var H=function(){this._caches=Object.create(null)};H.prototype.interpolate=function(t,e){if(!e)return[t];var n=this._caches[t];return n||(n=function(t){var e=[],n=0,text="";for(;n<t.length;){var r=t[n++];if("{"===r){text&&e.push({type:"text",value:text}),text="";var sub="";for(r=t[n++];void 0!==r&&"}"!==r;)sub+=r,r=t[n++];var o="}"===r,l=V.test(sub)?"list":o&&B.test(sub)?"named":"unknown";e.push({value:sub,type:l})}else"%"===r?"{"!==t[n]&&(text+=r):text+=r}return text&&e.push({type:"text",value:text}),e}(t),this._caches[t]=n),function(t,e){var n=[],r=0,o=Array.isArray(e)?"list":f(e)?"named":"unknown";if("unknown"===o)return n;for(;r<t.length;){var l=t[r];switch(l.type){case"text":n.push(l.value);break;case"list":n.push(e[parseInt(l.value,10)]);break;case"named":"named"===o&&n.push(e[l.value])}r++}return n}(n,e)};var V=/^(?:\d)+/,B=/^(?:\w)+/;var U=[];U[0]={ws:[0],ident:[3,0],"[":[4],eof:[7]},U[1]={ws:[1],".":[2],"[":[4],eof:[7]},U[2]={ws:[2],ident:[3,0],0:[3,0],number:[3,0]},U[3]={ident:[3,0],0:[3,0],number:[3,0],ws:[1,1],".":[2,1],"[":[4,1],eof:[7,1]},U[4]={"'":[5,0],'"':[6,0],"[":[4,2],"]":[1,3],eof:8,else:[4,0]},U[5]={"'":[4,0],eof:8,else:[5,0]},U[6]={'"':[4,0],eof:8,else:[6,0]};var z=/^\s?(?:true|false|-?[\d.]+|'[^']*'|"[^"]*")\s?$/;function J(t){if(null==t)return"eof";switch(t.charCodeAt(0)){case 91:case 93:case 46:case 34:case 39:return t;case 95:case 36:case 45:return"ident";case 9:case 10:case 13:case 160:case 65279:case 8232:case 8233:return"ws"}return"ident"}function G(path){var t,a,e,n=path.trim();return("0"!==path.charAt(0)||!isNaN(path))&&(e=n,z.test(e)?(a=(t=n).charCodeAt(0))!==t.charCodeAt(t.length-1)||34!==a&&39!==a?t:t.slice(1,-1):"*"+n)}var Z=function(){this._cache=Object.create(null)};Z.prototype.parsePath=function(path){var t=this._cache[path];return t||(t=function(path){var t,e,n,r,o,l,c,f=[],h=-1,m=0,_=0,v=[];function d(){var t=path[h+1];if(5===m&&"'"===t||6===m&&'"'===t)return h++,n="\\"+t,v[0](),!0}for(v[1]=function(){void 0!==e&&(f.push(e),e=void 0)},v[0]=function(){void 0===e?e=n:e+=n},v[2]=function(){v[0](),_++},v[3]=function(){if(_>0)_--,m=4,v[0]();else{if(_=0,void 0===e)return!1;if(!1===(e=G(e)))return!1;v[1]()}};null!==m;)if(h++,"\\"!==(t=path[h])||!d()){if(r=J(t),8===(o=(c=U[m])[r]||c.else||8))return;if(m=o[0],(l=v[o[1]])&&(n=void 0===(n=o[2])?t:n,!1===l()))return;if(7===m)return f}}(path),t&&(this._cache[path]=t)),t||[]},Z.prototype.getPathValue=function(t,path){if(!f(t))return null;var e=this.parsePath(path);if(0===e.length)return null;for(var n=e.length,r=t,i=0;i<n;){var o=r[e[i]];if(null==o)return null;r=o,i++}return r};var X,Y=/<\/?[\w\s="/.':;#-\/]+>/,K=/(?:@(?:\.[a-zA-Z]+)?:(?:[\w\-_|./]+|\([\w\-_:|./]+\)))/g,Q=/^@(?:\.([a-zA-Z]+))?:/,tt=/[()]/g,et={upper:function(t){return t.toLocaleUpperCase()},lower:function(t){return t.toLocaleLowerCase()},capitalize:function(t){return""+t.charAt(0).toLocaleUpperCase()+t.substr(1)}},nt=new H,at=function(t){var e=this;void 0===t&&(t={}),!L&&"undefined"!=typeof window&&window.Vue&&A(window.Vue);var n=t.locale||"en-US",r=!1!==t.fallbackLocale&&(t.fallbackLocale||"en-US"),o=t.messages||{},l=t.dateTimeFormats||t.datetimeFormats||{},c=t.numberFormats||{};this._vm=null,this._formatter=t.formatter||nt,this._modifiers=t.modifiers||{},this._missing=t.missing||null,this._root=t.root||null,this._sync=void 0===t.sync||!!t.sync,this._fallbackRoot=void 0===t.fallbackRoot||!!t.fallbackRoot,this._fallbackRootWithEmptyString=void 0===t.fallbackRootWithEmptyString||!!t.fallbackRootWithEmptyString,this._formatFallbackMessages=void 0!==t.formatFallbackMessages&&!!t.formatFallbackMessages,this._silentTranslationWarn=void 0!==t.silentTranslationWarn&&t.silentTranslationWarn,this._silentFallbackWarn=void 0!==t.silentFallbackWarn&&!!t.silentFallbackWarn,this._dateTimeFormatters={},this._numberFormatters={},this._path=new Z,this._dataListeners=new Set,this._componentInstanceCreatedListener=t.componentInstanceCreatedListener||null,this._preserveDirectiveContent=void 0!==t.preserveDirectiveContent&&!!t.preserveDirectiveContent,this.pluralizationRules=t.pluralizationRules||{},this._warnHtmlInMessage=t.warnHtmlInMessage||"off",this._postTranslation=t.postTranslation||null,this._escapeParameterHtml=t.escapeParameterHtml||!1,"__VUE_I18N_BRIDGE__"in t&&(this.__VUE_I18N_BRIDGE__=t.__VUE_I18N_BRIDGE__),this.getChoiceIndex=function(t,n){var r=Object.getPrototypeOf(e);if(r&&r.getChoiceIndex)return r.getChoiceIndex.call(e,t,n);var o,l;return e.locale in e.pluralizationRules?e.pluralizationRules[e.locale].apply(e,[t,n]):(o=t,l=n,o=Math.abs(o),2===l?o?o>1?1:0:1:o?Math.min(o,2):0)},this._exist=function(t,n){return!(!t||!n)&&(!v(e._path.getPathValue(t,n))||!!t[n])},"warn"!==this._warnHtmlInMessage&&"error"!==this._warnHtmlInMessage||Object.keys(o).forEach((function(t){e._checkLocaleMessage(t,e._warnHtmlInMessage,o[t])})),this._initVM({locale:n,fallbackLocale:r,messages:o,dateTimeFormats:l,numberFormats:c})},it={vm:{configurable:!0},messages:{configurable:!0},dateTimeFormats:{configurable:!0},numberFormats:{configurable:!0},availableLocales:{configurable:!0},locale:{configurable:!0},fallbackLocale:{configurable:!0},formatFallbackMessages:{configurable:!0},missing:{configurable:!0},formatter:{configurable:!0},silentTranslationWarn:{configurable:!0},silentFallbackWarn:{configurable:!0},preserveDirectiveContent:{configurable:!0},warnHtmlInMessage:{configurable:!0},postTranslation:{configurable:!0},sync:{configurable:!0}};at.prototype._checkLocaleMessage=function(t,e,n){var r=function(t,e,n,o){if(_(n))Object.keys(n).forEach((function(l){var c=n[l];_(c)?(o.push(l),o.push("."),r(t,e,c,o),o.pop(),o.pop()):(o.push(l),r(t,e,c,o),o.pop())}));else if(c(n))n.forEach((function(n,l){_(n)?(o.push("["+l+"]"),o.push("."),r(t,e,n,o),o.pop(),o.pop()):(o.push("["+l+"]"),r(t,e,n,o),o.pop())}));else if(h(n)){if(Y.test(n)){var f="Detected HTML in message '"+n+"' of keypath '"+o.join("")+"' at '"+e+"'. Consider component interpolation with '<i18n>' to avoid XSS. See https://bit.ly/2ZqJzkp";"warn"===t?l(f):"error"===t&&function(t,e){"undefined"!=typeof console&&(console.error("[vue-i18n] "+t),e&&console.error(e.stack))}(f)}}};r(e,t,n,[])},at.prototype._initVM=function(data){var t=L.config.silent;L.config.silent=!0,this._vm=new L({data:data,__VUE18N__INSTANCE__:!0}),L.config.silent=t},at.prototype.destroyVM=function(){this._vm.$destroy()},at.prototype.subscribeDataChanging=function(t){this._dataListeners.add(t)},at.prototype.unsubscribeDataChanging=function(t){!function(t,e){if(t.delete(e));}(this._dataListeners,t)},at.prototype.watchI18nData=function(){var t=this;return this._vm.$watch("$data",(function(){for(var e,n,r=(e=t._dataListeners,n=[],e.forEach((function(a){return n.push(a)})),n),i=r.length;i--;)L.nextTick((function(){r[i]&&r[i].$forceUpdate()}))}),{deep:!0})},at.prototype.watchLocale=function(t){if(t){if(!this.__VUE_I18N_BRIDGE__)return null;var e=this,n=this._vm;return this.vm.$watch("locale",(function(r){n.$set(n,"locale",r),e.__VUE_I18N_BRIDGE__&&t&&(t.locale.value=r),n.$forceUpdate()}),{immediate:!0})}if(!this._sync||!this._root)return null;var r=this._vm;return this._root.$i18n.vm.$watch("locale",(function(t){r.$set(r,"locale",t),r.$forceUpdate()}),{immediate:!0})},at.prototype.onComponentInstanceCreated=function(t){this._componentInstanceCreatedListener&&this._componentInstanceCreatedListener(t,this)},it.vm.get=function(){return this._vm},it.messages.get=function(){return w(this._getMessages())},it.dateTimeFormats.get=function(){return w(this._getDateTimeFormats())},it.numberFormats.get=function(){return w(this._getNumberFormats())},it.availableLocales.get=function(){return Object.keys(this.messages).sort()},it.locale.get=function(){return this._vm.locale},it.locale.set=function(t){this._vm.$set(this._vm,"locale",t)},it.fallbackLocale.get=function(){return this._vm.fallbackLocale},it.fallbackLocale.set=function(t){this._localeChainCache={},this._vm.$set(this._vm,"fallbackLocale",t)},it.formatFallbackMessages.get=function(){return this._formatFallbackMessages},it.formatFallbackMessages.set=function(t){this._formatFallbackMessages=t},it.missing.get=function(){return this._missing},it.missing.set=function(t){this._missing=t},it.formatter.get=function(){return this._formatter},it.formatter.set=function(t){this._formatter=t},it.silentTranslationWarn.get=function(){return this._silentTranslationWarn},it.silentTranslationWarn.set=function(t){this._silentTranslationWarn=t},it.silentFallbackWarn.get=function(){return this._silentFallbackWarn},it.silentFallbackWarn.set=function(t){this._silentFallbackWarn=t},it.preserveDirectiveContent.get=function(){return this._preserveDirectiveContent},it.preserveDirectiveContent.set=function(t){this._preserveDirectiveContent=t},it.warnHtmlInMessage.get=function(){return this._warnHtmlInMessage},it.warnHtmlInMessage.set=function(t){var e=this,n=this._warnHtmlInMessage;if(this._warnHtmlInMessage=t,n!==t&&("warn"===t||"error"===t)){var r=this._getMessages();Object.keys(r).forEach((function(t){e._checkLocaleMessage(t,e._warnHtmlInMessage,r[t])}))}},it.postTranslation.get=function(){return this._postTranslation},it.postTranslation.set=function(t){this._postTranslation=t},it.sync.get=function(){return this._sync},it.sync.set=function(t){this._sync=t},at.prototype._getMessages=function(){return this._vm.messages},at.prototype._getDateTimeFormats=function(){return this._vm.dateTimeFormats},at.prototype._getNumberFormats=function(){return this._vm.numberFormats},at.prototype._warnDefault=function(t,e,n,r,o,l){if(!v(n))return n;if(this._missing){var c=this._missing.apply(null,[t,e,r,o]);if(h(c))return c}else 0;if(this._formatFallbackMessages){var f=y.apply(void 0,o);return this._render(e,l,f.params,e)}return e},at.prototype._isFallbackRoot=function(t){return(this._fallbackRootWithEmptyString?!t:v(t))&&!v(this._root)&&this._fallbackRoot},at.prototype._isSilentFallbackWarn=function(t){return this._silentFallbackWarn instanceof RegExp?this._silentFallbackWarn.test(t):this._silentFallbackWarn},at.prototype._isSilentFallback=function(t,e){return this._isSilentFallbackWarn(e)&&(this._isFallbackRoot()||t!==this.fallbackLocale)},at.prototype._isSilentTranslationWarn=function(t){return this._silentTranslationWarn instanceof RegExp?this._silentTranslationWarn.test(t):this._silentTranslationWarn},at.prototype._interpolate=function(t,e,n,r,o,l,f){if(!e)return null;var m,y=this._path.getPathValue(e,n);if(c(y)||_(y))return y;if(v(y)){if(!_(e))return null;if(!h(m=e[n])&&!d(m))return null}else{if(!h(y)&&!d(y))return null;m=y}return h(m)&&(m.indexOf("@:")>=0||m.indexOf("@.")>=0)&&(m=this._link(t,e,m,r,"raw",l,f)),this._render(m,o,l,n)},at.prototype._link=function(t,e,n,r,o,l,f){var h=n,m=h.match(K);for(var _ in m)if(m.hasOwnProperty(_)){var link=m[_],v=link.match(Q),d=v[0],y=v[1],w=link.replace(d,"").replace(tt,"");if(k(f,w))return h;f.push(w);var F=this._interpolate(t,e,w,r,"raw"===o?"string":o,"raw"===o?void 0:l,f);if(this._isFallbackRoot(F)){if(!this._root)throw Error("unexpected error");var $=this._root.$i18n;F=$._translate($._getMessages(),$.locale,$.fallbackLocale,w,r,o,l)}F=this._warnDefault(t,w,F,r,c(l)?l:[l],o),this._modifiers.hasOwnProperty(y)?F=this._modifiers[y](F):et.hasOwnProperty(y)&&(F=et[y](F)),f.pop(),h=F?h.replace(link,F):h}return h},at.prototype._createMessageContext=function(t,e,path,n){var r=this,o=c(t)?t:[],l=f(t)?t:{},h=this._getMessages(),m=this.locale;return{list:function(t){return o[t]},named:function(t){return l[t]},values:t,formatter:e,path:path,messages:h,locale:m,linked:function(t){return r._interpolate(m,h[m]||{},t,null,n,void 0,[t])}}},at.prototype._render=function(t,e,n,path){if(d(t))return t(this._createMessageContext(n,this._formatter||nt,path,e));var r=this._formatter.interpolate(t,n,path);return r||(r=nt.interpolate(t,n,path)),"string"!==e||h(r)?r:r.join("")},at.prototype._appendItemToChain=function(t,e,n){var r=!1;return k(t,e)||(r=!0,e&&(r="!"!==e[e.length-1],e=e.replace(/!/g,""),t.push(e),n&&n[e]&&(r=n[e]))),r},at.prototype._appendLocaleToChain=function(t,e,n){var r,o=e.split("-");do{var l=o.join("-");r=this._appendItemToChain(t,l,n),o.splice(-1,1)}while(o.length&&!0===r);return r},at.prototype._appendBlockToChain=function(t,e,n){for(var r=!0,i=0;i<e.length&&"boolean"==typeof r;i++){var o=e[i];h(o)&&(r=this._appendLocaleToChain(t,o,n))}return r},at.prototype._getLocaleChain=function(t,e){if(""===t)return[];this._localeChainCache||(this._localeChainCache={});var n=this._localeChainCache[t];if(!n){e||(e=this.fallbackLocale),n=[];for(var r,o=[t];c(o);)o=this._appendBlockToChain(n,o,e);(o=h(r=c(e)?e:f(e)?e.default?e.default:null:e)?[r]:r)&&this._appendBlockToChain(n,o,null),this._localeChainCache[t]=n}return n},at.prototype._translate=function(t,e,n,r,o,l,c){for(var f,h=this._getLocaleChain(e,n),i=0;i<h.length;i++){var m=h[i];if(!v(f=this._interpolate(m,t[m],r,o,l,c,[r])))return f}return null},at.prototype._t=function(t,e,n,r){for(var o,l=[],c=arguments.length-4;c-- >0;)l[c]=arguments[c+4];if(!t)return"";var f=y.apply(void 0,l);this._escapeParameterHtml&&(f.params=T(f.params));var h=f.locale||e,m=this._translate(n,h,this.fallbackLocale,t,r,"string",f.params);if(this._isFallbackRoot(m)){if(!this._root)throw Error("unexpected error");return(o=this._root).$t.apply(o,[t].concat(l))}return m=this._warnDefault(h,t,m,r,l,"string"),this._postTranslation&&null!=m&&(m=this._postTranslation(m,t)),m},at.prototype.t=function(t){for(var e,n=[],r=arguments.length-1;r-- >0;)n[r]=arguments[r+1];return(e=this)._t.apply(e,[t,this.locale,this._getMessages(),null].concat(n))},at.prototype._i=function(t,e,n,r,o){var l=this._translate(n,e,this.fallbackLocale,t,r,"raw",o);if(this._isFallbackRoot(l)){if(!this._root)throw Error("unexpected error");return this._root.$i18n.i(t,e,o)}return this._warnDefault(e,t,l,r,[o],"raw")},at.prototype.i=function(t,e,n){return t?(h(e)||(e=this.locale),this._i(t,e,this._getMessages(),null,n)):""},at.prototype._tc=function(t,e,n,r,o){for(var l,c=[],f=arguments.length-5;f-- >0;)c[f]=arguments[f+5];if(!t)return"";void 0===o&&(o=1);var h={count:o,n:o},m=y.apply(void 0,c);return m.params=Object.assign(h,m.params),c=null===m.locale?[m.params]:[m.locale,m.params],this.fetchChoice((l=this)._t.apply(l,[t,e,n,r].concat(c)),o)},at.prototype.fetchChoice=function(t,e){if(!t||!h(t))return null;var n=t.split("|");return n[e=this.getChoiceIndex(e,n.length)]?n[e].trim():t},at.prototype.tc=function(t,e){for(var n,r=[],o=arguments.length-2;o-- >0;)r[o]=arguments[o+2];return(n=this)._tc.apply(n,[t,this.locale,this._getMessages(),null,e].concat(r))},at.prototype._te=function(t,e,n){for(var r=[],o=arguments.length-3;o-- >0;)r[o]=arguments[o+3];var l=y.apply(void 0,r).locale||e;return this._exist(n[l],t)},at.prototype.te=function(t,e){return this._te(t,this.locale,this._getMessages(),e)},at.prototype.getLocaleMessage=function(t){return w(this._vm.messages[t]||{})},at.prototype.setLocaleMessage=function(t,e){"warn"!==this._warnHtmlInMessage&&"error"!==this._warnHtmlInMessage||this._checkLocaleMessage(t,this._warnHtmlInMessage,e),this._vm.$set(this._vm.messages,t,e)},at.prototype.mergeLocaleMessage=function(t,e){"warn"!==this._warnHtmlInMessage&&"error"!==this._warnHtmlInMessage||this._checkLocaleMessage(t,this._warnHtmlInMessage,e),this._vm.$set(this._vm.messages,t,M(void 0!==this._vm.messages[t]&&Object.keys(this._vm.messages[t]).length?Object.assign({},this._vm.messages[t]):{},e))},at.prototype.getDateTimeFormat=function(t){return w(this._vm.dateTimeFormats[t]||{})},at.prototype.setDateTimeFormat=function(t,e){this._vm.$set(this._vm.dateTimeFormats,t,e),this._clearDateTimeFormat(t,e)},at.prototype.mergeDateTimeFormat=function(t,e){this._vm.$set(this._vm.dateTimeFormats,t,M(this._vm.dateTimeFormats[t]||{},e)),this._clearDateTimeFormat(t,e)},at.prototype._clearDateTimeFormat=function(t,e){for(var n in e){var r=t+"__"+n;this._dateTimeFormatters.hasOwnProperty(r)&&delete this._dateTimeFormatters[r]}},at.prototype._localizeDateTime=function(t,e,n,r,o,l){for(var c=e,f=r[c],h=this._getLocaleChain(e,n),i=0;i<h.length;i++){var m=h[i];if(c=m,!v(f=r[m])&&!v(f[o]))break}if(v(f)||v(f[o]))return null;var _,d=f[o];if(l)_=new Intl.DateTimeFormat(c,Object.assign({},d,l));else{var y=c+"__"+o;(_=this._dateTimeFormatters[y])||(_=this._dateTimeFormatters[y]=new Intl.DateTimeFormat(c,d))}return _.format(t)},at.prototype._d=function(t,e,n,r){if(!n)return(r?new Intl.DateTimeFormat(e,r):new Intl.DateTimeFormat(e)).format(t);var o=this._localizeDateTime(t,e,this.fallbackLocale,this._getDateTimeFormats(),n,r);if(this._isFallbackRoot(o)){if(!this._root)throw Error("unexpected error");return this._root.$i18n.d(t,n,e)}return o||""},at.prototype.d=function(t){for(var e=[],n=arguments.length-1;n-- >0;)e[n]=arguments[n+1];var r=this.locale,l=null,c=null;return 1===e.length?(h(e[0])?l=e[0]:f(e[0])&&(e[0].locale&&(r=e[0].locale),e[0].key&&(l=e[0].key)),c=Object.keys(e[0]).reduce((function(t,n){var r;return k(o,n)?Object.assign({},t,((r={})[n]=e[0][n],r)):t}),null)):2===e.length&&(h(e[0])&&(l=e[0]),h(e[1])&&(r=e[1])),this._d(t,r,l,c)},at.prototype.getNumberFormat=function(t){return w(this._vm.numberFormats[t]||{})},at.prototype.setNumberFormat=function(t,e){this._vm.$set(this._vm.numberFormats,t,e),this._clearNumberFormat(t,e)},at.prototype.mergeNumberFormat=function(t,e){this._vm.$set(this._vm.numberFormats,t,M(this._vm.numberFormats[t]||{},e)),this._clearNumberFormat(t,e)},at.prototype._clearNumberFormat=function(t,e){for(var n in e){var r=t+"__"+n;this._numberFormatters.hasOwnProperty(r)&&delete this._numberFormatters[r]}},at.prototype._getNumberFormatter=function(t,e,n,r,o,l){for(var c=e,f=r[c],h=this._getLocaleChain(e,n),i=0;i<h.length;i++){var m=h[i];if(c=m,!v(f=r[m])&&!v(f[o]))break}if(v(f)||v(f[o]))return null;var _,d=f[o];if(l)_=new Intl.NumberFormat(c,Object.assign({},d,l));else{var y=c+"__"+o;(_=this._numberFormatters[y])||(_=this._numberFormatters[y]=new Intl.NumberFormat(c,d))}return _},at.prototype._n=function(t,e,n,r){if(!at.availabilities.numberFormat)return"";if(!n)return(r?new Intl.NumberFormat(e,r):new Intl.NumberFormat(e)).format(t);var o=this._getNumberFormatter(t,e,this.fallbackLocale,this._getNumberFormats(),n,r),l=o&&o.format(t);if(this._isFallbackRoot(l)){if(!this._root)throw Error("unexpected error");return this._root.$i18n.n(t,Object.assign({},{key:n,locale:e},r))}return l||""},at.prototype.n=function(t){for(var e=[],n=arguments.length-1;n-- >0;)e[n]=arguments[n+1];var o=this.locale,l=null,c=null;return 1===e.length?h(e[0])?l=e[0]:f(e[0])&&(e[0].locale&&(o=e[0].locale),e[0].key&&(l=e[0].key),c=Object.keys(e[0]).reduce((function(t,n){var o;return k(r,n)?Object.assign({},t,((o={})[n]=e[0][n],o)):t}),null)):2===e.length&&(h(e[0])&&(l=e[0]),h(e[1])&&(o=e[1])),this._n(t,o,l,c)},at.prototype._ntp=function(t,e,n,r){if(!at.availabilities.numberFormat)return[];if(!n)return(r?new Intl.NumberFormat(e,r):new Intl.NumberFormat(e)).formatToParts(t);var o=this._getNumberFormatter(t,e,this.fallbackLocale,this._getNumberFormats(),n,r),l=o&&o.formatToParts(t);if(this._isFallbackRoot(l)){if(!this._root)throw Error("unexpected error");return this._root.$i18n._ntp(t,e,n,r)}return l||[]},Object.defineProperties(at.prototype,it),Object.defineProperty(at,"availabilities",{get:function(){if(!X){var t="undefined"!=typeof Intl;X={dateTimeFormat:t&&void 0!==Intl.DateTimeFormat,numberFormat:t&&void 0!==Intl.NumberFormat}}return X}}),at.install=A,at.version="8.28.2",e.a=at},135:function(t,e,n){"use strict";e.a=function(t,e){return e=e||{},new Promise((function(n,r){var s=new XMLHttpRequest,o=[],u=[],i={},a=function(){return{ok:2==(s.status/100|0),statusText:s.statusText,status:s.status,url:s.responseURL,text:function(){return Promise.resolve(s.responseText)},json:function(){return Promise.resolve(s.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([s.response]))},clone:a,headers:{keys:function(){return o},entries:function(){return u},get:function(t){return i[t.toLowerCase()]},has:function(t){return t.toLowerCase()in i}}}};for(var l in s.open(e.method||"get",t,!0),s.onload=function(){s.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm,(function(t,e,n){o.push(e=e.toLowerCase()),u.push([e,n]),i[e]=i[e]?i[e]+","+n:n})),n(a())},s.onerror=r,s.withCredentials="include"==e.credentials,e.headers)s.setRequestHeader(l,e.headers[l]);s.send(e.body||null)}))}},136:function(t,e,n){"use strict";var r=function(t){return function(t){return!!t&&"object"==typeof t}(t)&&!function(t){var e=Object.prototype.toString.call(t);return"[object RegExp]"===e||"[object Date]"===e||function(t){return t.$$typeof===o}(t)}(t)};var o="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function l(t,e){return!1!==e.clone&&e.isMergeableObject(t)?_((n=t,Array.isArray(n)?[]:{}),t,e):t;var n}function c(t,source,e){return t.concat(source).map((function(element){return l(element,e)}))}function f(t){return Object.keys(t).concat(function(t){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(t).filter((function(symbol){return t.propertyIsEnumerable(symbol)})):[]}(t))}function h(object,t){try{return t in object}catch(t){return!1}}function m(t,source,e){var n={};return e.isMergeableObject(t)&&f(t).forEach((function(r){n[r]=l(t[r],e)})),f(source).forEach((function(r){(function(t,e){return h(t,e)&&!(Object.hasOwnProperty.call(t,e)&&Object.propertyIsEnumerable.call(t,e))})(t,r)||(h(t,r)&&e.isMergeableObject(source[r])?n[r]=function(t,e){if(!e.customMerge)return _;var n=e.customMerge(t);return"function"==typeof n?n:_}(r,e)(t[r],source[r],e):n[r]=l(source[r],e))})),n}function _(t,source,e){(e=e||{}).arrayMerge=e.arrayMerge||c,e.isMergeableObject=e.isMergeableObject||r,e.cloneUnlessOtherwiseSpecified=l;var n=Array.isArray(source);return n===Array.isArray(t)?n?e.arrayMerge(t,source,e):m(t,source,e):l(source,e)}_.all=function(t,e){if(!Array.isArray(t))throw new Error("first argument should be an array");return t.reduce((function(t,n){return _(t,n,e)}),{})};var v=_;t.exports=v},177:function(t,e,n){t.exports={}},47:function(t,e,n){"use strict";var r={name:"NoSsr",functional:!0,props:{placeholder:String,placeholderTag:{type:String,default:"div"}},render:function(t,e){var n=e.parent,r=e.slots,o=e.props,l=r(),c=l.default;void 0===c&&(c=[]);var f=l.placeholder;return n._isMounted?c:(n.$once("hook:mounted",(function(){n.$forceUpdate()})),o.placeholderTag&&(o.placeholder||f)?t(o.placeholderTag,{class:["no-ssr-placeholder"]},o.placeholder||f):c.length>0?c.map((function(){return t(!1)})):t(!1))}};t.exports=r},48:function(t,e,n){"use strict";function r(t,e,n){"object"==typeof n.value&&(n.value=o(n.value)),n.enumerable&&!n.get&&!n.set&&n.configurable&&n.writable&&"__proto__"!==e?t[e]=n.value:Object.defineProperty(t,e,n)}function o(t){if("object"!=typeof t)return t;var e,n,l,i=0,c=Object.prototype.toString.call(t);if("[object Object]"===c?l=Object.create(t.__proto__||null):"[object Array]"===c?l=Array(t.length):"[object Set]"===c?(l=new Set,t.forEach((function(t){l.add(o(t))}))):"[object Map]"===c?(l=new Map,t.forEach((function(t,e){l.set(o(e),o(t))}))):"[object Date]"===c?l=new Date(+t):"[object RegExp]"===c?l=new RegExp(t.source,t.flags):"[object DataView]"===c?l=new t.constructor(o(t.buffer)):"[object ArrayBuffer]"===c?l=t.slice(0):"Array]"===c.slice(-6)&&(l=new t.constructor(t)),l){for(n=Object.getOwnPropertySymbols(t);i<n.length;i++)r(l,n[i],Object.getOwnPropertyDescriptor(t,n[i]));for(i=0,n=Object.getOwnPropertyNames(t);i<n.length;i++)Object.hasOwnProperty.call(l,e=n[i])&&l[e]===t[e]||r(l,e,Object.getOwnPropertyDescriptor(t,e))}return l||t}n.d(e,"a",(function(){return o}))}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/bc492b873b2d5082c7ee.js b/docs/_nuxt/js/bc492b873b2d5082c7ee.js
new file mode 100644
index 0000000..ee0233d
--- /dev/null
+++ b/docs/_nuxt/js/bc492b873b2d5082c7ee.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[23],{324:function(e,t,o){"use strict";o.r(t),t.default='# Leveraging Color to Enhance Data Visualization\n\nIn all the visual pathways in the data visualization, color is the first-way visual perception. Doing visual encoding and communication is an effective way. If used properly, color can sufficiently improve the visualization. In the following, we will look at some specific ideas to improve the visualization.\n\n## Sympathetic Response of Color\n\nColor perception is a complicated result of the interaction between physiological and psychological effects. To prove that humans can perceive colors by warm and cool, Hiroshi Ohchi, a Japanese graphic designer has done an experiment to paint the wall of two workplaces in gray-cyan and red-orange. With the same objective ambient temperature and labor intensity, staffs in the gray-cyan workplace are easier to feel cool. Further research found that except for the feeling of warm and cool by observing colors, there are also light and dark, far and near, lively and melancholic. Colors will cause emotional fluctuations that affect human behavior based on human instinct.\n\nIn the field of visualization, if we choose the color that coincides with the characteristic of data and the sympathetic response of emotions.\n\nHere is an example of the selling percentage of a certain dessert shop.\n\n<img max-width="830" width="50%" height="100%"\nsrc="images/design/color/color01.png">\n</img>\n\nWe provided two charts with the same style but different color schemes. The right side one obviously performs better for the dessert data displaying.\n\n<img max-width="830" width="100%" height="100%"\nsrc="images/design/color/color02.png">\n</img>\n\nCompared with blue and purple, color likes orange, yellow, pink and green are preferred choices to inspire the appetite, happiness and warmness which matched the motion of eating sweets. In the other hand, most of the customer group for desserts is woman and children. Lively and cute chart colors in the left chart might be the better choice compared with the calm and rational colors of the chart.\n\n##Semantic Response of Color\n\nDifferent colors can help us to identify and classify different ideas because we are familiar with combining things and concepts with colors. We subconsciously think of white when we referring to "clouds", pink when we referring to "love". Those colors that are naturally consistent with semantics are called "semantic-resonant color".\n\nThe researchers noticed that matching the semantic-resonant color for words contained specific color can increase the speed of the cognitive process and vice versa. This funny phenomenon is called the "Stroop Effect". In a comparative test (as shown below), the text "YELLOW" in the first line is easier to be positioned compared with the text "YELLOW" in the second line. In the second line, the text "PURPLE" have the font color of yellow, which makes it being noticed earlier sometimes. The font color here interfered with our speed of finding the right answer.\n\n<img max-width="830" width="100%" height="100%"\nsrc="images/design/color/color03.png">\n</img>\n\nUsing semantic-resonant color effectively, we use the same color as the meaning of the data to improve the cognition efficiency of the visualization. For instance, you might use blue to display the data of "OCEAN", yellow to display the data of "DESERT".\n\nThe visual effects should be explained as easily as possible. Try to find out the color scheme that matches the preconceived and cultural association of the user. The following chart shows the sales info of kiwifruit, banana, orange and strawberry and chose the same color as the fruit itself. Therefore, we can easily identify and remember the fruit corresponding to each column.\n\n<iframe max-width="830" width="100%" height="400"\nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xry8WsXdOW">\n</iframe>\n\n## Common Sense Consistency of Color\n\nIn terms of visualization, the color used is directly related to factors such as data type, display environment, target client, and social background. You cannot separate color as an individual factor to design. Please restrain your free creative passion before selecting the color scheme and check if it is a special type of data. For example, colors like green and red in a stock chart have their customary meaning. Therefore, the consistency between the choice of color and common knowledge makes the user understand and distinguish the chart efficiently.\n\n<iframe max-width="830" width="100%" height="400"\nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xp1oqJoQqG">\n</iframe>\n\nHere is another example of the outdoor temperature, the red and blue bars make the chart easy to distinguish without explanation.\n\n<iframe max-width="830" width="100%" height="400"\nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xIVoX5gZcT&v=1">\n</iframe>\n\n## Divide Data by Colors\n\nWe usually use the line chart to analyze the trend. We can actively configure an interval when sometimes we need to clearly know whether a specific data is in some domain. If you set 25%-75% as our planned sales, try to set different colors for each interval in this domain to efficiently identify the interval for each value: whether it is not reaching the goal, reaching the goal, or exceeding the goal.\n\nTherefore, color can be used as an effective tool to improve the readability of the chart.\n\n<img max-width="830" width="80%" height="100%"\nsrc="images/design/color/color04.png">\n</img>\n'}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/c02537622f5a31734cab.js b/docs/_nuxt/js/c02537622f5a31734cab.js
new file mode 100644
index 0000000..159e632
--- /dev/null
+++ b/docs/_nuxt/js/c02537622f5a31734cab.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{313:function(e,n,t){"use strict";t.r(n),n.default="# What's New in Apache ECharts 5.2.0\n\n## Universal Transition\n\nNatural and smooth transition animations have been an important feature in Apache ECharts. By avoiding abrupt changes from data update, it not only improves the visual effect, but also provides the possibility to express the association and evolution of data. Therefore, in 5.2.0, we have further enhanced this animation capability. Next, we will see how this **Universal Transition** adds expressiveness and narrative power to the chart.\n\nIn previous versions, transition animations had certain limitations: they could only be used for the position, size of the same shape, and they could only work on the same type of series. For example, the following example reflects the change in data percent through the change in sector shape in a pie chart.\n\n```js live {layout: 'lr'}\nfunction makeRandomData() {\n  return [\n    {\n      value: Math.random(),\n      name: 'A'\n    },\n    {\n      value: Math.random(),\n      name: 'B'\n    },\n    {\n      value: Math.random(),\n      name: 'C'\n    }\n  ];\n}\noption = {\n  series: [\n    {\n      type: 'pie',\n      radius: [0, '50%'],\n      data: makeRandomData()\n    }\n  ]\n};\n\nsetInterval(() => {\n  myChart.setOption({\n    series: {\n      data: makeRandomData()\n    }\n  });\n}, 2000);\n```\n\nAnd starting with 5.2.0, we introduced universal transition, a more powerful animation feature. With that, transitions are no longer limited to between series of the same type. Now, we can use this cross-series morphing to animate between any type of series and any type of shapes.\n\nHow cool would this be? Let's have a look!\n\n### Morphing transition across series\n\nWith `universalTransition: true` set to enable universion transition feature, switching from pie charts to bar charts, or from bar charts to scatter charts, or even between more complex charts like Sunburst and Treemap, can be morphed naturally.\n\nAs follows, switching between a pie chart and a bar chart.\n\n```js live {layout: 'bt'}\nconst dataset = {\n  dimensions: ['name', 'score'],\n  source: [\n    ['Hannah Krause', 314],\n    ['Zhao Qian', 351],\n    ['Jasmin Krause ', 287],\n    ['Li Lei', 219],\n    ['Karle Neumann', 253],\n    ['Mia Neumann', 165],\n    ['Böhm Fuchs', 318],\n    ['Han Meimei', 366]\n  ]\n};\nconst pieOption = {\n  dataset: [dataset],\n  series: [\n    {\n      type: 'pie',\n      // associate the series to be animated by id\n      id: 'Score',\n      radius: [0, '50%'],\n      universalTransition: true,\n      animationDurationUpdate: 1000\n    }\n  ]\n};\nconst barOption = {\n  dataset: [dataset],\n  xAxis: {\n    type: 'category'\n  },\n  yAxis: {},\n  series: [\n    {\n      type: 'bar',\n      // associate the series to be animated by id\n      id: 'Score',\n      // Each data will have a different color\n      colorBy: 'data',\n      encode: { x: 'name', y: 'score' },\n      universalTransition: true,\n      animationDurationUpdate: 1000\n    }\n  ]\n};\n\noption = barOption;\n\nsetInterval(() => {\n  option = option === pieOption ? barOption : pieOption;\n  // Use the notMerge form to remove the axes\n  myChart.setOption(option, true);\n}, 2000);\n```\n\nMore transitions between common charts.\n\n![](images/5-2-0/universal-transition.gif)\n\nSuch transitions are no longer limited to just the basic line, bar, and pie charts, but also between bars and maps:\n\n![](images/5-2-0/universal-transition-2.gif)\n\nor between Sunburst and Treemap, or even between very flexible custom series can be transitions.\n\n![](images/5-2-0/universal-transition-3.gif)\n\n> Note that you need to configure the series ids to ensure that there is a one-to-one correspondence between the series that need to be animated for the transition.\n\n> Minimal bundle needs to import this feature manually.\n>\n> ```ts\n> import { UniversalTransition } from 'echarts/features';\n> echarts.use([UniversalTransition]);\n> ```\n\n### Data split and merge animations\n\nIn addition to the common update of data values, sometimes we also encounter data aggregation, drill-down and other updates after interactions, when we can not directly apply one-to-one transitions, but need to use more animation effects like splitting and merging to express the transformation of data.\n\nIn order to be able to express the possible many-to-many connections between data, in 5.2.0 we introduced a new concept `groupId`. We can set the group to the whole series via [series.dataGroupId](${optionPath}series-bar.dataGroupId), or more fine-grained by [series.data.groupId](${optionPath}series-bar.dataGroupId) to set the group to which each data belongs. It's even easier if you use a `dataset` to manage the data, you can use `encode.itemGroupId` to specify a dimension encoded as `groupId`.\n\nFor example, if we want to implement a drill-down animation for a bar chart, we can set the entire series of data after the drill-down to the same `groupId`, which then corresponds to the data before the drill-down\n\n```js live {layout: 'lr'}\noption = {\n  xAxis: {\n    data: ['Animals', 'Fruits', 'Cars']\n  },\n  yAxis: {},\n  dataGroupId: '',\n  animationDurationUpdate: 500,\n  series: {\n    type: 'bar',\n    id: 'sales',\n    data: [\n      {\n        value: 5,\n        groupId: 'animals'\n      },\n      {\n        value: 2,\n        groupId: 'fruits'\n      },\n      {\n        value: 4,\n        groupId: 'cars'\n      }\n    ],\n    universalTransition: {\n      enabled: true,\n      divideShape: 'clone'\n    }\n  }\n};\n\nconst drilldownData = [\n  {\n    dataGroupId: 'animals',\n    data: [\n      ['Cats', 4],\n      ['Dogs', 2],\n      ['Cows', 1],\n      ['Sheep', 2],\n      ['Pigs', 1],\n      ['Cows', 1],\n      ['Sheep', 2],\n      ['Pigs', 1]\n    ]\n  },\n  {\n    dataGroupId: 'fruits',\n    data: [\n      ['Apples', 4],\n      ['Oranges', 2],\n      ['Oranges', 2]\n    ]\n  },\n  {\n    dataGroupId: 'cars',\n    data: [\n      ['Toyota', 4],\n      ['Opel', 2],\n      ['Volkswagen', 2],\n      ['Volkswagen', 2]\n    ]\n  }\n];\n\nmyChart.on('click', event => {\n  if (event.data) {\n    const subData = drilldownData.find(data => {\n      return data.dataGroupId === event.data.groupId;\n    });\n    if (!subData) {\n      return;\n    }\n    myChart.setOption({\n      xAxis: {\n        data: subData.data.map(item => {\n          return item[0];\n        })\n      },\n      series: {\n        type: 'bar',\n        id: 'sales',\n        dataGroupId: subData.dataGroupId,\n        data: subData.data.map(item => {\n          return item[1];\n        }),\n        universalTransition: {\n          enabled: true,\n          divideShape: 'clone'\n        }\n      },\n      graphic: [\n        {\n          type: 'text',\n          left: 50,\n          top: 20,\n          style: {\n            text: 'Back',\n            fontSize: 18\n          },\n          onclick: function() {\n            myChart.setOption(option, true);\n          }\n        }\n      ]\n    });\n  }\n});\n```\n\nWith `groupId`, we can also implement richer aggregation and drill-down animations.\n\nAggregation of data.\n\n![](images/5-2-0/group-transition.gif)\n\nDrilling down of a single series into two series:\n\n![](images/5-2-0/group-transition-2.gif)\n\nUniversal transition take the ability to express the relationships and evolution of data to a new level, giving wings to your visualization creation inspiration.\n\nAt this point, we know you're already eager to try it out. But don't worry, there are even more new features in 5.2.0 that are worth checking out.\n\n## Color palette picking strategy\n\nIn the above universal transition example, you may have noticed that we use a `colorBy` configuration that was not available in the previous version. This configuration is also a new feature we added in this version to configure different granularity of color palette color picking for the series. This configuration currently supports two strategies.\n\n- `'series'` assigns the colors in the palette by series, so that all data in the same series are in the same color.\n- `'data'` assigns colors in the palette according to data items, with each data item using a different color.\n\nPreviously, we fixed this strategy for each type of series, for example, the bar chart was fixed with `'series'` and the pie chart was fixed with `'data'`.\n\nAnd now with this new feature, we can assign a different color to each data item in the bar chart.\n\n```js live {layout: 'lr'}\noption = {\n  xAxis: {\n    type: 'category',\n    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']\n  },\n  yAxis: {\n    type: 'value'\n  },\n  series: [\n    {\n      data: [120, 200, 150, 80, 70, 110, 130],\n      type: 'bar',\n      colorBy: 'data'\n    }\n  ]\n};\n```\n\nOr use one color uniformly in the pie chart.\n\n```js live {layout: 'lr'}\noption = {\n  series: {\n    type: 'pie',\n    colorBy: 'series',\n    radius: [0, '50%'],\n    itemStyle: {\n      borderColor: '#fff',\n      borderWidth: 1\n    },\n    data: [\n      {\n        value: 335,\n        name: 'Direct Visit'\n      },\n      {\n        value: 234,\n        name: 'Union Ad'\n      },\n      {\n        value: 1548,\n        name: 'Search Engine'\n      }\n    ]\n  }\n};\n```\n\nThis configuration allows us to avoid the trouble of finding palette colors and setting them one by one, and may provide convenience in specific scenarios. We will further enhance this configuration later to provide more strategies.\n\n## Labels for polar bar charts\n\nIn this version we have implemented labels for bar charts on polar coordinates and support rich label positioning configurations. The following is a progress chart with labels displayed at the start points.\n\n```js live {layout: 'lr'}\noption = {\n  angleAxis: {\n    show: false,\n    max: 10\n  },\n  radiusAxis: {\n    show: false,\n    type: 'category',\n    data: ['AAA', 'BBB', 'CCC', 'DDD']\n  },\n  polar: {},\n  series: [\n    {\n      type: 'bar',\n      data: [3, 4, 5, 6],\n      colorBy: 'data',\n      roundCap: true,\n      label: {\n        show: true,\n        // Try changing it to 'insideStart'\n        position: 'start',\n        formatter: '{b}'\n      },\n      coordinateSystem: 'polar'\n    }\n  ]\n};\n```\n\nMore configurations for label positions.\n\n![](images/5-2-0/polar-bar-label.jpg)\n\nThis flexible label position configuration item greatly enriches the expressiveness of the polar bar chart, allowing the text to clearly match the corresponding data.\n\n## Pie chart style for empty data\n\nIn the previous version, if there was no data in the pie chart, the screen might be completely blank. Because there was no visual element, users may wonder if there was a bug.\n\nTo solve this problem, in this version we will default to display a gray placeholder circle when there is no data to prevent the screen from being completely blank. We can configure the style of this placeholder circle with `emptyCircleStyle`.\n\n```js live {layout: 'lr'}\noption = {\n  series: [\n    {\n      type: 'pie',\n      data: [],\n      // showEmptyCircle: false,\n      emptyCircleStyle: {\n        // change the style to empty circle\n        color: 'transparent',\n        borderColor: '#ddd',\n        borderWidth: 1\n      }\n    }\n  ]\n};\n```\n\nIf you don't want to show this gray circle, you can also set `showEmptyCircle: false` to turn it off.\n\n## Performance enhancements for high-dimensional data\n\nWe have introduced [dataset](${optionPath}dataset) since 4.0 to manage chart data. However, in some extreme scenarios with particularly high-dimensional (>100) data, we may encounter some dramatic performance degradation, such as the following scenario of visualizing a thousand-dimensional data through a thousand series ([#11907](https://github.com/apache/echarts/issues/11907)), which may even may lead to getting stuck.\n\n```js\nconst indices = Array.from(Array(1000), (_, i) => {\n  return `index${i}`;\n});\nconst option = {\n  xAxis: { type: 'category' },\n  yAxis: {},\n  dataset: {\n    // dimension: ['date', . . indices],\n    source: Array.from(Array(10), (_, i) => {\n      return {\n        date: i,\n        ... .indices.reduce((item, next) => {\n          item[next] = Math.random() * 100;\n          return item;\n        }, {})\n      };\n    })\n  },\n  series: indices.map(index => {\n    return { type: 'line', name: index };\n  })\n};\n```\n\nThe reason for this performance problem is that we process the high-dimensional dataset at the bottom of each series as needed and save a copy of the processed data and the meta information about the dimensions of the data. This meant that the `1000 x 1000` dimensions had to be processed and saved in the example, which put a huge pressure on memory and garbage collection, resulting in a dramatic performance drop for high dimensions.\n\nIn the new version we have optimized this problem so that all series share the dataset storage as much as possible (whether or not they do depends on how the series uses the data).\nThis optimization ensure that memory does not explode as the dataset dimensions and series grow, significantly improving initialization performance in this extreme scenario. The rendering time for the example just described has also been reduced to an acceptable 300 ms or less.\n\nIt is not just this high-dimensional scenario that benefits from this optimization. When using a dataset with large amount of data, multiple series only process the data once because of data sharing, so it can also bring significant performance gains.\n\n## Type optimization for custom series\n\nCustom series provide a very flexible way to create series graphs. Compared to other series, the learning curve for custom series can be a bit steep. Therefore, in this release, we have further optimized the type of the core method `renderItem` in the custom series by making more precise inferences about the types of the parameters and return values of `renderItem`, so that it is possible to infer which properties of the elements can be set based on the type returned:\n\n```ts\nseries = {\n  type: 'custom',\n  renderItem(params) {\n    return {\n      type: 'group',\n      // The group type uses children to store children of other types\n      children: [\n        {\n          type: 'circle',\n          // circle has the following configurable shape attributes\n          shape: { r: 10, cx: 0, cy: 0 },\n          // Configurable styles\n          style: { fill: 'red' }\n        },\n        {\n          type: 'rect',\n          // rect has the following configurable shape properties\n          shape: { x: 0, y: 0, width: 100, height: 100 }\n        },\n        {\n          type: 'path',\n          // Custom path shapes\n          shape: { d: '...' }\n        }\n      ]\n    };\n  }\n};\n```\n\n## Summary\n\nIf you're interested in some of the features and optimizations in 5.2.0, you may want to update to the latest version of Apache ECharts and try it out for yourself.\n\nIf you're interested in what's next for Apache ECharts, you can also follow our development plans at [GitHub Milestone](https://github.com/apache/echarts/milestones). Feel free to join us as a contributor (learn more at [Wiki](https://github.com/apache/echarts/wiki)).\n\n## Full Changelog\n\nView the [Changelog](${mainSitePath}/changelog.html#v5-2-0)\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/c45d61aa6775022454c1.js b/docs/_nuxt/js/c45d61aa6775022454c1.js
new file mode 100644
index 0000000..f965e4b
--- /dev/null
+++ b/docs/_nuxt/js/c45d61aa6775022454c1.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[147],{448:function(n,e,t){"use strict";t.r(e),e.default="# 文档编辑指南\n\n## 新增一个 markdown 文件 [[[#adding-a-markdown-file]]]\n\n在 `contents/zh/`(中文文章)或 `contents/en/`(英文文章)目录下新增一个 markdown 文件,最多支持三级目录。将路径及标题信息更新在 `contents/zh/posts.yml` 或 `contents/en/posts.yml`。将作者信息添加在 `components/helper/contributors.ts`。(注意,此文件中 `en` 和 `zh` 是不同的条目。)\n\nmarkdown 文件名称小写。\n\n## 使用 prettier 来自动格式化代码 [[[#using-prettier-to-automatically-format-code]]]\n\n在开始之前,我们推荐安装`prettier`的 [VSCode 插件](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode),该插件可以在你保存的时候自动帮你格式化代码。\n\n如果你觉得自动的格式化破坏了你的代码块,你可以在在代码块外面加上下面代码阻止`prettier`格式化该部分代码\n\n```markdown\n\x3c!-- prettier-ignore-start --\x3e\n\x3c!-- prettier-ignore-end --\x3e\n```\n\n如果你发现有的代码块并没有被格式化,请先检查该代码是否存在语法上的错误。\n\n## 内置变量 [[[#built-in-variables]]]\n\n\n- `optionPath`: 例如,链接 [xAxis.type](${optionPath}xAxis.type) 能这么写而得到:\n\n  <pre>&#91;xAxis.type&#93;&#40;&#36;{optionPath}xAxis.type&#41;</pre>\n- `apiPath`: 例如,链接 [echarts.init](${apiPath}echarts.init) 能这么写而得到:\n\n  <pre>&#91;echarts.init&#93;&#40;&#36;{apiPath}echarts.init&#41;</pre>\n- `mainSitePath`: 例如,链接 [echarts.init](${mainSitePath}api.html#echarts.init) 能这么写而得到:\n\n  <pre>&#91;echarts.init&#93;&#40;&#36;{mainSitePath}api.html#echarts.init&#41;</pre>\n- `exampleEditorPath`: 例如,链接 [line-simple](${exampleEditorPath}line-simple&edit=1&reset=1) 能这么写而得到:\n\n  <pre>&#91;line-simple&#93;&#40;&#36;{exampleEditorPath}line-simple&edit=1&reset=1&#41;</pre>\n- `exampleViewPath`: 例如,链接 [line-simple](${exampleViewPath}line-simple&edit=1&reset=1) 能这么写而得到:\n\n  <pre>&#91;line-simple&#93;&#40;&#36;{exampleViewPath}scatter-exponential-regression&edit=1&reset=1&#41;</pre>\n- `lang`: 例如,链接 [Get Started](${lang}/get-started) 能这么写而得到:\n\n  <pre>&#91;Get Started&#93;&#40;&#36;{lang}/get-started&#41;</pre>\n\n\n## 段落标题/子标题 [[[#headings]]]\n\nThe syntax:\n\x3c!-- prettier-ignore-start --\x3e\n<pre>\n&#35;&#35; 某段落标题 [[[#a-unique-id-for-link]]]\n</pre>\n\x3c!-- prettier-ignore-end --\x3e\n\n<md-alert type=\"danger\">\nid 用于外链到此段落。强烈建议为每个段落标题声明唯一 id ,并且保持不变。否则,会自动根据段落标题文字生成一个 id ,但是当标题修改时,生成的 id 也会变,导致外链失效。并且,不同语言的文档中生成的 id 也不同,很不方便引用。\n</md-alert>\n\n注:文章主标题不必声明 id ,因为文章的链接就是文件路径(在 `posts.yml` 中定义)。\n\n## 引用其它文章 [[[#link-to-other-articles]]]\n\n<pre>\n&#91;获取 Apache ECharts&#93;&#40;&#36;{lang}/basics/download&#41;\n</pre>\n\n效果为:\n[获取 Apache ECharts](${lang}/basics/download)\n\n## 嵌入代码 [[[#embedding-code]]]\n\n### 基础使用 [[[#embedding-code-basic-usage]]]\n\n写法为:\n\x3c!-- prettier-ignore-start --\x3e\n<pre>\n&#96;&#96;&#96;js\noption = {\n    series: [{\n        type: 'bar',\n        data: [23, 24, 18, 25, 27, 28, 25]\n    }]\n};\n&#96;&#96;&#96;\n</pre>\n\x3c!-- prettier-ignore-end --\x3e\n\n效果为:\n```js\noption = {\n  series: [\n    {\n      type: 'bar',\n      data: [23, 24, 18, 25, 27, 28, 25]\n    }\n  ]\n};\n```\n\n### 代码推荐写法 [[[#embedding-code-recommended-way-of-writing-code]]]\n\n为了可以让工具帮助我们对代码进行格式化,我们应该尽量避免有语法问题的写法。\n\n比如注释 `...`\n\n```js\noption = {\n  series: [\n    {\n      type: 'bar'\n      // ...\n    }\n  ]\n};\n```\n\n### 实时预览和编辑 [[[#embedding-code-live-preview-and-editing]]]\n\n> 目前只支持对 ECharts option 代码的预览(执行代码绘制图表)\n\n写法为:\n\x3c!-- prettier-ignore-start --\x3e\n<pre>\n&#96;&#96;&#96;js live\noption = {\n  xAxis: {\n    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']\n  },\n  yAxis: {},\n  series: [\n    {\n      type: 'bar',\n      data: [23, 24, 18, 25, 27, 28, 25]\n    }\n  ]\n};\n&#96;&#96;&#96;\n</pre>\n\x3c!-- prettier-ignore-end --\x3e\n\n效果为:\n```js live\noption = {\n  xAxis: {\n    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']\n  },\n  yAxis: {},\n  series: [\n    {\n      type: 'bar',\n      data: [23, 24, 18, 25, 27, 28, 25]\n    }\n  ]\n};\n```\n\n### 更多预览布局 [[[#embedding-code-more-preview-layouts]]]\n\n#### 左右 [[[#embedding-code-more-preview-layouts-left-to-right]]]\n\n写法为:\n\x3c!-- prettier-ignore-start --\x3e\n<pre>\n&#96;&#96;&#96;js live {layout: 'lr'}\noption = {\n  ...\n};\n&#96;&#96;&#96;\n</pre>\n\x3c!-- prettier-ignore-end --\x3e\n\n效果为:\n```js live {layout: 'lr'}\noption = {\n  xAxis: {\n    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']\n  },\n  yAxis: {},\n  series: [\n    {\n      type: 'bar',\n      data: [23, 24, 18, 25, 27, 28, 25]\n    }\n  ]\n};\n```\n\n#### 右左 [[[#embedding-code-more-preview-layouts-right-to-left]]]\n\n写法为:\n\x3c!-- prettier-ignore-start --\x3e\n<pre>\n&#96;&#96;&#96;js live {layout: 'rl'}\noption = {\n  ...\n};\n&#96;&#96;&#96;\n</pre>\n\x3c!-- prettier-ignore-end --\x3e\n\n效果为:\n```js live {layout: 'rl'}\noption = {\n  xAxis: {\n    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']\n  },\n  yAxis: {},\n  series: [\n    {\n      type: 'bar',\n      data: [23, 24, 18, 25, 27, 28, 25]\n    }\n  ]\n};\n```\n\n#### 下上 [[[#embedding-code-more-preview-layouts-down-to-up]]]\n\n写法为:\n\x3c!-- prettier-ignore-start --\x3e\n<pre>\n&#96;&#96;&#96;js live {layout: 'bt'}\noption = {\n  ...\n};\n</pre>\n\x3c!-- prettier-ignore-end --\x3e\n\n效果为:\n```js live {layout: 'bt'}\noption = {\n  xAxis: {\n    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']\n  },\n  yAxis: {},\n  series: [\n    {\n      type: 'bar',\n      data: [23, 24, 18, 25, 27, 28, 25]\n    }\n  ]\n};\n```\n\n### 高亮指定代码行以及设置文件名[[[#embedding-code-highlighting-lines-of-code-and-adding-filenames]]]\n\n写法为:\n\x3c!-- prettier-ignore-start --\x3e\n<pre>\n&#96;&#96;&#96;js {1,3-5}[option.js]\noption = {\n  series: [\n    {\n      type: 'bar',\n      data: [23, 24, 18, 25, 27, 28, 25]\n    }\n  ]\n};\n&#96;&#96;&#96;\n</pre>\n\x3c!-- prettier-ignore-end --\x3e\n\n效果为:\n```js {1,3-5}\noption = {\n  series: [\n    {\n      type: 'bar',\n      data: [23, 24, 18, 25, 27, 28, 25]\n    }\n  ]\n};\n```\n\n## 嵌入图片 [[[#embedding-images]]]\n\n图片实际存放地址在 `static/images/` 下。\n\n写法为:\n```\n![图片说明](images/demo.png)\n```\n\n### 设置图片高宽 [[[#embedding-images-set-width-height]]]\n\n对于当前页面的临时样式,可以直接写 html:\n\n```\n<img data-src=\"images/demo.png\" style=\"width: 50px\" />\n```\n\n## 嵌入示例(iframe) [[[#embedding-examples]]]\n\n\n写法为:\n```\n<md-example src=\"doc-example/getting-started\" width=\"100%\" height=\"300\" />\n```\n其中,`src` 为 https://echarts.apache.org/examples/zh/editor.html?c=line-simple 地址中 `?c=` 后面这一串。\n\n效果为:\n<md-example src=\"doc-example/getting-started\" width=\"100%\" height=\"300\" />\n\n## 添加示例链接 [[[#link-to-examples]]]\n\n写法为:\n<pre>&#91;line-simple&#93;&#40;&#36;{exampleEditorPath}line-simple&edit=1&reset=1&#41;</pre>\n\n效果为:[line-simple](${exampleEditorPath}line-simple&edit=1&reset=1)\n\n## 添加 ECharts 配置项链接 [[[#link-to-echarts-option-items]]]\n\n写法为:\n<pre>&#91;xAxis.type&#93;&#40;&#36;{optionPath}xAxis.type&#41;</pre>\n\n效果为:\n[xAxis.type](${optionPath}xAxis.type)\n\n写法为:\n<pre>&#91;echarts.init&#93;&#40;&#36;{apiPath}echarts.init&#41;</pre>\n\n效果为:\n[echarts.init](${apiPath}echarts.init)\n\n\n## 更多组件使用 [[[#more-component-usage]]]\n\n文档支持使用全局注册的`markdown`组件,除了刚才介绍的`md-example`组件,还有下面几种组件\n\n### md-alert [[[#more-component-usage-md-alert]]]\n\n提示组件\n\n```\n<md-alert type=\"info\">\nThis is an info alert.\n</md-alert>\n```\n\n<md-alert type=\"info\">\nThis is an info alert.\n</md-alert>\n\n```\n<md-alert type=\"success\">\nThis is a success alert.\n</md-alert>\n```\n\n<md-alert type=\"success\">\nThis is a success alert.\n</md-alert>\n\n```\n<md-alert type=\"warning\">\nThis is a warning alert.\n</md-alert>\n```\n\n<md-alert type=\"warning\">\nThis is a warning alert.\n</md-alert>\n\n```\n<md-alert type=\"danger\">\nThis is a danger alert.\n</md-alert>\n```\n\n<md-alert type=\"danger\">\nThis is a danger alert.\n</md-alert>\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/c853c8b3b7a6be629012.js b/docs/_nuxt/js/c853c8b3b7a6be629012.js
new file mode 100644
index 0000000..15b9183
--- /dev/null
+++ b/docs/_nuxt/js/c853c8b3b7a6be629012.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[108],{409:function(n,t,e){"use strict";e.r(t),t.default='# 图表容器及大小\n\n在[快速上手](${lang}/get-started)中,我们介绍了初始化 ECharts 的接口 [`echarts.init`](${mainSitePath}/api.html#echarts.init)。[API 文档](${mainSitePath}/api.html#echarts.init)中详细介绍了参数的具体含义,建议理解后再阅读本文。\n\n下面,我们就常见的几种使用场景,介绍如何初始化一个图表以及改变其大小。\n\n## 初始化\n\n### 在 HTML 中定义有宽度和高度的父容器(推荐)\n\n通常来说,需要在 HTML 中先定义一个 `<div>` 节点,并且通过 CSS 使得该节点具有宽度和高度。初始化的时候,传入该节点,图表的大小默认即为该节点的大小,除非声明了 `opts.width` 或 `opts.height` 将其覆盖。\n\n```html\n<div id="main" style="width: 600px;height:400px;"></div>\n<script type="text/javascript">\n  var myChart = echarts.init(document.getElementById(\'main\'));\n<\/script>\n```\n\n需要注意的是,使用这种方法在调用 `echarts.init` 时需保证容器已经有宽度和高度了。\n\n### 指定图表的大小\n\n如果图表容器不存在宽度和高度,或者,你希望图表宽度和高度不等于容器大小,也可以在初始化的时候指定大小。\n\n```html\n<div id="main"></div>\n<script type="text/javascript">\n  var myChart = echarts.init(document.getElementById(\'main\'), null, {\n    width: 600,\n    height: 400\n  });\n<\/script>\n```\n\n## 响应容器大小的变化\n\n### 监听图表容器的大小并改变图表大小\n\n在有些场景下,我们希望当容器大小改变时,图表的大小也相应地改变。\n\n比如,图表容器是一个高度为 400px、宽度为页面 100% 的节点,你希望在浏览器宽度改变的时候,始终保持图表宽度是页面的 100%。\n\n这种情况下,可以监听页面的 `resize` 事件获取浏览器大小改变的事件,然后调用 [`echartsInstance.resize`](${mainSitePath}api.html#echartsInstance.resize) 改变图表的大小。\n\n```html\n<style>\n  #main,\n  html,\n  body {\n    width: 100%;\n  }\n  #main {\n    height: 400px;\n  }\n</style>\n<div id="main"></div>\n<script type="text/javascript">\n  var myChart = echarts.init(document.getElementById(\'main\'));\n  window.addEventListener(\'resize\', function() {\n    myChart.resize();\n  });\n<\/script>\n```\n\n> 小贴士:有时候我们可能会通过 JS 或 CSS 调整容器大小,由于页面大小并未发生改变,因此 `resize` 事件将不会被触发。如果有需要覆盖这种情况,可以借助浏览器的 [`ResizeObserver`](https://developer.mozilla.org/zh-CN/docs/Web/API/ResizeObserver) API 来实现更细粒度的监听。\n\n### 为图表设置特定的大小\n\n除了直接调用 `resize()` 不含参数的形式之外,还可以指定宽度和高度,实现图表大小不等于容器大小的效果。\n\n```js\nmyChart.resize({\n  width: 800,\n  height: 400\n});\n```\n\n> 小贴士:阅读 API 文档的时候要留意接口的定义方式,这一接口有时会被误认为是 myCharts.resize(800, 400) 的形式,但其实不存在这样的调用方式。\n\n### 容器节点被销毁以及被重建时\n\n假设页面中存在多个标签页,每个标签页都包含一些图表。当选中一个标签页的时候,其他标签页的内容在 DOM 中被移除了。这样,当用户再选中这些标签页的时候,就会发现图表“不见”了。\n\n本质上,这是由于图表的容器节点被移除导致的。即使之后该节点被重新添加,图表所在的节点也已经不存在了。\n\n正确的做法是,在图表容器被销毁之后,调用 [`echartsInstance.dispose`](${mainSitePath}api.html#echartsInstance.dispose) 销毁实例,在图表容器重新被添加后再次调用 [echarts.init](${mainSitePath}/api.html#echarts.init) 初始化。\n\n> 小贴士:在容器节点被销毁时,总是应调用 [`echartsInstance.dispose`](${mainSitePath}api.html#echartsInstance.dispose) 以销毁实例释放资源,避免内存泄漏。\n'}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/c90fc00131f310556008.js b/docs/_nuxt/js/c90fc00131f310556008.js
new file mode 100644
index 0000000..0b5b6f6
--- /dev/null
+++ b/docs/_nuxt/js/c90fc00131f310556008.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[40],{341:function(e,t,n){"use strict";n.r(t),t.default='# Chart Container and Size\n\nIn [Get Started](${lang}/get-started), we introduced the API to initialize the ECharts [`echarts.init`](${mainSitePath}/api.html#echarts.init). [API Document](${mainSitePath}/api.html#echarts.init) has introduced the specific meaning of each parameters. Please read and understand the document before reading the following content.\n\nRefer to several common usage scenarios, here is the example to initialize a chart and change the size.\n\n## Initialization\n\n### Define a Parent Container in HTML\n\nIn general, you need to define a `<div>` node and use the CSS to change the width and height. While initializing, import the chart into the node. Without declaring `opts.width` or `opts.height`, the size of the chart will default to the size of the node.\n\n```html\n<div id="main" style="width: 600px;height:400px;"></div>\n<script type="text/javascript">\n  var myChart = echarts.init(document.getElementById(\'main\'));\n<\/script>\n```\n\nTo be noticed, before calling `echarts.init`, you need to make sure the container already has width and height.\n\n### Specify the chart size\n\nIf the height and width of the container do not exist, or you wish the chart size not equal to the container, you can initialize the size at the beginning.\n\n```html\n<div id="main"></div>\n<script type="text/javascript">\n  var myChart = echarts.init(document.getElementById(\'main\'), null, {\n    width: 600,\n    height: 400\n  });\n<\/script>\n```\n\n## Reactive of the Container Size\n\n### Listen to the Container Size to Change the Chart Size\n\nIn some cases, we want to accordingly change the chart size while the size of containers changed.\n\nFor instance, the container has a height of 400px and a width of 100% site width. If you are willing to change the site width while stable the chart width as 100% of it, try the following method.\n\nYou can listen to `resize` of the site to catch the event that the browser is resized. Then use [`echartsInstance.resize`](${mainSitePath}api.html#echartsInstance.resize) to resize the chart.\n\n```html\n<style>\n  #main,\n  html,\n  body {\n    width: 100%;\n  }\n  #main {\n    height: 400px;\n  }\n</style>\n<div id="main"></div>\n<script type="text/javascript">\n  var myChart = echarts.init(document.getElementById(\'main\'));\n  window.addEventListener(\'resize\', function() {\n    myChart.resize();\n  });\n<\/script>\n```\n\n> Tips:Sometimes we may adjust the container size by JS/CSS, but this doesn\'t change the page size so that the `resize` event won\'t be triggered. You can try the [`ResizeObserver`](https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver) API to cover this scenario.\n\n### State a Specific Chart Size\n\nExcept for calling `resize()` without parameters, you can state the height and width to implement the chart size different from the size of the container.\n\n```js\nmyChart.resize({\n  width: 800,\n  height: 400\n});\n```\n\n> Tips: Pay attention to how the API defined while reading the documentation. `resize()` API was sometimes mistaken for the form like `myCharts.resize(800, 400)` which do not exist.\n\n### Dispose and Rebuild of the Container Node\n\nWe assume that there exist several bookmark pages and each page contained some charts. In this case, the content in other pages will be removed in DOM when select one page. The user will not find the chart after reselecting these pages.\n\nEssentially, this is because the container node of the charts was removed. Even if the node is added again later, the node where the graph is located no longer exists.\n\nThe correct way is, call [`echartsInstance.dispose`](${mainSitePath}api.html#echartsInstance.dispose) to dispose the instance after the container was disposed, and call [echarts.init](${mainSitePath}/api.html#echarts.init) to initialize after the container was added again.\n\n> Tips: Call [`echartsInstance.dispose`](${mainSitePath}api.html#echartsInstance.dispose) to release resources while disposing the node to avoid memory leaks.\n'}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/c9c9efa8b34e57d41456.js b/docs/_nuxt/js/c9c9efa8b34e57d41456.js
new file mode 100644
index 0000000..9048e9f
--- /dev/null
+++ b/docs/_nuxt/js/c9c9efa8b34e57d41456.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[60],{361:function(n,e,t){"use strict";t.r(e),e.default="# Smooth Line Chart\n\nThe smooth line chart is also a variant of the basic line graph. It is a better choice for you to perform a comfort visual experience. While using the ECharts, you only need to change the `smooth` to `true` to achieve this effect.\n\n```js live\noption = {\n  xAxis: {\n    data: ['A', 'B', 'C', 'D', 'E']\n  },\n  yAxis: {},\n  series: [\n    {\n      data: [10, 22, 28, 23, 19],\n      type: 'line',\n      smooth: true\n    }\n  ]\n};\n```\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/cb96a0fccf449b33e6f0.js b/docs/_nuxt/js/cb96a0fccf449b33e6f0.js
new file mode 100644
index 0000000..ffaefab
--- /dev/null
+++ b/docs/_nuxt/js/cb96a0fccf449b33e6f0.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[132],{433:function(n,e,l){"use strict";l.r(e),e.default="# 基础饼图\n\n饼图主要用于表现不同类目的数据在总和中的占比。每个的弧度表示数据数量的比例。\n\n## 最简单的饼图\n\n饼图的配置和折线图、柱状图略有不同,不再需要配置坐标轴,而是把数据名称和值都写在系列中。以下是一个最简单的饼图的例子。\n\n```js live\noption = {\n  series: [\n    {\n      type: 'pie',\n      data: [\n        {\n          value: 335,\n          name: '直接访问'\n        },\n        {\n          value: 234,\n          name: '联盟广告'\n        },\n        {\n          value: 1548,\n          name: '搜索引擎'\n        }\n      ]\n    }\n  ]\n};\n```\n\n需要注意的是,这里是 `value` 不需要是百分比数据,ECharts 会根据所有数据的 `value` ,按比例分配它们在饼图中对应的弧度。\n\n## 饼图样式设置\n\n### 饼图的半径\n\n饼图的半径可以通过 [`series.radius`](${optionPath}series-pie.radius) 设置,可以是诸如 `'60%'` 这样相对的百分比字符串,或是 `200` 这样的绝对像素数值。当它是百分比字符串时,它是相对于容器宽高中较小的一条边的。也就是说,如果宽度大于高度,则百分比是相对于高度的,反之则反;当它是数值型时,它表示绝对的像素大小。\n\n```js live\noption = {\n  series: [\n    {\n      type: 'pie',\n      data: [\n        {\n          value: 335,\n          name: '直接访问'\n        },\n        {\n          value: 234,\n          name: '联盟广告'\n        },\n        {\n          value: 1548,\n          name: '搜索引擎'\n        }\n      ],\n      radius: '50%'\n    }\n  ]\n};\n```\n\n## 如果数据和为 0,不显示饼图\n\n在默认情况下,如果数据值和为 0,会显示平均分割的扇形。比如,如果有 4 个数据项,并且每个数据项都是 0,则每个扇形都是 90°。如果我们希望在这种情况下不显示任何扇形,可以将 [`series.stillShowZeroSum`](${optionPath}series-pie.stillShowZeroSum) 设为 `false`。\n\n```js live\noption = {\n  series: [\n    {\n      type: 'pie',\n      stillShowZeroSum: false,\n      data: [\n        {\n          value: 0,\n          name: '直接访问'\n        },\n        {\n          value: 0,\n          name: '联盟广告'\n        },\n        {\n          value: 0,\n          name: '搜索引擎'\n        }\n      ]\n    }\n  ]\n};\n```\n\n如果希望扇形对应的标签也不显示,可以将 [`series.label.show`](${optionPath}series-pie.label.show) 设为 `false`。\n\n```js live\noption = {\n  series: [\n    {\n      type: 'pie',\n      stillShowZeroSum: false,\n      label: {\n        show: false\n      },\n      data: [\n        {\n          value: 0,\n          name: '直接访问'\n        },\n        {\n          value: 0,\n          name: '联盟广告'\n        },\n        {\n          value: 0,\n          name: '搜索引擎'\n        }\n      ]\n    }\n  ]\n};\n```\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/d1b3a13f9bef641c0d52.js b/docs/_nuxt/js/d1b3a13f9bef641c0d52.js
new file mode 100644
index 0000000..bdead67
--- /dev/null
+++ b/docs/_nuxt/js/d1b3a13f9bef641c0d52.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[50],{351:function(e,n,t){"use strict";t.r(n),n.default="# Visual Map of Data\n\nData visualization is a procedure of mapping data into visual elements. This procedure can also be called visual coding, and visual elements can also be called visual channels.\n\nEvery type of charts in Apache ECharts<sup>TM</sup> has this built-in mapping procedure. For example, line chart map data into _lines_, bar chart map data into _height_. Some more complicated charts, like `graph`, `themeRiver`, and `treemap` have their own built-in mapping.\n\nBesides, ECharts provides [visualMap component](${optionPath}visualMap) for general visual mapping. Visual elements allowed in `visualMap` component are:\n\n- `symbol`, `symbolSize`\n- `color`, `opacity`, `colorAlpha`,\n- `colorLightness`, `colorSaturation`, `colorHue`\n\nNext, we are going to introduce how to use `visualMap` component.\n\n## Data and Dimension\n\nData are usually stored in [series.data](${optionPath}series.data) in ECharts. Depending on chart types, like list, tree, graph, and so on, the form of data may vary somehow. But they have one common feature, that they are a collection of data items. Every data item contains data value, and other information if needed. Every data value can be a single value (one dimension) or an array (multiple dimensions).\n\nFor example, [series.data](${optionPath}series.data) is the most common form, which is a `list`, a common array:\n\n```js\nseries: {\n  data: [\n    {\n      // every item here is a dataItem\n      value: 2323, // this is data value\n      itemStyle: {}\n    },\n    1212, // it can also be a value of dataItem, which is a more common case\n    2323, // every data value here is one dimension\n    4343,\n    3434\n  ];\n}\n```\n\n```js\nseries: {\n  data: [\n    {\n      // every item here is a dataItem\n      value: [3434, 129, 'San Marino'], // this is data value\n      itemStyle: {}\n    },\n    [1212, 5454, 'Vatican'], // it can also be a value of dataItem, which is a more common case\n    [2323, 3223, 'Nauru'], // every data value here is three dimension\n    [4343, 23, 'Tuvalu'] // If is scatter chart, usually map the first dimension to x axis,\n    // the second dimension to y axis,\n    // and the third dimension to symbolSize\n  ];\n}\n```\n\nUsually the first one or two dimensions are used for mapping. For example, map the first dimension to x axis, and the second dimension to y axis. If you want to represent more dimensions, `visualMap` is what you need. Most likely, [scatter charts](${optionPath}series-scatter) use radius to represent the third dimension.\n\n## The visualMap Component\n\nvisualMap component defines the mapping from _which dimension of data_ to _what visual elements_.\n\nThe following two types of visualMap components are supported, identified with [visualMap.type](${optionPath}visualMap.type).\n\nIts structure is defined as:\n\n```js\noption = {\n  visualMap: [\n    // can define multiple visualMap components at the same time\n    {\n      // the first visualMap component\n      type: 'continuous' // defined as continuous visualMap\n      // ...\n    },\n    {\n      // the second visualMap component\n      type: 'piecewise' // defined as discrete visualMap\n      // ...\n    }\n  ]\n  // ...\n};\n```\n\n## Continuous and Piecewise Visual Mapping Components\n\nThe visual mapping component of ECharts is divided into continuous ([visualMapContinuous](${optionPath}visualMap-continuous)) and piecewise ([visualMapPiecewise](${optionPath}visualMap-piecewise)).\n\nContinuous means that the data dimension for visual mapping is a continuous value, while piecewise means that the data is divided into multiple segments or discrete data.\n\n### Continuous Visual Mapping\n\nContinuous type visual mapping can determine the range of visual mapping by specifying the maximum and minimum values.\n\n```js\noption = {\n  visualMap: [\n    {\n      type: 'continuous',\n      min: 0,\n      max: 5000,\n      dimension: 3, // the fourth dimension of series.data (i.e. value[3]) is mapped\n      seriesIndex: 4, // The fourth series is mapped.\n      inRange: {\n        // The visual configuration in the selected range\n        color: ['blue', '#121122', 'red'], // A list of colors that defines the graph color mapping\n        // the minimum value of the data is mapped to 'blue', and\n        // the maximum value is mapped to 'red', // the maximum value is mapped to 'red', // the maximum value is mapped to 'red'.\n        // The rest is automatically calculated linearly.\n        symbolSize: [30, 100] // Defines the mapping range for the graphic size.\n        // The minimum value of the data is mapped to 30, // and the maximum value is mapped to 100.\n        // The maximum value is mapped to 100.\n        // The rest is calculated linearly automatically.\n      },\n      outOfRange: {\n        // Check the out of range visual configuration\n        symbolSize: [30, 100]\n      }\n    }\n    // ...\n  ]\n};\n```\n\nwhere [visualMap.inRange](${optionPath}visualMap.inRange) indicates the style used for data within the data mapping range; while [visualMap.outOfRange](${optionPath}visualMap.outOfRange) specifies the style for data outside the mapping range.\n\n[visualMap.dimension](~visualMap.dimension) specifies which dimension of the data will be visually mapped.\n\n### Piecewise Visual Mapping\n\nThe piecewise visual mapping component has three modes.\n\n- Continuous data average segmentation: based on [visualMap-piecewise.splitNumber](${optionPath}visualMap-piecewise.splitNumber) to automatically split the data into pieces equally.\n- Continuous data custom segmentation: define the range of each piece based on [visualMap-piecewise.pieces](${optionPath}visualMap-piecewise.pieces).\n- Discrete data (categorical data): categories are defined in [visualMap-piecewise.categories](${optionPath}visualMap-piecewise.categories).\n\nTo use segmented visual map, you need to set `type` to `'piecewise'` and choose one of the above three configuration items.\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/d1f568d37148d60c21d1.js b/docs/_nuxt/js/d1f568d37148d60c21d1.js
new file mode 100644
index 0000000..4472f86
--- /dev/null
+++ b/docs/_nuxt/js/d1f568d37148d60c21d1.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[37],{338:function(e,t,h){"use strict";h.r(t),t.default='# Bubble Chart\n\nThe bubble chart shows the relevance between variables. Same as the scatter chart, data in bubble chart are set with points, it shows the relationship of data between two variables. The different part is that the scatter chart has several variables. It included the size of the bubble. A bigger bubble means a larger value. Users can analyze the law of data by the location and size of bubbles. \n\n<iframe max-width="830" width="100%" height="400" \nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xHkRpZuY4z&v=1">\n</iframe>\n\n## Suggestion for Using Bubble Chart\n\n1. It is a good choice to choose a bubble chart while there are three series, features and related values. As shown below, the bubbles\' position shows the date and specific time when the code was submitted, the size explained the amount of code submitted.\n\n<iframe max-width="830" width="100%" height="400" \nsrc="https://gallery.echartsjs.com/view-lite.html?cid=scatter-punchCard">\n</iframe>\n\n2. You can also change the color of the bubbles. The chart below uses different colors to classify the air quality of three areas. Red is Beijing, yellow is Shanghai, and blue is Guangzhou. Users can visually compare and analyze the tire quality of the three places. \n\n<iframe max-width="830" width="100%" height="400" \nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xr1kK7LoEf&v=1">\n</iframe>\n\n3. A bubble chart commonly used to combine with the map. X-axis and y-axis represent the longitude and latitude. The size of bubbles can be the magnitude of the value at that position.\n\n<iframe max-width="830" width="100%" height="400" \n src="https://gallery.echartsjs.com/view-lite.html?cid=scatter-world-population">\n</iframe>\n'}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/d2091dcdb4b7f3cc8590.js b/docs/_nuxt/js/d2091dcdb4b7f3cc8590.js
new file mode 100644
index 0000000..05434e1
--- /dev/null
+++ b/docs/_nuxt/js/d2091dcdb4b7f3cc8590.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[126],{427:function(n,t,e){"use strict";e.r(t),t.default="# 阶梯瀑布图\n\nApache ECharts 中并没有单独的瀑布图类型,但是我们可以使用堆叠的柱状图模拟该效果。\n\n假设数据数组中的值是表示对前一个值的增减:\n\n```js\nvar data = [900, 345, 393, -108, -154, 135, 178, 286, -119, -361, -203];\n```\n\n也就是第一个数据是 `900`,第二个数据 `345` 表示的是在 `900` 的基础上增加了 `345`……将这个数据展示为阶梯瀑布图时,我们可以使用三个系列:第一个是不可交互的透明系列,用来实现“悬空”的柱状图效果;第二个系列用来表示正数;第三个系列用来表示负数。\n\n```js live\nvar data = [900, 345, 393, -108, -154, 135, 178, 286, -119, -361, -203];\nvar help = [];\nvar positive = [];\nvar negative = [];\nfor (var i = 0, sum = 0; i < data.length; ++i) {\n  if (data[i] >= 0) {\n    positive.push(data[i]);\n    negative.push('-');\n  } else {\n    positive.push('-');\n    negative.push(-data[i]);\n  }\n\n  if (i === 0) {\n    help.push(0);\n  } else {\n    sum += data[i - 1];\n    if (data[i] < 0) {\n      help.push(sum + data[i]);\n    } else {\n      help.push(sum);\n    }\n  }\n}\n\noption = {\n  title: {\n    text: 'Waterfall'\n  },\n  grid: {\n    left: '3%',\n    right: '4%',\n    bottom: '3%',\n    containLabel: true\n  },\n  xAxis: {\n    type: 'category',\n    splitLine: { show: false },\n    data: (function() {\n      var list = [];\n      for (var i = 1; i <= 11; i++) {\n        list.push('Oct/' + i);\n      }\n      return list;\n    })()\n  },\n  yAxis: {\n    type: 'value'\n  },\n  series: [\n    {\n      type: 'bar',\n      stack: 'all',\n      itemStyle: {\n        normal: {\n          barBorderColor: 'rgba(0,0,0,0)',\n          color: 'rgba(0,0,0,0)'\n        },\n        emphasis: {\n          barBorderColor: 'rgba(0,0,0,0)',\n          color: 'rgba(0,0,0,0)'\n        }\n      },\n      data: help\n    },\n    {\n      name: 'positive',\n      type: 'bar',\n      stack: 'all',\n      data: positive\n    },\n    {\n      name: 'negative',\n      type: 'bar',\n      stack: 'all',\n      data: negative,\n      itemStyle: {\n        color: '#f33'\n      }\n    }\n  ]\n};\n```\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/d4356c3df49553725b3e.js b/docs/_nuxt/js/d4356c3df49553725b3e.js
new file mode 100644
index 0000000..669af02
--- /dev/null
+++ b/docs/_nuxt/js/d4356c3df49553725b3e.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[112],{413:function(n,e,t){"use strict";t.r(e),e.default="# 事件与行为\n\n在 Apache ECharts 的图表中用户的操作将会触发相应的事件。开发者可以监听这些事件,然后通过回调函数做相应的处理,比如跳转到一个地址,或者弹出对话框,或者做数据下钻等等。\n\nECharts 中的事件名称对应 DOM 事件名称,均为小写的字符串,如下是一个绑定点击操作的示例。\n\n```js\nmyChart.on('click', function(params) {\n  // 控制台打印数据的名称\n  console.log(params.name);\n});\n```\n\n在 ECharts 中事件分为两种类型,一种是用户鼠标操作点击,或者 hover 图表的图形时触发的事件,还有一种是用户在使用可以交互的组件后触发的行为事件,例如在切换图例开关时触发的 ['legendselectchanged'](${mainSitePath}api.html#events.legendselectchanged) 事件(这里需要注意切换图例开关是不会触发 `'legendselected'` 事件的),数据区域缩放时触发的 ['datazoom'](${mainSitePath}api.html#events.legendselectchanged) 事件等等。\n\n## 鼠标事件的处理\n\nECharts 支持常规的鼠标事件类型,包括 `'click'`、 `'dblclick'`、 `'mousedown'`、 `'mousemove'`、 `'mouseup'`、 `'mouseover'`、 `'mouseout'`、 `'globalout'`、 `'contextmenu'` 事件。下面先来看一个简单的点击柱状图后打开相应的百度搜索页面的示例。\n\n```js live\n// 基于准备好的dom,初始化ECharts实例\n// var myChart = echarts.init(document.getElementById('main'));\n\n// 指定图表的配置项和数据\nvar option = {\n  xAxis: {\n    data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']\n  },\n  yAxis: {},\n  series: [\n    {\n      name: '销量',\n      type: 'bar',\n      data: [5, 20, 36, 10, 10, 20]\n    }\n  ]\n};\n// 使用刚指定的配置项和数据显示图表。\nmyChart.setOption(option);\n// 处理点击事件并且跳转到相应的百度搜索页面\nmyChart.on('click', function(params) {\n  window.open('https://www.baidu.com/s?wd=' + encodeURIComponent(params.name));\n});\n```\n\n所有的鼠标事件包含参数 `params`,这是一个包含点击图形的数据信息的对象,如下格式:\n\n```ts\ntype EventParams = {\n  // 当前点击的图形元素所属的组件名称,\n  // 其值如 'series'、'markLine'、'markPoint'、'timeLine' 等。\n  componentType: string;\n  // 系列类型。值可能为:'line'、'bar'、'pie' 等。当 componentType 为 'series' 时有意义。\n  seriesType: string;\n  // 系列在传入的 option.series 中的 index。当 componentType 为 'series' 时有意义。\n  seriesIndex: number;\n  // 系列名称。当 componentType 为 'series' 时有意义。\n  seriesName: string;\n  // 数据名,类目名\n  name: string;\n  // 数据在传入的 data 数组中的 index\n  dataIndex: number;\n  // 传入的原始数据项\n  data: Object;\n  // sankey、graph 等图表同时含有 nodeData 和 edgeData 两种 data,\n  // dataType 的值会是 'node' 或者 'edge',表示当前点击在 node 还是 edge 上。\n  // 其他大部分图表中只有一种 data,dataType 无意义。\n  dataType: string;\n  // 传入的数据值\n  value: number | Array;\n  // 数据图形的颜色。当 componentType 为 'series' 时有意义。\n  color: string;\n};\n```\n\n如何区分鼠标点击到了哪里:\n\n```js\nmyChart.on('click', function(params) {\n  if (params.componentType === 'markPoint') {\n    // 点击到了 markPoint 上\n    if (params.seriesIndex === 5) {\n      // 点击到了 index 为 5 的 series 的 markPoint 上。\n    }\n  } else if (params.componentType === 'series') {\n    if (params.seriesType === 'graph') {\n      if (params.dataType === 'edge') {\n        // 点击到了 graph 的 edge(边)上。\n      } else {\n        // 点击到了 graph 的 node(节点)上。\n      }\n    }\n  }\n});\n```\n\n使用 `query` 只对指定的组件的图形元素的触发回调:\n\n```js\nchart.on(eventName, query, handler);\n```\n\n`query` 可为 `string` 或者 `Object`。\n\n如果为 `string` 表示组件类型。格式可以是 'mainType' 或者 'mainType.subType'。例如:\n\n```js\nchart.on('click', 'series', function() {});\nchart.on('click', 'series.line', function() {});\nchart.on('click', 'dataZoom', function() {});\nchart.on('click', 'xAxis.category', function() {});\n```\n\n如果为 `Object`,可以包含以下一个或多个属性,每个属性都是可选的:\n\n```ts\n{\n  ${mainType}Index: number // 组件 index\n  ${mainType}Name: string // 组件 name\n  ${mainType}Id: string // 组件 id\n  dataIndex: number // 数据项 index\n  name: string // 数据项 name\n  dataType: string // 数据项 type,如关系图中的 'node', 'edge'\n  element: string // 自定义系列中的 el 的 name\n}\n```\n\n例如:\n\n```js\nchart.setOption({\n  // ...\n  series: [\n    {\n      name: 'uuu'\n      // ...\n    }\n  ]\n});\nchart.on('mouseover', { seriesName: 'uuu' }, function() {\n  // series name 为 'uuu' 的系列中的图形元素被 'mouseover' 时,此方法被回调。\n});\n```\n\n例如:\n\n```js\nchart.setOption({\n  // ...\n  series: [\n    {\n      // ...\n    },\n    {\n      // ...\n      data: [\n        { name: 'xx', value: 121 },\n        { name: 'yy', value: 33 }\n      ]\n    }\n  ]\n});\nchart.on('mouseover', { seriesIndex: 1, name: 'xx' }, function() {\n  // series index 1 的系列中的 name 为 'xx' 的元素被 'mouseover' 时,此方法被回调。\n});\n```\n\n例如:\n\n```js\nchart.setOption({\n  // ...\n  series: [\n    {\n      type: 'graph',\n      nodes: [\n        { name: 'a', value: 10 },\n        { name: 'b', value: 20 }\n      ],\n      edges: [{ source: 0, target: 1 }]\n    }\n  ]\n});\nchart.on('click', { dataType: 'node' }, function() {\n  // 关系图的节点被点击时此方法被回调。\n});\nchart.on('click', { dataType: 'edge' }, function() {\n  // 关系图的边被点击时此方法被回调。\n});\n```\n\n例如:\n\n```js\nchart.setOption({\n  // ...\n  series: {\n    // ...\n    type: 'custom',\n    renderItem: function(params, api) {\n      return {\n        type: 'group',\n        children: [\n          {\n            type: 'circle',\n            name: 'my_el'\n            // ...\n          },\n          {\n            // ...\n          }\n        ]\n      };\n    },\n    data: [[12, 33]]\n  }\n});\nchart.on('mouseup', { element: 'my_el' }, function() {\n  // name 为 'my_el' 的元素被 'mouseup' 时,此方法被回调。\n});\n```\n\n你可以在回调函数中获得这个对象中的数据名、系列名称后在自己的数据仓库中索引得到其它的信息后更新图表,显示浮层等等,如下示例代码:\n\n```js\nmyChart.on('click', function(parmas) {\n  $.get('detail?q=' + params.name, function(detail) {\n    myChart.setOption({\n      series: [\n        {\n          name: 'pie',\n          // 通过饼图表现单个柱子中的数据分布\n          data: [detail.data]\n        }\n      ]\n    });\n  });\n});\n```\n\n## 组件交互的行为事件\n\n在 ECharts 中基本上所有的组件交互行为都会触发相应的事件,常用的事件和事件对应参数在 [events](${mainSitePath}/api.html#events) 文档中有列出。\n\n下面是监听一个图例开关的示例:\n\n```js\n// 图例开关的行为只会触发 legendselectchanged 事件\nmyChart.on('legendselectchanged', function(params) {\n  // 获取点击图例的选中状态\n  var isSelected = params.selected[params.name];\n  // 在控制台中打印\n  console.log((isSelected ? '选中了' : '取消选中了') + '图例' + params.name);\n  // 打印所有图例的状态\n  console.log(params.selected);\n});\n```\n\n## 代码触发 ECharts 中组件的行为\n\n上面提到诸如 `'legendselectchanged'` 事件会由组件交互的行为触发,那除了用户的交互操作,有时候也会有需要在程序里调用方法触发图表的行为,诸如显示 tooltip,选中图例。\n\n在 ECharts 通过调用 `myChart.dispatchAction({ type: '' })` 触发图表行为,统一管理了所有动作,也可以方便地根据需要去记录用户的行为路径。\n\n常用的动作和动作对应参数在 [action](${mainSitePath}/api.html#action) 文档中有列出。\n\n下面示例演示了如何通过 `dispatchAction` 去轮流高亮饼图的每个扇形。\n\n```js live\noption = {\n  title: {\n    text: '饼图程序调用高亮示例',\n    left: 'center'\n  },\n  tooltip: {\n    trigger: 'item',\n    formatter: '{a} <br/>{b} : {c} ({d}%)'\n  },\n  legend: {\n    orient: 'vertical',\n    left: 'left',\n    data: ['直接访问', '邮件营销', '联盟广告', '视频广告', '搜索引擎']\n  },\n  series: [\n    {\n      name: '访问来源',\n      type: 'pie',\n      radius: '55%',\n      center: ['50%', '60%'],\n      data: [\n        { value: 335, name: '直接访问' },\n        { value: 310, name: '邮件营销' },\n        { value: 234, name: '联盟广告' },\n        { value: 135, name: '视频广告' },\n        { value: 1548, name: '搜索引擎' }\n      ],\n      emphasis: {\n        itemStyle: {\n          shadowBlur: 10,\n          shadowOffsetX: 0,\n          shadowColor: 'rgba(0, 0, 0, 0.5)'\n        }\n      }\n    }\n  ]\n};\n\nlet currentIndex = -1;\n\nsetInterval(function() {\n  var dataLen = option.series[0].data.length;\n  // 取消之前高亮的图形\n  myChart.dispatchAction({\n    type: 'downplay',\n    seriesIndex: 0,\n    dataIndex: currentIndex\n  });\n  currentIndex = (currentIndex + 1) % dataLen;\n  // 高亮当前图形\n  myChart.dispatchAction({\n    type: 'highlight',\n    seriesIndex: 0,\n    dataIndex: currentIndex\n  });\n  // 显示 tooltip\n  myChart.dispatchAction({\n    type: 'showTip',\n    seriesIndex: 0,\n    dataIndex: currentIndex\n  });\n}, 1000);\n```\n\n## 监听“空白处”的事件\n\n有时候,开发者需要监听画布的“空白处”所触发的事件。比如,当需要在用户点击“空白处”的时候重置图表时。\n\n在讨论这个功能之前,我们需要先明确两种事件。zrender 事件和 echarts 事件。\n\n```js\nmyChart.getZr().on('click', function(event) {\n  // 该监听器正在监听一个`zrender 事件`。\n});\nmyChart.on('click', function(event) {\n  // 该监听器正在监听一个`echarts 事件`。\n});\n```\n\nzrender 事件与 echarts 事件不同。前者是当鼠标在任何地方都会被触发,而后者是只有当鼠标在图形元素上时才能被触发。事实上,echarts 事件是在 zrender 事件的基础上实现的,也就是说,当一个 zrender 事件在图形元素上被触发时,echarts 将触发一个 echarts 事件给开发者。\n\n有了 zrender 事件,我们就可以实现监听空白处的事件,具体如下:\n\n```js\nmyChart.getZr().on('click', function(event) {\n  // 没有 target 意味着鼠标/指针不在任何一个图形元素上,它是从“空白处”触发的。\n  if (!event.target) {\n    // 点击在了空白处,做些什么。\n  }\n});\n```\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/d4c8d94d0687d40e7386.js b/docs/_nuxt/js/d4c8d94d0687d40e7386.js
new file mode 100644
index 0000000..7747e20
--- /dev/null
+++ b/docs/_nuxt/js/d4c8d94d0687d40e7386.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[90],{391:function(n,e,t){"use strict";t.r(e),e.default="# 使用 Canvas 或者 SVG 渲染\n\n浏览器端图表库大多会选择 SVG 或者 Canvas 进行渲染。对于绘制图表来说,这两种技术往往是可替换的,效果相近。但是在一些场景中,他们的表现和能力又有一定差异。于是,对它们的选择取舍,就成为了一个一直存在的不易有标准答案的话题。\n\nECharts 从初始一直使用 Canvas 绘制图表。而 [ECharts v4.0](https://echarts.apache.org/zh/changelog.html#v4-0-0) 发布了 SVG 渲染器,从而提供了一种新的选择。在初始化图表实例时,只需设置 [renderer 参数](${mainSitePath}api.html#echarts.init) 为 `'canvas'` 或 `'svg'` 即可指定渲染器,比较方便。\n\n> SVG 和 Canvas 这两种使用方式差异很大的技术,能够做到同时被透明支持,主要归功于 ECharts 底层库 [ZRender](https://github.com/ecomfe/zrender) 的抽象和实现,形成可互换的 SVG 渲染器和 Canvas 渲染器。\n\n## 选择哪种渲染器\n\n一般来说,Canvas 更适合绘制图形元素数量较多(这一般是由数据量大导致)的图表(如热力图、地理坐标系或平行坐标系上的大规模线图或散点图等),也利于实现某些视觉 [特效](${mainSitePath}examples/editor.html?c=lines-bmap-effect)。但是,在不少场景中,SVG 具有重要的优势:它的内存占用更低(这对移动端尤其重要)、并且用户使用浏览器内置的缩放功能时不会模糊。\n\n选择哪种渲染器,我们可以根据软硬件环境、数据量、功能需求综合考虑。\n\n- 在软硬件环境较好,数据量不大的场景下,两种渲染器都可以适用,并不需要太多纠结。\n- 在环境较差,出现性能问题需要优化的场景下,可以通过试验来确定使用哪种渲染器。比如有这些经验:\n  - 在需要创建很多 ECharts 实例且浏览器易崩溃的情况下(可能是因为 Canvas 数量多导致内存占用超出手机承受能力),可以使用 SVG 渲染器来进行改善。大略的说,如果图表运行在低端安卓机,或者我们在使用一些特定图表如 [水球图](https://ecomfe.github.io/echarts-liquidfill/example/) 等,SVG 渲染器可能效果更好。\n  - 数据量较大(经验判断 > 1k)、较多交互时,建议选择 Canvas 渲染器。\n\n我们强烈欢迎开发者们[反馈](https://github.com/apache/echarts/issues/new/choose)给我们使用的体验和场景,帮助我们更好的做优化。\n\n注:当前某些特殊的渲染依然需要依赖 Canvas:如[炫光尾迹特效](${optionPath}series-lines.effect)、[带有混合效果的热力图](${mainSitePath}examples/editor.html?c=heatmap-bmap)等。\n\n我们在 [v5.3.0](${lang}/basics/release-note/5-3-0/#全新的-svg-渲染器) 中使用虚拟 DOM 技术对 SVG 渲染器进行了重构,从而使其渲染性能提升了 2~10 倍,在某些特殊场景中甚至能有数十倍的提升!参见 [#836](https://github.com/ecomfe/zrender/pull/836)。\n\n## 如何使用渲染器\n\n如果是用如下的方式完整引入`echarts`,代码中已经包含了 SVG 渲染器和 Canvas 渲染器\n\n```js\nimport * as echarts from 'echarts';\n```\n\n如果你是按照 [在项目中引入 Apache ECharts](${lang}/basics/import) 一文中的介绍使用按需引入,则需要手动引入需要的渲染器\n\n```js\nimport * as echarts from 'echarts/core';\n// 可以根据需要选用只用到的渲染器\nimport { SVGRenderer, CanvasRenderer } from 'echarts/renderers';\n\necharts.use([SVGRenderer, CanvasRenderer]);\n```\n\n然后,我们就可以在代码中,初始化图表实例时,[传入参数](${mainSitePath}api.html#echarts.init) 选择渲染器类型:\n\n```js\n// 使用 Canvas 渲染器(默认)\nvar chart = echarts.init(containerDom, null, { renderer: 'canvas' });\n// 等价于:\nvar chart = echarts.init(containerDom);\n\n// 使用 SVG 渲染器\nvar chart = echarts.init(containerDom, null, { renderer: 'svg' });\n```\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/d823baf6c14e3add5911.js b/docs/_nuxt/js/d823baf6c14e3add5911.js
new file mode 100644
index 0000000..b70441b
--- /dev/null
+++ b/docs/_nuxt/js/d823baf6c14e3add5911.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[135],{436:function(n,e,t){"use strict";t.r(e),e.default="# 基础散点图\n\n散点图,也是一种常见的图表类型。散点图由许多“点”组成,有时,这些点用来表示数据在坐标系中的位置(比如在笛卡尔坐标系下,表示数据在 x 轴和 y 轴上的坐标;在地图坐标系下,表示数据在地图上的某个位置等);有时,这些点的大小、颜色等属性也可以映射到数据值,用以表现高维数据。\n\n## 最简单的散点图\n\n下面是一个横坐标为类目轴、纵坐标为数值轴的最简单的散点图配置:\n\n```js live\noption = {\n  xAxis: {\n    data: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']\n  },\n  yAxis: {},\n  series: [\n    {\n      type: 'scatter',\n      data: [220, 182, 191, 234, 290, 330, 310]\n    }\n  ]\n};\n```\n\n## 笛卡尔坐标系下的散点图\n\n在上文的例子中,散点图的横坐标都是离散的类目轴,而纵坐标都是连续的数值轴。而对于散点图而言,另一种常见的场景是,两个坐标轴均为连续的数值轴,也就是笛卡尔坐标系。这时的系列形式略有不同,数据的横坐标和纵坐标一同写在 `data` 中,而非坐标轴中。\n\n```js live\noption = {\n  xAxis: {},\n  yAxis: {},\n  series: [\n    {\n      type: 'scatter',\n      data: [\n        [10, 5],\n        [0, 8],\n        [6, 10],\n        [2, 12],\n        [8, 9]\n      ]\n    }\n  ]\n};\n```\n\n## 散点图样式设置\n\n### 图形的形状\n\n图形(symbol)指的是散点图中数据“点”的形状。有三类图形可选,一种是 ECharts 内置形状,第二种是图片,第三种是 SVG 的路径。\n\nECharts 内置形状包括:圆形、矩形、圆角矩形、三角形、菱形、大头针形、箭头形,分别对应`'circle'`、`'rect'`、`'roundRect'`、`'triangle'`、`'diamond'`、`'pin'`、`'arrow'`。使用内置形状时,只要将 `symbol` 属性指定为形状名称对应的字符串即可。\n\n如果想要将图形指定为任意的图片,以 `'image://'` 开头,后面跟图片的绝对或相对地址。形如:`'image://http://example.com/xxx.png'` 或 `'image://./xxx.png'`。\n\n除此之外,还支持 SVG 的路径作为矢量图形,将 `symbol` 设置为以 `'path://'` 开头的 SVG 路径即可。使用矢量图形的好处是,图片不会因为缩放而产生锯齿或模糊,并且通常而言比图片形式的文件大小更小。路径的查看方法为,打开一个 `SVG` 文件,找到形如 `<path d=\"M… L…\"></path>` 的路径,将 `d` 的值添加在 `'path://'` 后即可。\n\n下面,我们展示一个将图形设置为矢量爱心形状的方式。\n\n首先,我们需要一个爱心的 SVG 文件,可以使用矢量编辑软件绘制,或者从网上下载到相关资源。其内容如下:\n\n```xml\n<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 51.997 51.997\" style=\"enable-background:new 0 0 51.997 51.997;\" xml:space=\"preserve\">\n    <path d=\"M51.911,16.242C51.152,7.888,45.239,1.827,37.839,1.827c-4.93,0-9.444,2.653-11.984,6.905 c-2.517-4.307-6.846-6.906-11.697-6.906c-7.399,0-13.313,6.061-14.071,14.415c-0.06,0.369-0.306,2.311,0.442,5.478 c1.078,4.568,3.568,8.723,7.199,12.013l18.115,16.439l18.426-16.438c3.631-3.291,6.121-7.445,7.199-12.014 C52.216,18.553,51.97,16.611,51.911,16.242z\"/>\n</svg>\n```\n\n在 ECharts 的 `symbol` 配置项中,我们使用 `d` 的值作为路径。\n\n```js live\noption = {\n  xAxis: {\n    data: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']\n  },\n  yAxis: {},\n  series: [\n    {\n      type: 'scatter',\n      data: [220, 182, 191, 234, 290, 330, 310],\n      symbolSize: 20,\n      symbol:\n        'path://M51.911,16.242C51.152,7.888,45.239,1.827,37.839,1.827c-4.93,0-9.444,2.653-11.984,6.905 c-2.517-4.307-6.846-6.906-11.697-6.906c-7.399,0-13.313,6.061-14.071,14.415c-0.06,0.369-0.306,2.311,0.442,5.478 c1.078,4.568,3.568,8.723,7.199,12.013l18.115,16.439l18.426-16.438c3.631-3.291,6.121-7.445,7.199-12.014 C52.216,18.553,51.97,16.611,51.911,16.242z'\n    }\n  ]\n};\n```\n\n这样,就能得到爱心形状的图形作为点的形状了。\n\n### 图形的大小\n\n图形大小可以使用 [`series.symbolSize`](${optionPath}series-scatter.symbolSize) 控制。它既可以是一个表示图形大小的像素值,也可以是一个包含两个 number 元素的数组,分别表示图形的宽和高。\n\n除此之外,它还可以是一个回调函数,其参数格式为:\n\n```ts\n(value: Array | number, params: Object) => number | Array;\n```\n\n第一个参数为数据值,第二个参数是数据项的其他参数。\n\n在下面的例子中,我们将散点图点的大小设置为与其数据值成正比。\n\n```js live\noption = {\n  xAxis: {\n    data: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']\n  },\n  yAxis: {},\n  series: [\n    {\n      type: 'scatter',\n      data: [220, 182, 191, 234, 290, 330, 310],\n      symbolSize: function(value) {\n        return value / 10;\n      }\n    }\n  ]\n};\n```\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/d8d32d5f4d3d240d387c.js b/docs/_nuxt/js/d8d32d5f4d3d240d387c.js
new file mode 100644
index 0000000..6554dd6
--- /dev/null
+++ b/docs/_nuxt/js/d8d32d5f4d3d240d387c.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[82],{383:function(n,e,t){"use strict";t.r(e),e.default='# Apache ECharts 5.5.0 特性介绍\n\n## 增强的 ESM 支持\n\n为了让开发者在测试和 Node.js 环境使用更方便,我们在这个版本中对 ESM 的识别问题进行了优化。\n\n以前,ECharts 只在 npm(npm 包的 lib 目录中)导出 `*.esm` 文件。虽然这在 bundlers 环境表现良好,但 Node.js 环境和一些基于 Node.js 的测试框架(如 vitest 和 jest)中的表现并不理想。\n\n有了这个新功能,我们做了几个改变以改善这个问题:\n\n- 在 `package.json` 中添加了 `"type": "module"`\n- 在 `package.json` 中添加了 `"exports": {...}`\n- 在子目录中添加了一些只包含 `"type": "commonjs"` 的 `package.json` 文件\n\n这些改变意味着,像 `echarts/core.js` 这样的文件现在可以在像纯 Node.js、vitest、jest 和 create-react-app 这样的环境中解析为 ESM。\n\n我们还确保了这个新功能与各种环境兼容,包括运行时(Node.js/vitest/jest(create-react-app)/ssr/…)和打包器(webpack/rollup/vite/esbuild/…)。\n\n我们非常期待这一新功能,并相信它将极大地改善开发者的体验。\n\n## 服务端渲染 + 客户端轻量运行时\n\nApache ECharts 功能强大,相应地,包体积也比较大。我们在之前的版本中也做了各种努力来改进这一点。开发者可以使用 TreeShaking 按需加载部分代码,以减少加载的代码量。从 Apache ECharts 5.3 版本起,我们支持了零依赖的服务端 SVG 字符串渲染方案,并支持图表的初始动画。这样,使用服务端渲染的结果作为首屏渲染的画面,可以大大减少首屏加载时间。\n\n服务端渲染虽然是一种很有效减少包体积的解决方案,但如果需要在客户端实现一些交互,那么不得不仍旧加载 echarts.js,这可能会增加更多的加载时间。对于一些对页面加载速度要求较高的场景,这可能不是一个理想的选择。\n\n在 5.5.0 版本中,我们新增了客户端轻量运行时,客户端无需加载完整 ECharts 即可实现部分交互。这样,我们可以在服务端渲染图表,然后在客户端加载轻量运行时,实现一些常见的交互。这意味着,只需要加载 4KB 的轻量运行时(gzip 后 1KB),即可实现带初始动画和部分常用交互形式的图表。这一改进将极大地提升页面加载速度,特别是对于移动端的体验。\n\n![](images/5-5-0/ssr-example.png)\n\n以这个带标题的饼图为例,如果按客户端仅打包饼图和标题组件的方案,gzip 后需要 135KB;如果按服务端渲染的方案,渲染结果 SVG gzip 后 1 KB、客户端运行时 gzip 后 1KB,仅为前者体积的 1.5%。交互方面,后者也可以做到初始动画、鼠标移动到图表元素后的高亮,并且获取到点击事件,能够满足大部分的常见交互需求。\n\n如需使用这一方案,服务端代码和之前一样,但需要保证 ECharts 版本号在 5.5.0 以上。\n\n```ts\n// 服务端代码\nconst echarts = require(\'echarts\');\n\n// 在 SSR 模式下第一个参数不需要再传入 DOM 对象\nlet chart = echarts.init(null, null, {\n  renderer: \'svg\', // 必须使用 SVG 模式\n  ssr: true, // 开启 SSR\n  width: 400, // 需要指明高和宽,如果是根据客户端容器大小动态的,该值需要从客户端得到\n  height: 300\n});\n\n// 像正常使用一样 setOption\nchart.setOption({\n  //...\n});\n\n// 输出字符串\nconst svgStr = chart.renderToSVGString();\n\n// 调用 dispose 以释放内存\nchart.dispose();\nchart = null;\n\n// 通过 HTTP Response 返回 svgStr 给前端或者缓存到本地(这里以 Express.js 为例):\nres.writeHead(200, {\n  \'Content-Type\': \'application/xml\'\n});\nres.write(svgStr);\nres.end();\n```\n\n客户端将得到的 SVG 字符串添加到容器中,并绑定轻量运行时:\n\n```html\n<div id="chart-container" style="width:800px;height:600px"></div>\n\n<script src="https://cdn.jsdelivr.net/npm/echarts/ssr/client/dist/index.min.js"><\/script>\n<script>\nconst ssrClient = window[\'echarts-ssr-client\'];\n\nconst isSeriesShown = {\n  a: true,\n  b: true\n};\n\nfunction updateChart(svgStr) {\n  const container = document.getElementById(\'chart-container\');\n  container.innerHTML = svgStr;\n\n  // 使用轻量运行时赋予图表交互能力\n  ssrClient.hydrate(container, {\n    on: {\n      click: (params) => {\n        if (params.ssrType === \'legend\') {\n          // 点击图例元素,请求服务器进行二次渲染\n          isSeriesShown[params.seriesName] = !isSeriesShown[params.seriesName];\n          fetch(\'...?series=\' + JSON.stringify(isSeriesShown))\n            .then(res => res.text())\n            .then(svgStr => {\n              updateChart(svgStr);\n            });\n        }\n      }\n    }\n  });\n}\n\n// 通过 AJAX 请求获取服务端渲染的 SVG 字符串\nfetch(\'...\')\n  .then(res => res.text())\n  .then(svgStr => {\n    updateChart(svgStr);\n  });\n<\/script>\n```\n\n客户端轻量运行时必须配合 SVG 形式的服务端渲染结果使用,支持以下交互:\n\n- 图表初始动画(实现原理:服务端渲染的 SVG 带有 CSS 动画)\n- 高亮样式(实现原理:服务端渲染的 SVG 带有 CSS 动画)\n- 动态改变数据(实现原理:轻量运行时请求服务器进行二次渲染)\n- 点击图例切换系列是否显示(实现原理:轻量运行时请求服务器进行二次渲染)\n\n可以发现,这能够满足大部分的交互场景需求。如果需要更复杂的交互,则客户端需要加载 `echarts.js` 实现完整功能。完整的介绍请参见[服务端渲染 ECharts 图表](${lang}/how-to/cross-platform/server)。\n\n## 数据下钻支持过渡动画\n\n在 5.5.0 版本中,我们新增了 `childGroupId` 配置项,可以实现数据下钻的过渡动画功能。\n\n在之前的版本中,我们已经支持使用 `groupId`,用以表示当前数据所属的组别。而这次新增的 `childGroupId` 则可以用来表明当前数据本身的组别,与 `groupId` 配合使用后形成一个“父-子-孙”的关系链条。当用户点击图表中的数据元素时,图表会以过渡动画的形式展示下钻的数据。\n\n<md-example src="bar-multi-drilldown" width="100%" height="400" />\n\n开发者只需要指定 `groupId` 和 `childGroupId`,ECharts 就会自动处理层级关系,实现过渡动画。\n\n## 饼图支持扇区之间的间隔\n\n通过设置饼图扇区之间的间隔,可以让饼图的数据块之间更加清晰,并且形成独特的视觉效果。参见([series-pie.padAngle](${optionPath}series-pie.padAngle))。\n\n<md-example src="pie-padAngle" width="100%" height="400" />\n\n## 饼图和极坐标系支持结束角度\n\n结束角度的配置项使得我们可以制作半圆形等不完整的饼图。参见([series-pie.endAngle](${optionPath}series-pie.endAngle))。\n\n<md-example src="pie-half-donut" width="100%" height="400" />\n\n极坐标系也同样支持了结束角度,可以制作出更加丰富的极坐标图表。参见([angleAxis.endAngle](${optionPath}angleAxis.endAngle))。\n\n<md-example src="polar-endAngle" width="100%" height="400" />\n\n## 新增 `min-max` 采样方式\n\nECharts 的 [sampling](${optionPath}series-line.sampling) 配置项允许设置折线图在数据量远大于像素点时候的降采样策略,开启后可以有效的优化图表的绘制效率。在 5.5.0 版本中,我们新增了 `min-max` 采样方式,可以在保留数据的整体趋势的同时,更加精确的展示数据的极值。\n\n## 新增两种语言:阿拉伯语和荷兰语\n\n在 5.5.0 版本中,我们新增了阿拉伯语(AR)和荷兰语(NL)两种语言的支持。开发者可以通过 [echarts.registerLocale](${mainSitePath}api.html#echarts.registerLocale) 方法注册新的语言包。\n\n## 提示框支持指定容器\n\n在之前的版本中,提示框(Tooltip)只能插入到图表容器或者 `document.body` 中。现在,可以通过 [tooltip.appendTo](${optionPath}tooltip.appendTo) 指定容器,从而能更灵活地控制提示框的位置。\n\n## 坐标轴最大、最小标签的对齐方式\n\n在 5.5.0 版本中,我们新增了 [axisLabel.alignMinLabel](${optionPath}xAxis.axisLabel.alignMinLabel) 和 [axisLabel.alignMaxLabel](${optionPath}xAxis.axisLabel.alignMaxLabel) 配置项,可以控制坐标轴最大、最小标签的对齐方式。如果图表绘图区域比较大,不希望坐标轴标签溢出,可以将最大、最小标签分别对齐到右和左。\n\n<md-example src="doc-example/axis-label-align-min-max" width="100%" height="400" />\n\n## 象形柱图支持裁剪\n\n象形柱图可能存在超过绘图区域的情况,如果希望避免这种情况,可以通过 [series-pictorialBar.clip](${optionPath}series-pictorialBar.clip) 配置项进行裁剪。\n\n## 提示框 valueFormatter 增加 dataIndex 参数\n\n`valueFormatter` 可以用来自定义提示框内容中数值的部分,现在新增了 `dataIndex` 参数,可以用来获取当前数据的索引。\n\n## 完整更新记录\n\n查看[版本更新](${mainSitePath}changelog.html#v5-5-0)\n'}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/da262fca9b535e137c21.js b/docs/_nuxt/js/da262fca9b535e137c21.js
new file mode 100644
index 0000000..0c44a1a
--- /dev/null
+++ b/docs/_nuxt/js/da262fca9b535e137c21.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[127],{428:function(n,e,t){"use strict";t.r(e),e.default="# 区域面积图\n\n区域面积图将折线到坐标轴的空间设置背景色,用区域面积表达数据。相比普通的折线图,区域面积图的视觉效果更加饱满丰富,在系列不多的场景下尤其适用。\n\n```js live\noption = {\n  xAxis: {\n    data: ['A', 'B', 'C', 'D', 'E']\n  },\n  yAxis: {},\n  series: [\n    {\n      data: [10, 22, 28, 23, 19],\n      type: 'line',\n      areaStyle: {}\n    },\n    {\n      data: [25, 14, 23, 35, 10],\n      type: 'line',\n      areaStyle: {\n        color: '#ff0',\n        opacity: 0.5\n      }\n    }\n  ]\n};\n```\n\n通过 [`areaStyle`](${optionPath}series-line.areaStyle) 设置折线图的填充区域样式,将其设为为 `{}` 表示使用默认样式,即使用系列的颜色以半透明的方式填充区域。如果想指定特定的样式,可以通过设置 `areaStyle` 下的配置项覆盖,如第二个系列将填充区域的颜色设为不透明度为 0.5 的黄色。\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/e01c81a9f12ddcf059eb.js b/docs/_nuxt/js/e01c81a9f12ddcf059eb.js
new file mode 100644
index 0000000..a27ffe8
--- /dev/null
+++ b/docs/_nuxt/js/e01c81a9f12ddcf059eb.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[107],{408:function(n,e,t){"use strict";t.r(e),e.default="# 坐标轴\n\n直角坐标系中的 x/y 轴。\n\n## x 轴、y 轴\n\nx 轴和 y 轴都由轴线、刻度、刻度标签、轴标题四个部分组成。部分图表中还会有网格线来帮助查看和计算数据\n\n<img max-width=\"830\" width=\"100%\" height=\"100%\" src=\"images/design/axis/charts_axis_img02.jpg\">\n</img>\n\n普通的二维数据坐标系都有 x 轴和 y 轴,通常情况下,x 轴显示在图表的底部,y 轴显示在左侧,一般配置如下:\n\n```js\noption = {\n  xAxis: {\n    // ...\n  },\n  yAxis: {\n    // ...\n  }\n};\n```\n\nx 轴常用来标示数据的维度,维度一般用来指数据的类别,是观察数据的角度,例如“销售时间” “销售地点” “产品名称”等。y 轴常常用来标示数据的数值,数值是用来具体考察某一类数据的数量值,也是我们需要分析的指标,例如“销售数量”和“销售金额”等。\n\n```js\noption = {\n  xAxis: {\n    type: 'time',\n    name: '销售时间'\n    // ...\n  },\n  yAxis: {\n    type: 'value',\n    name: '销售数量'\n    // ...\n  }\n  // ...\n};\n```\n\n当 x 轴(水平坐标轴)跨度很大,可以采用区域缩放方式灵活显示数据内容。\n\n```js\noption = {\n  xAxis: {\n    type: 'time',\n    name: '销售时间'\n    // ...\n  },\n  yAxis: {\n    type: 'value',\n    name: '销售数量'\n    // ...\n  },\n  dataZoom: [\n    // ...\n  ]\n  // ...\n};\n```\n\n在二维数据中,轴也可以有多个。ECharts 中一般情况下单个 grid 组件最多只能放两个 x/y 轴,多于两个 x/y 轴需要通过配置 [offset](${optionPath}xAxis.offset) 属性防止同个位置多个轴的重叠。两个 x 轴显示在上下,两个 y 轴显示在左右两侧。\n\n```js\noption = {\n  xAxis: {\n    type: 'time',\n    name: '销售时间'\n    // ...\n  },\n  yAxis: [\n    {\n      type: 'value',\n      name: '销售数量'\n      // ...\n    },\n    {\n      type: 'value',\n      name: '销售金额'\n      // ...\n    }\n  ]\n  // ...\n};\n```\n\n## 轴线\n\nECharts 提供了轴线 [axisLine](${optionPath}xAxis.axisLine) 相关的配置,我们可以根据实际情况调整,例如轴线两端的箭头,轴线的样式等。\n\n```js\noption = {\n  xAxis: {\n    axisLine: {\n      symbol: 'arrow',\n      lineStyle: {\n        type: 'dashed'\n        // ...\n      }\n    }\n    // ...\n  },\n  yAxis: {\n    axisLine: {\n      symbol: 'arrow',\n      lineStyle: {\n        type: 'dashed'\n        // ...\n      }\n    }\n  }\n  // ...\n};\n```\n\n## 刻度\n\nECharts 提供了轴线 [axisTick](${optionPath}xAxis.axisTick) 相关的配置,我们可以根据实际情况调整,例如刻度线的长度,样式等。\n\n```js\noption = {\n  xAxis: {\n    axisTick: {\n      length: 6,\n      lineStyle: {\n        type: 'dashed'\n        // ...\n      }\n    }\n    // ...\n  },\n  yAxis: {\n    axisTick: {\n      length: 6,\n      lineStyle: {\n        type: 'dashed'\n        // ...\n      }\n    }\n  }\n  // ...\n};\n```\n\n## 刻度标签\n\nECharts 提供了轴线 [axisLabel](${optionPath}xAxis.axisLabel) 相关的配置,我们可以根据实际情况调整,例如文字对齐方式,自定义刻度标签内容等。\n\n```js\noption = {\n  xAxis: {\n    axisLabel: {\n      formatter: '{value} kg',\n      align: 'center'\n      // ...\n    }\n    // ...\n  },\n  yAxis: {\n    axisLabel: {\n      formatter: '{value} 元',\n      align: 'center'\n      // ...\n    }\n  }\n  // ...\n};\n```\n\n## 示例\n\n图左侧的 y 轴代表东京月平均气温,右侧的 y 轴表示东京降水量,x 轴表示时间。两组 y 轴在一起,反映了平均气温和降水量间的趋势关系。\n\n```js live\noption = {\n  tooltip: {\n    trigger: 'axis',\n    axisPointer: { type: 'cross' }\n  },\n  legend: {},\n  xAxis: [\n    {\n      type: 'category',\n      axisTick: {\n        alignWithLabel: true\n      },\n      data: [\n        '1月',\n        '2月',\n        '3月',\n        '4月',\n        '5月',\n        '6月',\n        '7月',\n        '8月',\n        '9月',\n        '10月',\n        '11月',\n        '12月'\n      ]\n    }\n  ],\n  yAxis: [\n    {\n      type: 'value',\n      name: '降水量',\n      min: 0,\n      max: 250,\n      position: 'right',\n      axisLabel: {\n        formatter: '{value} ml'\n      }\n    },\n    {\n      type: 'value',\n      name: '温度',\n      min: 0,\n      max: 25,\n      position: 'left',\n      axisLabel: {\n        formatter: '{value} °C'\n      }\n    }\n  ],\n  series: [\n    {\n      name: '降水量',\n      type: 'bar',\n      yAxisIndex: 0,\n      data: [6, 32, 70, 86, 68.7, 100.7, 125.6, 112.2, 78.7, 48.8, 36.0, 19.3]\n    },\n    {\n      name: '温度',\n      type: 'line',\n      smooth: true,\n      yAxisIndex: 1,\n      data: [\n        6.0,\n        10.2,\n        10.3,\n        11.5,\n        10.3,\n        13.2,\n        14.3,\n        16.4,\n        18.0,\n        16.5,\n        12.0,\n        5.2\n      ]\n    }\n  ]\n};\n```\n\n这里简要介绍了坐标轴相关的常用配置项及用法,更多关于坐标轴配置项及用法请移步[官网](${optionPath}xAxis)。\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/e1433cf4ccf6834c60c1.js b/docs/_nuxt/js/e1433cf4ccf6834c60c1.js
new file mode 100644
index 0000000..c1c2b7a
--- /dev/null
+++ b/docs/_nuxt/js/e1433cf4ccf6834c60c1.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[95],{396:function(n,t,e){"use strict";e.r(t),t.default='# 双向柱状图\n\n双向柱状图多用于展示包含相反含义的数据的对比。其中图表的一个轴显示正在比较的类别,而另一轴代表对应的刻度值。\n\n双向柱状图一般用于正负两份相反数据的对比。例如一周内个人收入和支出的统计,其中收入为正数,支出为负数。使用双向柱状图可以很明确的对收入和支出做出对比,并能从单个系列中分析收入和支出的数值及波动。\n\n<iframe max-width="830" width="100%" height="400"\nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xS18jqmX4f">\n</iframe>\n\n双向柱状图可分为垂直方向的双向柱状图(如上图)和水平方向的双向柱状图(又叫正负条形图,如下图),例如一个客户满意度的调查数据分析中,有正面评价和负面评价,这很适合用正负条形图,所有数据在中间对齐,正面的评价数据分布在右侧,负面的评价数据分布在左侧。\n\n<iframe max-width="830" width="100%" height="400"\n src="https://gallery.echartsjs.com/view-lite.html?cid=xHJ1un374z">\n</iframe>\n\n## 双向柱状 \b 图的使用建议\n\n1、双向柱状图正向和负向的数据具有对比性,因此一般选用差值较大的具有对比性的颜色。\n\n2、永远不要在 0 基线的右边画负值的水平条行图或在 0 基线的上边画负值的柱子,以免和常识违背造成误解。\n\n<img max-width="830" width="100%" height="100%"\nsrc="images/design/bar/bi-directional-bar01.jpg">\n</img>\n\n3、双向柱状图多用于展示含相反含义的数据,因此要避免不具有正负含义的数据使用而造成的误解。 如下图人口统计图表中使用双向柱状图,一侧绘制男性的数据,另一侧绘制女性的数据,只是单纯的两类不同数据的对比,并不存在负数。那么,此时将两个数据序列绘制成一个分组柱状图是更合适的。\n\n<img max-width="830" width="100%" height="100%"\nsrc="images/design/bar/bi-directional-bar02.jpg">\n</img>\n'}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/e33c9002634265ded0e5.js b/docs/_nuxt/js/e33c9002634265ded0e5.js
new file mode 100644
index 0000000..538dd99
--- /dev/null
+++ b/docs/_nuxt/js/e33c9002634265ded0e5.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{452:function(t,n,e){"use strict";e.r(n);var r=e(0),l=e.n(r).a.extend({mounted:function(){this.$router.push("get-started")}}),o=e(7),component=Object(o.a)(l,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",{staticClass:"hidden"},[e("nuxt-link",{attrs:{to:"zh/get-started"}},[t._v("中文")]),t._v(" "),e("nuxt-link",{attrs:{to:"en/get-started"}},[t._v("English")])],1)}),[],!1,null,null,null);n.default=component.exports}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/e3d990a38aabb6066e19.js b/docs/_nuxt/js/e3d990a38aabb6066e19.js
new file mode 100644
index 0000000..98f0227
--- /dev/null
+++ b/docs/_nuxt/js/e3d990a38aabb6066e19.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[39],{340:function(n,e,t){"use strict";t.r(e),e.default="# Axis\n\nThe x/y-axis in the Cartesian coordinate system.\n\n## x-axis, y-axis\n\nBoth x-axis and y-axis included axis line, tick, label and title. Some chart will use the grid to assist the data viewing and calculating.\n\n<img max-width=\"830\" width=\"100%\" height=\"100%\"\nsrc=\"images/design/axis/charts_axis_img02.jpg\">\n</img>\n\nA normal 2D coordinate system has x-axis and y-axis. X-axis located at the bottom while y-axis at the left side in common. The Config is shown below:\n\n```js\noption = {\n  xAxis: {\n    // ...\n  },\n  yAxis: {\n    // ...\n  }\n  // ...\n};\n```\n\nThe x-axis is usually used to declare the number of categories which was also called the aspects of observing the data: \"Sales Time\", \"Sales Location\" and \"product name\", etc.. The y-axis usually used to indicate the numerical value of categories. These data are used to examine the quantitative value of a certain type of data or some indicator you need to analyze, such as \"Sales Quantity\" and \"Sales Price\".\n\n```js\noption = {\n  xAxis: {\n    type: 'time',\n    name: 'Sales Time'\n    // ...\n  },\n  yAxis: {\n    type: 'value',\n    name: 'Sales Quantity'\n    // ...\n  }\n  // ...\n};\n```\n\nWhen x-axis has a large span, we can use the zoom method to display part of the data in the chart.\n\n```js\noption = {\n  xAxis: {\n    type: 'time',\n    name: 'Sales Time'\n    // ...\n  },\n  yAxis: {\n    type: 'value',\n    name: 'Sales Quantity'\n    // ...\n  },\n  dataZoom: []\n  // ...\n};\n```\n\nIn two-dimensional data, there can be more than two axes. There are usually two x or y axes at the same time in ECharts. You can change the config [offset](${optionPath}xAxis.offset) to avoid overlaps of axes at the same place. X-axes can be displayed at the top and bottom, y-axes at left and right.\n\n```js\noption = {\n  xAxis: {\n    type: 'time',\n    name: 'Sales Time'\n    // ...\n  },\n  yAxis: [\n    {\n      type: 'value',\n      name: 'Sales Quantity'\n      // ...\n    },\n    {\n      type: 'value',\n      name: 'Sales Price'\n      // ...\n    }\n  ]\n  // ...\n};\n```\n\n## Axis Line\n\nECharts provide the config of [axisLine](${optionPath}xAxis.axisLine). You can change the setting according to the demand, such as the arrow on two sides and the style of axes.\n\n```js\noption = {\n  xAxis: {\n    axisLine: {\n      symbol: 'arrow',\n      lineStyle: {\n        type: 'dashed'\n        // ...\n      }\n    }\n    // ...\n  },\n  yAxis: {\n    axisLine: {\n      symbol: 'arrow',\n      lineStyle: {\n        type: 'dashed'\n        // ...\n      }\n    }\n  }\n  // ...\n};\n```\n\n## Tick\n\nECharts provide the config [axisTick](${optionPath}xAxis.axisTick). You can change the setting according to the demand, such as the length of ticks, and the style of ticks.\n\n```js\noption = {\n  xAxis: {\n    axisTick: {\n      length: 6,\n      lineStyle: {\n        type: 'dashed'\n        // ...\n      }\n    }\n    // ...\n  },\n  yAxis: {\n    axisTick: {\n      length: 6,\n      lineStyle: {\n        type: 'dashed'\n        // ...\n      }\n    }\n  }\n  // ...\n};\n```\n\n## Label\n\nECharts provide the config [axisLabel](${optionPath}xAxis.axisLabel). You can change the setting according to the demand, such as the text alignment and the customized label content.\n\n```js\noption = {\n  xAxis: {\n    axisLabel: {\n      formatter: '{value} kg',\n      align: 'center'\n      // ...\n    }\n    // ...\n  },\n  yAxis: {\n    axisLabel: {\n      formatter: '{value} ¥',\n      align: 'center'\n      // ...\n    }\n  }\n  // ...\n};\n```\n\n## Example\n\nThe y-axis on the left side represents the monthly average temperature in Tokyo, the y-axis on the right side represents the precipitation of Tokyo. The x-axis represents the time. It reflects the trend and relation between the average temperature and precipitation.\n\n```js live\noption = {\n  tooltip: {\n    trigger: 'axis',\n    axisPointer: { type: 'cross' }\n  },\n  legend: {},\n  xAxis: [\n    {\n      type: 'category',\n      axisTick: {\n        alignWithLabel: true\n      },\n      axisLabel: {\n        rotate: 30\n      },\n      data: [\n        'January',\n        'February',\n        'March',\n        'April',\n        'May',\n        'June',\n        'July',\n        'August',\n        'September',\n        'October',\n        'November',\n        'December'\n      ]\n    }\n  ],\n  yAxis: [\n    {\n      type: 'value',\n      name: 'Precipitation',\n      min: 0,\n      max: 250,\n      position: 'right',\n      axisLabel: {\n        formatter: '{value} ml'\n      }\n    },\n    {\n      type: 'value',\n      name: 'Temperature',\n      min: 0,\n      max: 25,\n      position: 'left',\n      axisLabel: {\n        formatter: '{value} °C'\n      }\n    }\n  ],\n  series: [\n    {\n      name: 'Precipitation',\n      type: 'bar',\n      yAxisIndex: 0,\n      data: [6, 32, 70, 86, 68.7, 100.7, 125.6, 112.2, 78.7, 48.8, 36.0, 19.3]\n    },\n    {\n      name: 'Temperature',\n      type: 'line',\n      smooth: true,\n      yAxisIndex: 1,\n      data: [\n        6.0,\n        10.2,\n        10.3,\n        11.5,\n        10.3,\n        13.2,\n        14.3,\n        16.4,\n        18.0,\n        16.5,\n        12.0,\n        5.2\n      ]\n    }\n  ]\n};\n```\n\nThese are the concise intro of the usage of axis config. Check more details at: [Official Website](${optionPath}xAxis).\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/e3f9aa2dbc89a452558f.js b/docs/_nuxt/js/e3f9aa2dbc89a452558f.js
new file mode 100644
index 0000000..1bb5d4b
--- /dev/null
+++ b/docs/_nuxt/js/e3f9aa2dbc89a452558f.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[137],{438:function(n,w,o){"use strict";o.r(w),w.default=""}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/e40a3b3f99ff42eccdea.js b/docs/_nuxt/js/e40a3b3f99ff42eccdea.js
new file mode 100644
index 0000000..777cc5b
--- /dev/null
+++ b/docs/_nuxt/js/e40a3b3f99ff42eccdea.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[47],{348:function(n,w,o){"use strict";o.r(w),w.default=""}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/e5736dd2cea650d732d9.js b/docs/_nuxt/js/e5736dd2cea650d732d9.js
new file mode 100644
index 0000000..3d28cf2
--- /dev/null
+++ b/docs/_nuxt/js/e5736dd2cea650d732d9.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[74],{375:function(e,n,t){"use strict";t.r(n),n.default="# Document Editing Guidelines\n\n## Adding a Markdown File [[[#adding-a-markdown-file]]]\n\nAdd a markdown file to the `contents/zh/` (Chinese posts) or `contents/en/` (English posts) directories, up to three levels. Update the path and title information in `contents/zh/posts.yml` or `contents/en/posts.yml`. Add the corresponding contributor information in `components/helper/contributors.ts`. (Notice, `en` and `zh` are separate entries in that file.)\n\nLowercase markdown file names.\n\n## Using Prettier to Automatically Format Code [[[#using-prettier-to-automatically-format-code]]]\n\nBefore you start, we recommend installing the [prettier VSCode plugin](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode), which will automatically format the code for you when you save it.\n\nIf you feel that the automatic formatting is breaking your code block, you can add the following comment to prevent `prettier` from formatting the code inside the block\n\n```markdown\n\x3c!-- prettier-ignore-start --\x3e\n\x3c!-- prettier-ignore-end --\x3e\n```\n\nIf you find blocks of code that are not formatted, check first for syntax errors in the code.\n\n## Built-in Variables [[[#built-in-variables]]]\n\n- `optionPath`: For example, the source code of [xAxis.type](${optionPath}xAxis.type) is:\n\n  <pre>&#91;xAxis.type&#93;&#40;&#36;{optionPath}xAxis.type&#41;</pre>\n- `apiPath`: For example, the source code of [echarts.init](${apiPath}echarts.init) is:\n\n  <pre>&#91;echarts.init&#93;&#40;&#36;{apiPath}echarts.init&#41;</pre>\n- `mainSitePath`: For example, the source code of [echarts.init](${mainSitePath}api.html#echarts.init) is:\n\n  <pre>&#91;echarts.init&#93;&#40;&#36;{mainSitePath}api.html#echarts.init&#41;</pre>\n- `exampleEditorPath`: For example, the source code of [line-simple](${exampleEditorPath}line-simple&edit=1&reset=1) is:\n\n  <pre>&#91;line-simple&#93;&#40;&#36;{exampleEditorPath}line-simple&edit=1&reset=1&#41;</pre>\n- `exampleViewPath`: For example, the source code of [line-simple](${exampleViewPath}line-simple&edit=1&reset=1) is:\n\n  <pre>&#91;line-simple&#93;&#40;&#36;{exampleViewPath}scatter-exponential-regression&edit=1&reset=1&#41;</pre>\n- `lang`: For example, the source code of [Get Started](${lang}/get-started) is:\n\n  <pre>&#91;Get Started&#93;&#40;&#36;{lang}/get-started&#41;</pre>\n\n\n## Headings [[[#headings]]]\n\nThe syntax:\n\x3c!-- prettier-ignore-start --\x3e\n<pre>\n&#35;&#35; Some Heading [[[#a-unique-id-for-link]]]\n</pre>\n\x3c!-- prettier-ignore-end --\x3e\n\n<md-alert type=\"danger\">\nThe id is used to link this heading from outside.\nIt's strongly recommended to declare the id in each heading (e.g., [[[#a-unique-id-for-link]]]) and ensure it remains unchanged. Otherwise an id is auto-generated base on the title text, which may be unstable (changed when the heading text is changed), and varies across different languages.\n</md-alert>\n\nNote: No need to declare id for the main title of an article, as the link for an article is the file path (declared in `posts.yml`).\n\n## Link to Other Articles [[[#link-to-other-articles]]]\n\nThe syntax is:\n<pre>\n&#91;Get Apache ECharts&#93;&#40;&#36;{lang}/basics/download&#41;\n</pre>\nThe effect is:\n[Get Apache ECharts](${lang}/basics/download)\n\n## Embedding Code [[[#embedding-code]]]\n\n### Basic Usage [[[#embedding-code-basic-usage]]]\n\nThe syntax is:\n\x3c!-- prettier-ignore-start --\x3e\n<pre>\n&#96;&#96;&#96;js\noption = {\n    series: [{\n        type: 'bar',\n        data: [23, 24, 18, 25, 27, 28, 25]\n    }]\n};\n&#96;&#96;&#96;\n</pre>\n\x3c!-- prettier-ignore-end --\x3e\n\nThe effect is:\n```js\noption = {\n  series: [\n    {\n      type: 'bar',\n      data: [23, 24, 18, 25, 27, 28, 25]\n    }\n  ]\n};\n```\n\n### Recommended Way of Writing Code [[[#embedding-code-recommended-way-of-writing-code]]]\n\nIn order to allow the tool to help us format the code, we should try to avoid syntactically problematic writing styles.\n\nFor example, the comment `...`\n\n```js\noption = {\n  series: [\n    {\n      type: 'bar'\n      // ...\n    }\n  ]\n};\n```\n\n### Live Preview and Editing [[[#embedding-code-live-preview-and-editing]]]\n\n> Currently only preview (render the charts) of ECharts option code is supported\n\nThe syntax is:\n\x3c!-- prettier-ignore-start --\x3e\n<pre>\n&#96;&#96;&#96;js live\noption = {\n  xAxis: {\n    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']\n  },\n  yAxis: {},\n  series: [\n    {\n      type: 'bar',\n      data: [23, 24, 18, 25, 27, 28, 25]\n    }\n  ]\n};\n&#96;&#96;&#96;\n</pre>\n\x3c!-- prettier-ignore-end --\x3e\n\nThe effect is:\n```js live\noption = {\n  xAxis: {\n    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']\n  },\n  yAxis: {},\n  series: [\n    {\n      type: 'bar',\n      data: [23, 24, 18, 25, 27, 28, 25]\n    }\n  ]\n};\n```\n\n### More Preview Layouts [[[#embedding-code-more-preview-layouts]]]\n\n#### Left to Right [[[#embedding-code-more-preview-layouts-left-to-right]]]\n\nThe syntax is:\n\x3c!-- prettier-ignore-start --\x3e\n<pre>\n&#96;&#96;&#96;js live {layout: 'lr'}\noption = {\n  ...\n};\n&#96;&#96;&#96;\n</pre>\n\x3c!-- prettier-ignore-end --\x3e\n\nThe effect is:\n```js live {layout: 'lr'}\noption = {\n  xAxis: {\n    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']\n  },\n  yAxis: {},\n  series: [\n    {\n      type: 'bar',\n      data: [23, 24, 18, 25, 27, 28, 25]\n    }\n  ]\n};\n```\n\n#### Right to left [[[#embedding-code-more-preview-layouts-right-to-left]]]\n\nThe syntax is:\n\x3c!-- prettier-ignore-start --\x3e\n<pre>\n&#96;&#96;&#96;js live {layout: 'rl'}\noption = {\n  ...\n};\n&#96;&#96;&#96;\n</pre>\n\x3c!-- prettier-ignore-end --\x3e\n\nThe effect is:\n```js live {layout: 'rl'}\noption = {\n  xAxis: {\n    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']\n  },\n  yAxis: {},\n  series: [\n    {\n      type: 'bar',\n      data: [23, 24, 18, 25, 27, 28, 25]\n    }\n  ]\n};\n```\n\n#### Down to Up [[[#embedding-code-more-preview-layouts-down-to-up]]]\n\nThe syntax is:\n\x3c!-- prettier-ignore-start --\x3e\n<pre>\n&#96;&#96;&#96;js live {layout: 'bt'}\noption = {\n  ...\n};\n</pre>\n\x3c!-- prettier-ignore-end --\x3e\n\nThe effect is:\n```js live {layout: 'bt'}\noption = {\n  xAxis: {\n    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']\n  },\n  yAxis: {},\n  series: [\n    {\n      type: 'bar',\n      data: [23, 24, 18, 25, 27, 28, 25]\n    }\n  ]\n};\n```\n\n### Highlighting Lines of Code and Adding Filenames [[[#embedding-code-highlighting-lines-of-code-and-adding-filenames]]]\n\nThe syntax is:\n\x3c!-- prettier-ignore-start --\x3e\n<pre>\n&#96;&#96;&#96;js{1,3-5}[option.js]\noption = {\n  series: [\n    {\n      type: 'bar',\n      data: [23, 24, 18, 25, 27, 28, 25]\n    }\n  ]\n};\n&#96;&#96;&#96;\n</pre>\n\x3c!-- prettier-ignore-end --\x3e\n\nThe effect is:\n```js{1,3-5}[option.js]\noption = {\n  series: [\n    {\n      type: 'bar',\n      data: [23, 24, 18, 25, 27, 28, 25]\n    }\n  ]\n};\n```\n\n## Embedding Images [[[#embedding-images]]]\n\nSource images are stored under `static/images/`.\n\nThe syntax is:\n```\n![image description](images/demo.png)\n```\n\n### Set the Image Height and Width [[[#embedding-images-set-width-height]]]\n\nFor the temporary style of the current page, you can just write html.\n\n```\n<img data-src=\"images/demo.png\" style=\"width: 50px\" />\n```\n\n## Embedding Examples (Iframe) [[[#embedding-examples]]]\n\n\nThe syntax is:\n```\n<md-example src=\"doc-example/getting-started\" width=\"100%\" height=\"300\"></md-example>\n```\n`src` is the string after `?c=` in the https://echarts.apache.org/examples/en/editor.html?c=line-simple address.\n\nThe effect is:\n<md-example src=\"doc-example/getting-started\" width=\"100%\" height=\"300\"></md-example>\n\n## Link to Examples [[[#link-to-examples]]]\n\nThe syntax is:\n<pre>&#91;line-simple&#93;&#40;&#36;{exampleEditorPath}line-simple&edit=1&reset=1&#41;</pre>\n\nThe effect is:\n[line-simple](${exampleEditorPath}line-simple&edit=1&reset=1)\n\n\n## Link to ECharts Option Items [[[#link-to-echarts-option-items]]]\n\nThe syntax is:\n<pre>&#91;xAxis.type&#93;&#40;&#36;{optionPath}xAxis.type&#41;</pre>\n\nThe effect is:\n[xAxis.type](${optionPath}xAxis.type)\n\nThe syntax is:\n<pre>&#91;echarts.init&#93;&#40;&#36;{apiPath}echarts.init&#41;</pre>\n\nThe effect is:\n[echarts.init](${apiPath}echarts.init)\n\n\n## More Component Usage [[[#more-component-usage]]]\n\nThe documentation supports the use of globally registered `markdown` components. In addition to the `md-example` component just described, the following components are also available\n\n### md-alert [[[#more-component-usage-md-alert]]]\n\nPrompt components\n\n```\n<md-alert type=\"info\">\nThis is an info alert.\n</md-alert>\n```\n\n<md-alert type=\"info\">\nThis is an info alert.\n</md-alert>\n\n```\n<md-alert type=\"success\">\nThis is a success alert.\n</md-alert>\n```\n\n<md-alert type=\"success\">\nThis is a success alert.\n</md-alert>\n\n```\n<md-alert type=\"warning\">\nThis is a warning alert.\n</md-alert>\n```\n\n<md-alert type=\"warning\">\nThis is a warning alert.\n</md-alert>\n\n```\n<md-alert type=\"danger\">\nThis is a danger alert.\n</md-alert>\n```\n\n<md-alert type=\"danger\">\nThis is a danger alert.\n</md-alert>\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/e927d2b5f0d76c8900b8.js b/docs/_nuxt/js/e927d2b5f0d76c8900b8.js
new file mode 100644
index 0000000..d0e4354
--- /dev/null
+++ b/docs/_nuxt/js/e927d2b5f0d76c8900b8.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[144],{445:function(n,t,e){"use strict";e.r(t),t.default="# 拖拽的实现\n\n本篇通过介绍一个实现拖拽的小例子来介绍如何在 Apache ECharts<sup>TM</sup> 中实现复杂的交互。\n\n<md-example src=\"line-draggable\" height=\"400\"></md-example>\n\n这个例子主要做到了这样一件事,用鼠标可以拖拽曲线的点,从而改变曲线的形状。例子很简单,但是有了这个基础我们还可以做更多的事情,比如在图中进行可视化得编辑。所以我们从这个简单的例子开始。\n\necharts 本身没有提供封装好的“拖拽改变图表”这样比较业务定制的功能。但是这个功能开发者可以通过 API 扩展实现。\n\n## 实现基本的拖拽功能\n\n在这个例子中,基础的图表是一个 [折线图 (series-line)](${optionPath}series-line)。参见如下配置:\n\n```js\nvar symbolSize = 20;\n\n// 这个 data 变量在这里单独声明,在后面也会用到。\nvar data = [\n  [15, 0],\n  [-50, 10],\n  [-56.5, 20],\n  [-46.5, 30],\n  [-22.1, 40]\n];\n\nmyChart.setOption({\n  xAxis: {\n    min: -100,\n    max: 80,\n    type: 'value',\n    axisLine: { onZero: false }\n  },\n  yAxis: {\n    min: -30,\n    max: 60,\n    type: 'value',\n    axisLine: { onZero: false }\n  },\n  series: [\n    {\n      id: 'a',\n      type: 'line',\n      smooth: true,\n      symbolSize: symbolSize, // 为了方便拖拽,把 symbolSize 尺寸设大了。\n      data: data\n    }\n  ]\n});\n```\n\n既然折线中原生的点没有拖拽功能,我们就为它加上拖拽功能:用 [graphic](${optionPath}graphic) 组件,在每个点上面,覆盖一个隐藏的可拖拽的圆点。\n\n```js\nmyChart.setOption({\n  // 声明一个 graphic component,里面有若干个 type 为 'circle' 的 graphic elements。\n  // 这里使用了 echarts.util.map 这个帮助方法,其行为和 Array.prototype.map 一样,但是兼容 es5 以下的环境。\n  // 用 map 方法遍历 data 的每项,为每项生成一个圆点。\n  graphic: echarts.util.map(data, function(dataItem, dataIndex) {\n    return {\n      // 'circle' 表示这个 graphic element 的类型是圆点。\n      type: 'circle',\n\n      shape: {\n        // 圆点的半径。\n        r: symbolSize / 2\n      },\n      // 用 transform 的方式对圆点进行定位。position: [x, y] 表示将圆点平移到 [x, y] 位置。\n      // 这里使用了 convertToPixel 这个 API 来得到每个圆点的位置,下面介绍。\n      position: myChart.convertToPixel('grid', dataItem),\n\n      // 这个属性让圆点不可见(但是不影响他响应鼠标事件)。\n      invisible: true,\n      // 这个属性让圆点可以被拖拽。\n      draggable: true,\n      // 把 z 值设得比较大,表示这个圆点在最上方,能覆盖住已有的折线图的圆点。\n      z: 100,\n      // 此圆点的拖拽的响应事件,在拖拽过程中会不断被触发。下面介绍详情。\n      // 这里使用了 echarts.util.curry 这个帮助方法,意思是生成一个与 onPointDragging\n      // 功能一样的新的函数,只不过第一个参数永远为此时传入的 dataIndex 的值。\n      ondrag: echarts.util.curry(onPointDragging, dataIndex)\n    };\n  })\n});\n```\n\n上面的代码中,使用 [convertToPixel](${mainSitePath}api.html#echartsInstance.convertToPixel) 这个 API,进行了从 data 到“像素坐标”的转换,从而得到了每个圆点应该在的位置,从而能绘制这些圆点。`myChart.convertToPixel('grid', dataItem)` 这句话中,第一个参数 `'grid'` 表示 `dataItem` 在 [grid](${optionPath}grid) 这个组件中(即直角坐标系)中进行转换。所谓“像素坐标”,就是以 echarts 容器 dom element 的左上角为零点的以像素为单位的坐标系中的坐标。\n\n注意这件事需要在第一次 setOption 后再进行,也就是说,须在坐标系([grid](${optionPath}grid))初始化后才能调用 `myChart.convertToPixel('grid', dataItem)`。\n\n有了这段代码后,就有了诸个能拖拽的点。接下来要为每个点,加上拖拽响应的事件:\n\n```js\n// 拖拽某个圆点的过程中会不断调用此函数。\n// 此函数中会根据拖拽后的新位置,改变 data 中的值,并用新的 data 值,重绘折线图,从而使折线图同步于被拖拽的隐藏圆点。\nfunction onPointDragging(dataIndex) {\n  // 这里的 data 就是本文最初的代码块中声明的 data,在这里会被更新。\n  // 这里的 this 就是被拖拽的圆点。this.position 就是圆点当前的位置。\n  data[dataIndex] = myChart.convertFromPixel('grid', this.position);\n  // 用更新后的 data,重绘折线图。\n  myChart.setOption({\n    series: [\n      {\n        id: 'a',\n        data: data\n      }\n    ]\n  });\n}\n```\n\n上面的代码中,使用了 [convertFromPixel](${mainSitePath}/api.html#echartsInstance.convertFromPixel) 这个 API。它是 [convertToPixel](${mainSitePath}/api.html#echartsInstance.convertToPixel) 的逆向过程。`myChart.convertFromPixel('grid', this.position)` 表示把当前像素坐标转换成 [grid](${optionPath}grid) 组件中直角坐标系的 dataItem 值。\n\n最后,为了使 dom 尺寸改变时,图中的元素能自适应得变化,加上这些代码:\n\n```js\nwindow.addEventListener('resize', function() {\n  // 对每个拖拽圆点重新计算位置,并用 setOption 更新。\n  myChart.setOption({\n    graphic: echarts.util.map(data, function(item, dataIndex) {\n      return {\n        position: myChart.convertToPixel('grid', item)\n      };\n    })\n  });\n});\n```\n\n## 添加 tooltip 组件\n\n到此,拖拽的基本功能就完成了。但是想要更进一步得实时看到拖拽过程中,被拖拽的点的 data 值的变化状况,我们可以使用 [tooltip](${optionPath}tooltip) 组件来实时显示这个值。但是,tooltip 有其默认的“显示”“隐藏”触发规则,在我们拖拽的场景中并不适用,所以我们还要手动定制 tooltip 的“显示”“隐藏”行为。\n\n在上述代码中分别添加如下定义:\n\n```js\nmyChart.setOption({\n  // ...,\n  tooltip: {\n    // 表示不使用默认的“显示”“隐藏”触发规则。\n    triggerOn: 'none',\n    formatter: function(params) {\n      return (\n        'X: ' +\n        params.data[0].toFixed(2) +\n        '<br>Y: ' +\n        params.data[1].toFixed(2)\n      );\n    }\n  }\n});\n```\n\n```js\nmyChart.setOption({\n  graphic: data.map(function(item, dataIndex) {\n    return {\n      type: 'circle',\n      // ...,\n      // 在 mouseover 的时候显示,在 mouseout 的时候隐藏。\n      onmousemove: echarts.util.curry(showTooltip, dataIndex),\n      onmouseout: echarts.util.curry(hideTooltip, dataIndex)\n    };\n  })\n});\n\nfunction showTooltip(dataIndex) {\n  myChart.dispatchAction({\n    type: 'showTip',\n    seriesIndex: 0,\n    dataIndex: dataIndex\n  });\n}\n\nfunction hideTooltip(dataIndex) {\n  myChart.dispatchAction({\n    type: 'hideTip'\n  });\n}\n```\n\n这里使用了 [dispatchAction](api.html#echartsInstance.dispatchAction) 来显示隐藏 tooltip。用到了 [showTip](api.html#action.tooltip.showTip)、[hideTip](api.html#action.tooltip.hideTip)。\n\n## 全部代码\n\n总结一下,全部的代码如下:\n\n```js\nimport echarts from 'echarts';\n\nvar symbolSize = 20;\nvar data = [\n  [15, 0],\n  [-50, 10],\n  [-56.5, 20],\n  [-46.5, 30],\n  [-22.1, 40]\n];\nvar myChart = echarts.init(document.getElementById('main'));\nmyChart.setOption({\n  tooltip: {\n    triggerOn: 'none',\n    formatter: function(params) {\n      return (\n        'X: ' +\n        params.data[0].toFixed(2) +\n        '<br />Y: ' +\n        params.data[1].toFixed(2)\n      );\n    }\n  },\n  xAxis: { min: -100, max: 80, type: 'value', axisLine: { onZero: false } },\n  yAxis: { min: -30, max: 60, type: 'value', axisLine: { onZero: false } },\n  series: [\n    { id: 'a', type: 'line', smooth: true, symbolSize: symbolSize, data: data }\n  ]\n});\nmyChart.setOption({\n  graphic: echarts.util.map(data, function(item, dataIndex) {\n    return {\n      type: 'circle',\n      position: myChart.convertToPixel('grid', item),\n      shape: { r: symbolSize / 2 },\n      invisible: true,\n      draggable: true,\n      ondrag: echarts.util.curry(onPointDragging, dataIndex),\n      onmousemove: echarts.util.curry(showTooltip, dataIndex),\n      onmouseout: echarts.util.curry(hideTooltip, dataIndex),\n      z: 100\n    };\n  })\n});\nwindow.addEventListener('resize', function() {\n  myChart.setOption({\n    graphic: echarts.util.map(data, function(item, dataIndex) {\n      return { position: myChart.convertToPixel('grid', item) };\n    })\n  });\n});\nfunction showTooltip(dataIndex) {\n  myChart.dispatchAction({\n    type: 'showTip',\n    seriesIndex: 0,\n    dataIndex: dataIndex\n  });\n}\nfunction hideTooltip(dataIndex) {\n  myChart.dispatchAction({ type: 'hideTip' });\n}\nfunction onPointDragging(dataIndex, dx, dy) {\n  data[dataIndex] = myChart.convertFromPixel('grid', this.position);\n  myChart.setOption({\n    series: [\n      {\n        id: 'a',\n        data: data\n      }\n    ]\n  });\n}\n```\n\n有了这些基础,就可以定制更多的功能了。可以加 [dataZoom](${optionPath}dataZoom) 组件,可以制作一个直角坐标系上的绘图板等等。可以发挥想象力。\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/e97de2cdc6b7785ece0f.js b/docs/_nuxt/js/e97de2cdc6b7785ece0f.js
new file mode 100644
index 0000000..841cee7
--- /dev/null
+++ b/docs/_nuxt/js/e97de2cdc6b7785ece0f.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[2],{196:function(e,t,n){e.exports={}},203:function(e,t,n){e.exports={}},204:function(e,t,n){e.exports={}},205:function(e,t,n){e.exports={}},214:function(e,t,n){e.exports={}},217:function(e,t,n){"use strict";n(196)},234:function(e,t,n){"use strict";n(203)},235:function(e,t,n){"use strict";n(204)},243:function(e,t,n){"use strict";n(205)},306:function(e,t,n){"use strict";n(214)},308:function(e,t,n){var map={"./en/basics/download.md":[309,8],"./en/basics/help.md":[310,9],"./en/basics/import.md":[311,10],"./en/basics/inspiration.md":[312,11],"./en/basics/release-note/5-2-0.md":[313,12],"./en/basics/release-note/5-3-0.md":[314,13],"./en/basics/release-note/5-4-0.md":[315,14],"./en/basics/release-note/5-5-0.md":[316,15],"./en/basics/release-note/5-6-0.md":[317,16],"./en/basics/release-note/v5-feature.md":[318,17],"./en/basics/release-note/v5-upgrade-guide.md":[319,18],"./en/basics/release-note/v6-feature.md":[320,19],"./en/basics/release-note/v6-upgrade-guide.md":[321,20],"./en/best-practices/aria.md":[322,21],"./en/best-practices/canvas-vs-svg.md":[323,22],"./en/best-practices/design/color-enhance.md":[324,23],"./en/best-practices/mobile.md":[325,24],"./en/best-practices/security.md":[326,25],"./en/best-practices/specification/bar/basic-bar.md":[327,26],"./en/best-practices/specification/bar/bi-directional-bar.md":[328,27],"./en/best-practices/specification/bar/grouped-bar.md":[329,28],"./en/best-practices/specification/bar/stacked-bar.md":[330,29],"./en/best-practices/specification/funnel.md":[331,30],"./en/best-practices/specification/gauge.md":[332,31],"./en/best-practices/specification/line/area.md":[333,32],"./en/best-practices/specification/line/basic-line.md":[334,33],"./en/best-practices/specification/line/stacked-area.md":[335,34],"./en/best-practices/specification/pie/basic-pie.md":[336,35],"./en/best-practices/specification/radar.md":[337,36],"./en/best-practices/specification/scatter/bubble.md":[338,37],"./en/best-practices/specification/scatter/scatter.md":[339,38],"./en/concepts/axis.md":[340,39],"./en/concepts/chart-size.md":[341,40],"./en/concepts/coordinate.md":[342,41],"./en/concepts/data-transform.md":[343,42],"./en/concepts/dataset.md":[344,43],"./en/concepts/event.md":[345,44],"./en/concepts/legend.md":[346,45],"./en/concepts/options.md":[347,46],"./en/concepts/series.md":[348,47],"./en/concepts/style.md":[349,48],"./en/concepts/tooltip.md":[350,49],"./en/concepts/visual-map.md":[351,50],"./en/get-started.md":[352,51],"./en/how-to/animation/transition.md":[353,52],"./en/how-to/chart-types/bar/bar-race.md":[354,53],"./en/how-to/chart-types/bar/basic-bar.md":[355,54],"./en/how-to/chart-types/bar/polar-bar.md":[356,55],"./en/how-to/chart-types/bar/stacked-bar.md":[357,56],"./en/how-to/chart-types/bar/waterfall.md":[358,57],"./en/how-to/chart-types/line/area-line.md":[359,58],"./en/how-to/chart-types/line/basic-line.md":[360,59],"./en/how-to/chart-types/line/smooth-line.md":[361,60],"./en/how-to/chart-types/line/stacked-line.md":[362,61],"./en/how-to/chart-types/line/step-line.md":[363,62],"./en/how-to/chart-types/pie/basic-pie.md":[364,63],"./en/how-to/chart-types/pie/doughnut.md":[365,64],"./en/how-to/chart-types/pie/rose.md":[366,65],"./en/how-to/chart-types/scatter/basic-scatter.md":[367,66],"./en/how-to/component-types/geo/svg-base-map.md":[368,67],"./en/how-to/cross-platform/server.md":[369,68],"./en/how-to/data/drilldown.md":[370,69],"./en/how-to/data/dynamic-data.md":[371,70],"./en/how-to/interaction/coarse-pointer.md":[372,71],"./en/how-to/interaction/drag.md":[373,72],"./en/how-to/label/rich-text.md":[374,73],"./en/meta/edit-guide.md":[375,74],"./zh/basics/download.md":[376,75],"./zh/basics/help.md":[377,76],"./zh/basics/import.md":[378,77],"./zh/basics/inspiration.md":[379,78],"./zh/basics/release-note/5-2-0.md":[380,79],"./zh/basics/release-note/5-3-0.md":[381,80],"./zh/basics/release-note/5-4-0.md":[382,81],"./zh/basics/release-note/5-5-0.md":[383,82],"./zh/basics/release-note/5-6-0.md":[384,83],"./zh/basics/release-note/v5-feature.md":[385,84],"./zh/basics/release-note/v5-upgrade-guide.md":[386,85],"./zh/basics/release-note/v6-feature.md":[387,86],"./zh/basics/release-note/v6-upgrade-guide.md":[388,87],"./zh/basics/resource.md":[389,88],"./zh/best-practices/aria.md":[390,89],"./zh/best-practices/canvas-vs-svg.md":[391,90],"./zh/best-practices/design/color-enhance.md":[392,91],"./zh/best-practices/mobile.md":[393,92],"./zh/best-practices/security.md":[394,93],"./zh/best-practices/specification/bar/basic-bar.md":[395,94],"./zh/best-practices/specification/bar/bi-directional-bar.md":[396,95],"./zh/best-practices/specification/bar/grouped-bar.md":[397,96],"./zh/best-practices/specification/bar/stacked-bar.md":[398,97],"./zh/best-practices/specification/funnel.md":[399,98],"./zh/best-practices/specification/gauge.md":[400,99],"./zh/best-practices/specification/line/area.md":[401,100],"./zh/best-practices/specification/line/basic-line.md":[402,101],"./zh/best-practices/specification/line/stacked-area.md":[403,102],"./zh/best-practices/specification/pie/basic-pie.md":[404,103],"./zh/best-practices/specification/radar.md":[405,104],"./zh/best-practices/specification/scatter/bubble.md":[406,105],"./zh/best-practices/specification/scatter/scatter.md":[407,106],"./zh/concepts/axis.md":[408,107],"./zh/concepts/chart-size.md":[409,108],"./zh/concepts/coordinate.md":[410,109],"./zh/concepts/data-transform.md":[411,110],"./zh/concepts/dataset.md":[412,111],"./zh/concepts/event.md":[413,112],"./zh/concepts/legend.md":[414,113],"./zh/concepts/options.md":[415,114],"./zh/concepts/series.md":[416,115],"./zh/concepts/style.md":[417,116],"./zh/concepts/tooltip.md":[418,117],"./zh/concepts/visual-map.md":[419,118],"./zh/get-started.md":[420,119],"./zh/how-to/animation/transition.md":[421,120],"./zh/how-to/animation/universal-transition.md":[422,121],"./zh/how-to/chart-types/bar/bar-race.md":[423,122],"./zh/how-to/chart-types/bar/basic-bar.md":[424,123],"./zh/how-to/chart-types/bar/polar-bar.md":[425,124],"./zh/how-to/chart-types/bar/stacked-bar.md":[426,125],"./zh/how-to/chart-types/bar/waterfall.md":[427,126],"./zh/how-to/chart-types/line/area-line.md":[428,127],"./zh/how-to/chart-types/line/basic-line.md":[429,128],"./zh/how-to/chart-types/line/smooth-line.md":[430,129],"./zh/how-to/chart-types/line/stacked-line.md":[431,130],"./zh/how-to/chart-types/line/step-line.md":[432,131],"./zh/how-to/chart-types/pie/basic-pie.md":[433,132],"./zh/how-to/chart-types/pie/doughnut.md":[434,133],"./zh/how-to/chart-types/pie/rose.md":[435,134],"./zh/how-to/chart-types/scatter/basic-scatter.md":[436,135],"./zh/how-to/component-types/geo/svg-base-map.md":[437,136],"./zh/how-to/connect.md":[438,137],"./zh/how-to/cross-platform/baidu-app.md":[439,138],"./zh/how-to/cross-platform/server.md":[440,139],"./zh/how-to/cross-platform/wechat-app.md":[441,140],"./zh/how-to/data/drilldown.md":[442,141],"./zh/how-to/data/dynamic-data.md":[443,142],"./zh/how-to/interaction/coarse-pointer.md":[444,143],"./zh/how-to/interaction/drag.md":[445,144],"./zh/how-to/label/rich-text.md":[446,145],"./zh/how-to/mobile.md":[447,146],"./zh/meta/edit-guide.md":[448,147],"./zh/meta/writing.md":[449,148]};function c(e){if(!n.o(map,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=map[e],c=t[0];return n.e(t[1]).then((function(){return n(c)}))}c.keys=function(){return Object.keys(map)},c.id=308,e.exports=c},451:function(e,t,n){"use strict";n.r(t);var c=n(2),o=(n(27),n(45),n(108),n(49),n(0)),r=n.n(o),l=n(191),h=(n(215),n(216)),d=(n(142),n(107)),m=Object(l.c)({props:{width:{type:[String,Number],default:"100%"},height:{type:[String,Number],default:"350"},src:String},setup:function(e,t){var n=Object(l.a)((function(){return d.a.exampleViewPath.replace("${lang}",t.root.$i18n.locale)+e.src})),c=Object(l.f)("");return{finalSrc:c,visibilityChanged:function(e){e&&(c.value=n.value)}}}}),v=n(7),f=Object(v.a)(m,(function(){var e=this,t=e.$createElement;return(e._self._c||t)("iframe",{directives:[{name:"observe-visibility",rawName:"v-observe-visibility",value:e.visibilityChanged,expression:"visibilityChanged"}],attrs:{width:e.width||200,height:e.height||200,src:e.finalSrc}})}),[],!1,null,null,null).exports,w=(n(36),r.a.extend({props:{type:{type:String,default:"info",validator:function(e){return["info","success","warning","danger"].includes(e)}}}})),z=(n(217),Object(v.a)(w,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("blockquote",{class:"md-alert md-alert-"+e.type},[n("p",[e._t("default")],2)])}),[],!1,null,"baf1bad2",null).exports),y=(n(17),n(218)),_=(n(219),n(220)),O=(n(197),n(198),n(199),n(28),n(29),n(20),n(63),{});var j=n(221),k=n(222),C=n.n(k),x=n(192),S=n(16);function P(){var e={},t={},n=1;function c(e,c){var o,time,l=(o=e,time=c,d.getZr().animation.animate({val:0},{loop:!1}).when(time,{val:1}).during((function(){d.getZr().wakeUp()})).done((function(){r.a.nextTick(o)})).start());return t[n]=l,n++}function o(e,c){var o,time,l=(o=e,time=c,d.getZr().animation.animate({val:0},{loop:!0}).when(time,{val:1}).during((function(e,t){d.getZr().wakeUp(),1===t&&r.a.nextTick(o)})).start());return t[n]=l,n++}function l(e){var n=t[e];n&&(d.getZr().animation.removeAnimator(n),delete t[e])}function h(e){l(e)}var d,m=[];return{resize:function(){d&&d.resize()},dispose:function(){d&&(d.dispose(),d=null)},getDataURL:function(){return d.getDataURL({pixelRatio:2,excludeComponents:["toolbox"]})},getOption:function(){return d.getOption()},getInstance:function(){return d},pause:function(){d&&d.getZr().animation.pause()},resume:function(){d&&d.getZr().animation.resume()},run:function(n,code,r){var v,f,w;r=r||{},d||(d=echarts.init(n,r.darkMode?"dark":"",{renderer:r.renderer,useDirtyRect:r.useDirtyRect}),f=(v=d).on,w=v.setOption,v.on=function(e){var t=f.apply(v,arguments);return m.push(e),t},v.setOption=function(){return w.apply(this,arguments)}),function(){for(var e in t)t.hasOwnProperty(e)&&l(e)}(),function(e){m.forEach((function(t){e&&e.off(t)})),m.length=0}(d),e.config=null;var option=new Function("myChart","app","setTimeout","setInterval","clearTimeout","clearInterval","var option;\n"+code+"\nreturn option;")(d,e,c,o,l,h);if(option&&"object"===Object(S.a)(option)){var z=+new Date;d.setOption(option,!0),+new Date-z}}}}var $=n(233),E=n.n($),R=Object(l.c)({components:{},props:{source:{type:String}},setup:function(e){var t=Object(l.f)(null),n=Object(l.f)(!1);return Object(l.d)((function(){new E.a(t.value,{text:function(t){return e.source}}).on("success",(function(e){e.clearSelection(),n.value=!0,window.setTimeout((function(){n.value=!1}),2e3)}))})),{clipboardChecked:n,copyButton:t}}}),T=(n(234),Object(v.a)(R,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{ref:"copyButton",staticClass:"clipboard"},[e.clipboardChecked?n("svg",{staticClass:"h-6 w-6",attrs:{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"}},[n("path",{attrs:{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"}})]):n("svg",{staticClass:"h-6 w-6",attrs:{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"}},[n("svg",{staticClass:"h-6 w-6",attrs:{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"}},[n("path",{attrs:{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3"}})])])])}),[],!1,null,"479657ca",null).exports);function D(e){return"undefined"==typeof echarts?(t=[(window.ECHARTS_WWW_VENDORS_CDN_ROOT||"https://fastly.jsdelivr.net/npm/")+"echarts/dist/echarts.min.js"],Promise.all(t.map((function(e){return"string"==typeof e?{url:e,type:e.match(/\.css$/)?"css":"js"}:e})).map((function(e){if(O[e.url])return O[e.url];var t=new Promise((function(t,n){if("js"===e.type){var script=document.createElement("script");script.src=e.url,script.async=!1,script.onload=function(){t(null)},script.onerror=function(){n()},document.body.appendChild(script)}else if("css"===e.type){var link=document.createElement("link");link.rel="stylesheet",link.href=e.url,link.onload=function(){t(null)},link.onerror=function(){n()},document.body.appendChild(link)}}));return O[e.url]=t,t})))).then((function(){})):Promise.resolve();var t}var M=Object(l.c)({components:{PrismEditor:y.a,CodeBlockCopyClipboard:T},props:{lang:{type:String,default:"js"},code:{type:String},layout:{type:String,default:"tb",validator:function(e){return["lr","tb","rl","bt"].includes(e)}},height:{type:Number},readOnly:{type:Boolean,default:!1}},setup:function(e,t){var n,c=Object(l.f)(x.a(e.code)),o=Object(l.f)(null),r=Object(l.f)(null);function h(){n&&n.resize()}var d=C()((function(){e.height&&(r.value.style.height=e.height+"px"),D(t.root.$i18n.locale).then((function(){n||(Object(j.a)(Object(l.g)(o),h),n=P());try{Object(l.g)(o)&&n.run(Object(l.g)(o),Object(l.g)(c))}catch(e){console.error(e)}}))}),500,{trailing:!0});return Object(l.h)(c,(function(){d()})),Object(l.e)((function(){Object(j.b)(Object(l.g)(o),h)})),{innerCode:c,previewContainer:o,container:r,highlighter:function(code){return Object(_.highlight)(code,_.languages[e.lang]||_.languages.js)},visibilityChanged:function(e){e?n?n.resume():d():n&&n.pause()}}}}),N=(n(235),Object(v.a)(M,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.innerCode?n("div",{directives:[{name:"observe-visibility",rawName:"v-observe-visibility",value:e.visibilityChanged,expression:"visibilityChanged"}],ref:"container",class:"md-live layout-"+e.layout},[n("div",{staticClass:"md-live-editor"},[n("div",{staticClass:"md-live-editor-container"},[n("prism-editor",{attrs:{highlight:e.highlighter,readonly:e.readOnly},model:{value:e.innerCode,callback:function(t){e.innerCode=t},expression:"innerCode"}})],1),e._v(" "),n("div",{staticClass:"md-live-tag"},[e._v("live")]),e._v(" "),n("code-block-copy-clipboard",{attrs:{source:e.innerCode}})],1),e._v(" "),n("div",{ref:"previewContainer",staticClass:"md-live-preview"})]):e._e()}),[],!1,null,null,null).exports),H=n(236),L=n.n(H),B=(n(237),n(238),n(239),n(240),n(241),n(242),/^(diff)-([\w-]+)/i);var Z=Object(l.c)({components:{CodeBlockCopyClipboard:T},props:{lang:{type:String,default:"js"},code:{type:String},lineHighlights:String,fileName:String},setup:function(e,t){var n=Object(l.f)(x.a(e.code)),c=Object(l.a)((function(){return function(e,t){var n="",c=(e=e||"").match(B);c&&(e=c[2],n=L.a.languages.diff),e="vue"===e?"html":e,n||(n=L.a.languages[e]);var o=c?"diff-".concat(e):e,code=n?L.a.highlight(t,n,o):t;return e&&n||(e="text",code=code.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")),{lang:e,code:code}}(e.lang,n.value)}));return{rawCode:n,highlightResult:c}}}),U=(n(243),Object(v.a)(Z,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"md-code-block"},[n("div",{staticClass:"nuxt-content-highlight"},[n("pre",{class:"language-"+e.highlightResult.lang+" line-numbers"},[n("code",{domProps:{innerHTML:e._s(e.highlightResult.code)}})])]),e._v(" "),e.fileName?n("span",{staticClass:"filename"},[e._v(e._s(e.fileName))]):e._e(),e._v(" "),n("code-block-copy-clipboard",{attrs:{source:e.rawCode}})],1)}),[],!1,null,null,null).exports),A=(n(244),Object(l.c)({props:{link:String},setup:function(e){return{fullLink:Object(l.a)((function(){return d.a.optionPath+e.link}))}}})),I=Object(v.a)(A,(function(){var e=this,t=e.$createElement;return(e._self._c||t)("a",{attrs:{href:e.fullLink,target:"_blank"}},[e._v(e._s(e.link))])}),[],!1,null,null,null).exports;r.a.use(l.b),r.a.component("md-example",f),r.a.component("md-alert",z),r.a.component("md-live",N),r.a.component("md-code-block",U),r.a.component("md-option",I),r.a.directive("observe-visibility",h.a);var W=n(246),J=n.n(W),V=n(302),G=n(303),Y=n.n(G),F={"contents/zh/concepts/event.md":["pissang","Ovilia","plainheart","100pah"],"contents/en/basics/release-note/5-2-0.md":["pissang","Ovilia"],"contents/en/best-practices/canvas-vs-svg.md":["plainheart","pissang","mrbrianevans"],"contents/en/concepts/visual-map.md":["KrzysztofMadejski","pissang"],"contents/zh/how-to/chart-types/bar/basic-bar.md":["plainheart","pissang","tanjiasong005"],"contents/zh/how-to/animation/transition.md":["pissang"],"contents/zh/how-to/chart-types/line/basic-line.md":["pissang"],"contents/zh/how-to/animation/universal-transition.md":["pissang"],"contents/en/basics/import.md":["plainheart","pissang","aimuz","ikeq","zachary-svoboda-accesso","btea"],"contents/zh/how-to/chart-types/bar/stacked-bar.md":["ArisLittle","pissang"],"contents/zh/how-to/chart-types/line/smooth-line.md":["pissang"],"contents/zh/how-to/chart-types/line/step-line.md":["pissang"],"contents/zh/concepts/coordinate.md":["Ovilia"],"contents/en/basics/release-note/5-4-0.md":["Ovilia"],"contents/en/best-practices/specification/line/basic-line.md":["pissang"],"contents/en/best-practices/specification/scatter/bubble.md":["pissang"],"contents/en/concepts/chart-size.md":["pissang","plainheart","ppd0705"],"contents/en/how-to/chart-types/bar/stacked-bar.md":["pissang"],"contents/en/how-to/chart-types/line/stacked-line.md":["vincentbernat","pissang","omkar787"],"contents/zh/best-practices/specification/line/stacked-area.md":["pissang"],"contents/en/best-practices/specification/funnel.md":["pissang"],"contents/en/how-to/chart-types/pie/rose.md":["pissang"],"contents/en/how-to/data/drilldown.md":["pissang"],"contents/en/basics/release-note/v5-feature.md":["pissang","plainheart","timonla"],"contents/en/how-to/chart-types/line/area-line.md":["pissang"],"contents/en/best-practices/design/color-enhance.md":["pissang"],"contents/en/basics/inspiration.md":["pissang","dbgee","plainheart"],"contents/en/concepts/data-transform.md":["plainheart","100pah","pissang","Prajwalg19","shangchen0531"],"contents/en/best-practices/mobile.md":["pissang"],"contents/en/posts.yml":["pissang","Ovilia","100pah"],"contents/en/best-practices/specification/pie/basic-pie.md":["pissang"],"contents/en/best-practices/specification/radar.md":["pissang"],"contents/zh/basics/release-note/5-5-0.md":["Ovilia","plainheart"],"contents/en/how-to/chart-types/bar/bar-race.md":["Ovilia","pissang","Shofol"],"contents/en/best-practices/specification/line/stacked-area.md":["pissang"],"contents/en/how-to/cross-platform/server.md":["Ovilia","plainheart","pissang","balloon72"],"contents/en/basics/release-note/v6-feature.md":["plainheart","Ovilia"],"contents/en/basics/help.md":["plainheart","pissang"],"contents/en/best-practices/aria.md":["pissang","Ovilia","plainheart","julien-deramond","woodwoerk","zachary-svoboda-accesso"],"contents/en/best-practices/specification/bar/stacked-bar.md":["pissang"],"contents/zh/basics/inspiration.md":["Ovilia","pissang"],"contents/zh/best-practices/mobile.md":["pissang"],"contents/en/how-to/label/rich-text.md":["plainheart","TSinChen","pissang"],"contents/zh/basics/release-note/v6-upgrade-guide.md":["100pah","Ovilia","ZXYT"],"contents/en/basics/release-note/5-6-0.md":["Ovilia"],"contents/zh/concepts/series.md":["Ovilia"],"contents/en/how-to/interaction/drag.md":["Ovilia","pissang"],"contents/zh/basics/release-note/v5-upgrade-guide.md":["plainheart","pissang","Ovilia","fredricen","onlinelemon"],"contents/zh/basics/release-note/5-6-0.md":["Ovilia"],"contents/zh/best-practices/specification/radar.md":["pissang"],"contents/zh/best-practices/specification/pie/basic-pie.md":["pissang"],"contents/en/basics/release-note/v6-upgrade-guide.md":["Ovilia"],"contents/en/best-practices/specification/gauge.md":["pissang"],"contents/en/basics/release-note/5-3-0.md":["Ovilia","pissang","plainheart"],"contents/en/how-to/component-types/geo/svg-base-map.md":["100pah"],"contents/en/basics/release-note/5-5-0.md":["Ovilia","plainheart"],"contents/zh/best-practices/canvas-vs-svg.md":["plainheart","pissang","Chengxi9","btea"],"contents/zh/best-practices/security.md":["100pah","plainheart"],"contents/zh/get-started.md":["Ovilia","pissang","zxx0006"],"contents/en/best-practices/specification/bar/grouped-bar.md":["pissang"],"contents/en/concepts/event.md":["pissang","Ovilia","100pah"],"contents/zh/concepts/chart-size.md":["pissang","Ovilia","plainheart","ppd0705"],"contents/en/basics/release-note/v5-upgrade-guide.md":["plainheart","Ovilia","fuchunhui","pissang"],"contents/zh/how-to/chart-types/line/area-line.md":["pissang"],"contents/zh/how-to/chart-types/bar/waterfall.md":["robyle","pissang"],"contents/en/how-to/data/dynamic-data.md":["yhoiseth","pissang","balloon72"],"contents/en/how-to/chart-types/bar/polar-bar.md":["pissang"],"contents/zh/how-to/chart-types/bar/polar-bar.md":["pissang"],"contents/zh/how-to/chart-types/line/stacked-line.md":["vincentbernat","pissang"],"contents/en/how-to/animation/transition.md":["pissang"],"contents/zh/best-practices/aria.md":["plainheart","Ovilia","pissang"],"contents/zh/how-to/chart-types/bar/bar-race.md":["Ovilia","pissang"],"contents/zh/concepts/axis.md":["pissang","Ovilia","plainheart","Essentric"],"contents/zh/basics/import.md":["pissang","plainheart","michaelxiaohan","Ovilia","JobbyM","aimuz","vueadmin","gugujigua","btea","Yechuanjie"],"contents/en/concepts/legend.md":["pissang"],"contents/zh/basics/help.md":["plainheart","Ovilia","100pah","pissang"],"contents/en/how-to/chart-types/scatter/basic-scatter.md":["pissang"],"contents/zh/concepts/dataset.md":["plainheart","pissang","100pah","Ovilia"],"contents/zh/best-practices/specification/funnel.md":["pissang"],"contents/zh/basics/download.md":["pissang","plainheart","Ovilia","100pah"],"contents/en/how-to/chart-types/pie/basic-pie.md":["pissang"],"contents/zh/concepts/tooltip.md":["Ovilia"],"contents/en/basics/download.md":["plainheart","Ovilia","pissang","zachary-svoboda-accesso"],"contents/zh/basics/resource.md":["Ovilia","pissang"],"contents/en/best-practices/security.md":["100pah","plainheart"],"contents/zh/basics/release-note/v5-feature.md":["plainheart","pissang","jiangmaniu","LuckyHookin"],"contents/.prettierrc":["pissang"],"contents/zh/best-practices/specification/bar/basic-bar.md":["pissang"],"contents/zh/concepts/data-transform.md":["pissang","100pah","plainheart","idaibin","shangchen0531","meishijia"],"contents/zh/best-practices/specification/line/area.md":["pissang"],"contents/en/best-practices/specification/line/area.md":["pissang"],"contents/zh/basics/release-note/5-2-0.md":["pissang","Ovilia"],"contents/zh/best-practices/specification/bar/bi-directional-bar.md":["pissang"],"contents/en/concepts/style.md":["plainheart","KrzysztofMadejski","pissang","fuchunhui","zachary-svoboda-accesso"],"contents/zh/basics/release-note/5-4-0.md":["Ovilia"],"contents/en/how-to/chart-types/line/smooth-line.md":["pissang"],"contents/zh/concepts/visual-map.md":["Ovilia","plainheart","pissang"],"contents/zh/best-practices/specification/gauge.md":["pissang"],"contents/en/concepts/axis.md":["pissang"],"contents/en/how-to/chart-types/bar/waterfall.md":["plainheart","pissang"],"contents/zh/basics/release-note/v6-feature.md":["Ovilia","plainheart","xushuosean"],"contents/zh/basics/release-note/5-3-0.md":["pissang","Ovilia","plainheart"],"contents/zh/best-practices/specification/bar/grouped-bar.md":["pissang"],"contents/zh/best-practices/specification/bar/stacked-bar.md":["pissang"],"contents/en/get-started.md":["plainheart","Ovilia","randyl","pissang"],"contents/en/how-to/chart-types/bar/basic-bar.md":["plainheart","pissang"],"contents/en/best-practices/specification/bar/bi-directional-bar.md":["pissang"],"contents/en/concepts/dataset.md":["plainheart","pissang","Ovilia","100pah","Hertz-Hu","Bruce20190410","YuanyeChi","simonmcconnell"],"contents/zh/best-practices/specification/line/basic-line.md":["pissang"],"contents/en/best-practices/specification/bar/basic-bar.md":["pissang"],"contents/zh/concepts/options.md":["Ovilia"],"contents/en/best-practices/specification/scatter/scatter.md":["pissang"],"contents/zh/best-practices/specification/scatter/bubble.md":["pissang"],"contents/zh/best-practices/design/color-enhance.md":["pissang"],"contents/en/meta/edit-guide.md":["pissang","100pah","plainheart"],"contents/zh/how-to/connect.md":["pissang"],"contents/zh/concepts/style.md":["pissang","plainheart","wangcheng0825","fuchunhui","1335951413"],"contents/zh/how-to/chart-types/pie/doughnut.md":["pissang","guda-art"],"contents/zh/how-to/cross-platform/wechat-app.md":["pissang"],"contents/zh/how-to/interaction/drag.md":["Ovilia","pissang"],"contents/zh/how-to/chart-types/pie/rose.md":["pissang"],"contents/zh/how-to/cross-platform/baidu-app.md":["Ovilia","vincentbernat","pissang"],"contents/en/how-to/chart-types/line/basic-line.md":["pissang"],"contents/zh/how-to/chart-types/scatter/basic-scatter.md":["pissang"],"contents/zh/best-practices/specification/scatter/scatter.md":["pissang"],"contents/zh/how-to/interaction/coarse-pointer.md":["Ovilia","plainheart"],"contents/en/how-to/interaction/coarse-pointer.md":["Ovilia","plainheart"],"contents/zh/concepts/legend.md":["pissang","Ovilia","Geoffyscat"],"contents/zh/how-to/cross-platform/server.md":["Ovilia","plainheart","pissang"],"contents/zh/how-to/component-types/geo/svg-base-map.md":["100pah"],"contents/zh/how-to/label/rich-text.md":["plainheart","pissang"],"contents/zh/meta/edit-guide.md":["pissang","100pah","suisuiz"],"contents/zh/how-to/chart-types/pie/basic-pie.md":["pissang"],"contents/zh/how-to/data/dynamic-data.md":["ZonaHex","pissang","jishen027"],"contents/zh/posts.yml":["pissang","Ovilia","100pah"],"contents/zh/how-to/data/drilldown.md":["pissang"],"contents/en/concepts/tooltip.md":["huanghan01"],"contents/en/concepts/options.md":["huanghan01"],"contents/zh/how-to/mobile.md":["pissang"],"contents/en/how-to/chart-types/line/step-line.md":["pissang"],"contents/en/how-to/chart-types/pie/doughnut.md":["plainheart","pissang","jnodorp"],"contents/en/concepts/series.md":["huanghan01"],"contents/zh/meta/writing.md":["Ovilia","pissang"],"contents/en/concepts/coordinate.md":["huanghan01"]},K={pissang:"https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226","100pah":"https://echarts.apache.org/en/images/people/宿爽.jpg?_v_=20240226",Ovilia:"https://echarts.apache.org/en/images/people/羡辙.jpg?_v_=20240226",Wdingding:"https://echarts.apache.org/en/images/people/王俊婷.jpg?_v_=20240226",plainheart:"https://echarts.apache.org/en/images/people/plainheart.jpg","sz-p":"https://echarts.apache.org/en/images/people/潘士钊.jpg?_v_=20240226.jpg",susiwen8:"https://echarts.apache.org/en/images/people/苏思文.jpg?_v_=20240226",wf123537200:"https://echarts.apache.org/en/images/people/zakwu.jpg?_v_=20240226",kener:"https://echarts.apache.org/en/images/people/林峰.jpg?_v_=20240226",deqingli:"https://echarts.apache.org/en/images/people/德清.jpg?_v_=20240226",dave2wave:"https://echarts.apache.org/en/images/people/dave.jpg?_v_=20240226","wu-sheng":"https://echarts.apache.org/en/images/people/shengwu.jpg?_v_=20240226",erik168:"https://echarts.apache.org/en/images/people/erik.jpg?_v_=20240226",chriswong:"https://echarts.apache.org/en/images/people/大佛.jpg?_v_=20240226",jiawulin001:"https://echarts.apache.org/en/images/people/何昊.jpg?_v_=20240226",yufeng04:"https://echarts.apache.org/en/images/people/禹峰.jpg?_v_=20240226","cuijian-dexter":"https://echarts.apache.org/en/images/people/崔健.jpg?_v_=20240226",quillblue:"https://echarts.apache.org/en/images/people/qiansheng.jpg?_v_=20240226",chfw:"https://echarts.apache.org/en/images/people/chfw.jpg?_v_=20240226",alex2wong:"https://echarts.apache.org/en/images/people/黄益修.jpg?_v_=20240226",SnailSword:"https://echarts.apache.org/en/images/people/韩天.jpg?_v_=20240226",Nick22nd:"https://echarts.apache.org/en/images/people/nick.jpg?_v_=20240226",ClemMakesApps:"https://echarts.apache.org/en/images/people/clement.jpg?_v_=20240226",tedliu1:"https://echarts.apache.org/en/images/people/tedliu.jpg?_v_=20240226",ssthouse:"https://echarts.apache.org/en/images/people/shenshuntian.jpg?_v_=20240226",map1en:"https://echarts.apache.org/en/images/people/map1en.jpeg?_v_=20240226",fuchunhui:"https://echarts.apache.org/en/images/people/付春辉.jpg?_v_=20240226",lefex:"https://echarts.apache.org/en/images/people/wangsuyan.jpg?_v_=20240226",villebro:"https://echarts.apache.org/en/images/people/villebro.jpg?_v_=20240226",linghaoSu:"https://echarts.apache.org/en/images/people/sulinghao.jpg?_v_=20240226","Justin-ZS":"https://echarts.apache.org/en/images/people/zisen.jpg?_v_=20240226"};n(143);var X=Object(l.c)({props:{path:String},setup:function(e){return{contributors:Object(l.a)((function(){return(F["contents/".concat(e.path||"",".md")]||[]).map((function(e){return{id:e,avatar:K[e]}}))})),sourcePath:Object(l.a)((function(){return(t=e.path).endsWith(".md")||(t+=".md"),n&&(t+="#".concat(decodeURIComponent(n))),"https://github.com/".concat(d.a.gitRepo,"/tree/master/contents/").concat(t);var t,n}))}}}),Q=(n(306),Object(v.a)(X,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"post-contributors"},[n("h3",[n("span",{staticClass:"inline-block align-middle"},[e._v(e._s(e.$t("contributorsWithThisDocument")))]),e._v(" "),n("a",{staticClass:"inline-block align-middle text-sm",attrs:{target:"_blank",href:e.sourcePath,title:e.$t("editInThisDocumentTip")}},[n("svg",{staticClass:"h-8 w-8 inline-block align-middle",attrs:{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"}},[n("path",{attrs:{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"}})]),e._v(" "),n("span",{staticClass:"inline-block align-middle"},[e._v(e._s(e.$t("editInGithub")))])])]),e._v(" "),e.contributors&&e.contributors.length?n("div",{staticClass:"post-contributors-list"},e._l(e.contributors,(function(t){return n("a",{key:t.id,staticClass:"post-contributor",class:t.avatar&&"has-avatar",attrs:{href:"https://github.com/"+t.id,target:"_blank"}},[t.avatar?n("img",{attrs:{alt:t.id,src:t.avatar,loading:"lazy",decoding:"async",fetchpriority:"low"}}):e._e(),e._v(" "),n("span",[e._v(e._s(t.id))])])})),0):e._e()])}),[],!1,null,null,null).exports),ee={functional:!0,props:{content:String},render:function(e,t){return e({template:"<article>"+t.props.content+"</article>"})}},te=n(307),ne=n.n(te);function ae(e){return e.replace(/^```(\w+?)\s+live\s*({.*?})?\s*?\n([\s\S]+?)^```/gm,(function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"js",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"{}",code=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"";t=t.trim(),n=n.trim()||"{}";var c=x.b(code.trim(),!0);return'<md-live lang="'.concat(t,'" code="\'').concat(c,'\'" v-bind="').concat(n,'" />')}))}function se(e){return e.replace(/^```(\w+?)\s*({.*?})?\s*?\n([\s\S]+?)^```/gm,(function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"js",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",code=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"";t=t.trim();var c=x.b(code.trim(),!0);return'<md-code-block lang="'.concat(t,'" code="\'').concat(c,"'\" line-highlights=\"'").concat(n,"'\" />")}))}function ie(e,t){return["optionPath","apiPath","mainSitePath","exampleViewPath","exampleEditorPath"].forEach((function(p){var n=d.a[p].replace("${lang}",t);e=e.replace(new RegExp("\\$\\{"+p+"\\}","g"),n)})),e=e.replace(/\$\{lang\}/g,t)}function ce(s){return encodeURIComponent(String(s).trim().toLowerCase().replace(/[\s+:]/g,"-"))}function oe(e,t){for(var n,i=0,c=e.length;i<c;i++)if((n=e[i]).dir===t)return n}function re(e,path){for(var t,n=[],c=path.split("/"),i=0;i<c.length;i++)(t=oe(t?t.children:e,c[i]))&&n.unshift(t.title);return n.join(" - ")}var pe={components:{Contributors:Q,PostContent:ee},data:function(){return{toc:[]}},mounted:function(){var e,t=this;this.toc=[];for(var n=(null===(e=this.$el.querySelector(".post-inner"))||void 0===e?void 0:e.querySelectorAll("h2,h3"))||[],i=0;i<n.length;i++){var c=n[i],title=c.innerText;this.toc.push({title:title,depth:+c.nodeName.replace(/\D/g,""),id:null!=c.id?c.id:ce(title)})}setTimeout((function(){t._lazyload=new ne.a({elements_selector:"img[data-src], iframe[data-src]",threshold:300})}))},destroyed:function(){this._lazyload&&this._lazyload.destroy()},head:function(){return{title:this.title,meta:[{hid:"docsearch:language",name:"docsearch:language",content:this.$i18n.locale}]}},asyncData:function(e){return Object(c.a)(regeneratorRuntime.mark((function t(){var c,o,r,l,path,title,h,d,content,m;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return c=e.params,o=e.i18n,r=e.store,l=r.state.posts[o.locale],path=c.pathMatch,title=re(l,path),h="".concat(o.locale,"/").concat(path),t.next=7,n(308)("./".concat(h,".md"));case 7:return d=t.sent,content=ie(se(ae(d.default)),o.locale),m=J()({html:!0,linkify:!0}).use(V.a,{slugify:ce,permalink:!1,permalinkAfter:!0,permalinkSymbol:"#",permalinkClass:"permalink"}).use(Y.a,{leftDelimiter:"[[[",rightDelimiter:"]]]",allowedAttributes:["id"]}).use((function(e){var t=e.renderer.rules.image;e.renderer.rules.image=function(e,n,c,o,r){var l=e[n],h=l.attrGet("src");return l.attrPush(["data-src",h]),l.attrSet("src",""),t(e,n,c,o,r)}})),t.abrupt("return",{html:m.render(content),postPath:h,title:title});case 11:case"end":return t.stop()}}),t)})))()}},le=Object(v.a)(pe,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",[n("div",{staticClass:"post-inner"},[e.toc.length?n("div",{staticClass:"table-of-contents"},[n("h4",{staticClass:"toc-container-header"},[e._v(e._s(e.$t("inThisPage")))]),e._v(" "),n("ul",e._l(e.toc,(function(link){return n("li",{key:link.id,class:{toc2:2===link.depth,toc3:3===link.depth}},[n("NuxtLink",{attrs:{to:"#"+link.id}},[e._v(e._s(link.title))])],1)})),0)]):e._e(),e._v(" "),n("div",{staticClass:"nuxt-content"},[n("post-content",{attrs:{content:e.html}})],1)]),e._v(" "),n("contributors",{attrs:{path:e.postPath}})],1)}),[],!1,null,null,null);t.default=le.exports}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/eb592495ecb7ae8d985e.js b/docs/_nuxt/js/eb592495ecb7ae8d985e.js
new file mode 100644
index 0000000..df9c204
--- /dev/null
+++ b/docs/_nuxt/js/eb592495ecb7ae8d985e.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[98],{399:function(n,t,e){"use strict";e.r(t),t.default='# 漏斗图\n\n漏斗图又叫倒三角图,漏斗图将数据呈现为几个阶段,每个阶段的数据都是整体的一部分,从一个阶段到另一个阶段数据自上而下逐渐下降,所有阶段的占比总计 100%。与饼图一样,漏斗图呈现的也不是具体的数据,而是该数据相对于总数的占比、漏斗图不需要使用任何数据轴。\n\n漏斗图多用于显示简化的数据,可以用来单向分析业务各环节丢失或增加变化,也可用来直接表示某个环节与上一环节的差异。漏斗图对于确定组织的销售过程中可能存在的问题和瓶颈也很有用。\n\n<iframe max-width="830" width="100%" height="400"\nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xrJIQEN5NM">\n</iframe>\n\n## 漏斗图的使用建议\n\n1、以电商网站数据为代表,漏斗图能直观地展现从最初展现网站到最终下订单购买这整个流程中的转化状况。它不仅能展示用户从看到网站到实现购买的最终转化率,还可以展示每个步骤的转化率,能够直观地展示和说明问题所在,进而能针对性地通过各阶段的转化分析去改善设计。\n\n如下图,「展现」「点击」「访问」三个环节基本并没有太大的流失,但是从「访问」到「咨询」环节数据明显减少,所以就可以重点分析为什么咨询量明显减少,例如是不是咨询的入口不够明显造成的。\b\n\n<iframe max-width="830" width="100%" height="400"\nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xHJIPHN9Nf">\n</iframe>\n\n2、可以对两个基于统一事情前后的两份数据使用叠加两个漏斗图进行对比,例如下图通过预期值和实现值的对比,可以分析每一项实现情况和预期指标的偏差。\n\n<iframe max-width="830" width="100%" height="400"\nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xrydEwN94f">\n</iframe>\n\n3、还可以用左右对比的漏斗图同时分析两个项目的转化情况。如下图可见项目 B 从「访问」到「咨询」环节的流失率明显大于项目 A。\n\n<iframe max-width="830" width="100%" height="400"\nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xrJfrjEc4z&v=1">\n</iframe>\n\n4、漏斗图不是表示各个分类的占比情况,而是展示数据变化的一个逻辑流程,如果数据是无逻辑顺序的占比比较,建议使用饼图更合适。\n\n5、可以根据数据选择使用对比色或同一种颜色的色调渐变,从最暗到最浅来依照漏斗的尺寸排列。切记,不要添加许多图层和颜色造成漏斗图难以阅读。\n'}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/ede9b51588a0e4a74c8c.js b/docs/_nuxt/js/ede9b51588a0e4a74c8c.js
new file mode 100644
index 0000000..2a8e4f0
--- /dev/null
+++ b/docs/_nuxt/js/ede9b51588a0e4a74c8c.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[136],{437:function(e,n,t){"use strict";t.r(n),n.default='# SVG 底图\n\n从 `v5.1.0` 开始,ECharts 支持在 [地理坐标系(geo)](${optionPath}geo) 和 [地图系列(map series)](${optionPath}series-map) 中使用 SVG 作为底图。之前只支持 [GeoJSON](${apiPath}echarts.registerMap) 格式的底图。\n\n有了这个功能,ECharts 能在任一种渲染模式(`canvas` 渲染模式和 `svg` 渲染模式)中绘制 SVG 底图,并且能够只用简单的 ECharts 配置项(option)就带来 [放大](${optionPath}geo.roam)、[平移](${optionPath}geo.roam)、[点选(select)](${optionPath}geo.select)、[高亮强调(emphasis)](${optionPath}geo.roam)、[聚焦-淡出(focus-blur)](${optionPath}geo.emphasis.focus)、[标签(label)](${optionPath}geo.label)、[标签布局(labelLayout)](${optionPath}series-map.labelLayout)、[提示框(tooltip)](${optionPath}geo.tooltip) 等特性。ECharts 中的所有在 [地理坐标系(geo)](${optionPath}geo) 中可用系列(如 [散点图(scatter)](${optionPath}series-scatter)、[特效散点图(effectScatter)](${optionPath}series-effectScatter),[路径图(lines)](${optionPath}series-lines),[自定义系列(custom)](${optionPath}series-custom))也能显示在 SVG 底图上。\n\n这些是使用 SVG 底图的例子:\n\n[庖丁解牛](${exampleEditorPath}geo-beef-cuts) |\n[内脏数据](${exampleEditorPath}geo-organ) |\n[航班选座](${exampleEditorPath}geo-seatmap-flight) |\n[地图](${exampleEditorPath}geo-svg-map) |\n[散点图](${exampleEditorPath}geo-svg-scatter-simple) |\n[路径图](${exampleEditorPath}geo-svg-lines) |\n[交通](${exampleEditorPath}geo-svg-traffic)\n\n\n## 基本用法 [[[#basic-usage]]]\n\nSVG 底图的用法与 [GeoJSON](${apiPath}echarts.registerMap) 底图的用法相同。\n\n如果在 [地理坐标系(geo)](${optionPath}geo) 中使用:\n```ts\n$.get(\'map/organ.svg\', function (svg) {\n    // 首先向 echarts 注册 SVG 字符串或解析过的 SVG DOM\n    echarts.registerMap(\'organ_diagram\', {svg: svg});\n\n    var chart = echarts.init(document.getElementById(\'main\'))。\n    chart.setOption({\n        geo: [{\n            // 引用注册过的底图。\n            map: \'organ_diagram\',\n            ...\n        }]\n    });\n});\n```\n\n如果在 [地图系列(map series)](${optionPath}series-map) 中使用:\n```ts\n$.get(\'map/beef_cuts.svg\', function (svg) {\n    // 首先向 echarts 注册 SVG 字符串或解析过的 SVG DOM\n    echarts.registerMap(\'beef_cuts_diagram\', {svg: svg})。\n\n    var chart = echarts.init(document.getElementById(\'main\'))。\n    chart.setOption({\n        series: {\n            type: \'map\',\n            // 引用注册过的底图。\n            map: \'beef_cuts_diagram\',\n            ...\n        }\n    });\n});\n```\n\n\n## 缩放和平移 [[[#zoom-and-pan]]]\n\n[地理坐标系(geo)](${optionPath}geo)\n```ts\noption = {\n    geo: {\n        // 启用缩放和平移。\n        roam: true,\n        ...\n    }\n};\n```\n[地图系列(map series)](${optionPath}series-map)\n```ts\noption = {\n    series: {\n        type: \'map\',\n        // 启用缩放和平移。\n        roam: true,\n        ...\n    }\n};\n```\n\n参见例子 [roam](${optionPath}geo.roam)、[SVG 地图](${exampleEditorPath}geo-svg-map)。\n\n\n## 具名元素 [[[#named-element]]]\n\n如果要控制 SVG 中的某些元素,或者让某些元素能交互,我们首先要在 SVG 中标记这些元素:在这些元素上添加 `name` 属性(下文称此类添加过 `name` 属性的元素为:“具名元素”)。许多功能(如 [select](${optionPath}geo.select)、[emphasis](${optionPath}geo.emphasis)、[focus-blur](${optionPath}geo.emphasis.focus)、[label](${optionPath}geo.label)、[labelLayout](${optionPath}series-map.labelLayout) 和 [tooltip](${optionPath}geo.tooltip) 这类交互相关的功能)都依赖于对元素的命名。\n\n如下例,我们只在左边的 SVG `path` 上添加名称属性 `name="named_rect"`:\n```xml\n<?xml version="1.0" encoding="utf-8"?>\n<svg xmlns="http://www.w3.org/2000/svg" version="1.2" fill-rule="evenodd" xml:space="preserve">\n    <path name="named_rect" d="M 0,0 L 0,100 100,100 100,0 Z" fill="#765" />\n    <path d="M 150,0 L 150,100 250,100 250,0 Z" fill="#567" />\n</svg>\n```\n这样,鼠标 hover 时能高亮左边的矩形,但是右边的不行。\n\n<md-example src="doc-example/geo-svg-named-basic" width="100%" height="200"></md-example>\n\n我们还可以在 [geo.regions](${optionPath}geo.regions) 中为具名元素指定一些专属配置项:\n```ts\noption = {\n    geo: {\n        map: \'some_svg\',\n        regions: [{\n            name: \'element_name_1\',\n            itemStyle: { ... }\n        }, {\n            name: \'element_name_2\',\n            itemStyle: { ... }\n        }]\n    }\n};\n```\n\n注意:\n+ 只有这些 SVG 元素可以被命名:\n`rect`、`circle`、`line`、`ellipse`、`polygon`、`polyline`、`path`、`text`、`tspan`、`g`。\n+ 支持多个元素以相同的名称命名,这样它们能被同时高亮、选中。\n\n\n## 自定义样式 [[[#style-customization]]]\n\n虽然 SVG 元素的样式(如颜色、字体、线宽等等)都能直接在 SVG 文件中定义,但 ECharts 也支持在 `option` 中为具名元素定制样式,这能提供不少便利。\n\n可以在 [geo.itemStyle](${optionPath}geo.itemStyle) 或 [series-map.itemStyle](${optionPath}series-map.itemStyle) 中设置样式(也包括 `emphasis.itemStyle`、`select.itemStyle`、`blur.itemStyle`、`regions[i].itemStyle`、`regions[i].emphasis.itemStyle`、`regions[i].select.itemStyle`、`regions[i].blur.itemStyle`)。也能在这里删除一些具名元素的默认样式(例如,设置 `emphasis.itemStyle.color: null` 后,鼠标 hover 时填充色就不会改变)。\n\n此外,使用 [series-map](${optionPath}series-map) 时,也可以用 [visualMap 组件](${optionPath}visualMap) 为具名元素赋予样式。参见例子 [庖丁解牛](${exampleEditorPath}geo-beef-cuts)。\n\n注意:\n只有这些具名元素可以在 `itemStyle` 中设置样式:\n`rect`、`circle`、`line`、`ellipse`、`polygon`、`polyline`、`path`。\n\n\n## 元素的“选中”能力(select) [[[#select]]]\n\n如果想使具名元素能被“选中”,把 [geo.selectedMode](${optionPath}geo.selectedMode) 或 [series-map.selectedMode](${optionPath}series-map.selectedMode) 设置为 `\'single\'` 或者 `\'multiple\'` 即可。元素被选中时的样式可以在 [geo.select](${optionPath}geo.select) 或 [series-map.select](${optionPath}series-map.select) 中设定。\n\n可以通过 [geoselectchanged](${apiPath}event.geoselectchanged) 事件获得所有被选中者的名称,例如:\n```ts\nmyChart.on(\'geoselectchanged\', function (params) {\n    var selectedNames = params.allSelected[0].name;\n    console.log(\'selected\', selectedNames);\n});\n```\n\n参见例子 [航班选座](${exampleEditorPath}geo-seatmap-flight)。\n\n\n## 元素的“高亮强调”(emphasis)和“聚焦-淡出”(focus-blur) [[[#emphasis-and-focus-blur]]]\n\n具名元素可以自动在鼠标 hover 时有“高亮强调”(emphasis)的能力。\n\n此外,可以把 [geo.emphasis.focus](${optionPath}geo.emphasis.focus) 设置为 `\'self\'` 来启用 “聚焦-淡出”(focus-blur)功能。也就是,当鼠标 hover 在一个具名元素上时,所有其他元素都会被淡出。\n\n参见例子 [Organ Visualization](${exampleEditorPath}geo-organ)。\n\n\n## 提示框(tooltip) [[[#tooltip]]]\n\n可以在具名元素上启用或禁用提示框(tooltip)功能。\n```ts\noption = {\n    // 在 option 根部声明 tooltip 以整体开启 tooltip 功能。\n    tooltip: {},\n    geo: {\n        map: \'some_svg\',\n        tooltip: {\n            // 用 `show` 来启用/禁用 geo 上的 tooltip。\n            show: true\n        },\n        regions: [{\n            name: \'some_name1\',\n            // 如果需要的话,可以对特定具名元素指定 tooltip 参数。\n            tooltip: {\n                formatter: \'一些特殊的提示 1\'\n            }\n        }, {\n            name: \'some_name2\',\n            tooltip: {\n                formatter: \'一些特殊的提示 2\'\n            }\n        }]\n    }\n};\n```\n\n如果想单独禁用 geo 上的 tooltip,只需:\n```ts\noption = {\n    tooltip: {},\n    geo: {\n        map: \'some_svg\',\n        tooltip: {\n            show: false\n        }\n    }\n};\n```\n\n参见例子 [SVG 地图](${exampleEditorPath}geo-svg-map)。\n\n\n## 标签(label) [[[#label]]]\n\n虽然可以直接在 SVG 中定义 `<text>`/`<tspan>` 来显示文本标签,但 ECharts 也支持用 [geo.label](${optionPath}geo.label) 或 [series-map.label](${optionPath}series-map.label) 来设置底图上的标签。\n\n标签功能默认在鼠标 hover 时是启用的。如果想禁用标签,只需:\n```ts\noption = {\n    geo: {\n        map: \'some_svg\',\n        emphasis: {\n            label: {\n                show: false\n            }\n        }\n    }\n};\n```\n\n当想要多个元素共享一个标签时,我们有两种选择:\n+ 将这些元素包裹在一个具名的 `<g>` 中(如 `<g="name_a">`)中,这样只会显示一个标签,并且基于 `<g>` 的 `boundingRect` 定位。\n+ 给这些元素起相同的名字(如 `<path name="name_b"/><path name="name_b"/>`),这样每个元素都会显示一个标签,并且会根据每个元素自身显示和定位。\n\n例如(将鼠标 hover 到元素上能显示标签):\n<md-example src="doc-example/geo-svg-label-basic" width="100%" height="300"></md-example>\n\n注意:只有这些具名元素可以设置 `label`:\n`rect`、`circle`、`line`、`ellipse`、`polygon`、`polyline`、`path`、`g`。\n\n标签的用法也参见示例 [Organ Visualization](${exampleEditorPath}geo-organ)。\n\n\n## 事件 [[[#events]]]\n\n可以用如下方式监听具名元素的鼠标事件或者触摸事件:\n```ts\n// \'name1\' 是一个 SVG 元素的名字。\nmyChart.on(\'click\', { geoIndex: 0, name: \'name1\' }, function (params) {\n    console.log(params);\n});\n```\n\n\n## SVG 底图的布局 [[[#layout-of-svg-base-map]]]\n\n在默认情况下,ECharts 会将 SVG 底图放置在画布的中心。如果需要调整的话,一般只调整 [layoutCenter](${optionPath}geo.layoutCenter)/[layoutSize](${optionPath}geo.layoutSize),偶尔也可能要调整 `<svg viewBox="...">`/[geo.boundingCoords](${optionPath}geo.boundingCoords)(它们两个的区别是:是否产生剪裁)。在大多数情况下,用这些已经足够了。\n\n如果要做一些精确的位置定制,那么还得了解下面这些概念。\n\n[地理坐标系(geo)](${optionPath}geo) 和 [地图系列(map series)](${optionPath}series-map) 的布局规则和选项都是一样的。所以下面我们只讲 [地理坐标系(geo)](${optionPath}geo)。\n\n<md-example src="doc-example/geo-svg-layout-basic" width="100%" height="600"></md-example>\n\n上面的例子只有一个 ECharts 画布,其中三个 SVG 展示在六个 [地理坐标系(geo)](${optionPath}geo) 中。同一列中的两个 [地理坐标系(geo)](${optionPath}geo) 使用相同的 SVG。\n\n首先,形状的外观是由 SVG 文件本身决定的。也就是说,在上例中,由 `<circle>` 和 `viewBox` 属性决定(`viewBox` 会切割圆形)。可以注意,每一列的形状轮廓都一样(不管它们的位置、大小是否不同和是否被拉伸),因为它们使用的是同一个 SVG。\n\n其次,用户可以用下面任一组选项,指定 [地理坐标系(geo)](${optionPath}geo) 的视口(`view port`)的位置和大小(它们的单位都是 echarts 画布的像素,或者百分比值):\n+ [layoutCenter](${optionPath}geo.layoutCenter)、[layoutSize](${optionPath}geo.layoutSize)(最常用)。\n+ [top](${optionPath}geo.top)、[right](${optionPath}geo.right)、[bottom](${optionPath}geo.bottom)、[left](${optionPath}geo.left)(在上例中使用的是这组)。\n\n在上例中,六个 `geo view port` 用六个黑色方块表示。\n\n第三,确定 SVG 的 `bounding rect`。`bounding rect` 由以下方法决定(它们的单位都是 SVG 内部元素的度量单位):\n1. 如果设定了 [geo.boundingCoords](${optionPath}geo.boundingCoords),则用它作 `bounding rect`。\n2. 否则,如果设定了 `<svg width="..." height="...">`,则用 `[0, 0, width, height]` 作为 `bounding rect`。(如果只设定了 `width` 或 `height`,则只使用 `[0, width]` 或 `[0, height]`)。\n3. 否则,如果设定了 `<svg viewBox="...">`,则用 `viewBox` 作 `bounding rect`。\n4. 否则,由整个 SVG 所有元素 `bounding rect` 的并集得到最终 `bounding rect`。\n5. 如果设定了 [geo.center](${optionPath}geo.center) 或 [geo.zoom](${optionPath}geo.zoom),则把上述 `1~4` 得到的 `bounding rect` 进行相应的 `transform`。\n\n`bounding rect` 确定后,会放置到相应的 `geo view port` 里:\n+ 如果用的是 [layoutCenter](${optionPath}geo.layoutCenter)、[layoutSize](${optionPath}geo.layoutSize),`bounding rect` 会置于 `geo view port` 的中心,并尽量填满 `geo view port`(保持长宽比)。\n+ 如果用的是 [top](${optionPath}geo.top)、[right](${optionPath}geo.right)、[bottom](${optionPath}geo.bottom)、[left](${optionPath}geo.left),`bounding rect` 会被拉伸,完全填充 `geo view port`。\n\n\n## 在 SVG 底图上绘制系列 [[[#place-series-on-svg-base-map]]]\n\n[scatter](${optionPath}series-scatter)、[effectScatter](${optionPath}series-effectScatter)、[lines](${optionPath}series-lines)、[custom](${optionPath}series-custom) 这些在 [地理坐标系(geo)](${optionPath}geo) 中可用的系列都可以在 SVG 底图上定位和显示。\n\n在这种用法中,`series.data` 的值的单位即为是 SVG 内部元素的度量单位。比如说:\n```ts\noption = {\n    geo: {\n        map: \'some_svg\'\n    },\n    series: {\n        type: \'effectScatter\',\n        coordinateSystem: \'geo\',\n        geoIndex: 0,\n        data: [\n            // SVG local coords.\n            [488.2358421078053, 459.70913833075736],\n            [770.3415644319939, 757.9672194986475],\n            [1180.0329284196291, 743.6141808346214],\n        ]\n    }\n};\n```\n\n另外,有种简便方法可以获得 SVG 的坐标。\n```ts\nmyChart.setOption({\n    geo: {\n        map: \'some_svg\'\n    }\n});\nmyChart.getZr().on(\'click\', function (params) {\n    var pixelPoint = [params.offsetX, params.offsetY];\n    var dataPoint = myChart.convertFromPixel({ geoIndex: 0 }, pixelPoint);\n    // 在 SVG 上点击时,坐标会被打印。\n    // 这些坐标可以在 `series.data` 里使用。\n    console.log(dataPoint);\n});\n```\n\n参见示例 [SVG Scatter](${exampleEditorPath}geo-svg-scatter-simple)、[SVG Lines](${exampleEditorPath}geo-svg-lines)、[SVG Traffic](${exampleEditorPath}geo-traffic)。\n\n\n## 暂不支持的 SVG 功能 [[[#unsupported-svg-features]]]\n\n实现一个完整的 SVG 解析器有点困难。虽然已经支持了常用的 SVG 功能,但至少下面列出的这些还没支持:\n\n+ 翻转(flip)和倾斜(skew)(将在 `v5.1.2` 支持):\n    + 不支持 `transform: skew(...)`(包括包含 skew 的 `transform: matrix(...)`)。\n    + 不支持当 `transform: scale(x, y)` 中 `x`/`y` 正负不同且有 `rotate`(例如,`scale: (1, -1), rotate(90)`)。\n+ 不支持 `<style>` 标签。\n    + 但内联样式是支持的(例如支持 `<path style="color:red" />`)。\n+ 单位:\n    + 只支持 `px`。不支持其他单位如 `width="231.65mm"`。\n    + 不支持百分比值,如不支持 `<svg width="30%" height="40%">`。\n+ `<defs>` 标签:\n    + 只支持 `<linearGradient>`、`<radialGradient>`。\n    + 还不支持在 `<defs>` 中定义其他元素(如 `<pattern>`、`<path>`、...)。\n+ `<linearGradient>`、`<radialGradient>`:\n    + 不支持 `fx`、`fy`。\n    + 不支持 `gradientTransform`。\n+ `fill:url(..)`, `stroke:utl(..)`:\n    + 只支持 `url(#someId)`。\n    + 不支持其他 URL 模式,例如不支持:\n        + `url(https://example.com/images/myImg.jpg)`。\n        + `url(data:image/png;base64,iRxVB0...)`。\n        + `url(myFont.woff)`。\n+ `<switch>` 标签:\n    + `<switch>` 标签内的所有内容都会显示。不支持“切换”功能。\n+ `<text>`。\n    + 不支持 `textPath`。\n    + 不支持 [Addressable character](https://www.w3.org/TR/SVG/text.html#TermAddressableCharacter),也就是说:\n    ```xml\n    \x3c!-- 不支持: --\x3e\n    <tspan x="0 4.94 9.89">abc</tspan>。\n    \x3c!-- 支持: --\x3e\n    <tspan x="0">A</tspan>\n    <tspan x="4.94">b</tspan>\n    <tspan x="9.89">C</tspan>\n    ```\n'}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/ee46acb0612105883707.js b/docs/_nuxt/js/ee46acb0612105883707.js
new file mode 100644
index 0000000..b5f6b8f
--- /dev/null
+++ b/docs/_nuxt/js/ee46acb0612105883707.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[113],{414:function(n,e,t){"use strict";t.r(e),e.default="# 图例\n\n图例是图表中对内容区元素的注释、用不同形状、颜色、文字等来标示不同数据列,通过点击对应数据列的标记,可以显示或隐藏该数据列。图例虽然不是图表中的主要信息、却是了解图表信息的钥匙。\n\n## 布局\n\n图例一般放在图表的右上角、也可以放在图表的底部、同一页面中的所有图例位置保持一致,可以横排对齐也可以纵排对齐。还要综合考虑整体的图表空间是适合哪种摆放方式。当图表纵向空间紧张或者内容区量过大的时候、建议摆放在图表的下方。下面是几种图例的摆放方式:\n\n```js live\noption = {\n  legend: {\n    // Try 'horizontal'\n    orient: 'vertical',\n    right: 10,\n    top: 'center'\n  },\n  dataset: {\n    source: [\n      ['product', '2015', '2016', '2017'],\n      ['Matcha Latte', 43.3, 85.8, 93.7],\n      ['Milk Tea', 83.1, 73.4, 55.1],\n      ['Cheese Cocoa', 86.4, 65.2, 82.5],\n      ['Walnut Brownie', 72.4, 53.9, 39.1]\n    ]\n  },\n  xAxis: { type: 'category' },\n  yAxis: {},\n  series: [{ type: 'bar' }, { type: 'bar' }, { type: 'bar' }]\n};\n```\n\n对于图例较多时,可以使用可滚动翻页的图例\n\n```js\noption = {\n  legend: {\n    type: 'scroll',\n    orient: 'vertical',\n    right: 10,\n    top: 20,\n    bottom: 20,\n    data: ['图例一', '图例二', '图例三' /* ... */, , '图例n']\n    // ...\n  }\n  // ...\n};\n```\n\n## 样式\n\n在深色系背景下、为了方便阅读,建议给图例加上半透明的浅色背景层,文字颜色设置为浅色。\n\n```js\noption = {\n  legend: {\n    data: ['图例一', '图例二', '图例三'],\n    backgroundColor: '#ccc',\n    textStyle: {\n      color: '#ccc'\n      // ...\n    }\n    // ...\n  }\n  // ...\n};\n```\n\n图例的颜色标签有很多种设计方式、针对不同的图表、图例样式也会有所不同。\n\n<img max-width=\"830\" width=\"80%\" height=\"80%\" src=\"images/design/legend/charts_sign_img04.png\" />\n\n```js\noption = {\n  legend: {\n    data: ['图例一', '图例二', '图例三'],\n    icon: 'rect'\n    // ...\n  }\n  // ...\n};\n```\n\n## 交互\n\n根据场景需要,图例可支持交互操作,点击控制显示或隐藏对应的数据列;\n\n```js\noption = {\n  legend: {\n    data: ['图例一', '图例二', '图例三'],\n    selected: {\n      图例一: true,\n      图例二: true,\n      图例三: false\n    }\n    // ...\n  }\n  // ...\n};\n```\n\n## 图例注意事项\n\n图例要注意视情况使用,有些双轴图包含了多种图表类型,不同类型的图例样式要有所区分。\n\n```js\noption = {\n  legend: {\n    data: [\n      {\n        name: '图例一',\n        icon: 'rect'\n      },\n      {\n        name: '图例二',\n        icon: 'circle'\n      },\n      {\n        name: '图例三',\n        icon: 'pin'\n      }\n    ]\n    // ...\n  },\n  series: [\n    {\n      name: '图例一'\n      // ...\n    },\n    {\n      name: '图例二'\n      // ...\n    },\n    {\n      name: '图例三'\n      // ...\n    }\n  ]\n  // ...\n};\n```\n\n当图表只有一种数据信息时,用图表标题说明数据信息即可。建议此时不要加上图例。\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/eea41953a4b52f7426d7.js b/docs/_nuxt/js/eea41953a4b52f7426d7.js
new file mode 100644
index 0000000..6a3b0b1
--- /dev/null
+++ b/docs/_nuxt/js/eea41953a4b52f7426d7.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[35],{336:function(e,t,o){"use strict";o.r(t),t.default='# Pie Chart\n\nThe pie chart is mainly used to display the proportion of different categories compared with the total. The arc length of each sector in the figure means the proportion of the category. The sum of all categories is 100%.\n\n<iframe max-width="830" width="100%" height="400"\nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xHySlBkIEM&v=1">\n</iframe>\n\nEven the pie chart can display the distribution radio of the data, and widely used in every field, there is still controversy around the pie chart and its deformation chart. Therefore, you should use the pie chart with caution and avoid misunderstanding.\n\n## Suggestion for Using Pie Chart\n\n1. The pie chart is preferred to show the proportion of data in the same dimension. It requests the data to be positive. Please also make sure the total of sectors is 100%.\n\n2. It is hard to compare the data in the pie chart with too many pieces. We suggest to controlling the number of categories under five. While there are too many categories, we might merge some unimportant data together, and name as "other". If all categories cannot be omitted, you should try a bar chart or stacked bar chart as an alternative.\n\n<img max-width="830" width="100%" height="100%"\nsrc="images/design/pie/pie02.jpg">\n</img>\n\n3. The pie chart is not appropriate for the comparison of precise data. The following graph (left below) shows that every sector has almost the same proportion. In this case, you should try a bar chart or rose chart (right below) to achieve a better effect.\n\n<img max-width="830" width="100%" height="100%"\nsrc="images/design/pie/pie03.jpg">\n</img>\n\n4. Visual habits of most people are observing from top to bottom in clockwise. Therefore we recommend you put the largest sector in the first place in the clockwise direction to stress the importance.\n\nThere are two advices for the rest of the data. Arrange sectors from big to small in clockwise or anti-clockwise follows the largest one:\n\n<img max-width="830" width="100%" height="100%"\nsrc="images/design/pie/pie01.jpg">\n</img>\n\nOrder the sectors according to the size not only consistent with the visual habits but also easier for data\'s identify and comparison. Base on this principle, you can put the part that needs to emphasize (don\'t need to be the largest part) at the prominent position.\n\n5. You can add some decorations like color, motion, style, position to stress some data in a chart. Please be moderate or it will distract the user.\n\n<iframe max-width="830" width="100%" height="400"\n src="https://gallery.echartsjs.com/view-lite.html?cid=xHySlBkIEM&v=1">\n</iframe>\n\n6. 3D pie chart distorted the ratio between each sector, which will cause mistakes and confusion in understanding. Therefore,a 3D pie chart is not recommended.\n\n<img max-width="830" width="100%" height="100%"\nsrc="images/design/pie/pie04.jpg">\n</img>\n'}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/ef4b8842d850d0a15ed5.js b/docs/_nuxt/js/ef4b8842d850d0a15ed5.js
new file mode 100644
index 0000000..37c01c8
--- /dev/null
+++ b/docs/_nuxt/js/ef4b8842d850d0a15ed5.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[134],{435:function(n,e,o){"use strict";o.r(e),e.default="# 南丁格尔图(玫瑰图)\n\n南丁格尔图又称玫瑰图,通常用弧度相同但半径不同的扇形表示各个类目。\n\nECharts 可以通过将饼图的 [`series.roseType`](${optionPath}series-pie.roseType) 值设为 `'area'` 实现南丁格尔图,其他配置项和饼图是相同的。\n\n```js live\noption = {\n  series: [\n    {\n      type: 'pie',\n      data: [\n        {\n          value: 100,\n          name: 'A'\n        },\n        {\n          value: 200,\n          name: 'B'\n        },\n        {\n          value: 300,\n          name: 'C'\n        },\n        {\n          value: 400,\n          name: 'D'\n        },\n        {\n          value: 500,\n          name: 'E'\n        }\n      ],\n      roseType: 'area'\n    }\n  ]\n};\n```\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/ef7c0f9f6ba31cd9f933.js b/docs/_nuxt/js/ef7c0f9f6ba31cd9f933.js
new file mode 100644
index 0000000..69f23d9
--- /dev/null
+++ b/docs/_nuxt/js/ef7c0f9f6ba31cd9f933.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[92],{393:function(n,w,o){"use strict";o.r(w),w.default=""}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/ef969480dc6c88c3123e.js b/docs/_nuxt/js/ef969480dc6c88c3123e.js
new file mode 100644
index 0000000..5b42c37
--- /dev/null
+++ b/docs/_nuxt/js/ef969480dc6c88c3123e.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[49],{350:function(n,w,o){"use strict";o.r(w),w.default=""}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/f53515dc57c05d019fb3.js b/docs/_nuxt/js/f53515dc57c05d019fb3.js
new file mode 100644
index 0000000..05f173f
--- /dev/null
+++ b/docs/_nuxt/js/f53515dc57c05d019fb3.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[124],{425:function(n,w,o){"use strict";o.r(w),w.default="# 极坐标系柱状图\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/f5926384992f003e16b7.js b/docs/_nuxt/js/f5926384992f003e16b7.js
new file mode 100644
index 0000000..f57fc26
--- /dev/null
+++ b/docs/_nuxt/js/f5926384992f003e16b7.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[80],{381:function(n,e,t){"use strict";t.r(e),e.default="# Apache ECharts 5.3.0 特性介绍\n\nApache ECharts 5.3.0 在动画表达力、渲染性能、服务端渲染上做了大幅度的增强,同时也新增了多坐标轴刻度自动对齐、tooltip 数值格式化、地图投影等社区中期盼已久的特性。\n\n## 关键帧动画\n\n在之前 ECharts 的动画集中在图形添加、更新以及移除的过渡动画上,过渡动画往往只有开始状态和结束状态。为了表达更复杂的动画效果,我们 5.3.0 中为[自定义系列](${optionPath}series-custom)和[图形组件](${optionPath}graphic)引入了全新的关键帧动画。\n\n下面是一个简单的通过关键帧动画实现的呼吸动画的效果。\n\n```js live {layout: 'lr', height:300}\noption = {\n  graphic: {\n    type: 'circle',\n    shape: { r: 100 },\n    left: 'center',\n    top: 'center',\n    keyframeAnimation: [\n      {\n        duration: 3000,\n        loop: true,\n        keyframes: [\n          {\n            percent: 0.5,\n            easing: 'sinusoidalInOut',\n            scaleX: 0.1,\n            scaleY: 0.1\n          },\n          {\n            percent: 1,\n            easing: 'sinusoidalInOut',\n            scaleX: 1,\n            scaleY: 1\n          }\n        ]\n      }\n    ]\n  }\n};\n```\n\n在关键帧动画中,你可以配置动画时长、缓动、是否循环、每个关键帧的位置、缓动以及图形属性等。而且每个图形可以同时设置多个不同配置的关键帧动画。灵活的配置让我们可以实现非常复杂的动画效果,下面列举几个可以应用关键帧动画的场景。\n\n### 自定义加载动画\n\nECharts 默认内置了一个加载动画,可以调用`showLoading`显示。开发者经常会提需求需要更多的加载动画效果。现在有了关键帧动画后,我们可以通过图形([graphic](${optionPath}graphic))组件配合关键帧动画实现任何想要的加载动画效果。\n\n比如文本描边动画:\n\n```js live {layout: 'lr', height:300}\noption = {\n  graphic: {\n    elements: [\n      {\n        type: 'text',\n        left: 'center',\n        top: 'center',\n        style: {\n          text: 'Apache ECharts',\n          fontSize: 40,\n          fontWeight: 'bold',\n          lineDash: [0, 200],\n          lineDashOffset: 0,\n          fill: 'transparent',\n          stroke: '#000',\n          lineWidth: 1\n        },\n        keyframeAnimation: {\n          duration: 3000,\n          loop: true,\n          keyframes: [\n            {\n              percent: 0.7,\n              style: {\n                fill: 'transparent',\n                lineDashOffset: 200,\n                lineDash: [200, 0]\n              }\n            },\n            {\n              // Stop for a while.\n              percent: 0.8,\n              style: {\n                fill: 'transparent'\n              }\n            },\n            {\n              percent: 1,\n              style: {\n                fill: 'black'\n              }\n            }\n          ]\n        }\n      }\n    ]\n  }\n};\n```\n\n或者柱状图形状的加载动画:\n\n```js live {layout: 'lr', height:300}\nconst columns = [];\nfor (let i = 0; i < 7; i++) {\n  columns.push({\n    type: 'rect',\n    x: i * 20,\n    shape: {\n      x: 0,\n      y: -40,\n      width: 10,\n      height: 80\n    },\n    style: {\n      fill: '#5470c6'\n    },\n    keyframeAnimation: {\n      duration: 1000,\n      delay: i * 200,\n      loop: true,\n      keyframes: [\n        {\n          percent: 0.5,\n          scaleY: 0.1,\n          easing: 'cubicIn'\n        },\n        {\n          percent: 1,\n          scaleY: 1,\n          easing: 'cubicOut'\n        }\n      ]\n    }\n  });\n}\noption = {\n  graphic: {\n    elements: [\n      {\n        type: 'group',\n        left: 'center',\n        top: 'center',\n        children: columns\n      }\n    ]\n  }\n};\n```\n\n### 扩展更丰富的散点图动画特效\n\n带有特效动画的散点图一直以来是 ECharts 的特色功能。开发者可以使用 [effectScatter](${optionPath}series-effectScatter) 系列来实现带有涟漪特效的动态散点图,这种特效动画除了让作品更有趣,也起到了高亮提示用户的效果。跟加载动画一样,开发者也常常提出需要更多动画效果的需求。现在我们可以在自定义系列中通过使用关键帧动画来实现更复杂的特效。\n\n比如下面例子在 SVG 地图上给自定义系列绘制的图钉加上了跳动的动画效果,同时配上了涟漪动画。\n\n\x3c!-- <md-example src=\"geo-svg-custom-effect\" width=\"100%\" height=\"500\" /> --\x3e\n\n```js live {layout: 'lr', readOnly: true }\nfetch(\n  'https://echarts.apache.org/examples/data/asset/geo/Map_of_Iceland.svg'\n)\n  .then(response => response.text())\n  .then(svg => {\n    echarts.registerMap('iceland_svg', { svg: svg });\n    option = {\n      geo: {\n        map: 'iceland_svg',\n        left: 0,\n        right: 0\n      },\n      series: {\n        type: 'custom',\n        coordinateSystem: 'geo',\n        geoIndex: 0,\n        zlevel: 1,\n        data: [\n          [488, 459, 100],\n          [770, 757, 30],\n          [1180, 743, 80],\n          [894, 1188, 61],\n          [1372, 477, 70],\n          [1378, 935, 81]\n        ],\n        renderItem(params, api) {\n          const coord = api.coord([\n            api.value(0, params.dataIndex),\n            api.value(1, params.dataIndex)\n          ]);\n\n          const circles = [];\n          for (let i = 0; i < 5; i++) {\n            circles.push({\n              type: 'circle',\n              shape: {\n                cx: 0,\n                cy: 0,\n                r: 30\n              },\n              style: {\n                stroke: 'red',\n                fill: 'none',\n                lineWidth: 2\n              },\n              // Ripple animation\n              keyframeAnimation: {\n                duration: 4000,\n                loop: true,\n                delay: (-i / 4) * 4000,\n                keyframes: [\n                  {\n                    percent: 0,\n                    scaleX: 0,\n                    scaleY: 0,\n                    style: {\n                      opacity: 1\n                    }\n                  },\n                  {\n                    percent: 1,\n                    scaleX: 1,\n                    scaleY: 0.4,\n                    style: {\n                      opacity: 0\n                    }\n                  }\n                ]\n              }\n            });\n          }\n          return {\n            type: 'group',\n            x: coord[0],\n            y: coord[1],\n            children: [\n              ...circles,\n              {\n                type: 'path',\n                shape: {\n                  d:\n                    'M16 0c-5.523 0-10 4.477-10 10 0 10 10 22 10 22s10-12 10-22c0-5.523-4.477-10-10-10zM16 16c-3.314 0-6-2.686-6-6s2.686-6 6-6 6 2.686 6 6-2.686 6-6 6z',\n                  x: -10,\n                  y: -35,\n                  width: 20,\n                  height: 40\n                },\n                style: {\n                  fill: 'red'\n                },\n                // Jump animation.\n                keyframeAnimation: {\n                  duration: 1000,\n                  loop: true,\n                  delay: Math.random() * 1000,\n                  keyframes: [\n                    {\n                      y: -10,\n                      percent: 0.5,\n                      easing: 'cubicOut'\n                    },\n                    {\n                      y: 0,\n                      percent: 1,\n                      easing: 'bounceOut'\n                    }\n                  ]\n                }\n              }\n            ]\n          };\n        }\n      }\n    };\n\n    myChart.setOption(option);\n  });\n```\n\n\x3c!-- ### 在大屏图表上放入科技感的动画特效 --\x3e\n\n### 加载 Lottie 动画\n\n为了充分发掘出新的关键帧动画的能力,ECharts 团队的沈毅写了一个 [Lottie 动画的解析库](https://github.com/pissang/lottie-parser),可以将 Lottie 动画文件解析成 ECharts 的图形格式进行渲染。结合 Lottie 的表达力我们可以进一步的在我们的项目中绘制出细腻的动画。\n\n## 图形组件过渡动画\n\n我们在 5.0 里为自定义系列中返回的图形提供了更灵活的过渡动画配置。可以通过`transition`, `enterFrom`, `leaveTo`三个配置项来配置每个图形哪些属性会拥有过渡动画,当图形创建和被移除的时候该执行怎么样的动画。例如:\n\n```js\nfunction renderItem() {\n  //...\n  return {\n    //...\n    x: 100,\n    // 'style', 'x', 'y' 会被动画\n    transition: ['style', 'x', 'y'],\n    enterFrom: {\n      style: {\n        // 淡入\n        opacity: 0\n      },\n      //从左侧飞入\n      x: 0\n    },\n    leaveTo: {\n      // 淡出\n      opacity: 0\n    },\n    // 向右侧飞出\n    x: 200\n  };\n}\n```\n\n在 5.3.0 中我们把这些过渡动画的配置扩展到了图形(graphic)组件中,并且做了更多的增强:\n\n如果你不想一一写出每个要动画的属性,现在你可以直接配置`transition: 'all'`为所有属性都加上动画过渡。\n\n与此同时我们还新增了`enterAnimation`、`updateAnimation`、`leaveAnimation`分别配置每个图形入场、更新、出场动画的时长(duration)、延迟(delay)和缓动(easing)。除此之外,渐变色现在也支持动画了。\n\n## 全新的 SVG 渲染器\n\n在 5.3.0 中我们重构了我们的 SVG 渲染器,新的 SVG 渲染器能够带来 2x ~ 10x 的性能提升,在某些特殊场景中甚至能有数十倍的提升。\n\n之前的 SVG 渲染器我们直接从渲染队列更新到 DOM。但是因为 zrender 的图形属性跟 DOM 并不是一一对应的,因此中间需要实现非常复杂的 Diff 逻辑,容易出错而且在某些场景下性能并不能做到最好。在这个版本我们重构成先全量渲染到 VDOM,然后再将 VDOM patch 到 DOM 完成渲染。全量渲染可以避免复杂的 Diff 逻辑带来的潜在 Bug。而 VDOM 和 DOM 的一一对应可以保证在 patch 的时候保证更新是最少的,从而带来巨大的性能提升。\n\n[这个例子](https://echarts.apache.org/examples/zh/editor.html?c=geo-svg-scatter-simple&renderer=svg) 可以给大家带来比较直观的性能提升的感受。新的版本在 SVG 模式下拖动的交互上比之前版本流畅非常多。\n\n|             5.2.2 (Before)             |            5.3.0 (After)             |\n| :------------------------------------: | :----------------------------------: |\n| ![before](images/5-3-0/svg-before.gif) | ![after](images/5-3-0/svg-after.gif) |\n\n除了性能的提升,我们还可以使用中间全量渲染得到的 VDom 做更多的事情,比如下面会介绍的服务端渲染。\n\n## 零依赖的服务端渲染\n\n在之前的版本 ECharts 也可以实现服务端的渲染,但是必须得依赖 [node-canvas](https://github.com/Automattic/node-canvas),如果是使用 SVG 模式则需要依赖 [JSDOM](https://github.com/jsdom/jsdom) 来模拟 DOM 环境。这些依赖一是带来了额外的体积和使用要求,二是也会有更多的性能损耗。\n\n这次新的 SVG 渲染器可以让我们从中间的 VDOM 渲染得到字符串,带来了完全零依赖的服务端渲染,输出更精简并且带有 CSS 动画的 SVG 字符串。\n\n```ts\nconst echarts = require('echarts');\n\n// 在 SSR 模式下第一个参数不需要再传入 DOM 对象\nconst chart = echarts.init(null, null, {\n  renderer: 'svg', // 必须使用 SVG 模式\n  ssr: true, // 开启 SSR\n  width: 400, // 需要指明高和宽\n  height: 300\n});\n\n// 像正常使用一样 setOption\nchart.setOption({\n  xAxis: {\n    type: 'category',\n    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']\n  },\n  yAxis: {\n    type: 'value'\n  },\n  series: [\n    {\n      data: [120, 200, 150, 80, 70, 110, 130],\n      type: 'bar'\n    }\n  ]\n});\n\n// 输出字符串\nconst svgStr = chart.renderToSVGString();\n```\n\n在此基础上,我们优化了输出的 SVG 字符串,使其在诸如 PowerPoint 等更多的平台上有更好的显示效果。\n\n## 自定义地图投影\n\n地图一直是 ECharts 中使用非常广泛的组件。一般地图组件会使用存储了经纬度的 GeoJSON 格式的数据。而 ECharts 则计算出合适的显示区域然后把经纬度线性映射到这个区域。这是一种最简单的地图投影方式。但是简单的线性投影并无法满足某些复杂的地图场景,例如使用 [Albers](https://en.wikipedia.org/wiki/Albers_projection) 投影解决线性投影中面积失真的问题,或者在世界地图中让太平洋显示在中间等等。\n\n因此在 5.3.0 里中我们引入了自定义的地图投影,可以通过`project`和`unproject`两个方法告诉 ECharts 如何投影坐标,以及如何根据投影后坐标计算经纬度。下面是简单的使用墨卡托投影的例子:\n\n```ts\nseries = {\n  type: 'map',\n  projection: {\n    project: point => [\n      (point[0] / 180) * Math.PI,\n      -Math.log(Math.tan((Math.PI / 2 + (point[1] / 180) * Math.PI) / 2))\n    ],\n    unproject: point => [\n      (point[0] * 180) / Math.PI,\n      ((2 * 180) / Math.PI) * Math.atan(Math.exp(point[1])) - 90\n    ]\n  }\n};\n```\n\n除了我们自己实现投影公式,我们也可以使用 [d3-geo](https://github.com/d3/d3-geo) 等第三方库提供的现成的投影实现:\n\n```ts\nconst projection = d3.geoConicEqualArea();\n// ...\nseries = {\n  type: 'map',\n  projection: {\n    project: point => projection(point),\n    unproject: point => projection.invert(point)\n  }\n};\n```\n\n配合在 5.2 里新增的全局过渡动画特性,我们可以实现不同投影效果之间的动画过渡:\n\n![地图投影动画](images/5-3-0/map-projection.gif)\n\n除了地图的投影之外,我们在这个版本对于地图还做了下面两个增强:\n\n- 对 GeoJSON 数据提供了`'LineString'`和`'MultiLineString'`的支持。\n- 将默认标签位置的计算从包围盒中心改为最大区域的重心坐标,计算结果更加准确。\n\n## 多坐标轴的刻度对齐\n\n多坐标轴的刻度对齐是社区中提了很久的一个需求,我们在网上也可以看到很多开发者写的如何在 ECharts 中实现坐标轴对齐的文章,通常都会比较麻烦而且会有比较多的局限性。\n\n在 5.3.0 中我们终于引入了数值轴坐标轴刻度对齐的功能。可以在需要对齐刻度的坐标轴中配置`alignTicks: true`。该坐标轴就会根据第一个坐标轴的刻度划分去调整自己的刻度,实现自动对齐。\n\n```js live { layout: 'bt' }\noption = {\n  tooltip: {\n    trigger: 'axis'\n  },\n  legend: {},\n  xAxis: [\n    {\n      type: 'category',\n      data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],\n      axisPointer: {\n        type: 'shadow'\n      }\n    }\n  ],\n  yAxis: [\n    {\n      type: 'value',\n      name: 'Precipitation',\n      alignTicks: true,\n      axisLabel: {\n        formatter: '{value} ml'\n      }\n    },\n    {\n      type: 'value',\n      name: 'Temperature',\n      axisLabel: {\n        formatter: '{value} °C'\n      }\n    }\n  ],\n  series: [\n    {\n      name: 'Evaporation',\n      type: 'bar',\n      // prettier-ignore\n      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]\n    },\n    {\n      name: 'Precipitation',\n      type: 'bar',\n      // prettier-ignore\n      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]\n    },\n    {\n      name: 'Temperature',\n      type: 'line',\n      yAxisIndex: 1,\n      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]\n    }\n  ]\n};\n```\n\n## 支持高亮和选中状态的关闭\n\nECharts 中高亮状态可以在鼠标移到图形上的时候给用户提供反馈,但是在图表中有海量图形的时候,高亮的动画也可能带来交互上的性能问题。特别在 [tooltip](${optionPath}tooltip) 或者[图例组件](${optionPath}legend)联动触发的高亮会同时高亮多个图形。\n\n因此在这个版本中我们新增了`emphasis.disabled`配置项。如果不需要高亮的反馈,又对交互性能非常在意的话,可以通过这个配置项来关闭高亮状态。\n\n与此同时,对于选中状态,我们也新增了`select.disabled`。该配置项可以用于细粒度配置部分数据不可选。\n\n## 支持整个系列的选中\n\n在 5.3.0 中我们支持将`selectedMode`配置为`'series'`以实现系列所有数据的选中。\n\n## tooltip 中的数值格式化\n\ntooltip 可以在用户移到图形上的时候通过提示框显示更详细的相关信息,ECharts 也提供了`formatter`回调函数可以让开发者更灵活的自定义提示框的内容。\n\n但是我们发现大部分时候开发者只是需要格式化提示框中的数字部分,例如固定精度,加上`$`前缀等等,而之前为了格式化数字开发者只能通过`formatter`重写整个提示框的内容。特别是在 5.0 后 ECharts 的提示框结构更复杂,样式更美观了,重写变得成本很大而且很难达到默认的效果。\n\n因此在这个版本我们为 tooltip 新增了`valueFormatter`配置项用于数值部分的格式化。\n\n还是刚才那个坐标轴对齐的例子,我们可以为提示框中的数值部分加上 °C 和 ml 的后缀。\n\n```js live { layout: 'bt' }\noption = {\n  tooltip: {\n    trigger: 'axis'\n  },\n  legend: {},\n  xAxis: [\n    {\n      type: 'category',\n      data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],\n      axisPointer: {\n        type: 'shadow'\n      }\n    }\n  ],\n  yAxis: [\n    {\n      type: 'value',\n      name: 'Precipitation',\n      alignTicks: true,\n      axisLabel: {\n        formatter: '{value} ml'\n      }\n    },\n    {\n      type: 'value',\n      name: 'Temperature',\n      axisLabel: {\n        formatter: '{value} °C'\n      }\n    }\n  ],\n  series: [\n    {\n      name: 'Evaporation',\n      type: 'bar',\n      tooltip: {\n        valueFormatter: value => value + ' ml'\n      },\n      // prettier-ignore\n      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]\n    },\n    {\n      name: 'Precipitation',\n      type: 'bar',\n      tooltip: {\n        valueFormatter: value => value + ' ml'\n      },\n      // prettier-ignore\n      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]\n    },\n    {\n      name: 'Temperature',\n      type: 'line',\n      yAxisIndex: 1,\n      tooltip: {\n        valueFormatter: value => value + ' °C'\n      },\n      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]\n    }\n  ]\n};\n```\n\n每个系列都可以根据自己的数值格式配置自己的`valueFormatter`。\n\n## 更灵活的扇区圆角\n\n在 5.0 中我们为扇区新增了圆角的配置,可以让饼图,旭日图变得更有趣。之前圆角的配置只支持内半径和外半径分开配置,这次我们更进一步,支持扇区的四个角都配置成不同的圆角大小,带来更灵活的呈现。\n\n```js live { layout: 'lr', height: 400 }\noption = {\n  tooltip: {\n    trigger: 'item'\n  },\n  legend: {\n    top: '5%',\n    left: 'center'\n  },\n  series: [\n    {\n      name: 'Access From',\n      type: 'pie',\n      radius: ['30%', '70%'],\n      roseType: 'angle',\n      itemStyle: {\n        borderRadius: [20, 5, 5, 10],\n        borderColor: '#fff',\n        borderWidth: 2\n      },\n      label: {\n        show: false\n      },\n      data: [\n        { value: 800, name: 'Search Engine' },\n        { value: 735, name: 'Direct' },\n        { value: 580, name: 'Email' },\n        { value: 484, name: 'Union Ads' },\n        { value: 400, name: 'Video Ads' }\n      ]\n    }\n  ]\n};\n```\n\n## 饼图的复杂标签优化\n\n饼图一直是 ECharts 中标签呈现最复杂的图表之一,我们从 5.0 开始就一直在饼图的标签布局、显示上做了很多的优化。\n\n这次我们针对使用了换行,背景色,富文本等格式比较复杂的饼图标签做了深度的优化。在宽度的自适应、超出容器、引导线的计算上比之前有了更好的效果:\n\n|                5.2.2 (Before)                 |                5.3.0 (After)                |\n| :-------------------------------------------: | :-----------------------------------------: |\n| ![before](images/5-3-0/pie-label-before.png)  | ![after](images/5-3-0/pie-label-after.png)  |\n| ![before](images/5-3-0/pie-label-before2.png) | ![after](images/5-3-0/pie-label-after2.png) |\n\n## 柱状图 large 模式优化\n\n在数据量很多(> 2k)的时候,我们支持柱状图通过开启 [large](${optionPath}series-bar.large) 模式来加速渲染,提升交互性能,但是之前 [large](${optionPath}series-bar.large) 模式下对柱状图布局比较简单,不支持多系列堆叠后的布局。在 5.3.0 中我们对 [large](${optionPath}series-bar.large) 模式的布局进行了优化,跟普通模式保持了一致性。我们可以在更多的场景中通过开启 [large](${optionPath}series-bar.large) 来优化柱状图的性能。\n\n除此之外,优化后的柱状图布局也修复了在对数轴这样的非线性轴上堆叠效果不正确的 bug。\n\n## 非兼容改动\n\n### registerMap 和 getMap 方法需要在引入地图组件后才能使用\n\n为了减少最小打包的体积,我们从核心模块中移除了地图数据管理的方法`getMap`和`registerMap`。\n\n如果你是[按需引入](https://echarts.apache.org/handbook/zh/basics/import/#%E6%8C%89%E9%9C%80%E5%BC%95%E5%85%A5-echarts-%E5%9B%BE%E8%A1%A8%E5%92%8C%E7%BB%84%E4%BB%B6) ECharts 组件的话,需要保证先引入了`GeoComponent`或者`MapChart`之后,才能使用`registerMap`注册地图数据。\n\n```ts\nimport * as echarts from 'echarts/core';\nimport { MapChart } from 'echarts/charts';\n\necharts.use([MapChart]);\n\n// 必须在使用 use 方法注册了 MapChart 后才能使用 registerMap 注册地图\necharts.registerMap('world', worldJSON);\n```\n\n如果你是使用`import * as echarts from 'echarts'`全量引入,这次改动不会对你产生任何影响。\n\n### 折线图移除默认高亮加粗的效果\n\n我们在 5.0 里对折线图引入了默认高亮加粗的效果,但是社区反馈这个在很多场景效果并不好,所以在这个版本我们将这个效果从默认开启改为默认关闭,如果需要使用高亮加粗,则可以显式配置:\n\n```ts\nseries = {\n  type: 'line',\n  //...\n  emphasis: {\n    lineStyle: {\n      width: 'bolder'\n    }\n  }\n};\n```\n\n## 完整更新记录\n\n查看[版本更新](${mainSitePath}/changelog.html#v5-3-0)\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/f66993240cafdfa3acbb.js b/docs/_nuxt/js/f66993240cafdfa3acbb.js
new file mode 100644
index 0000000..3578a55
--- /dev/null
+++ b/docs/_nuxt/js/f66993240cafdfa3acbb.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[43],{344:function(e,n,t){"use strict";t.r(n),n.default="# Dataset\n\n`dataset` is a component dedicated to manage data. Although you can set the data in `series.data` for every series, we recommend you use the `dataset` to manage the data since ECharts 4 so that the data can be reused by multiple components and convenient for the separation of \"data and configs\". After all, data is the most common part to be changed while other configurations will mostly not change at runtime.\n\n## Define **data** under **series**\n\nIf data is defined under `series`, for example:\n\n```js live\noption = {\n  xAxis: {\n    type: 'category',\n    data: ['Matcha Latte', 'Milk Tea', 'Cheese Cocoa', 'Walnut Brownie']\n  },\n  yAxis: {},\n  series: [\n    {\n      type: 'bar',\n      name: '2015',\n      data: [89.3, 92.1, 94.4, 85.4]\n    },\n    {\n      type: 'bar',\n      name: '2016',\n      data: [95.8, 89.4, 91.2, 76.9]\n    },\n    {\n      type: 'bar',\n      name: '2017',\n      data: [97.7, 83.1, 92.5, 78.1]\n    }\n  ]\n};\n```\n\nDefining `data` under `series` is suitable for customization for some special data structures such as \"tree\", \"graph\" and large data.\nHowever, it is not conducive to the data sharing for multiple series as well as mapping arrangement of chart types and series based on the original data. The other disadvantage is that programmers always need to divide the data in separate series (and categories) first.\n\n## Define **data** in **dataset**\n\nHere are the advantages if you define `data` in `dataset`:\n\n- Follow the ideas of data visualization: (I) Provide the data, (II)Mapping from data to visual to become a chart.\n- Divide data from other configurations. The data often change but others not. It is\n  Easy to manage separately.\n- Data can be reused by several series or component, you don't need to create copies of a large amount of data for every series.\n- Support more common data format, such as a 2D array, array of classes, etc., to avoid users from converting for data format to a certain extent.\n\nHere is a simple `dataset` example:\n\n```js live\noption = {\n  legend: {},\n  tooltip: {},\n  dataset: {\n    // Provide a set of data.\n    source: [\n      ['product', '2015', '2016', '2017'],\n      ['Matcha Latte', 43.3, 85.8, 93.7],\n      ['Milk Tea', 83.1, 73.4, 55.1],\n      ['Cheese Cocoa', 86.4, 65.2, 82.5],\n      ['Walnut Brownie', 72.4, 53.9, 39.1]\n    ]\n  },\n  // Declare an x-axis (category axis).\n  // The category map the first column in the dataset by default.\n  xAxis: { type: 'category' },\n  // Declare a y-axis (value axis).\n  yAxis: {},\n  // Declare several 'bar' series,\n  // every series will auto-map to each column by default.\n  series: [{ type: 'bar' }, { type: 'bar' }, { type: 'bar' }]\n};\n```\n\nOr try to use the \"array of classes\" format:\n\n```js live\noption = {\n  legend: {},\n  tooltip: {},\n  dataset: {\n    // Define the dimension of array. In cartesian coordinate system,\n    // if the type of x-axis is category, map the first dimension to\n    // x-axis by default, the second dimension to y-axis.\n    // You can also specify 'series.encode' to complete the map\n    // without specify dimensions. Please see below.\n\n    dimensions: ['product', '2015', '2016', '2017'],\n    source: [\n      { product: 'Matcha Latte', '2015': 43.3, '2016': 85.8, '2017': 93.7 },\n      { product: 'Milk Tea', '2015': 83.1, '2016': 73.4, '2017': 55.1 },\n      { product: 'Cheese Cocoa', '2015': 86.4, '2016': 65.2, '2017': 82.5 },\n      { product: 'Walnut Brownie', '2015': 72.4, '2016': 53.9, '2017': 39.1 }\n    ]\n  },\n  xAxis: { type: 'category' },\n  yAxis: {},\n  series: [{ type: 'bar' }, { type: 'bar' }, { type: 'bar' }]\n};\n```\n\n## Map from Data to Chart\n\nThe ideas of data visualization: (I) Provide the data, (II)Mapping from data to visual to become a chart.\n\nIn short, you can set these configs of mapping:\n\n- Specify 'column' or 'row' of `dataset` to map the `series`. You can use [series.seriesLayoutBy](${optionPath}series.seriesLayoutBy) to configure it. The default is to map according to the column.\n- Rule of specifying dimension mapping: how to mapping from dimensions of 'dataset' to `axis`, `tooltip`, `label` and `visualMap`. To configure the mapping, please use [series.encode](${optionPath}series.encode) and [visualMap](${optionPath}visualMap). The previous case did not give the mapping configuration so that ECharts will follow the default: if x-axis is category, mapping to the first row in `dataset.source`; three-column chart mapping with each row in `dataset.source` one by one.\n\nThe details of the configuration are shown below:\n\n## Map Row or Column of **dataset** to **series**\n\nHaving the dataset, you can configure flexibly how the data map to the axis and series.\n\nYou can use `seriesLayoutBy` to change the understanding of row and column of the chart. `seriesLayoutBy` can be:\n\n- `'column'`: Default value. The series are placed above the column of `dataset`.\n- `'row'`: The series are placed above the row of `dataset`.\n\nCheck this case:\n\n```js live\noption = {\n  legend: {},\n  tooltip: {},\n  dataset: {\n    source: [\n      ['product', '2012', '2013', '2014', '2015'],\n      ['Matcha Latte', 41.1, 30.4, 65.1, 53.3],\n      ['Milk Tea', 86.5, 92.1, 85.7, 83.1],\n      ['Cheese Cocoa', 24.1, 67.2, 79.5, 86.4]\n    ]\n  },\n  xAxis: [\n    { type: 'category', gridIndex: 0 },\n    { type: 'category', gridIndex: 1 }\n  ],\n  yAxis: [{ gridIndex: 0 }, { gridIndex: 1 }],\n  grid: [{ bottom: '55%' }, { top: '55%' }],\n  series: [\n    // These series will show in the first coordinate, each series map a row in dataset.\n    { type: 'bar', seriesLayoutBy: 'row', xAxisIndex: 0, yAxisIndex: 0 },\n    { type: 'bar', seriesLayoutBy: 'row', xAxisIndex: 0, yAxisIndex: 0 },\n    { type: 'bar', seriesLayoutBy: 'row', xAxisIndex: 0, yAxisIndex: 0 },\n    // These series will show in the second coordinate, each series map a column in dataset.\n    { type: 'bar', seriesLayoutBy: 'column', xAxisIndex: 1, yAxisIndex: 1 },\n    { type: 'bar', seriesLayoutBy: 'column', xAxisIndex: 1, yAxisIndex: 1 },\n    { type: 'bar', seriesLayoutBy: 'column', xAxisIndex: 1, yAxisIndex: 1 },\n    { type: 'bar', seriesLayoutBy: 'column', xAxisIndex: 1, yAxisIndex: 1 }\n  ]\n};\n```\n\nThe effect of configuration is shown in [this case](${exampleEditorPath}dataset-series-layout-by).\n\n## Dimension\n\nMost of the data described in commonly used charts is a \"two-dimensional table\" structure, in the previous case, we use a 2D array to contain a two-dimensional table. Now, when we map a series to a column, that column was called a \"dimension\" and each row was called \"item\", vice versa.\n\nThe dimension can have their name to display in the chart. Dimension name can be defined in the first column (row). In the [next case](${lang}/concepts/dataset/#map-from-data-to-charts-(series.encode)), `'score'`, `'amount'`, `'product'` are the name of dimensions. The actual data locate from the second row. ECharts will automatically check if the first column (row) contained dimension name in `dataset.source`. You can also use `dataset.sourceHeader: true` to declare that the first column (row) represents the dimension name.\n\nTry to use single `dataset.dimensions` or some `series.dimensions` to define the dimensions, therefore you can specify the name and type together.\n\n```js\nvar option1 = {\n  dataset: {\n    dimensions: [\n      { name: 'score' },\n      // can be abbreviated as 'string', to indicate dimension name\n      'amount',\n      // Specify dimensions in 'type'.\n      { name: 'product', type: 'ordinal' }\n    ],\n    source: []\n  }\n  // ...\n};\n\nvar option2 = {\n  dataset: {\n    source: []\n  },\n  series: {\n    type: 'line',\n    // series.dimensions will cover the config in dataset.dimension\n    dimensions: [\n      null, // use null if you do not want dimension name.\n      'amount',\n      { name: 'product', type: 'ordinal' }\n    ]\n  }\n  // ...\n};\n```\n\nIn most cases, you don't need to define the dimension type because the ECharts will automatically judge it. If the judgment is inaccurate, you can define it manually.\n\nDimension type can be the following values:\n\n- `'number'`: Default, normal data.\n- `'ordinal'`: String types data like categories, text can be used on the axis only with the dimension type 'ordinal'. ECharts will try to judge this type automatically but might be inaccurate, so you can specify manually.\n- `'time'`: To represent time data, ECharts can automatically analyze data as timestamp if the dimension type is defined as `'time'`. For instance, ECharts will auto-analyze if the data of this dimension is '2017-05-10'. If the dimension is used as time axis ([axis.type](${optionPath}xAxis.type) = `'time'`), the dimension type will also be `'time'`. See [data](${optionPath}series.data) for more time type support.\n- `'float'`: Use `TypedArray` to optimize the performance in `'float'` dimension.\n- `'int'`: Use `TypedArray` to optimize the performance in `'int'` dimension.\n\n## Map from Data to Charts (series.encode)\n\nAfter understand the concept of dimension, you can use [series.encode](${optionPath}series.encode) to make a mapping:\n\n```js live\nvar option = {\n  dataset: {\n    source: [\n      ['score', 'amount', 'product'],\n      [89.3, 58212, 'Matcha Latte'],\n      [57.1, 78254, 'Milk Tea'],\n      [74.4, 41032, 'Cheese Cocoa'],\n      [50.1, 12755, 'Cheese Brownie'],\n      [89.7, 20145, 'Matcha Cocoa'],\n      [68.1, 79146, 'Tea'],\n      [19.6, 91852, 'Orange Juice'],\n      [10.6, 101852, 'Lemon Juice'],\n      [32.7, 20112, 'Walnut Brownie']\n    ]\n  },\n  xAxis: {},\n  yAxis: { type: 'category' },\n  series: [\n    {\n      type: 'bar',\n      encode: {\n        // Map \"amount\" column to x-axis.\n        x: 'amount',\n        // Map \"product\" row to y-axis.\n        y: 'product'\n      }\n    }\n  ]\n};\n```\n\nThe basic structure of `series.encode` declaration:\n\n- To the left of the colon: Specific name of axis or label.\n- To the right of the colon: Dimension name (string) or number(int, count from 0), to specify one or several dimensions (using array).\n\nGenerally, the following info is not necessary to be defined. Fill in as needed.\n\nAttribute suggested by `series.encode`\n\n```js\n// Supported in every coordinate and series:\nencode: {\n  // Display the value of dimension named \"product\" and \"score\" in tooltip.\n  tooltip: ['product', 'score']\n  // Connect dimension name of \"Dimension 1\" and \"Dimension 3\" as the series name. (Avoid to repeat longer names in series.name)\n  seriesName: [1, 3],\n  // Means to use the value in \"Dimension 2\" as the id. It makes the new and old data correspond by id\n\t// when using setOption to update data, so that it can show animation properly.\n  itemId: 2,\n  // The itemName will show in the legend of Pie Charts.\n  itemName: 3\n}\n\n// Grid/cartesian coordinate unique configs:\nencode: {\n  // Map \"Dimension 1\", \"Dimension 5\" and \"dimension named 'score'\" to x-axis:\n  x: [1, 5, 'score'],\n  // Map \"Dimension 0\" to y-axis:\n  y: 0\n}\n\n// singleAxis unique configs:\nencode: {\n  single: 3\n}\n\n// Polar coordinate unique configs:\nencode: {\n  radius: 3,\n  angle: 2\n}\n\n// Geo-coordinate unique configs:\nencode: {\n  lng: 3,\n  lat: 2\n}\n\n// For some charts without coordinate like pie chart, funnel chart:\nencode: {\n  value: 3\n}\n```\n\nThis is a richer [example](${exampleEditorPath}dataset-encode1) of `series.encode`.\n\n## Default series.encode\n\nIt is worth mentioning that ECharts will use some default mapping rules for some general charts (line, bar, scatter, candlestick, etc.) if `series.encode` is not specified. The default rule is:\n\n- In coordinate system (e.g. Cartesian, Polar):\n  - If there is category axis ([axis.type](${optionPath}xAxis.type) = `'category'`), map the first column(row) to the axis and each subsequent column(row) to each series.\n  - If both axes is not the category, then map every two columns in one series to two axes.\n- Without axis (e.g. Pie Chart):\n  - Use the first column(row) as the name, second column(row) as value. ECharts will not set the name if there is only one column(row).\n\nWhile the default rule cannot fulfill the requirements, you can configure `encode` by yourself, which is not complicate. Here is an [example](${exampleEditorPath}dataset-default).\n\n## Some Normal Settings of series.encode\n\nQ: How to set the 3rd column as x-axis, 5th column as y-axis?\n\nA:\n\n```js\noption = {\n  series: {\n    // dimensionIndex count from 0, so the 3rd line is dimensions[2].\n    encode: { x: 2, y: 4 }\n    // ...\n  }\n};\n```\n\nQ: How to set the 3rd row as x-axis, 5th row as y-axis?\n\nA:\n\n```js\noption = {\n  series: {\n    encode: { x: 2, y: 4 },\n    seriesLayoutBy: 'row'\n    // ...\n  }\n};\n```\n\nQ: How to set the 2nd column as a label?\n\nA:\nWe now support to trace value from specific dimension for [label.formatter](${optionPath}series.label.formatter):\n\n```js\nseries: {\n  label: {\n    // `'{@score}'` means the value in the dimension named \"score\".\n    // `'{@[4]}'` means the value in dimension 4.\n    formatter: 'aaa{@product}bbb{@score}ccc{@[4]}ddd';\n  }\n}\n```\n\nQ: How to show the 2nd and 3rd column in the tooltip?\n\nA:\n\n```js\noption = {\n  series: {\n    encode: {\n      tooltip: [1, 2]\n      // ...\n    }\n    // ...\n  }\n};\n```\n\nQ: How to define the dimension name if is not included in the dataset?\n\nA:\n\n```js\nvar option = {\n  dataset: {\n    dimensions: ['score', 'amount'],\n    source: [\n      [89.3, 3371],\n      [92.1, 8123],\n      [94.4, 1954],\n      [85.4, 829]\n    ]\n  }\n};\n```\n\nQ: How to map the 3rd column to the size of the scatter chart?\n\nA:\n\n```js live\nvar option = {\n  dataset: {\n    source: [\n      [12, 323, 11.2],\n      [23, 167, 8.3],\n      [81, 284, 12],\n      [91, 413, 4.1],\n      [13, 287, 13.5]\n    ]\n  },\n  visualMap: {\n    show: false,\n    dimension: 2, // means the 3rd column\n    min: 2, // lower bound\n    max: 15, // higher bound\n    inRange: {\n      // Size of the bubble.\n      symbolSize: [5, 60]\n    }\n  },\n  xAxis: {},\n  yAxis: {},\n  series: {\n    type: 'scatter'\n  }\n};\n```\n\nQ: I specified a mapping in encode, why it is not worked?\n\nA: Check your spelling, such as misspell the dimension name `'Life Expectancy'` to `'Life Expectency'` in encode.\n\n## Visual Channel Mapping\n\nWe can map visual channel by using [visualMap](${optionPath}visualMap). Check details in the [visualMap](${optionPath}visualMap) document. Here is an [example](${exampleEditorPath}dataset-encode0).\n\n## Formats of Charts\n\nIn most of the normal chart, the data is suitable to be described in the form of a two-dimensional table. That well-known software like 'MS Excel' and 'Numbers' all uses a two-dimensional table. Their data can be exported to JSON format and input to `dataset.source` and avoid some steps of data processing.\n\n> You can switch .csv file to JSON using tools like [dsv](https://github.com/d3/d3-dsv) or [PapaParse](https://github.com/mholt/PapaParse).\n\nAs the example shown behind, in the data transmission of JavaScript, the two-dimensional data can be stored directly by two-dimensional array.\n\nExpect from the two-dimensional array, the dataset also supports using key-value which is also a common way. However, we don't support [seriesLayoutBy](${optionPath}series.seriesLayoutBy) in this format right now.\n\n```js\ndataset: [\n  {\n    // column by column key-value array is a normal format\n    source: [\n      { product: 'Matcha Latte', count: 823, score: 95.8 },\n      { product: 'Milk Tea', count: 235, score: 81.4 },\n      { product: 'Cheese Cocoa', count: 1042, score: 91.2 },\n      { product: 'Walnut Brownie', count: 988, score: 76.9 }\n    ]\n  },\n  {\n    // row by row key-value\n    source: {\n      product: ['Matcha Latte', 'Milk Tea', 'Cheese Cocoa', 'Walnut Brownie'],\n      count: [823, 235, 1042, 988],\n      score: [95.8, 81.4, 91.2, 76.9]\n    }\n  }\n];\n```\n\n## How to Reference Several Datasets\n\nECharts support to define several datasets at the same moment. Series can assign the one to reference by [series.datasetIndex](${optionPath}series.datasetIndex). For example:\n\n```js\nvar option = {\n  dataset: [\n    {\n      // 1st Dataset\n      source: []\n    },\n    {\n      // 2nd Dataset\n      source: []\n    },\n    {\n      // 3rd Dataset\n      source: []\n    }\n  ],\n  series: [\n    {\n      // Use 2nd dataset\n      datasetIndex: 1\n    },\n    {\n      // Use 1st dataset\n      datasetIndex: 0\n    }\n  ]\n};\n```\n\n## series.data in ECharts 3\n\nECharts 4 still supports the data declaration way in ECharts 3. If the series has already declared the [series.data](${optionPath}series.data), then use [series.data](${optionPath}series.data) but not `dataset`.\n\n```js\noption = {\n  xAxis: {\n    type: 'category',\n    data: ['Matcha Latte', 'Milk Tea', 'Cheese Cocoa', 'Walnut Brownie']\n  },\n  yAxis: {},\n  series: [\n    {\n      type: 'bar',\n      name: '2015',\n      data: [89.3, 92.1, 94.4, 85.4]\n    },\n    {\n      type: 'bar',\n      name: '2016',\n      data: [95.8, 89.4, 91.2, 76.9]\n    },\n    {\n      type: 'bar',\n      name: '2017',\n      data: [97.7, 83.1, 92.5, 78.1]\n    }\n  ]\n};\n```\n\nIn fact, [series.data](${optionPath}series.data) is an important setting method which will always exist. Some special non-table format chart like [treemap](${optionPath}series-treemap), [graph](${optionPath}series-graph) and [lines](${optionPath}series-lines) still cannot be edit in dataset, you still need to use [series.data](${optionPath}series.data). In another way, for render huge amount of data (over a million), you need to use [appendData](${mainSitePath}api.html#echartsInstance.appendData) which is not supported by `dataset`.\n\n## Others\n\nThe following charts now support dataset:\n`line`, `bar`, `pie`, `scatter`, `effectScatter`, `parallel`, `candlestick`, `map`, `funnel`, `custom`.\nECharts will support more charts in the future.\n\nIn the end, here is an [example](${exampleEditorPath}dataset-link) of several charts shared one `dataset` with linkage interaction.\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/f67043180da500fb1d0c.js b/docs/_nuxt/js/f67043180da500fb1d0c.js
new file mode 100644
index 0000000..c8c93c8
--- /dev/null
+++ b/docs/_nuxt/js/f67043180da500fb1d0c.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[19],{320:function(e,t,n){"use strict";n.r(t),t.default='# Apache ECharts 6 New Features\n\nTwelve years ago, ECharts was first released on GitHub, planting the seed for an open-source journey.\n\nFrom a simple charting tool to a visualization powerhouse supporting millions of developers; from a single front-end charting library to a comprehensive technology system covering mobile, large screens, and server-side rendering—over these 12 years, we\'ve witnessed ECharts\' continuous technical breakthroughs and have been delighted to see developers worldwide create countless stunning data stories with ECharts.\n\nNow, Apache ECharts 6.0 is officially released, bringing 12 major upgrades to take your data visualization to the next level.\n\n## Feature Overview\n\nTwelve years of accumulation, all for more ultimate visual expression. The core strength of Apache ECharts has always come from a deep understanding of developers\' real challenges. When defining the direction for 6.0, the question was clear: **How can we make complex data presentation both powerful and elegant?**\n\nThis drove us to evolve deeply around three core dimensions:\n\n- **More professional visual presentation**: From a meticulously crafted default theme to intelligent dark mode switching, ensuring charts have a professional look and seamlessly integrate into modern applications.\n- **Expanding the boundaries of data expression**: New chart types and features to handle complex scenarios and enable intuitive expression of deep data.\n- **Unleashing freedom of composition**: From the revolutionary matrix coordinate system to reusable custom series and optimized axis labels—empowering developers to freely compose and turn creativity into unconstrained visual works.\n\nWe have made 12 upgrades across these three core dimensions. These are not just simple feature additions, but a solid foundation for building the next generation of data-driven applications. They all point to one goal: **to make ECharts powerful, reliable, and stable in the background, leaving the stage and spotlight for your creative expression.**\n\nBelow, we introduce these twelve upgrades in detail:\n\n- **More professional visual presentation**\n  - **1. Brand New Default Theme**: Modern design language for professional data expression\n  - **2. Dynamic Theme Switching**: Seamless runtime theme switching for multi-theme scenarios\n  - **3. Dark Mode Support**: Automatically adapts to system dark/light mode for better UX\n- **Expanding the boundaries of data expression**\n  - **4. New Chord Chart**: Visualize complex relationships and distributions\n  - **5. New Beeswarm Chart**: Smartly expand overlapping data points into a honeycomb layout\n  - **6. New Scatter Jittering**: Add jitter to scatter plots for better readability of dense data\n  - **7. New Broken Axis**: Easily present data with large magnitude differences\n  - **8. Enhanced Stock Trading Charts**: Improved label capabilities and more out-of-the-box trading charts\n- **Unleashing freedom of composition**\n  - **9. New Matrix Coordinate System**: Freely combine chart types and components like a table\n  - **10. Enhanced Custom Series**: Support npm publishing and dynamic registration for code reuse\n  - **11. New Custom Charts**: Violin, contour, stage, bar range, and line range charts\n  - **12. Axis Label Optimization**: Smarter default axis label layout to prevent overflow and overlap\n\nWith these upgrades, Apache ECharts 6.0 helps users create more charts more flexibly and conveniently, truly achieving "unlimited possibilities in charting"!\n\n## Feature Details\n\n### 1. Brand New Default Theme\n\nDuring the development of ECharts 6.0, we analyzed real user scenarios and found that over 70% of developers use the default theme. This made us realize: an excellent default theme should not only be aesthetically pleasing but also meet the general needs of various business scenarios.\n\nThe new theme system uses design tokens to reconstruct colors, spacing, and other design elements, **making different chart types and components more harmonious and consistent**.\n\n<img data-src="images/feature-v6/1-default-theme.png" width="600px" />\n\nAlthough the 6.0 theme has significant changes from 5.x, we provide a [v5.js](https://github.com/apache/echarts/blob/master/theme/v5.js) theme file for developers who want to use new features but keep the old style for quick migration.\n\n### 2. Dynamic Theme Switching\n\nIn previous versions, changing a chart\'s theme required disposing of the chart instance and re-initializing, which could negatively impact user experience due to repeated animations. In the new version, we implemented **dynamic theme switching** (see documentation), significantly improving the user experience.\n\n<img data-src="images/feature-v6/2-switch-themes.gif" width="600px" />\n\n### 3. Dark Mode Support\n\nWith dynamic theme registration and switching, a typical scenario is **listening to the system\'s dark mode and dynamically adjusting the chart\'s theme**.\n\n<img data-src="images/feature-v6/3-responsive-themes.gif" width="600px" />\n\nThis is crucial for business scenarios supporting dark mode, ensuring the application interface matches the system theme and greatly enhancing user experience.\n\nHere\'s how to listen for system dark mode and change the chart theme:\n\n```js\nconst darkModeMediaQuery = window.matchMedia(\'(prefers-color-scheme: dark)\');\nfunction updateDarkMode() {\n    const isDarkMode = darkModeMediaQuery.matches;\n    for (const chart of charts) {\n        chart.setTheme(isDarkMode ? \'dark\' : \'default\');\n    }\n}\ndarkModeMediaQuery.addEventListener(\'change\', () => {\n    updateDarkMode();\n});\n```\n\n### 4. New Chord Chart\n\nChord charts intuitively show flows and weights in complex relationship networks, ideal for scenarios like financial transactions and social networks. ECharts innovatively supports **using gradient colors from source and target nodes for edges, creating unique visual effects**. See [series-chord](${optionPath}series-chord).\n\n<img data-src="images/feature-v6/4-chord.gif" width="600px" />\n\n### 5. New Beeswarm Chart\n\nTraditional scatter plots can become overcrowded on category axes. Beeswarm charts use non-numeric axis offsets to **distribute points without overlap while preserving value axis accuracy**. Set [jitter](${optionPath}xAxis.jitter) to a non-zero value and [jitterOverlap](${optionPath}xAxis.jitterOverlap) to `false` to enable beeswarm charts.\n\n<img data-src="images/feature-v6/5-beeswarm.png" width="600px" />\n\n### 6. New Scatter Jittering\n\nScatter jittering adds random offsets to non-data dimensions, **solving the problem of overly dense data points**.\n\nWithout jittering, it\'s hard to see the distribution when data is dense:\n\n<img data-src="images/feature-v6/6-jittering-off.png" width="600px" />\n\nWith jittering enabled, the densest range (6-8) becomes clear. Compared to beeswarm, scatter jittering offers better performance.\n\n<img data-src="images/feature-v6/6-jittering-on.png" width="600px" />\n\nSet [jitter](${optionPath}xAxis.jitter) to a non-zero value and [jitterOverlap](${optionPath}xAxis.jitterOverlap) to `true` to enable scatter jittering.\n\n### 7. New Broken Axis\n\nBroken axis is a visualization technique for showing data with large magnitude differences. In ECharts 6.0, we innovatively implemented a **torn-paper effect for broken axes**, making the meaning more intuitive, and supporting click-to-expand to restore the real data ratio.\n\n<img data-src="images/feature-v6/7-break-axis.gif" width="600px" />\n\n### 8. Enhanced Stock Trading Charts\n\nECharts 6.0 deeply optimizes for financial trading scenarios, enhancing label positioning relative to coordinate systems to help developers quickly build professional-grade trading analysis tools.\n\nBelow is a comprehensive stock trading chart using ECharts, combining **time-sharing, MACD, volume, order book, and depth chart**:\n\n<img data-src="images/feature-v6/8-stock.png" width="600px" />\n\nThese examples help developers quickly meet financial trading needs. For example, displaying numbers in the four corners of the chart can be achieved with [relativeTo](${optionPath}series-line.markPoint.data.relativeTo).\n\n### 9. New Matrix Coordinate System\n\nThe above example also uses the new matrix coordinate system in ECharts 6.0, which is very powerful. It can be used for covariance matrix charts:\n\n<md-example src="matrix-covariance" width="600" height="700" />\n\nPeriodic table:\n\n<md-example src="matrix-periodic-table" width="100%" height="600" />\n\nAs a layout, it also allows developers to combine various chart types and components to create flexible and complex visualizations:\n\n<md-example src="matrix-grid-layout" width="100%" height="600" />\n\n### 10. Enhanced Custom Series\n\nPreviously, using ECharts custom series meant developers had to write complex `renderItem` logic from scratch, and code reuse was limited to copy-pasting. Now, ECharts 6.0 brings a standardized, reusable solution:\n\n- **Custom series registration**: Like theme registration, custom series can be dynamically registered and used as easily as built-in series. See [series-custom.renderItem](${optionPath}series-custom.renderItem)\n- **Official custom series project**: The official project at https://github.com/apache/echarts-custom-series provides multiple custom series, available via npm after the official release\n- **Publish your own custom series**: Submit a pull request to the above project or publish to your own repo for code reuse\n\n### 11. New Custom Charts\n\nThis release provides 6 practical custom charts in the custom series project. See [echarts-custom-series](https://github.com/apache/echarts-custom-series) for usage and documentation. Including **violin chart**:\n\n<img data-src="images/feature-v6/11-violin.png" width="600px" />\n\n**Contour chart**:\n\n<img data-src="images/feature-v6/11-contour.png" width="600px" />\n\n**Sleep stage chart**:\n\n<img data-src="images/feature-v6/11-stage.png" width="600px" />\n\n**Segmented doughnut chart**:\n\n<img data-src="images/feature-v6/11-segmentedDoughnut.png" width="600px" />\n\n**Bar range chart**:\n\n<img data-src="images/feature-v6/11-barRange.png" width="600px" />\n\n**Line range chart**:\n\n<img data-src="images/feature-v6/11-lineRange.png" width="600px" />\n\nUnleash your creativity and join us in creating more custom charts!\n\n### 12. Axis Label Optimization\n\nIn previous versions, axis labels and names in rectangular coordinate systems could easily overflow or overlap when data was long. Users couldn\'t always predict space needs as data changed. In this version, we\'ve optimized the default strategies to prevent overflow and overlap.\n\n## Upgrade Guide\n\nSee the full [changelog](${mainSitePath}changelog.html#v6-0-0) and [upgrade guide](${lang}/basics/release-note/v6-upgrade-guide).\n'}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/fa73816a85b29fbf7562.js b/docs/_nuxt/js/fa73816a85b29fbf7562.js
new file mode 100644
index 0000000..c0b16e7
--- /dev/null
+++ b/docs/_nuxt/js/fa73816a85b29fbf7562.js
@@ -0,0 +1,2 @@
+/*! For license information please see ../LICENSES */
+(window.webpackJsonp=window.webpackJsonp||[]).push([[1],[function(t,e,n){t.exports=n(171)},,function(t,e,n){"use strict";function r(t,e,n,r,o,c,f){try{var l=t[c](f),h=l.value}catch(t){return void n(t)}l.done?e(h):Promise.resolve(h).then(r,o)}function o(t){return function(){var e=this,n=arguments;return new Promise((function(o,c){var f=t.apply(e,n);function l(t){r(f,o,c,l,h,"next",t)}function h(t){r(f,o,c,l,h,"throw",t)}l(void 0)}))}}n.d(e,"a",(function(){return o}))},function(t,e,n){"use strict";n.d(e,"a",(function(){return f}));var r=n(74);var o=n(46),c=n(75);function f(t,i){return Object(r.a)(t)||function(t,i){var e=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=e){var n,r,o=[],c=!0,f=!1;try{for(e=e.call(t);!(c=(n=e.next()).done)&&(o.push(n.value),!i||o.length!==i);c=!0);}catch(t){f=!0,r=t}finally{try{c||null==e.return||e.return()}finally{if(f)throw r}}return o}}(t,i)||Object(o.a)(t,i)||Object(c.a)()}},function(t,e,n){var r=n(6),o=n(30),c=n(31),f=n(14),l=n(33),h=function(t,e,source){var n,d,v,m,y=t&h.F,_=t&h.G,w=t&h.S,x=t&h.P,O=t&h.B,S=_?r:w?r[e]||(r[e]={}):(r[e]||{}).prototype,$=_?o:o[e]||(o[e]={}),A=$.prototype||($.prototype={});for(n in _&&(source=e),source)v=((d=!y&&S&&void 0!==S[n])?S:source)[n],m=O&&d?l(v,r):x&&"function"==typeof v?l(Function.call,v):v,S&&f(S,n,v,t&h.U),$[n]!=v&&c($,n,m),x&&A[n]!=v&&(A[n]=v)};r.core=o,h.F=1,h.G=2,h.S=4,h.P=8,h.B=16,h.W=32,h.U=64,h.R=128,t.exports=h},function(t,e,n){var r=n(65)("wks"),o=n(51),c=n(6).Symbol,f="function"==typeof c;(t.exports=function(t){return r[t]||(r[t]=f&&c[t]||(f?c:o)("Symbol."+t))}).store=r},function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(t,e,n){"use strict";function r(t,e,n,r,o,c,f,l){var h,d="function"==typeof t?t.options:t;if(e&&(d.render=e,d.staticRenderFns=n,d._compiled=!0),r&&(d.functional=!0),c&&(d._scopeId="data-v-"+c),f?(h=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),o&&o.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(f)},d._ssrRegister=h):o&&(h=l?function(){o.call(this,(d.functional?this.parent:this).$root.$options.shadowRoot)}:o),h)if(d.functional){d._injectStyles=h;var v=d.render;d.render=function(t,e){return h.call(e),v(t,e)}}else{var m=d.beforeCreate;d.beforeCreate=m?[].concat(m,h):[h]}return{exports:t,options:d}}n.d(e,"a",(function(){return r}))},function(t,e,n){var r=n(13);t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,n){t.exports=!n(9)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},function(t,e,n){"use strict";function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}n.d(e,"a",(function(){return r}))},function(t,e,n){var r=n(8),o=n(109),c=n(64),f=Object.defineProperty;e.f=n(10)?Object.defineProperty:function(t,e,n){if(r(t),e=c(e,!0),r(n),o)try{return f(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,e,n){var r=n(6),o=n(31),c=n(32),f=n(51)("src"),l=n(146),h="toString",d=(""+l).split(h);n(30).inspectSource=function(t){return l.call(t)},(t.exports=function(t,e,n,l){var h="function"==typeof n;h&&(c(n,"name")||o(n,"name",e)),t[e]!==n&&(h&&(c(n,f)||o(n,f,t[e]?""+t[e]:d.join(String(e)))),t===r?t[e]=n:l?t[e]?t[e]=n:o(t,e,n):(delete t[e],o(t,e,n)))})(Function.prototype,h,(function(){return"function"==typeof this&&this[f]||l.call(this)}))},function(t,e,n){"use strict";var r=n(6),o=n(32),c=n(10),f=n(4),l=n(14),h=n(80).KEY,d=n(9),v=n(65),m=n(54),y=n(51),_=n(5),w=n(111),x=n(147),O=n(148),S=n(114),$=n(8),A=n(13),k=n(39),C=n(22),E=n(64),T=n(50),j=n(68),I=n(150),M=n(57),P=n(67),N=n(12),L=n(38),R=M.f,F=N.f,D=I.f,U=r.Symbol,H=r.JSON,B=H&&H.stringify,V=_("_hidden"),z=_("toPrimitive"),K={}.propertyIsEnumerable,W=v("symbol-registry"),G=v("symbols"),J=v("op-symbols"),Q=Object.prototype,X="function"==typeof U&&!!P.f,Y=r.QObject,Z=!Y||!Y.prototype||!Y.prototype.findChild,tt=c&&d((function(){return 7!=j(F({},"a",{get:function(){return F(this,"a",{value:7}).a}})).a}))?function(t,e,n){var r=R(Q,e);r&&delete Q[e],F(t,e,n),r&&t!==Q&&F(Q,e,r)}:F,et=function(t){var e=G[t]=j(U.prototype);return e._k=t,e},nt=X&&"symbol"==typeof U.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof U},ot=function(t,e,n){return t===Q&&ot(J,e,n),$(t),e=E(e,!0),$(n),o(G,e)?(n.enumerable?(o(t,V)&&t[V][e]&&(t[V][e]=!1),n=j(n,{enumerable:T(0,!1)})):(o(t,V)||F(t,V,T(1,{})),t[V][e]=!0),tt(t,e,n)):F(t,e,n)},it=function(t,e){$(t);for(var n,r=O(e=C(e)),i=0,o=r.length;o>i;)ot(t,n=r[i++],e[n]);return t},at=function(t){var e=K.call(this,t=E(t,!0));return!(this===Q&&o(G,t)&&!o(J,t))&&(!(e||!o(this,t)||!o(G,t)||o(this,V)&&this[V][t])||e)},st=function(t,e){if(t=C(t),e=E(e,!0),t!==Q||!o(G,e)||o(J,e)){var n=R(t,e);return!n||!o(G,e)||o(t,V)&&t[V][e]||(n.enumerable=!0),n}},ct=function(t){for(var e,n=D(C(t)),r=[],i=0;n.length>i;)o(G,e=n[i++])||e==V||e==h||r.push(e);return r},ut=function(t){for(var e,n=t===Q,r=D(n?J:C(t)),c=[],i=0;r.length>i;)!o(G,e=r[i++])||n&&!o(Q,e)||c.push(G[e]);return c};X||(U=function(){if(this instanceof U)throw TypeError("Symbol is not a constructor!");var t=y(arguments.length>0?arguments[0]:void 0),e=function(n){this===Q&&e.call(J,n),o(this,V)&&o(this[V],t)&&(this[V][t]=!1),tt(this,t,T(1,n))};return c&&Z&&tt(Q,t,{configurable:!0,set:e}),et(t)},l(U.prototype,"toString",(function(){return this._k})),M.f=st,N.f=ot,n(56).f=I.f=ct,n(55).f=at,P.f=ut,c&&!n(52)&&l(Q,"propertyIsEnumerable",at,!0),w.f=function(t){return et(_(t))}),f(f.G+f.W+f.F*!X,{Symbol:U});for(var ft="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),lt=0;ft.length>lt;)_(ft[lt++]);for(var pt=L(_.store),ht=0;pt.length>ht;)x(pt[ht++]);f(f.S+f.F*!X,"Symbol",{for:function(t){return o(W,t+="")?W[t]:W[t]=U(t)},keyFor:function(t){if(!nt(t))throw TypeError(t+" is not a symbol!");for(var e in W)if(W[e]===t)return e},useSetter:function(){Z=!0},useSimple:function(){Z=!1}}),f(f.S+f.F*!X,"Object",{create:function(t,e){return void 0===e?j(t):it(j(t),e)},defineProperty:ot,defineProperties:it,getOwnPropertyDescriptor:st,getOwnPropertyNames:ct,getOwnPropertySymbols:ut});var vt=d((function(){P.f(1)}));f(f.S+f.F*vt,"Object",{getOwnPropertySymbols:function(t){return P.f(k(t))}}),H&&f(f.S+f.F*(!X||d((function(){var t=U();return"[null]"!=B([t])||"{}"!=B({a:t})||"{}"!=B(Object(t))}))),"JSON",{stringify:function(t){for(var e,n,r=[t],i=1;arguments.length>i;)r.push(arguments[i++]);if(n=e=r[1],(A(e)||void 0!==t)&&!nt(t))return S(e)||(e=function(t,e){if("function"==typeof n&&(e=n.call(this,t,e)),!nt(e))return e}),r[1]=e,B.apply(H,r)}}),U.prototype[z]||n(31)(U.prototype,z,U.prototype.valueOf),m(U,"Symbol"),m(Math,"Math",!0),m(r.JSON,"JSON",!0)},function(t,e,n){"use strict";function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}n.d(e,"a",(function(){return r}))},function(t,e,n){"use strict";var r=n(69),o={};o[n(5)("toStringTag")]="z",o+""!="[object z]"&&n(14)(Object.prototype,"toString",(function(){return"[object "+r(this)+"]"}),!0)},function(t,e,n){var r=n(53),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},function(t,e,n){var r=n(12).f,o=Function.prototype,c=/^\s*function ([^ (]*)/,f="name";f in o||n(10)&&r(o,f,{configurable:!0,get:function(){try{return(""+this).match(c)[1]}catch(t){return""}}})},function(t,e,n){"use strict";var r=n(4),o=n(92)(1);r(r.P+r.F*!n(124)([].map,!0),"Array",{map:function(t){return o(this,t,arguments[1])}})},function(t,e,n){"use strict";var r=n(4),html=n(79),o=n(34),c=n(110),f=n(18),l=[].slice;r(r.P+r.F*n(9)((function(){html&&l.call(html)})),"Array",{slice:function(t,e){var n=f(this.length),r=o(this);if(e=void 0===e?n:e,"Array"==r)return l.call(this,t,e);for(var h=c(t,n),d=c(e,n),v=f(d-h),m=new Array(v),i=0;i<v;i++)m[i]="String"==r?this.charAt(h+i):this[h+i];return m}})},function(t,e,n){var r=n(81),o=n(37);t.exports=function(t){return r(o(t))}},function(t,e,n){"use strict";var r=n(4),o=n(92)(2);r(r.P+r.F*!n(124)([].filter,!0),"Array",{filter:function(t){return o(this,t,arguments[1])}})},function(t,e,n){var r=n(39),o=n(38);n(125)("keys",(function(){return function(t){return o(r(t))}}))},function(t,e,n){"use strict";n.d(e,"a",(function(){return bt})),n.d(e,"b",(function(){return mt})),n.d(e,"c",(function(){return gt})),n.d(e,"d",(function(){return ht})),n.d(e,"e",(function(){return ut}));n(19),n(15),n(35),n(28),n(29),n(41),n(42);var r=n(3),o=n(11),c=n(74),f=n(76),l=n(46),h=n(75);function d(t){return Object(c.a)(t)||Object(f.a)(t)||Object(l.a)(t)||Object(h.a)()}var v=n(16);function m(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function y(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}n(49),n(45),n(63),n(20),n(24),n(127),n(73),n(143),n(21),n(23),n(17),n(100),n(101);function _(object,t){var e=Object.keys(object);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(object);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(object,t).enumerable}))),e.push.apply(e,n)}return e}function w(t){for(var i=1;i<arguments.length;i++){var source=null!=arguments[i]?arguments[i]:{};i%2?_(Object(source),!0).forEach((function(e){Object(o.a)(t,e,source[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(source)):_(Object(source)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(source,e))}))}return t}function x(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return O(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return O(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var i=0,r=function(){};return{s:r,n:function(){return i>=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,c=!0,f=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return c=t.done,t},e:function(t){f=!0,o=t},f:function(){try{c||null==n.return||n.return()}finally{if(f)throw o}}}}function O(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,n=new Array(e);i<e;i++)n[i]=t[i];return n}var S=/[^\0-\x7E]/,$=/[\x2E\u3002\uFF0E\uFF61]/g,A={overflow:"Overflow Error","not-basic":"Illegal Input","invalid-input":"Invalid Input"},k=Math.floor,C=String.fromCharCode;function E(t){throw new RangeError(A[t])}var T=function(t,e){return t+22+75*(t<26)-((0!=e)<<5)},u=function(t,e,n){var r=0;for(t=n?k(t/700):t>>1,t+=k(t/e);t>455;r+=36)t=k(t/35);return k(r+36*t/(t+38))};function j(t){return function(t,e){var n=t.split("@"),r="";n.length>1&&(r=n[0]+"@",t=n[1]);var o=function(t,e){for(var n=[],r=t.length;r--;)n[r]=e(t[r]);return n}((t=t.replace($,".")).split("."),(function(t){return S.test(t)?"xn--"+function(t){var e,n=[],r=(t=function(t){for(var e=[],n=0,r=t.length;n<r;){var o=t.charCodeAt(n++);if(o>=55296&&o<=56319&&n<r){var c=t.charCodeAt(n++);56320==(64512&c)?e.push(((1023&o)<<10)+(1023&c)+65536):(e.push(o),n--)}else e.push(o)}return e}(t)).length,o=128,i=0,c=72,f=x(t);try{for(f.s();!(e=f.n()).done;){var l=e.value;l<128&&n.push(C(l))}}catch(t){f.e(t)}finally{f.f()}var h=n.length,p=h;for(h&&n.push("-");p<r;){var d,v=2147483647,m=x(t);try{for(m.s();!(d=m.n()).done;){var y=d.value;y>=o&&y<v&&(v=y)}}catch(t){m.e(t)}finally{m.f()}var a=p+1;v-o>k((2147483647-i)/a)&&E("overflow"),i+=(v-o)*a,o=v;var _,w=x(t);try{for(w.s();!(_=w.n()).done;){var O=_.value;if(O<o&&++i>2147483647&&E("overflow"),O==o){for(var S=i,$=36;;$+=36){var A=$<=c?1:$>=c+26?26:$-c;if(S<A)break;var j=S-A,I=36-A;n.push(C(T(A+j%I,0))),S=k(j/I)}n.push(C(T(S,0))),c=u(i,a,p==h),i=0,++p}}}catch(t){w.e(t)}finally{w.f()}++i,++o}return n.join("")}(t):t})).join(".");return r+o}(t)}var I=/#/g,M=/&/g,P=/=/g,N=/\?/g,L=/\+/g,R=/%5B/gi,F=/%5D/gi,D=/%5E/gi,U=/%60/gi,H=/%7B/gi,B=/%7C/gi,V=/%7D/gi,z=/%20/gi,K=/%2F/gi,W=/%252F/gi;function G(text){return encodeURI(""+text).replace(B,"|").replace(R,"[").replace(F,"]")}function J(text){return G(text).replace(L,"%2B").replace(z,"+").replace(I,"%23").replace(M,"%26").replace(U,"`").replace(H,"{").replace(V,"}").replace(D,"^")}function Q(text){return J(text).replace(P,"%3D")}function X(text){return G(text).replace(I,"%23").replace(N,"%3F").replace(W,"%2F").replace(M,"%26").replace(L,"%2B")}function Y(){var text=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";try{return decodeURIComponent(""+text)}catch(t){return""+text}}function Z(text){return Y(text.replace(K,"%252F"))}function tt(text){return Y(text.replace(L," "))}function et(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return j(t)}function nt(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e={};"?"===t[0]&&(t=t.substr(1));var n,r=x(t.split("&"));try{for(r.s();!(n=r.n()).done;){var param=n.value,o=param.match(/([^=]+)=?(.*)/)||[];if(!(o.length<2)){var c=Y(o[1]);if("__proto__"!==c&&"constructor"!==c){var f=tt(o[2]||"");e[c]?Array.isArray(e[c])?e[c].push(f):e[c]=[e[c],f]:e[c]=f}}}}catch(t){r.e(t)}finally{r.f()}return e}function ot(t){return Object.keys(t).map((function(e){return n=e,(r=t[e])?Array.isArray(r)?r.map((function(t){return"".concat(Q(n),"=").concat(J(t))})).join("&"):"".concat(Q(n),"=").concat(J(r)):Q(n);var n,r})).join("&")}var it=function(){function t(){var input=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";if(m(this,t),this.query={},"string"!=typeof input)throw new TypeError("URL input should be string received ".concat(Object(v.a)(input)," (").concat(input,")"));var e=_t(input);this.protocol=Y(e.protocol),this.host=Y(e.host),this.auth=Y(e.auth),this.pathname=Z(e.pathname),this.query=nt(e.search),this.hash=Y(e.hash)}var e,n,r;return e=t,(n=[{key:"hostname",get:function(){return Ot(this.host).hostname}},{key:"port",get:function(){return Ot(this.host).port||""}},{key:"username",get:function(){return xt(this.auth).username}},{key:"password",get:function(){return xt(this.auth).password||""}},{key:"hasProtocol",get:function(){return this.protocol.length}},{key:"isAbsolute",get:function(){return this.hasProtocol||"/"===this.pathname[0]}},{key:"search",get:function(){var q=ot(this.query);return q.length?"?"+q:""}},{key:"searchParams",get:function(){var t=this,p=new URLSearchParams,e=function(e){var n=t.query[e];Array.isArray(n)?n.forEach((function(t){return p.append(e,t)})):p.append(e,n||"")};for(var n in this.query)e(n);return p}},{key:"origin",get:function(){return(this.protocol?this.protocol+"//":"")+et(this.host)}},{key:"fullpath",get:function(){return X(this.pathname)+this.search+G(this.hash).replace(H,"{").replace(V,"}").replace(D,"^")}},{key:"encodedAuth",get:function(){if(!this.auth)return"";var t=xt(this.auth),e=t.username,n=t.password;return encodeURIComponent(e)+(n?":"+encodeURIComponent(n):"")}},{key:"href",get:function(){var t=this.encodedAuth,e=(this.protocol?this.protocol+"//":"")+(t?t+"@":"")+et(this.host);return this.hasProtocol&&this.isAbsolute?e+this.fullpath:this.fullpath}},{key:"append",value:function(t){if(t.hasProtocol)throw new Error("Cannot append a URL with protocol");Object.assign(this.query,t.query),t.pathname&&(this.pathname=ft(this.pathname)+pt(t.pathname)),t.hash&&(this.hash=t.hash)}},{key:"toJSON",value:function(){return this.href}},{key:"toString",value:function(){return this.href}}])&&y(e.prototype,n),r&&y(e,r),Object.defineProperty(e,"prototype",{writable:!1}),t}();function at(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return/^\w+:\/\/.+/.test(t)||e&&/^\/\/[^/]+/.test(t)}var st=/\/$|\/\?/;function ct(){var input=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return t?st.test(input):input.endsWith("/")}function ut(){var input=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!t)return(ct(input)?input.slice(0,-1):input)||"/";if(!ct(input,!0))return input||"/";var e=input.split("?"),n=d(e),r=n[0],s=n.slice(1);return(r.slice(0,-1)||"/")+(s.length?"?".concat(s.join("?")):"")}function ft(){var input=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!t)return input.endsWith("/")?input:input+"/";if(ct(input,!0))return input||"/";var e=input.split("?"),n=d(e),r=n[0],s=n.slice(1);return r+"/"+(s.length?"?".concat(s.join("?")):"")}function lt(){var input=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return input.startsWith("/")}function pt(){var input=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return(lt(input)?input.substr(1):input)||"/"}function ht(input,t){var e=_t(input),n=w(w({},nt(e.search)),t);return e.search=ot(n),function(t){var e=t.pathname+(t.search?(t.search.startsWith("?")?"":"?")+t.search:"")+t.hash;if(!t.protocol)return e;return t.protocol+"//"+(t.auth?t.auth+"@":"")+t.host+e}(e)}function vt(t){return t&&"/"!==t}function mt(base){for(var t=base||"",e=arguments.length,input=new Array(e>1?e-1:0),n=1;n<e;n++)input[n-1]=arguments[n];var r,o=x(input.filter(vt));try{for(o.s();!(r=o.n()).done;){var i=r.value;t=t?ft(t)+pt(i):i}}catch(t){o.e(t)}finally{o.f()}return t}function yt(input){return new it(input)}function gt(input){return yt(input).toString()}function bt(t,e){return Y(ut(t))===Y(ut(e))}function _t(){var input=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0;if(!at(input,!0))return t?_t(t+input):wt(input);var e=(input.replace(/\\/g,"/").match(/([^:/]+:)?\/\/([^/@]+@)?(.*)/)||[]).splice(1),n=Object(r.a)(e,3),o=n[0],c=void 0===o?"":o,f=n[1],l=n[2],h=(l.match(/([^/?#]*)(.*)?/)||[]).splice(1),d=Object(r.a)(h,2),v=d[0],m=void 0===v?"":v,y=d[1],path=void 0===y?"":y,_=wt(path),w=_.pathname,x=_.search,O=_.hash;return{protocol:c,auth:f?f.substr(0,f.length-1):"",host:m,pathname:w,search:x,hash:O}}function wt(){var input=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=(input.match(/([^#?]*)(\?[^#]*)?(#.*)?/)||[]).splice(1),e=Object(r.a)(t,3),n=e[0],o=void 0===n?"":n,c=e[1],f=void 0===c?"":c,l=e[2],h=void 0===l?"":l;return{pathname:o,search:f,hash:h}}function xt(){var input=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=input.split(":"),e=Object(r.a)(t,2),n=e[0],o=e[1];return{username:Y(n),password:Y(o)}}function Ot(){var input=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=(input.match(/([^/]*)(:0-9+)?/)||[]).splice(1),e=Object(r.a)(t,2),n=e[0],o=e[1];return{hostname:Y(n),port:o}}},,function(t,e,n){var r=function(t){"use strict";var e,n=Object.prototype,r=n.hasOwnProperty,o=Object.defineProperty||function(t,e,desc){t[e]=desc.value},c="function"==typeof Symbol?Symbol:{},f=c.iterator||"@@iterator",l=c.asyncIterator||"@@asyncIterator",h=c.toStringTag||"@@toStringTag";function d(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{d({},"")}catch(t){d=function(t,e,n){return t[e]=n}}function v(t,e,n,r){var c=e&&e.prototype instanceof O?e:O,f=Object.create(c.prototype),l=new L(r||[]);return o(f,"_invoke",{value:I(t,n,l)}),f}function m(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}t.wrap=v;var y="suspendedStart",_="executing",w="completed",x={};function O(){}function S(){}function $(){}var A={};d(A,f,(function(){return this}));var k=Object.getPrototypeOf,C=k&&k(k(R([])));C&&C!==n&&r.call(C,f)&&(A=C);var E=$.prototype=O.prototype=Object.create(A);function T(t){["next","throw","return"].forEach((function(e){d(t,e,(function(t){return this._invoke(e,t)}))}))}function j(t,e){function n(o,c,f,l){var h=m(t[o],t,c);if("throw"!==h.type){var d=h.arg,v=d.value;return v&&"object"==typeof v&&r.call(v,"__await")?e.resolve(v.__await).then((function(t){n("next",t,f,l)}),(function(t){n("throw",t,f,l)})):e.resolve(v).then((function(t){d.value=t,f(d)}),(function(t){return n("throw",t,f,l)}))}l(h.arg)}var c;o(this,"_invoke",{value:function(t,r){function o(){return new e((function(e,o){n(t,r,e,o)}))}return c=c?c.then(o,o):o()}})}function I(t,e,n){var r=y;return function(o,c){if(r===_)throw new Error("Generator is already running");if(r===w){if("throw"===o)throw c;return F()}for(n.method=o,n.arg=c;;){var f=n.delegate;if(f){var l=M(f,n);if(l){if(l===x)continue;return l}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(r===y)throw r=w,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r=_;var h=m(t,e,n);if("normal"===h.type){if(r=n.done?w:"suspendedYield",h.arg===x)continue;return{value:h.arg,done:n.done}}"throw"===h.type&&(r=w,n.method="throw",n.arg=h.arg)}}}function M(t,n){var r=t.iterator[n.method];if(r===e){if(n.delegate=null,"throw"===n.method){if(t.iterator.return&&(n.method="return",n.arg=e,M(t,n),"throw"===n.method))return x;n.method="throw",n.arg=new TypeError("The iterator does not provide a 'throw' method")}return x}var o=m(r,t.iterator,n.arg);if("throw"===o.type)return n.method="throw",n.arg=o.arg,n.delegate=null,x;var c=o.arg;return c?c.done?(n[t.resultName]=c.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,x):c:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,x)}function P(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function N(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function L(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(P,this),this.reset(!0)}function R(t){if(t){var n=t[f];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var i=-1,o=function n(){for(;++i<t.length;)if(r.call(t,i))return n.value=t[i],n.done=!1,n;return n.value=e,n.done=!0,n};return o.next=o}}return{next:F}}function F(){return{value:e,done:!0}}return S.prototype=$,o(E,"constructor",{value:$,configurable:!0}),o($,"constructor",{value:S,configurable:!0}),S.displayName=d($,h,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===S||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,$):(t.__proto__=$,d(t,h,"GeneratorFunction")),t.prototype=Object.create(E),t},t.awrap=function(t){return{__await:t}},T(j.prototype),d(j.prototype,l,(function(){return this})),t.AsyncIterator=j,t.async=function(e,n,r,o,c){void 0===c&&(c=Promise);var f=new j(v(e,n,r,o),c);return t.isGeneratorFunction(n)?f:f.next().then((function(t){return t.done?t.value:f.next()}))},T(E),d(E,h,"Generator"),d(E,f,(function(){return this})),d(E,"toString",(function(){return"[object Generator]"})),t.keys=function(t){var object=Object(t),e=[];for(var n in object)e.push(n);return e.reverse(),function t(){for(;e.length;){var n=e.pop();if(n in object)return t.value=n,t.done=!1,t}return t.done=!0,t}},t.values=R,L.prototype={constructor:L,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(N),!t)for(var n in this)"t"===n.charAt(0)&&r.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function o(r,o){return f.type="throw",f.arg=t,n.next=r,o&&(n.method="next",n.arg=e),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var c=this.tryEntries[i],f=c.completion;if("root"===c.tryLoc)return o("end");if(c.tryLoc<=this.prev){var l=r.call(c,"catchLoc"),h=r.call(c,"finallyLoc");if(l&&h){if(this.prev<c.catchLoc)return o(c.catchLoc,!0);if(this.prev<c.finallyLoc)return o(c.finallyLoc)}else if(l){if(this.prev<c.catchLoc)return o(c.catchLoc,!0)}else{if(!h)throw new Error("try statement without catch or finally");if(this.prev<c.finallyLoc)return o(c.finallyLoc)}}}},abrupt:function(t,e){for(var i=this.tryEntries.length-1;i>=0;--i){var n=this.tryEntries[i];if(n.tryLoc<=this.prev&&r.call(n,"finallyLoc")&&this.prev<n.finallyLoc){var o=n;break}}o&&("break"===t||"continue"===t)&&o.tryLoc<=e&&e<=o.finallyLoc&&(o=null);var c=o?o.completion:{};return c.type=t,c.arg=e,o?(this.method="next",this.next=o.finallyLoc,x):this.complete(c)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),x},finish:function(t){for(var i=this.tryEntries.length-1;i>=0;--i){var e=this.tryEntries[i];if(e.finallyLoc===t)return this.complete(e.completion,e.afterLoc),N(e),x}},catch:function(t){for(var i=this.tryEntries.length-1;i>=0;--i){var e=this.tryEntries[i];if(e.tryLoc===t){var n=e.completion;if("throw"===n.type){var r=n.arg;N(e)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:R(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),x}},t}(t.exports);try{regeneratorRuntime=r}catch(t){"object"==typeof globalThis?globalThis.regeneratorRuntime=r:Function("r","regeneratorRuntime = r")(r)}},function(t,e,n){"use strict";var r=n(126)(!0);n(86)(String,"String",(function(t){this._t=String(t),this._i=0}),(function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=r(e,n),this._i+=t.length,{value:t,done:!1})}))},function(t,e,n){for(var r=n(119),o=n(38),c=n(14),f=n(6),l=n(31),h=n(58),d=n(5),v=d("iterator"),m=d("toStringTag"),y=h.Array,_={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},w=o(_),i=0;i<w.length;i++){var x,O=w[i],S=_[O],$=f[O],A=$&&$.prototype;if(A&&(A[v]||l(A,v,y),A[m]||l(A,m,O),h[O]=y,S))for(x in r)A[x]||c(A,x,r[x],!0)}},function(t,e){var n=t.exports={version:"2.6.12"};"number"==typeof __e&&(__e=n)},function(t,e,n){var r=n(12),o=n(50);t.exports=n(10)?function(object,t,e){return r.f(object,t,o(1,e))}:function(object,t,e){return object[t]=e,object}},function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},function(t,e,n){var r=n(66);t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(a){return t.call(e,a)};case 2:return function(a,b){return t.call(e,a,b)};case 3:return function(a,b,n){return t.call(e,a,b,n)}}return function(){return t.apply(e,arguments)}}},function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(t,e,n){"use strict";var r=n(33),o=n(4),c=n(39),f=n(115),l=n(116),h=n(18),d=n(117),v=n(118);o(o.S+o.F*!n(84)((function(t){Array.from(t)})),"Array",{from:function(t){var e,n,o,m,y=c(t),_="function"==typeof this?this:Array,w=arguments.length,x=w>1?arguments[1]:void 0,O=void 0!==x,S=0,$=v(y);if(O&&(x=r(x,w>2?arguments[2]:void 0,2)),null==$||_==Array&&l($))for(n=new _(e=h(y.length));e>S;S++)d(n,S,O?x(y[S],S):y[S]);else for(m=$.call(y),n=new _;!(o=m.next()).done;S++)d(n,S,O?f(m,x,[o.value,S],!0):o.value);return n.length=S,n}})},function(t,e,n){"use strict";var r=n(4),o=n(113)(!0);r(r.P,"Array",{includes:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),n(85)("includes")},function(t,e){t.exports=function(t){if(null==t)throw TypeError("Can't call method on  "+t);return t}},function(t,e,n){var r=n(112),o=n(83);t.exports=Object.keys||function(t){return r(t,o)}},function(t,e,n){var r=n(37);t.exports=function(t){return Object(r(t))}},function(t,e,n){"use strict";var r=n(4),o=n(93),c="includes";r(r.P+r.F*n(95)(c),"String",{includes:function(t){return!!~o(this,t,c).indexOf(t,arguments.length>1?arguments[1]:void 0)}})},function(t,e,n){var r=n(22),o=n(57).f;n(125)("getOwnPropertyDescriptor",(function(){return function(t,e){return o(r(t),e)}}))},function(t,e,n){var r=n(4),o=n(163),c=n(22),f=n(57),l=n(117);r(r.S,"Object",{getOwnPropertyDescriptors:function(object){for(var t,desc,e=c(object),n=f.f,r=o(e),h={},i=0;r.length>i;)void 0!==(desc=n(e,t=r[i++]))&&l(h,t,desc);return h}})},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});const r=/[^\0-\x7E]/,o=/[\x2E\u3002\uFF0E\uFF61]/g,c={overflow:"Overflow Error","not-basic":"Illegal Input","invalid-input":"Invalid Input"},f=Math.floor,l=String.fromCharCode;function s(t){throw new RangeError(c[t])}const h=function(t,e){return t+22+75*(t<26)-((0!=e)<<5)},u=function(t,e,n){let r=0;for(t=n?f(t/700):t>>1,t+=f(t/e);t>455;r+=36)t=f(t/35);return f(r+36*t/(t+38))};function d(t){return function(t,e){const n=t.split("@");let c="";n.length>1&&(c=n[0]+"@",t=n[1]);const d=function(t,e){const n=[];let r=t.length;for(;r--;)n[r]=e(t[r]);return n}((t=t.replace(o,".")).split("."),(function(t){return r.test(t)?"xn--"+function(t){const e=[],n=(t=function(t){const e=[];let n=0;const r=t.length;for(;n<r;){const o=t.charCodeAt(n++);if(o>=55296&&o<=56319&&n<r){const r=t.charCodeAt(n++);56320==(64512&r)?e.push(((1023&o)<<10)+(1023&r)+65536):(e.push(o),n--)}else e.push(o)}return e}(t)).length;let r=128,i=0,o=72;for(const n of t)n<128&&e.push(l(n));const c=e.length;let p=c;for(c&&e.push("-");p<n;){let n=2147483647;for(const e of t)e>=r&&e<n&&(n=e);const a=p+1;n-r>f((2147483647-i)/a)&&s("overflow"),i+=(n-r)*a,r=n;for(const n of t)if(n<r&&++i>2147483647&&s("overflow"),n==r){let t=i;for(let n=36;;n+=36){const r=n<=o?1:n>=o+26?26:n-o;if(t<r)break;const c=t-r,d=36-r;e.push(l(h(r+c%d,0))),t=f(c/d)}e.push(l(h(t,0))),o=u(i,a,p==c),i=0,++p}++i,++r}return e.join("")}(t):t})).join(".");return c+d}(t)}const v=/#/g,m=/&/g,y=/\//g,_=/=/g,w=/\?/g,x=/\+/g,O=/%5B/gi,S=/%5D/gi,$=/%5E/gi,A=/%60/gi,k=/%7B/gi,C=/%7C/gi,E=/%7D/gi,T=/%20/gi,j=/%2F/gi,I=/%252F/gi;function M(text){return encodeURI(""+text).replace(C,"|").replace(O,"[").replace(S,"]")}function P(text){return M(text).replace(k,"{").replace(E,"}").replace($,"^")}function N(text){return M(text).replace(x,"%2B").replace(T,"+").replace(v,"%23").replace(m,"%26").replace(A,"`").replace(k,"{").replace(E,"}").replace($,"^")}function L(text){return N(text).replace(_,"%3D")}function R(text){return M(text).replace(v,"%23").replace(w,"%3F").replace(I,"%2F").replace(m,"%26").replace(x,"%2B")}function F(text=""){try{return decodeURIComponent(""+text)}catch(t){return""+text}}function D(text){return F(text.replace(j,"%252F"))}function U(text){return F(text.replace(x," "))}function H(t=""){return d(t)}function B(t=""){const e={};"?"===t[0]&&(t=t.substr(1));for(const param of t.split("&")){const s=param.match(/([^=]+)=?(.*)/)||[];if(s.length<2)continue;const t=F(s[1]);if("__proto__"===t||"constructor"===t)continue;const n=U(s[2]||"");e[t]?Array.isArray(e[t])?e[t].push(n):e[t]=[e[t],n]:e[t]=n}return e}function V(t,e){return e?Array.isArray(e)?e.map((e=>`${L(t)}=${N(e)}`)).join("&"):`${L(t)}=${N(e)}`:L(t)}function z(t){return Object.keys(t).map((e=>V(e,t[e]))).join("&")}class K{constructor(input=""){if(this.query={},"string"!=typeof input)throw new TypeError(`URL input should be string received ${typeof input} (${input})`);const t=it(input);this.protocol=F(t.protocol),this.host=F(t.host),this.auth=F(t.auth),this.pathname=D(t.pathname),this.query=B(t.search),this.hash=F(t.hash)}get hostname(){return ct(this.host).hostname}get port(){return ct(this.host).port||""}get username(){return st(this.auth).username}get password(){return st(this.auth).password||""}get hasProtocol(){return this.protocol.length}get isAbsolute(){return this.hasProtocol||"/"===this.pathname[0]}get search(){const q=z(this.query);return q.length?"?"+q:""}get searchParams(){const p=new URLSearchParams;for(const t in this.query){const e=this.query[t];Array.isArray(e)?e.forEach((e=>p.append(t,e))):p.append(t,e||"")}return p}get origin(){return(this.protocol?this.protocol+"//":"")+H(this.host)}get fullpath(){return R(this.pathname)+this.search+P(this.hash)}get encodedAuth(){if(!this.auth)return"";const{username:t,password:e}=st(this.auth);return encodeURIComponent(t)+(e?":"+encodeURIComponent(e):"")}get href(){const t=this.encodedAuth,e=(this.protocol?this.protocol+"//":"")+(t?t+"@":"")+H(this.host);return this.hasProtocol&&this.isAbsolute?e+this.fullpath:this.fullpath}append(t){if(t.hasProtocol)throw new Error("Cannot append a URL with protocol");Object.assign(this.query,t.query),t.pathname&&(this.pathname=X(this.pathname)+Z(t.pathname)),t.hash&&(this.hash=t.hash)}toJSON(){return this.href}toString(){return this.href}}function W(t,e=!1){return/^\w+:\/\/.+/.test(t)||e&&/^\/\/[^/]+/.test(t)}const G=/\/$|\/\?/;function J(input="",t=!1){return t?G.test(input):input.endsWith("/")}function Q(input="",t=!1){if(!t)return(J(input)?input.slice(0,-1):input)||"/";if(!J(input,!0))return input||"/";const[e,...s]=input.split("?");return(e.slice(0,-1)||"/")+(s.length?`?${s.join("?")}`:"")}function X(input="",t=!1){if(!t)return input.endsWith("/")?input:input+"/";if(J(input,!0))return input||"/";const[e,...s]=input.split("?");return e+"/"+(s.length?`?${s.join("?")}`:"")}function Y(input=""){return input.startsWith("/")}function Z(input=""){return(Y(input)?input.substr(1):input)||"/"}function tt(t){return!t||"/"===t}function et(t){return t&&"/"!==t}function nt(base,...input){let t=base||"";for(const i of input.filter(et))t=t?X(t)+Z(i):i;return t}function ot(input){return new K(input)}function it(input="",t){if(!W(input,!0))return t?it(t+input):at(input);const[e="",n,r]=(input.replace(/\\/g,"/").match(/([^:/]+:)?\/\/([^/@]+@)?(.*)/)||[]).splice(1),[o="",path=""]=(r.match(/([^/?#]*)(.*)?/)||[]).splice(1),{pathname:c,search:f,hash:l}=at(path);return{protocol:e,auth:n?n.substr(0,n.length-1):"",host:o,pathname:c,search:f,hash:l}}function at(input=""){const[t="",e="",n=""]=(input.match(/([^#?]*)(\?[^#]*)?(#.*)?/)||[]).splice(1);return{pathname:t,search:e,hash:n}}function st(input=""){const[t,e]=input.split(":");return{username:F(t),password:F(e)}}function ct(input=""){const[t,e]=(input.match(/([^/]*)(:0-9+)?/)||[]).splice(1);return{hostname:F(t),port:e}}function ut(t){const e=t.pathname+(t.search?(t.search.startsWith("?")?"":"?")+t.search:"")+t.hash;return t.protocol?t.protocol+"//"+(t.auth?t.auth+"@":"")+t.host+e:e}e.$URL=K,e.cleanDoubleSlashes=function(input=""){return input.split("://").map((t=>t.replace(/\/{2,}/g,"/"))).join("://")},e.createURL=ot,e.decode=F,e.decodePath=D,e.decodeQueryValue=U,e.encode=M,e.encodeHash=P,e.encodeHost=H,e.encodeParam=function(text){return R(text).replace(y,"%2F")},e.encodePath=R,e.encodeQueryItem=V,e.encodeQueryKey=L,e.encodeQueryValue=N,e.getQuery=function(input){return B(it(input).search)},e.hasLeadingSlash=Y,e.hasProtocol=W,e.hasTrailingSlash=J,e.isEmptyURL=tt,e.isNonEmptyURL=et,e.isRelative=function(t){return["./","../"].some((e=>t.startsWith(e)))},e.isSamePath=function(t,e){return F(Q(t))===F(Q(e))},e.joinURL=nt,e.normalizeURL=function(input){return ot(input).toString()},e.parseAuth=st,e.parseHost=ct,e.parsePath=at,e.parseQuery=B,e.parseURL=it,e.resolveURL=function(base,...input){const t=ot(base);for(const i of input.filter(et))t.append(ot(i));return t.toString()},e.stringifyParsedURL=ut,e.stringifyQuery=z,e.withBase=function(input,base){if(tt(base))return input;const t=Q(base);return input.startsWith(t)?input:nt(t,input)},e.withLeadingSlash=function(input=""){return Y(input)?input:"/"+input},e.withQuery=function(input,t){const e=it(input),n={...B(e.search),...t};return e.search=z(n),ut(e)},e.withTrailingSlash=X,e.withoutBase=function(input,base){if(tt(base))return input;const t=Q(base);return input.startsWith(t)?input.substr(t.length)||"/":input},e.withoutLeadingSlash=Z,e.withoutTrailingSlash=Q},function(t,e){var g;g=function(){return this}();try{g=g||new Function("return this")()}catch(t){"object"==typeof window&&(g=window)}t.exports=g},function(t,e,n){"use strict";var r=n(8),o=n(39),c=n(18),f=n(53),l=n(97),h=n(70),d=Math.max,v=Math.min,m=Math.floor,y=/\$([$&`']|\d\d?|<[^>]*>)/g,_=/\$([$&`']|\d\d?)/g;n(71)("replace",2,(function(t,e,n,w){return[function(r,o){var c=t(this),f=null==r?void 0:r[e];return void 0!==f?f.call(r,c,o):n.call(String(c),r,o)},function(t,e){var o=w(n,t,this,e);if(o.done)return o.value;var m=r(t),y=String(this),_="function"==typeof e;_||(e=String(e));var O=m.global;if(O){var S=m.unicode;m.lastIndex=0}for(var $=[];;){var A=h(m,y);if(null===A)break;if($.push(A),!O)break;""===String(A[0])&&(m.lastIndex=l(y,c(m.lastIndex),S))}for(var k,C="",E=0,i=0;i<$.length;i++){A=$[i];for(var T=String(A[0]),j=d(v(f(A.index),y.length),0),I=[],M=1;M<A.length;M++)I.push(void 0===(k=A[M])?k:String(k));var P=A.groups;if(_){var N=[T].concat(I,j,y);void 0!==P&&N.push(P);var L=String(e.apply(void 0,N))}else L=x(T,y,j,I,P,e);j>=E&&(C+=y.slice(E,j)+L,E=j+T.length)}return C+y.slice(E)}];function x(t,e,r,c,f,l){var h=r+t.length,d=c.length,v=_;return void 0!==f&&(f=o(f),v=y),n.call(l,v,(function(n,o){var l;switch(o.charAt(0)){case"$":return"$";case"&":return t;case"`":return e.slice(0,r);case"'":return e.slice(h);case"<":l=f[o.slice(1,-1)];break;default:var v=+o;if(0===v)return n;if(v>d){var y=m(v/10);return 0===y?n:y<=d?void 0===c[y-1]?o.charAt(1):c[y-1]+o.charAt(1):n}l=c[v-1]}return void 0===l?"":l}))}}))},function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var r=n(60);function o(t,e){if(t){if("string"==typeof t)return Object(r.a)(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Object(r.a)(t,e):void 0}}},,,function(t,e,n){"use strict";var r=n(94),o=n(8),c=n(89),f=n(97),l=n(18),h=n(70),d=n(98),v=n(9),m=Math.min,y=[].push,_=4294967295,w=!v((function(){RegExp(_,"y")}));n(71)("split",2,(function(t,e,n,v){var x;return x="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(t,e){var o=String(this);if(void 0===t&&0===e)return[];if(!r(t))return n.call(o,t,e);for(var c,f,l,output=[],h=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),v=0,m=void 0===e?_:e>>>0,w=new RegExp(t.source,h+"g");(c=d.call(w,o))&&!((f=w.lastIndex)>v&&(output.push(o.slice(v,c.index)),c.length>1&&c.index<o.length&&y.apply(output,c.slice(1)),l=c[0].length,v=f,output.length>=m));)w.lastIndex===c.index&&w.lastIndex++;return v===o.length?!l&&w.test("")||output.push(""):output.push(o.slice(v)),output.length>m?output.slice(0,m):output}:"0".split(void 0,0).length?function(t,e){return void 0===t&&0===e?[]:n.call(this,t,e)}:n,[function(n,r){var o=t(this),c=null==n?void 0:n[e];return void 0!==c?c.call(n,o,r):x.call(String(o),n,r)},function(t,e){var r=v(x,t,this,e,x!==n);if(r.done)return r.value;var d=o(t),y=String(this),O=c(d,RegExp),S=d.unicode,$=(d.ignoreCase?"i":"")+(d.multiline?"m":"")+(d.unicode?"u":"")+(w?"y":"g"),A=new O(w?d:"^(?:"+d.source+")",$),k=void 0===e?_:e>>>0;if(0===k)return[];if(0===y.length)return null===h(A,y)?[y]:[];for(var p=0,q=0,C=[];q<y.length;){A.lastIndex=w?q:0;var E,T=h(A,w?y:y.slice(q));if(null===T||(E=m(l(A.lastIndex+(w?0:q)),y.length))===p)q=f(y,q,S);else{if(C.push(y.slice(p,q)),C.length===k)return C;for(var i=1;i<=T.length-1;i++)if(C.push(T[i]),C.length===k)return C;q=p=E}}return C.push(y.slice(p)),C}]}))},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+r).toString(36))}},function(t,e){t.exports=!1},function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},function(t,e,n){var r=n(12).f,o=n(32),c=n(5)("toStringTag");t.exports=function(t,e,n){t&&!o(t=n?t:t.prototype,c)&&r(t,c,{configurable:!0,value:e})}},function(t,e){e.f={}.propertyIsEnumerable},function(t,e,n){var r=n(112),o=n(83).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,o)}},function(t,e,n){var r=n(55),o=n(50),c=n(22),f=n(64),l=n(32),h=n(109),d=Object.getOwnPropertyDescriptor;e.f=n(10)?d:function(t,e){if(t=c(t),e=f(e,!0),h)try{return d(t,e)}catch(t){}if(l(t,e))return o(!r.f.call(t,e),t[e])}},function(t,e){t.exports={}},,function(t,e,n){"use strict";function r(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,n=new Array(e);i<e;i++)n[i]=t[i];return n}n.d(e,"a",(function(){return r}))},function(t,e,n){"use strict";(function(t){var r=n(136),o=n.n(r);function c(t){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},c(t)}function f(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,n=new Array(e);i<e;i++)n[i]=t[i];return n}function l(t,e){var n;if("undefined"==typeof Symbol||null==t[Symbol.iterator]){if(Array.isArray(t)||(n=function(t,e){if(t){if("string"==typeof t)return f(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?f(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var i=0,r=function(){};return{s:r,n:function(){return i>=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,c=!0,l=!1;return{s:function(){n=t[Symbol.iterator]()},n:function(){var t=n.next();return c=t.done,t},e:function(t){l=!0,o=t},f:function(){try{c||null==n.return||n.return()}finally{if(l)throw o}}}}function h(t){return Array.isArray(t)}function d(t){return void 0===t}function v(t){return"object"===c(t)}function m(t){return"object"===c(t)&&null!==t}function y(t){return"function"==typeof t}var _=(function(){try{return!d(window)}catch(t){return!1}}()?window:t).console||{};function w(t){_&&_.warn&&_.warn(t)}var x=function(t){return w("".concat(t," is not supported in browser builds"))},O={title:void 0,titleChunk:"",titleTemplate:"%s",htmlAttrs:{},bodyAttrs:{},headAttrs:{},base:[],link:[],meta:[],style:[],script:[],noscript:[],__dangerouslyDisableSanitizers:[],__dangerouslyDisableSanitizersByTagID:{}},S="metaInfo",$="data-vue-meta",A="data-vue-meta-server-rendered",k="vmid",C="content",E="template",T=!0,j=10,I="ssr",M=Object.keys(O),P=[M[12],M[13]],N=[M[1],M[2],"changed"].concat(P),L=[M[3],M[4],M[5]],R=["link","style","script"],F=["once","skip","template"],D=["body","pbody"],U=["allowfullscreen","amp","amp-boilerplate","async","autofocus","autoplay","checked","compact","controls","declare","default","defaultchecked","defaultmuted","defaultselected","defer","disabled","enabled","formnovalidate","hidden","indeterminate","inert","ismap","itemscope","loop","multiple","muted","nohref","noresize","noshade","novalidate","nowrap","open","pauseonexit","readonly","required","reversed","scoped","seamless","selected","sortable","truespeed","typemustmatch","visible"],H=null;function B(t,e,n){var r=t.debounceWait;e._vueMeta.initialized||!e._vueMeta.initializing&&"watcher"!==n||(e._vueMeta.initialized=null),e._vueMeta.initialized&&!e._vueMeta.pausing&&function(t,e){if(!(e=void 0===e?10:e))return void t();clearTimeout(H),H=setTimeout((function(){t()}),e)}((function(){e.$meta().refresh()}),r)}function V(t,e,n){if(!Array.prototype.findIndex){for(var r=0;r<t.length;r++)if(e.call(n,t[r],r,t))return r;return-1}return t.findIndex(e,n)}function z(t){return Array.from?Array.from(t):Array.prototype.slice.call(t)}function K(t,e){if(!Array.prototype.includes){for(var n in t)if(t[n]===e)return!0;return!1}return t.includes(e)}var W=function(t,e){return(e||document).querySelectorAll(t)};function G(t,e){return t[e]||(t[e]=document.getElementsByTagName(e)[0]),t[e]}function J(t,e,n){var r=e.appId,o=e.attribute,c=e.type,f=e.tagIDKeyName;n=n||{};var l=["".concat(c,"[").concat(o,'="').concat(r,'"]'),"".concat(c,"[data-").concat(f,"]")].map((function(t){for(var e in n){var r=n[e],o=r&&!0!==r?'="'.concat(r,'"'):"";t+="[data-".concat(e).concat(o,"]")}return t}));return z(W(l.join(", "),t))}function Q(t,e){t.removeAttribute(e)}function X(t){return(t=t||this)&&(!0===t._vueMeta||v(t._vueMeta))}function Y(t,e){return t._vueMeta.pausing=!0,function(){return Z(t,e)}}function Z(t,e){if(t._vueMeta.pausing=!1,e||void 0===e)return t.$meta().refresh()}function tt(t){var e=t.$router;!t._vueMeta.navGuards&&e&&(t._vueMeta.navGuards=!0,e.beforeEach((function(e,n,r){Y(t),r()})),e.afterEach((function(){t.$nextTick((function(){var e=Z(t).metaInfo;e&&y(e.afterNavigation)&&e.afterNavigation(e)}))})))}var et=1;function nt(t,e){var n=["activated","deactivated","beforeMount"],r=!1;return{beforeCreate:function(){var o=this,c=this.$root,f=this.$options,l=t.config.devtools;if(Object.defineProperty(this,"_hasMetaInfo",{configurable:!0,get:function(){return l&&!c._vueMeta.deprecationWarningShown&&(w("VueMeta DeprecationWarning: _hasMetaInfo has been deprecated and will be removed in a future version. Please use hasMetaInfo(vm) instead"),c._vueMeta.deprecationWarningShown=!0),X(this)}}),this===c&&c.$once("hook:beforeMount",(function(){if(!(r=this.$el&&1===this.$el.nodeType&&this.$el.hasAttribute("data-server-rendered"))&&c._vueMeta&&1===c._vueMeta.appId){var t=G({},"html");r=t&&t.hasAttribute(e.ssrAttribute)}})),!d(f[e.keyName])&&null!==f[e.keyName]){if(c._vueMeta||(c._vueMeta={appId:et},et++,l&&c.$options[e.keyName]&&this.$nextTick((function(){var t=function(t,e,n){if(Array.prototype.find)return t.find(e,n);for(var r=0;r<t.length;r++)if(e.call(n,t[r],r,t))return t[r]}(c.$children,(function(t){return t.$vnode&&t.$vnode.fnOptions}));t&&t.$vnode.fnOptions[e.keyName]&&w("VueMeta has detected a possible global mixin which adds a ".concat(e.keyName," property to all Vue components on the page. This could cause severe performance issues. If possible, use $meta().addApp to add meta information instead"))}))),!this._vueMeta){this._vueMeta=!0;for(var h=this.$parent;h&&h!==c;)d(h._vueMeta)&&(h._vueMeta=!1),h=h.$parent}y(f[e.keyName])&&(f.computed=f.computed||{},f.computed.$metaInfo=f[e.keyName],this.$isServer||this.$on("hook:created",(function(){this.$watch("$metaInfo",(function(){B(e,this.$root,"watcher")}))}))),d(c._vueMeta.initialized)&&(c._vueMeta.initialized=this.$isServer,c._vueMeta.initialized||(c._vueMeta.initializedSsr||(c._vueMeta.initializedSsr=!0,this.$on("hook:beforeMount",(function(){var t=this.$root;r&&(t._vueMeta.appId=e.ssrAppId)}))),this.$on("hook:mounted",(function(){var t=this.$root;t._vueMeta.initialized||(t._vueMeta.initializing=!0,this.$nextTick((function(){var n=t.$meta().refresh(),r=n.tags,o=n.metaInfo;!1===r&&null===t._vueMeta.initialized&&this.$nextTick((function(){return B(e,t,"init")})),t._vueMeta.initialized=!0,delete t._vueMeta.initializing,!e.refreshOnceOnNavigation&&o.afterNavigation&&tt(t)})))})),e.refreshOnceOnNavigation&&tt(c))),this.$on("hook:destroyed",(function(){var t=this;this.$parent&&X(this)&&(delete this._hasMetaInfo,this.$nextTick((function(){if(e.waitOnDestroyed&&t.$el&&t.$el.offsetParent)var n=setInterval((function(){t.$el&&null!==t.$el.offsetParent||(clearInterval(n),B(e,t.$root,"destroyed"))}),50);else B(e,t.$root,"destroyed")})))})),this.$isServer||n.forEach((function(t){o.$on("hook:".concat(t),(function(){B(e,this.$root,t)}))}))}}}}function ot(t,e){return e&&v(t)?(h(t[e])||(t[e]=[]),t):h(t)?t:[]}var it=[[/&/g,"&"],[/</g,"<"],[/>/g,">"],[/"/g,'"'],[/'/g,"'"]];function at(t,e,n,r){var o=e.tagIDKeyName,c=n.doEscape,f=void 0===c?function(t){return t}:c,l={};for(var d in t){var v=t[d];if(K(N,d))l[d]=v;else{var y=P[0];if(n[y]&&K(n[y],d))l[d]=v;else{var _=t[o];if(_&&(y=P[1],n[y]&&n[y][_]&&K(n[y][_],d)))l[d]=v;else if("string"==typeof v?l[d]=f(v):h(v)?l[d]=v.map((function(t){return m(t)?at(t,e,n,!0):f(t)})):m(v)?l[d]=at(v,e,n,!0):l[d]=v,r){var w=f(d);d!==w&&(l[w]=l[d],delete l[d])}}}}return l}function st(t,e,n){n=n||[];var r={doEscape:function(t){return n.reduce((function(t,e){return t.replace(e[0],e[1])}),t)}};return P.forEach((function(t,n){if(0===n)ot(e,t);else if(1===n)for(var o in e[t])ot(e[t],o);r[t]=e[t]})),at(e,t,r)}function ct(t,e,template,n){var component=t.component,r=t.metaTemplateKeyName,o=t.contentKeyName;return!0!==template&&!0!==e[r]&&(d(template)&&e[r]&&(template=e[r],e[r]=!0),template?(d(n)&&(n=e[o]),e[o]=y(template)?template.call(component,n):template.replace(/%s/g,n),!0):(delete e[r],!1))}var ut=!1;function ft(t,source,e){return e=e||{},void 0===source.title&&delete source.title,L.forEach((function(t){if(source[t])for(var e in source[t])e in source[t]&&void 0===source[t][e]&&(K(U,e)&&!ut&&(w("VueMeta: Please note that since v2 the value undefined is not used to indicate boolean attributes anymore, see migration guide for details"),ut=!0),delete source[t][e])})),o()(t,source,{arrayMerge:function(t,s){return function(t,e,source){var component=t.component,n=t.tagIDKeyName,r=t.metaTemplateKeyName,o=t.contentKeyName,c=[];return e.length||source.length?(e.forEach((function(t,e){if(t[n]){var f=V(source,(function(e){return e[n]===t[n]})),l=source[f];if(-1!==f){if(o in l&&void 0===l[o]||"innerHTML"in l&&void 0===l.innerHTML)return c.push(t),void source.splice(f,1);if(null!==l[o]&&null!==l.innerHTML){var h=t[r];if(h){if(!l[r])return ct({component:component,metaTemplateKeyName:r,contentKeyName:o},l,h),void(l.template=!0);l[o]||ct({component:component,metaTemplateKeyName:r,contentKeyName:o},l,void 0,t[o])}}else source.splice(f,1)}else c.push(t)}else c.push(t)})),c.concat(source)):c}(e,t,s)}})}function lt(t,component){return pt(t||{},component,O)}function pt(t,component,e){if(e=e||{},component._inactive)return e;var n=(t=t||{}).keyName,r=component.$metaInfo,o=component.$options,c=component.$children;if(o[n]){var data=r||o[n];v(data)&&(e=ft(e,data,t))}return c.length&&c.forEach((function(n){(function(t){return(t=t||this)&&!d(t._vueMeta)})(n)&&(e=pt(t,n,e))})),e}var ht=[];function vt(t,e,n,r){var o=t.tagIDKeyName,c=!1;return n.forEach((function(t){t[o]&&t.callback&&(c=!0,function(t,e){1===arguments.length&&(e=t,t=""),ht.push([t,e])}("".concat(e,"[data-").concat(o,'="').concat(t[o],'"]'),t.callback))})),r&&c?mt():c}function mt(){var t;"complete"!==(t||document).readyState?document.onreadystatechange=function(){yt()}:yt()}function yt(t){ht.forEach((function(e){var n=e[0],r=e[1],o="".concat(n,'[onload="this.__vm_l=1"]'),c=[];t||(c=z(W(o))),t&&t.matches(o)&&(c=[t]),c.forEach((function(element){if(!element.__vm_cb){var t=function(){element.__vm_cb=!0,Q(element,"onload"),r(element)};element.__vm_l?t():element.__vm_ev||(element.__vm_ev=!0,element.addEventListener("load",t))}}))}))}var gt,bt={};function _t(t,e,n,r,o){var c=(e||{}).attribute,f=o.getAttribute(c);f&&(bt[n]=JSON.parse(decodeURI(f)),Q(o,c));var data=bt[n]||{},l=[];for(var h in data)void 0!==data[h]&&t in data[h]&&(l.push(h),r[h]||delete data[h][t]);for(var d in r){var v=data[d];v&&v[t]===r[d]||(l.push(d),void 0!==r[d]&&(data[d]=data[d]||{},data[d][t]=r[d]))}for(var m=0,y=l;m<y.length;m++){var _=y[m],w=data[_],x=[];for(var O in w)Array.prototype.push.apply(x,[].concat(w[O]));if(x.length){var S=K(U,_)&&x.some(Boolean)?"":x.filter((function(t){return void 0!==t})).join(" ");o.setAttribute(_,S)}else Q(o,_)}bt[n]=data}function wt(t,e,n,r,head,body){var o=e||{},c=o.attribute,f=o.tagIDKeyName,l=D.slice();l.push(f);var h=[],d={appId:t,attribute:c,type:n,tagIDKeyName:f},v={head:J(head,d),pbody:J(body,d,{pbody:!0}),body:J(body,d,{body:!0})};if(r.length>1){var m=[];r=r.filter((function(t){var e=JSON.stringify(t),n=!K(m,e);return m.push(e),n}))}r.forEach((function(e){if(!e.skip){var r=document.createElement(n);e.once||r.setAttribute(c,t),Object.keys(e).forEach((function(t){if(!K(F,t))if("innerHTML"!==t)if("json"!==t)if("cssText"!==t)if("callback"!==t){var n=K(l,t)?"data-".concat(t):t,o=K(U,t);if(!o||e[t]){var c=o?"":e[t];r.setAttribute(n,c)}}else r.onload=function(){return e[t](r)};else r.styleSheet?r.styleSheet.cssText=e.cssText:r.appendChild(document.createTextNode(e.cssText));else r.innerHTML=JSON.stringify(e.json);else r.innerHTML=e.innerHTML}));var o,f=v[function(t){var body=t.body,e=t.pbody;return body?"body":e?"pbody":"head"}(e)],d=f.some((function(t,e){return o=e,r.isEqualNode(t)}));d&&(o||0===o)?f.splice(o,1):h.push(r)}}));var y=[];for(var _ in v)Array.prototype.push.apply(y,v[_]);return y.forEach((function(element){element.parentNode.removeChild(element)})),h.forEach((function(element){element.hasAttribute("data-body")?body.appendChild(element):element.hasAttribute("data-pbody")?body.insertBefore(element,body.firstChild):head.appendChild(element)})),{oldTags:y,newTags:h}}function xt(t,e,n){var r=e=e||{},o=r.ssrAttribute,c=r.ssrAppId,f={},l=G(f,"html");if(t===c&&l.hasAttribute(o)){Q(l,o);var d=!1;return R.forEach((function(t){n[t]&&vt(e,t,n[t])&&(d=!0)})),d&&mt(),!1}var title,v={},m={};for(var y in n)if(!K(N,y))if("title"!==y){if(K(L,y)){var _=y.substr(0,4);_t(t,e,y,n[y],G(f,_))}else if(h(n[y])){var w=wt(t,e,y,n[y],G(f,"head"),G(f,"body")),x=w.oldTags,O=w.newTags;O.length&&(v[y]=O,m[y]=x)}}else((title=n.title)||""===title)&&(document.title=title);return{tagsAdded:v,tagsRemoved:m}}function Ot(t,e,n){return{set:function(r){return function(t,e,n,r){if(t&&t.$el)return xt(e,n,r);(gt=gt||{})[e]=r}(t,e,n,r)},remove:function(){return function(t,e,n){if(t&&t.$el){var r,o={},c=l(L);try{for(c.s();!(r=c.n()).done;){var f=r.value,h=f.substr(0,4);_t(e,n,f,{},G(o,h))}}catch(t){c.e(t)}finally{c.f()}return function(t,e){var n=t.attribute;z(W("[".concat(n,'="').concat(e,'"]'))).map((function(t){return t.remove()}))}(n,e)}gt[e]&&(delete gt[e],$t())}(t,e,n)}}}function St(){return gt}function $t(t){!t&&Object.keys(gt).length||(gt=void 0)}function At(t,e){if(e=e||{},!t._vueMeta)return w("This vue app/component has no vue-meta configuration"),{};var n=function(t,e,n,component){n=n||[];var r=(t=t||{}).tagIDKeyName;return e.title&&(e.titleChunk=e.title),e.titleTemplate&&"%s"!==e.titleTemplate&&ct({component:component,contentKeyName:"title"},e,e.titleTemplate,e.titleChunk||""),e.base&&(e.base=Object.keys(e.base).length?[e.base]:[]),e.meta&&(e.meta=e.meta.filter((function(t,e,n){return!t[r]||e===V(n,(function(e){return e[r]===t[r]}))})),e.meta.forEach((function(e){return ct(t,e)}))),st(t,e,n)}(e,lt(e,t),it,t),r=xt(t._vueMeta.appId,e,n);r&&y(n.changed)&&(n.changed(n,r.tagsAdded,r.tagsRemoved),r={addedTags:r.tagsAdded,removedTags:r.tagsRemoved});var o=St();if(o){for(var c in o)xt(c,e,o[c]),delete o[c];$t(!0)}return{vm:t,metaInfo:n,tags:r}}function kt(t){t=t||{};var e=this.$root;return{getOptions:function(){return function(t){var e={};for(var n in t)e[n]=t[n];return e}(t)},setOptions:function(n){var r="refreshOnceOnNavigation";n&&n[r]&&(t.refreshOnceOnNavigation=!!n[r],tt(e));var o="debounceWait";if(n&&o in n){var c=parseInt(n.debounceWait);isNaN(c)||(t.debounceWait=c)}var f="waitOnDestroyed";n&&f in n&&(t.waitOnDestroyed=!!n.waitOnDestroyed)},refresh:function(){return At(e,t)},inject:function(t){return x("inject")},pause:function(){return Y(e)},resume:function(){return Z(e)},addApp:function(n){return Ot(e,n,t)}}}function Ct(t,e){t.__vuemeta_installed||(t.__vuemeta_installed=!0,e=function(t){return{keyName:(t=v(t)?t:{}).keyName||S,attribute:t.attribute||$,ssrAttribute:t.ssrAttribute||A,tagIDKeyName:t.tagIDKeyName||k,contentKeyName:t.contentKeyName||C,metaTemplateKeyName:t.metaTemplateKeyName||E,debounceWait:d(t.debounceWait)?j:t.debounceWait,waitOnDestroyed:d(t.waitOnDestroyed)?T:t.waitOnDestroyed,ssrAppId:t.ssrAppId||I,refreshOnceOnNavigation:!!t.refreshOnceOnNavigation}}(e),t.prototype.$meta=function(){return kt.call(this,e)},t.mixin(nt(t,e)))}d(window)||d(window.Vue)||Ct(window.Vue);var Et={version:"2.4.0",install:Ct,generate:function(t,e){return x("generate")},hasMetaInfo:X};e.a=Et}).call(this,n(44))},function(t,e,n){"use strict";(function(t){var n=("undefined"!=typeof window?window:void 0!==t?t:{}).__VUE_DEVTOOLS_GLOBAL_HOOK__;function r(t,e){if(void 0===e&&(e=[]),null===t||"object"!=typeof t)return t;var n,o=(n=function(e){return e.original===t},e.filter(n)[0]);if(o)return o.copy;var c=Array.isArray(t)?[]:{};return e.push({original:t,copy:c}),Object.keys(t).forEach((function(n){c[n]=r(t[n],e)})),c}function o(t,e){Object.keys(t).forEach((function(n){return e(t[n],n)}))}function c(t){return null!==t&&"object"==typeof t}var f=function(t,e){this.runtime=e,this._children=Object.create(null),this._rawModule=t;var n=t.state;this.state=("function"==typeof n?n():n)||{}},l={namespaced:{configurable:!0}};l.namespaced.get=function(){return!!this._rawModule.namespaced},f.prototype.addChild=function(t,e){this._children[t]=e},f.prototype.removeChild=function(t){delete this._children[t]},f.prototype.getChild=function(t){return this._children[t]},f.prototype.hasChild=function(t){return t in this._children},f.prototype.update=function(t){this._rawModule.namespaced=t.namespaced,t.actions&&(this._rawModule.actions=t.actions),t.mutations&&(this._rawModule.mutations=t.mutations),t.getters&&(this._rawModule.getters=t.getters)},f.prototype.forEachChild=function(t){o(this._children,t)},f.prototype.forEachGetter=function(t){this._rawModule.getters&&o(this._rawModule.getters,t)},f.prototype.forEachAction=function(t){this._rawModule.actions&&o(this._rawModule.actions,t)},f.prototype.forEachMutation=function(t){this._rawModule.mutations&&o(this._rawModule.mutations,t)},Object.defineProperties(f.prototype,l);var h=function(t){this.register([],t,!1)};function d(path,t,e){if(t.update(e),e.modules)for(var n in e.modules){if(!t.getChild(n))return void 0;d(path.concat(n),t.getChild(n),e.modules[n])}}h.prototype.get=function(path){return path.reduce((function(t,e){return t.getChild(e)}),this.root)},h.prototype.getNamespace=function(path){var t=this.root;return path.reduce((function(e,n){return e+((t=t.getChild(n)).namespaced?n+"/":"")}),"")},h.prototype.update=function(t){d([],this.root,t)},h.prototype.register=function(path,t,e){var n=this;void 0===e&&(e=!0);var r=new f(t,e);0===path.length?this.root=r:this.get(path.slice(0,-1)).addChild(path[path.length-1],r);t.modules&&o(t.modules,(function(t,r){n.register(path.concat(r),t,e)}))},h.prototype.unregister=function(path){var t=this.get(path.slice(0,-1)),e=path[path.length-1],n=t.getChild(e);n&&n.runtime&&t.removeChild(e)},h.prototype.isRegistered=function(path){var t=this.get(path.slice(0,-1)),e=path[path.length-1];return!!t&&t.hasChild(e)};var v;var m=function(t){var e=this;void 0===t&&(t={}),!v&&"undefined"!=typeof window&&window.Vue&&A(window.Vue);var r=t.plugins;void 0===r&&(r=[]);var o=t.strict;void 0===o&&(o=!1),this._committing=!1,this._actions=Object.create(null),this._actionSubscribers=[],this._mutations=Object.create(null),this._wrappedGetters=Object.create(null),this._modules=new h(t),this._modulesNamespaceMap=Object.create(null),this._subscribers=[],this._watcherVM=new v,this._makeLocalGettersCache=Object.create(null);var c=this,f=this.dispatch,l=this.commit;this.dispatch=function(t,e){return f.call(c,t,e)},this.commit=function(t,e,n){return l.call(c,t,e,n)},this.strict=o;var d=this._modules.root.state;O(this,d,[],this._modules.root),x(this,d),r.forEach((function(t){return t(e)})),(void 0!==t.devtools?t.devtools:v.config.devtools)&&function(t){n&&(t._devtoolHook=n,n.emit("vuex:init",t),n.on("vuex:travel-to-state",(function(e){t.replaceState(e)})),t.subscribe((function(t,e){n.emit("vuex:mutation",t,e)}),{prepend:!0}),t.subscribeAction((function(t,e){n.emit("vuex:action",t,e)}),{prepend:!0}))}(this)},y={state:{configurable:!0}};function _(t,e,n){return e.indexOf(t)<0&&(n&&n.prepend?e.unshift(t):e.push(t)),function(){var i=e.indexOf(t);i>-1&&e.splice(i,1)}}function w(t,e){t._actions=Object.create(null),t._mutations=Object.create(null),t._wrappedGetters=Object.create(null),t._modulesNamespaceMap=Object.create(null);var n=t.state;O(t,n,[],t._modules.root,!0),x(t,n,e)}function x(t,e,n){var r=t._vm;t.getters={},t._makeLocalGettersCache=Object.create(null);var c=t._wrappedGetters,f={};o(c,(function(e,n){f[n]=function(t,e){return function(){return t(e)}}(e,t),Object.defineProperty(t.getters,n,{get:function(){return t._vm[n]},enumerable:!0})}));var l=v.config.silent;v.config.silent=!0,t._vm=new v({data:{$$state:e},computed:f}),v.config.silent=l,t.strict&&function(t){t._vm.$watch((function(){return this._data.$$state}),(function(){0}),{deep:!0,sync:!0})}(t),r&&(n&&t._withCommit((function(){r._data.$$state=null})),v.nextTick((function(){return r.$destroy()})))}function O(t,e,path,n,r){var o=!path.length,c=t._modules.getNamespace(path);if(n.namespaced&&(t._modulesNamespaceMap[c],t._modulesNamespaceMap[c]=n),!o&&!r){var f=S(e,path.slice(0,-1)),l=path[path.length-1];t._withCommit((function(){v.set(f,l,n.state)}))}var h=n.context=function(t,e,path){var n=""===e,r={dispatch:n?t.dispatch:function(n,r,o){var c=$(n,r,o),f=c.payload,l=c.options,h=c.type;return l&&l.root||(h=e+h),t.dispatch(h,f)},commit:n?t.commit:function(n,r,o){var c=$(n,r,o),f=c.payload,l=c.options,h=c.type;l&&l.root||(h=e+h),t.commit(h,f,l)}};return Object.defineProperties(r,{getters:{get:n?function(){return t.getters}:function(){return function(t,e){if(!t._makeLocalGettersCache[e]){var n={},r=e.length;Object.keys(t.getters).forEach((function(o){if(o.slice(0,r)===e){var c=o.slice(r);Object.defineProperty(n,c,{get:function(){return t.getters[o]},enumerable:!0})}})),t._makeLocalGettersCache[e]=n}return t._makeLocalGettersCache[e]}(t,e)}},state:{get:function(){return S(t.state,path)}}}),r}(t,c,path);n.forEachMutation((function(e,n){!function(t,e,n,r){(t._mutations[e]||(t._mutations[e]=[])).push((function(e){n.call(t,r.state,e)}))}(t,c+n,e,h)})),n.forEachAction((function(e,n){var r=e.root?n:c+n,o=e.handler||e;!function(t,e,n,r){(t._actions[e]||(t._actions[e]=[])).push((function(e){var o,c=n.call(t,{dispatch:r.dispatch,commit:r.commit,getters:r.getters,state:r.state,rootGetters:t.getters,rootState:t.state},e);return(o=c)&&"function"==typeof o.then||(c=Promise.resolve(c)),t._devtoolHook?c.catch((function(e){throw t._devtoolHook.emit("vuex:error",e),e})):c}))}(t,r,o,h)})),n.forEachGetter((function(e,n){!function(t,e,n,r){if(t._wrappedGetters[e])return void 0;t._wrappedGetters[e]=function(t){return n(r.state,r.getters,t.state,t.getters)}}(t,c+n,e,h)})),n.forEachChild((function(n,o){O(t,e,path.concat(o),n,r)}))}function S(t,path){return path.reduce((function(t,e){return t[e]}),t)}function $(t,e,n){return c(t)&&t.type&&(n=e,e=t,t=t.type),{type:t,payload:e,options:n}}function A(t){v&&t===v||function(t){if(Number(t.version.split(".")[0])>=2)t.mixin({beforeCreate:n});else{var e=t.prototype._init;t.prototype._init=function(t){void 0===t&&(t={}),t.init=t.init?[n].concat(t.init):n,e.call(this,t)}}function n(){var t=this.$options;t.store?this.$store="function"==typeof t.store?t.store():t.store:t.parent&&t.parent.$store&&(this.$store=t.parent.$store)}}(v=t)}y.state.get=function(){return this._vm._data.$$state},y.state.set=function(t){0},m.prototype.commit=function(t,e,n){var r=this,o=$(t,e,n),c=o.type,f=o.payload,l=(o.options,{type:c,payload:f}),h=this._mutations[c];h&&(this._withCommit((function(){h.forEach((function(t){t(f)}))})),this._subscribers.slice().forEach((function(sub){return sub(l,r.state)})))},m.prototype.dispatch=function(t,e){var n=this,r=$(t,e),o=r.type,c=r.payload,f={type:o,payload:c},l=this._actions[o];if(l){try{this._actionSubscribers.slice().filter((function(sub){return sub.before})).forEach((function(sub){return sub.before(f,n.state)}))}catch(t){0}var h=l.length>1?Promise.all(l.map((function(t){return t(c)}))):l[0](c);return new Promise((function(t,e){h.then((function(e){try{n._actionSubscribers.filter((function(sub){return sub.after})).forEach((function(sub){return sub.after(f,n.state)}))}catch(t){0}t(e)}),(function(t){try{n._actionSubscribers.filter((function(sub){return sub.error})).forEach((function(sub){return sub.error(f,n.state,t)}))}catch(t){0}e(t)}))}))}},m.prototype.subscribe=function(t,e){return _(t,this._subscribers,e)},m.prototype.subscribeAction=function(t,e){return _("function"==typeof t?{before:t}:t,this._actionSubscribers,e)},m.prototype.watch=function(t,e,n){var r=this;return this._watcherVM.$watch((function(){return t(r.state,r.getters)}),e,n)},m.prototype.replaceState=function(t){var e=this;this._withCommit((function(){e._vm._data.$$state=t}))},m.prototype.registerModule=function(path,t,e){void 0===e&&(e={}),"string"==typeof path&&(path=[path]),this._modules.register(path,t),O(this,this.state,path,this._modules.get(path),e.preserveState),x(this,this.state)},m.prototype.unregisterModule=function(path){var t=this;"string"==typeof path&&(path=[path]),this._modules.unregister(path),this._withCommit((function(){var e=S(t.state,path.slice(0,-1));v.delete(e,path[path.length-1])})),w(this)},m.prototype.hasModule=function(path){return"string"==typeof path&&(path=[path]),this._modules.isRegistered(path)},m.prototype.hotUpdate=function(t){this._modules.update(t),w(this,!0)},m.prototype._withCommit=function(t){var e=this._committing;this._committing=!0,t(),this._committing=e},Object.defineProperties(m.prototype,y);var k=I((function(t,e){var n={};return j(e).forEach((function(e){var r=e.key,o=e.val;n[r]=function(){var e=this.$store.state,n=this.$store.getters;if(t){var r=M(this.$store,"mapState",t);if(!r)return;e=r.context.state,n=r.context.getters}return"function"==typeof o?o.call(this,e,n):e[o]},n[r].vuex=!0})),n})),C=I((function(t,e){var n={};return j(e).forEach((function(e){var r=e.key,o=e.val;n[r]=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];var r=this.$store.commit;if(t){var c=M(this.$store,"mapMutations",t);if(!c)return;r=c.context.commit}return"function"==typeof o?o.apply(this,[r].concat(e)):r.apply(this.$store,[o].concat(e))}})),n})),E=I((function(t,e){var n={};return j(e).forEach((function(e){var r=e.key,o=e.val;o=t+o,n[r]=function(){if(!t||M(this.$store,"mapGetters",t))return this.$store.getters[o]},n[r].vuex=!0})),n})),T=I((function(t,e){var n={};return j(e).forEach((function(e){var r=e.key,o=e.val;n[r]=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];var r=this.$store.dispatch;if(t){var c=M(this.$store,"mapActions",t);if(!c)return;r=c.context.dispatch}return"function"==typeof o?o.apply(this,[r].concat(e)):r.apply(this.$store,[o].concat(e))}})),n}));function j(map){return function(map){return Array.isArray(map)||c(map)}(map)?Array.isArray(map)?map.map((function(t){return{key:t,val:t}})):Object.keys(map).map((function(t){return{key:t,val:map[t]}})):[]}function I(t){return function(e,map){return"string"!=typeof e?(map=e,e=""):"/"!==e.charAt(e.length-1)&&(e+="/"),t(e,map)}}function M(t,e,n){return t._modulesNamespaceMap[n]}function P(t,e,n){var r=n?t.groupCollapsed:t.group;try{r.call(t,e)}catch(n){t.log(e)}}function N(t){try{t.groupEnd()}catch(e){t.log("—— log end ——")}}function L(){var time=new Date;return" @ "+R(time.getHours(),2)+":"+R(time.getMinutes(),2)+":"+R(time.getSeconds(),2)+"."+R(time.getMilliseconds(),3)}function R(t,e){return n="0",r=e-t.toString().length,new Array(r+1).join(n)+t;var n,r}var F={Store:m,install:A,version:"3.6.2",mapState:k,mapMutations:C,mapGetters:E,mapActions:T,createNamespacedHelpers:function(t){return{mapState:k.bind(null,t),mapGetters:E.bind(null,t),mapMutations:C.bind(null,t),mapActions:T.bind(null,t)}},createLogger:function(t){void 0===t&&(t={});var e=t.collapsed;void 0===e&&(e=!0);var filter=t.filter;void 0===filter&&(filter=function(t,e,n){return!0});var n=t.transformer;void 0===n&&(n=function(t){return t});var o=t.mutationTransformer;void 0===o&&(o=function(t){return t});var c=t.actionFilter;void 0===c&&(c=function(t,e){return!0});var f=t.actionTransformer;void 0===f&&(f=function(t){return t});var l=t.logMutations;void 0===l&&(l=!0);var h=t.logActions;void 0===h&&(h=!0);var d=t.logger;return void 0===d&&(d=console),function(t){var v=r(t.state);void 0!==d&&(l&&t.subscribe((function(t,c){var f=r(c);if(filter(t,v,f)){var l=L(),h=o(t),m="mutation "+t.type+l;P(d,m,e),d.log("%c prev state","color: #9E9E9E; font-weight: bold",n(v)),d.log("%c mutation","color: #03A9F4; font-weight: bold",h),d.log("%c next state","color: #4CAF50; font-weight: bold",n(f)),N(d)}v=f})),h&&t.subscribeAction((function(t,n){if(c(t,n)){var r=L(),o=f(t),l="action "+t.type+r;P(d,l,e),d.log("%c action","color: #03A9F4; font-weight: bold",o),N(d)}})))}}};e.a=F}).call(this,n(44))},function(t,e,n){"use strict";var r=n(8),o=n(18),c=n(97),f=n(70);n(71)("match",1,(function(t,e,n,l){return[function(n){var r=t(this),o=null==n?void 0:n[e];return void 0!==o?o.call(n,r):new RegExp(n)[e](String(r))},function(t){var e=l(n,t,this);if(e.done)return e.value;var h=r(t),d=String(this);if(!h.global)return f(h,d);var v=h.unicode;h.lastIndex=0;for(var m,y=[],_=0;null!==(m=f(h,d));){var w=String(m[0]);y[_]=w,""===w&&(h.lastIndex=c(d,o(h.lastIndex),v)),_++}return 0===_?null:y}]}))},function(t,e,n){var r=n(13);t.exports=function(t,e){if(!r(t))return t;var n,o;if(e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if("function"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if(!e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},function(t,e,n){var r=n(30),o=n(6),c="__core-js_shared__",f=o[c]||(o[c]={});(t.exports=function(t,e){return f[t]||(f[t]=void 0!==e?e:{})})("versions",[]).push({version:r.version,mode:n(52)?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e){e.f=Object.getOwnPropertySymbols},function(t,e,n){var r=n(8),o=n(149),c=n(83),f=n(82)("IE_PROTO"),l=function(){},h=function(){var t,iframe=n(78)("iframe"),i=c.length;for(iframe.style.display="none",n(79).appendChild(iframe),iframe.src="javascript:",(t=iframe.contentWindow.document).open(),t.write("<script>document.F=Object<\/script>"),t.close(),h=t.F;i--;)delete h.prototype[c[i]];return h()};t.exports=Object.create||function(t,e){var n;return null!==t?(l.prototype=r(t),n=new l,l.prototype=null,n[f]=t):n=h(),void 0===e?n:o(n,e)}},function(t,e,n){var r=n(34),o=n(5)("toStringTag"),c="Arguments"==r(function(){return arguments}());t.exports=function(t){var e,n,f;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=function(t,e){try{return t[e]}catch(t){}}(e=Object(t),o))?n:c?r(e):"Object"==(f=r(e))&&"function"==typeof e.callee?"Arguments":f}},function(t,e,n){"use strict";var r=n(69),o=RegExp.prototype.exec;t.exports=function(t,e){var n=t.exec;if("function"==typeof n){var c=n.call(t,e);if("object"!=typeof c)throw new TypeError("RegExp exec method returned something other than an Object or null");return c}if("RegExp"!==r(t))throw new TypeError("RegExp#exec called on incompatible receiver");return o.call(t,e)}},function(t,e,n){"use strict";n(165);var r=n(14),o=n(31),c=n(9),f=n(37),l=n(5),h=n(98),d=l("species"),v=!c((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$<a>")})),m=function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2===n.length&&"a"===n[0]&&"b"===n[1]}();t.exports=function(t,e,n){var y=l(t),_=!c((function(){var e={};return e[y]=function(){return 7},7!=""[t](e)})),w=_?!c((function(){var e=!1,n=/a/;return n.exec=function(){return e=!0,null},"split"===t&&(n.constructor={},n.constructor[d]=function(){return n}),n[y](""),!e})):void 0;if(!_||!w||"replace"===t&&!v||"split"===t&&!m){var x=/./[y],O=n(f,y,""[t],(function(t,e,n,r,o){return e.exec===h?_&&!o?{done:!0,value:x.call(e,n,r)}:{done:!0,value:t.call(n,e,r)}:{done:!1}})),S=O[0],$=O[1];r(String.prototype,t,S),o(RegExp.prototype,y,2==e?function(t,e){return $.call(t,this,e)}:function(t){return $.call(t,this)})}}},function(t,e,n){"use strict";var r=n(8);t.exports=function(){var t=r(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},function(t,e,n){"use strict";var r=n(4),o=n(18),c=n(93),f="startsWith",l="".startsWith;r(r.P+r.F*n(95)(f),"String",{startsWith:function(t){var e=c(this,t,f),n=o(Math.min(arguments.length>1?arguments[1]:void 0,e.length)),r=String(t);return l?l.call(e,r,n):e.slice(n,n+r.length)===r}})},function(t,e,n){"use strict";function r(t){if(Array.isArray(t))return t}n.d(e,"a",(function(){return r}))},function(t,e,n){"use strict";function r(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}n.d(e,"a",(function(){return r}))},function(t,e,n){"use strict";function r(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}n.d(e,"a",(function(){return r}))},,function(t,e,n){var r=n(13),o=n(6).document,c=r(o)&&r(o.createElement);t.exports=function(t){return c?o.createElement(t):{}}},function(t,e,n){var r=n(6).document;t.exports=r&&r.documentElement},function(t,e,n){var r=n(51)("meta"),o=n(13),c=n(32),f=n(12).f,l=0,h=Object.isExtensible||function(){return!0},d=!n(9)((function(){return h(Object.preventExtensions({}))})),v=function(t){f(t,r,{value:{i:"O"+ ++l,w:{}}})},meta=t.exports={KEY:r,NEED:!1,fastKey:function(t,e){if(!o(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!c(t,r)){if(!h(t))return"F";if(!e)return"E";v(t)}return t[r].i},getWeak:function(t,e){if(!c(t,r)){if(!h(t))return!0;if(!e)return!1;v(t)}return t[r].w},onFreeze:function(t){return d&&meta.NEED&&h(t)&&!c(t,r)&&v(t),t}}},function(t,e,n){var r=n(34);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==r(t)?t.split(""):Object(t)}},function(t,e,n){var r=n(65)("keys"),o=n(51);t.exports=function(t){return r[t]||(r[t]=o(t))}},function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,e,n){var r=n(5)("iterator"),o=!1;try{var c=[7][r]();c.return=function(){o=!0},Array.from(c,(function(){throw 2}))}catch(t){}t.exports=function(t,e){if(!e&&!o)return!1;var n=!1;try{var c=[7],f=c[r]();f.next=function(){return{done:n=!0}},c[r]=function(){return f},t(c)}catch(t){}return n}},function(t,e,n){var r=n(5)("unscopables"),o=Array.prototype;null==o[r]&&n(31)(o,r,{}),t.exports=function(t){o[r][t]=!0}},function(t,e,n){"use strict";var r=n(52),o=n(4),c=n(14),f=n(31),l=n(58),h=n(151),d=n(54),v=n(152),m=n(5)("iterator"),y=!([].keys&&"next"in[].keys()),_="keys",w="values",x=function(){return this};t.exports=function(t,e,n,O,S,$,A){h(n,e,O);var k,C,E,T=function(t){if(!y&&t in P)return P[t];switch(t){case _:case w:return function(){return new n(this,t)}}return function(){return new n(this,t)}},j=e+" Iterator",I=S==w,M=!1,P=t.prototype,N=P[m]||P["@@iterator"]||S&&P[S],L=N||T(S),R=S?I?T("entries"):L:void 0,F="Array"==e&&P.entries||N;if(F&&(E=v(F.call(new t)))!==Object.prototype&&E.next&&(d(E,j,!0),r||"function"==typeof E[m]||f(E,m,x)),I&&N&&N.name!==w&&(M=!0,L=function(){return N.call(this)}),r&&!A||!y&&!M&&P[m]||f(P,m,L),l[e]=L,l[j]=x,S)if(k={values:I?L:T(w),keys:$?L:T(_),entries:R},A)for(C in k)C in P||c(P,C,k[C]);else o(o.P+o.F*(y||M),e,k);return k}},function(t,e){t.exports=function(t,e,n,r){if(!(t instanceof e)||void 0!==r&&r in t)throw TypeError(n+": incorrect invocation!");return t}},function(t,e,n){var r=n(33),o=n(115),c=n(116),f=n(8),l=n(18),h=n(118),d={},v={};(e=t.exports=function(t,e,n,m,y){var _,w,x,O,S=y?function(){return t}:h(t),$=r(n,m,e?2:1),A=0;if("function"!=typeof S)throw TypeError(t+" is not iterable!");if(c(S)){for(_=l(t.length);_>A;A++)if((O=e?$(f(w=t[A])[0],w[1]):$(t[A]))===d||O===v)return O}else for(x=S.call(t);!(w=x.next()).done;)if((O=o(x,$,w.value,e))===d||O===v)return O}).BREAK=d,e.RETURN=v},function(t,e,n){var r=n(8),o=n(66),c=n(5)("species");t.exports=function(t,e){var n,f=r(t).constructor;return void 0===f||null==(n=r(f)[c])?e:o(n)}},function(t,e,n){var r=n(14);t.exports=function(t,e,n){for(var o in e)r(t,o,e[o],n);return t}},function(t,e,n){"use strict";var r=n(6),o=n(12),c=n(10),f=n(5)("species");t.exports=function(t){var e=r[t];c&&e&&!e[f]&&o.f(e,f,{configurable:!0,get:function(){return this}})}},function(t,e,n){var r=n(33),o=n(81),c=n(39),f=n(18),l=n(161);t.exports=function(t,e){var n=1==t,h=2==t,d=3==t,v=4==t,m=6==t,y=5==t||m,_=e||l;return function(e,l,w){for(var x,O,S=c(e),$=o(S),A=r(l,w,3),k=f($.length),C=0,E=n?_(e,k):h?_(e,0):void 0;k>C;C++)if((y||C in $)&&(O=A(x=$[C],C,S),t))if(n)E[C]=O;else if(O)switch(t){case 3:return!0;case 5:return x;case 6:return C;case 2:E.push(x)}else if(v)return!1;return m?-1:d||v?v:E}}},function(t,e,n){var r=n(94),o=n(37);t.exports=function(t,e,n){if(r(e))throw TypeError("String#"+n+" doesn't accept regex!");return String(o(t))}},function(t,e,n){var r=n(13),o=n(34),c=n(5)("match");t.exports=function(t){var e;return r(t)&&(void 0!==(e=t[c])?!!e:"RegExp"==o(t))}},function(t,e,n){var r=n(5)("match");t.exports=function(t){var e=/./;try{"/./"[t](e)}catch(n){try{return e[r]=!1,!"/./"[t](e)}catch(t){}}return!0}},function(t,e,n){var r=n(4),o=n(164)(!0);r(r.S,"Object",{entries:function(t){return o(t)}})},function(t,e,n){"use strict";var r=n(126)(!0);t.exports=function(t,e,n){return e+(n?r(t,e).length:1)}},function(t,e,n){"use strict";var r,o,c=n(72),f=RegExp.prototype.exec,l=String.prototype.replace,h=f,d=(r=/a/,o=/b*/g,f.call(r,"a"),f.call(o,"a"),0!==r.lastIndex||0!==o.lastIndex),v=void 0!==/()??/.exec("")[1];(d||v)&&(h=function(t){var e,n,r,i,o=this;return v&&(n=new RegExp("^"+o.source+"$(?!\\s)",c.call(o))),d&&(e=o.lastIndex),r=f.call(o,t),d&&r&&(o.lastIndex=o.global?r.index+r[0].length:e),v&&r&&r.length>1&&l.call(r[0],n,(function(){for(i=1;i<arguments.length-2;i++)void 0===arguments[i]&&(r[i]=void 0)})),r}),t.exports=h},function(t,e,n){var r=n(13),o=n(167).set;t.exports=function(t,e,n){var c,f=e.constructor;return f!==n&&"function"==typeof f&&(c=f.prototype)!==n.prototype&&r(c)&&o&&o(t,c),t}},function(t,e,n){var r=Date.prototype,o="Invalid Date",c="toString",f=r.toString,l=r.getTime;new Date(NaN)+""!=o&&n(14)(r,c,(function(){var t=l.call(this);return t==t?f.call(this):o}))},function(t,e,n){"use strict";n(168);var r=n(8),o=n(72),c=n(10),f="toString",l=/./.toString,h=function(t){n(14)(RegExp.prototype,f,t,!0)};n(9)((function(){return"/a/b"!=l.call({source:"a",flags:"b"})}))?h((function(){var t=r(this);return"/".concat(t.source,"/","flags"in t?t.flags:!c&&t instanceof RegExp?o.call(t):void 0)})):l.name!=f&&h((function(){return l.call(this)}))},function(t,e,n){"use strict";var r=n(4),o=n(92)(5),c="find",f=!0;c in[]&&Array(1).find((function(){f=!1})),r(r.P+r.F*f,"Array",{find:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),n(85)(c)},,function(t,e,n){"use strict";function r(a,b){for(var t in b)a[t]=b[t];return a}n.d(e,"a",(function(){return re}));var o=/[!'()*]/g,c=function(t){return"%"+t.charCodeAt(0).toString(16)},f=/%2C/g,l=function(t){return encodeURIComponent(t).replace(o,c).replace(f,",")};function h(t){try{return decodeURIComponent(t)}catch(t){0}return t}var d=function(t){return null==t||"object"==typeof t?t:String(t)};function v(t){var e={};return(t=t.trim().replace(/^(\?|#|&)/,""))?(t.split("&").forEach((function(param){var t=param.replace(/\+/g," ").split("="),n=h(t.shift()),r=t.length>0?h(t.join("=")):null;void 0===e[n]?e[n]=r:Array.isArray(e[n])?e[n].push(r):e[n]=[e[n],r]})),e):e}function m(t){var e=t?Object.keys(t).map((function(e){var n=t[e];if(void 0===n)return"";if(null===n)return l(e);if(Array.isArray(n)){var r=[];return n.forEach((function(t){void 0!==t&&(null===t?r.push(l(e)):r.push(l(e)+"="+l(t)))})),r.join("&")}return l(e)+"="+l(n)})).filter((function(t){return t.length>0})).join("&"):null;return e?"?"+e:""}var y=/\/?$/;function _(t,e,n,r){var o=r&&r.options.stringifyQuery,c=e.query||{};try{c=w(c)}catch(t){}var f={name:e.name||t&&t.name,meta:t&&t.meta||{},path:e.path||"/",hash:e.hash||"",query:c,params:e.params||{},fullPath:S(e,o),matched:t?O(t):[]};return n&&(f.redirectedFrom=S(n,o)),Object.freeze(f)}function w(t){if(Array.isArray(t))return t.map(w);if(t&&"object"==typeof t){var e={};for(var n in t)e[n]=w(t[n]);return e}return t}var x=_(null,{path:"/"});function O(t){for(var e=[];t;)e.unshift(t),t=t.parent;return e}function S(t,e){var path=t.path,n=t.query;void 0===n&&(n={});var r=t.hash;return void 0===r&&(r=""),(path||"/")+(e||m)(n)+r}function $(a,b,t){return b===x?a===b:!!b&&(a.path&&b.path?a.path.replace(y,"")===b.path.replace(y,"")&&(t||a.hash===b.hash&&A(a.query,b.query)):!(!a.name||!b.name)&&(a.name===b.name&&(t||a.hash===b.hash&&A(a.query,b.query)&&A(a.params,b.params))))}function A(a,b){if(void 0===a&&(a={}),void 0===b&&(b={}),!a||!b)return a===b;var t=Object.keys(a).sort(),e=Object.keys(b).sort();return t.length===e.length&&t.every((function(t,i){var n=a[t];if(e[i]!==t)return!1;var r=b[t];return null==n||null==r?n===r:"object"==typeof n&&"object"==typeof r?A(n,r):String(n)===String(r)}))}function k(t){for(var i=0;i<t.matched.length;i++){var e=t.matched[i];for(var n in e.instances){var r=e.instances[n],o=e.enteredCbs[n];if(r&&o){delete e.enteredCbs[n];for(var c=0;c<o.length;c++)r._isBeingDestroyed||o[c](r)}}}}var C={name:"RouterView",functional:!0,props:{name:{type:String,default:"default"}},render:function(t,e){var n=e.props,o=e.children,c=e.parent,data=e.data;data.routerView=!0;for(var f=c.$createElement,l=n.name,h=c.$route,d=c._routerViewCache||(c._routerViewCache={}),v=0,m=!1;c&&c._routerRoot!==c;){var y=c.$vnode?c.$vnode.data:{};y.routerView&&v++,y.keepAlive&&c._directInactive&&c._inactive&&(m=!0),c=c.$parent}if(data.routerViewDepth=v,m){var _=d[l],w=_&&_.component;return w?(_.configProps&&E(w,data,_.route,_.configProps),f(w,data,o)):f()}var x=h.matched[v],component=x&&x.components[l];if(!x||!component)return d[l]=null,f();d[l]={component:component},data.registerRouteInstance=function(t,e){var n=x.instances[l];(e&&n!==t||!e&&n===t)&&(x.instances[l]=e)},(data.hook||(data.hook={})).prepatch=function(t,e){x.instances[l]=e.componentInstance},data.hook.init=function(t){t.data.keepAlive&&t.componentInstance&&t.componentInstance!==x.instances[l]&&(x.instances[l]=t.componentInstance),k(h)};var O=x.props&&x.props[l];return O&&(r(d[l],{route:h,configProps:O}),E(component,data,h,O)),f(component,data,o)}};function E(component,data,t,e){var n=data.props=function(t,e){switch(typeof e){case"undefined":return;case"object":return e;case"function":return e(t);case"boolean":return e?t.params:void 0}}(t,e);if(n){n=data.props=r({},n);var o=data.attrs=data.attrs||{};for(var c in n)component.props&&c in component.props||(o[c]=n[c],delete n[c])}}function T(t,base,e){var n=t.charAt(0);if("/"===n)return t;if("?"===n||"#"===n)return base+t;var r=base.split("/");e&&r[r.length-1]||r.pop();for(var o=t.replace(/^\//,"").split("/"),i=0;i<o.length;i++){var c=o[i];".."===c?r.pop():"."!==c&&r.push(c)}return""!==r[0]&&r.unshift(""),r.join("/")}function j(path){return path.replace(/\/(?:\s*\/)+/g,"/")}var I=Array.isArray||function(t){return"[object Array]"==Object.prototype.toString.call(t)},M=G,P=D,N=function(t,e){return H(D(t,e),e)},L=H,R=W,F=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function D(t,e){for(var n,r=[],o=0,c=0,path="",f=e&&e.delimiter||"/";null!=(n=F.exec(t));){var l=n[0],h=n[1],d=n.index;if(path+=t.slice(c,d),c=d+l.length,h)path+=h[1];else{var v=t[c],m=n[2],y=n[3],_=n[4],w=n[5],x=n[6],O=n[7];path&&(r.push(path),path="");var S=null!=m&&null!=v&&v!==m,$="+"===x||"*"===x,A="?"===x||"*"===x,k=n[2]||f,pattern=_||w;r.push({name:y||o++,prefix:m||"",delimiter:k,optional:A,repeat:$,partial:S,asterisk:!!O,pattern:pattern?V(pattern):O?".*":"[^"+B(k)+"]+?"})}}return c<t.length&&(path+=t.substr(c)),path&&r.push(path),r}function U(t){return encodeURI(t).replace(/[\/?#]/g,(function(t){return"%"+t.charCodeAt(0).toString(16).toUpperCase()}))}function H(t,e){for(var n=new Array(t.length),i=0;i<t.length;i++)"object"==typeof t[i]&&(n[i]=new RegExp("^(?:"+t[i].pattern+")$",K(e)));return function(e,r){for(var path="",data=e||{},o=(r||{}).pretty?U:encodeURIComponent,i=0;i<t.length;i++){var c=t[i];if("string"!=typeof c){var f,l=data[c.name];if(null==l){if(c.optional){c.partial&&(path+=c.prefix);continue}throw new TypeError('Expected "'+c.name+'" to be defined')}if(I(l)){if(!c.repeat)throw new TypeError('Expected "'+c.name+'" to not repeat, but received `'+JSON.stringify(l)+"`");if(0===l.length){if(c.optional)continue;throw new TypeError('Expected "'+c.name+'" to not be empty')}for(var h=0;h<l.length;h++){if(f=o(l[h]),!n[i].test(f))throw new TypeError('Expected all "'+c.name+'" to match "'+c.pattern+'", but received `'+JSON.stringify(f)+"`");path+=(0===h?c.prefix:c.delimiter)+f}}else{if(f=c.asterisk?encodeURI(l).replace(/[?#]/g,(function(t){return"%"+t.charCodeAt(0).toString(16).toUpperCase()})):o(l),!n[i].test(f))throw new TypeError('Expected "'+c.name+'" to match "'+c.pattern+'", but received "'+f+'"');path+=c.prefix+f}}else path+=c}return path}}function B(t){return t.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function V(t){return t.replace(/([=!:$\/()])/g,"\\$1")}function z(t,e){return t.keys=e,t}function K(t){return t&&t.sensitive?"":"i"}function W(t,e,n){I(e)||(n=e||n,e=[]);for(var r=(n=n||{}).strict,o=!1!==n.end,c="",i=0;i<t.length;i++){var f=t[i];if("string"==typeof f)c+=B(f);else{var l=B(f.prefix),h="(?:"+f.pattern+")";e.push(f),f.repeat&&(h+="(?:"+l+h+")*"),c+=h=f.optional?f.partial?l+"("+h+")?":"(?:"+l+"("+h+"))?":l+"("+h+")"}}var d=B(n.delimiter||"/"),v=c.slice(-d.length)===d;return r||(c=(v?c.slice(0,-d.length):c)+"(?:"+d+"(?=$))?"),c+=o?"$":r&&v?"":"(?="+d+"|$)",z(new RegExp("^"+c,K(n)),e)}function G(path,t,e){return I(t)||(e=t||e,t=[]),e=e||{},path instanceof RegExp?function(path,t){var e=path.source.match(/\((?!\?)/g);if(e)for(var i=0;i<e.length;i++)t.push({name:i,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,asterisk:!1,pattern:null});return z(path,t)}(path,t):I(path)?function(path,t,e){for(var n=[],i=0;i<path.length;i++)n.push(G(path[i],t,e).source);return z(new RegExp("(?:"+n.join("|")+")",K(e)),t)}(path,t,e):function(path,t,e){return W(D(path,e),t,e)}(path,t,e)}M.parse=P,M.compile=N,M.tokensToFunction=L,M.tokensToRegExp=R;var J=Object.create(null);function Q(path,t,e){t=t||{};try{var n=J[path]||(J[path]=M.compile(path));return"string"==typeof t.pathMatch&&(t[0]=t.pathMatch),n(t,{pretty:!0})}catch(t){return""}finally{delete t[0]}}function X(t,e,n,o){var c="string"==typeof t?{path:t}:t;if(c._normalized)return c;if(c.name){var f=(c=r({},t)).params;return f&&"object"==typeof f&&(c.params=r({},f)),c}if(!c.path&&c.params&&e){(c=r({},c))._normalized=!0;var l=r(r({},e.params),c.params);if(e.name)c.name=e.name,c.params=l;else if(e.matched.length){var h=e.matched[e.matched.length-1].path;c.path=Q(h,l,e.path)}else 0;return c}var m=function(path){var t="",e="",n=path.indexOf("#");n>=0&&(t=path.slice(n),path=path.slice(0,n));var r=path.indexOf("?");return r>=0&&(e=path.slice(r+1),path=path.slice(0,r)),{path:path,query:e,hash:t}}(c.path||""),y=e&&e.path||"/",path=m.path?T(m.path,y,n||c.append):y,_=function(t,e,n){void 0===e&&(e={});var r,o=n||v;try{r=o(t||"")}catch(t){r={}}for(var c in e){var f=e[c];r[c]=Array.isArray(f)?f.map(d):d(f)}return r}(m.query,c.query,o&&o.options.parseQuery),w=c.hash||m.hash;return w&&"#"!==w.charAt(0)&&(w="#"+w),{_normalized:!0,path:path,query:_,hash:w}}var Y,Z=function(){},tt={name:"RouterLink",props:{to:{type:[String,Object],required:!0},tag:{type:String,default:"a"},custom:Boolean,exact:Boolean,exactPath:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:{type:String,default:"page"},event:{type:[String,Array],default:"click"}},render:function(t){var e=this,n=this.$router,o=this.$route,c=n.resolve(this.to,o,this.append),f=c.location,l=c.route,h=c.href,d={},v=n.options.linkActiveClass,m=n.options.linkExactActiveClass,w=null==v?"router-link-active":v,x=null==m?"router-link-exact-active":m,O=null==this.activeClass?w:this.activeClass,S=null==this.exactActiveClass?x:this.exactActiveClass,A=l.redirectedFrom?_(null,X(l.redirectedFrom),null,n):l;d[S]=$(o,A,this.exactPath),d[O]=this.exact||this.exactPath?d[S]:function(t,e){return 0===t.path.replace(y,"/").indexOf(e.path.replace(y,"/"))&&(!e.hash||t.hash===e.hash)&&function(t,e){for(var n in e)if(!(n in t))return!1;return!0}(t.query,e.query)}(o,A);var k=d[S]?this.ariaCurrentValue:null,C=function(t){et(t)&&(e.replace?n.replace(f,Z):n.push(f,Z))},E={click:et};Array.isArray(this.event)?this.event.forEach((function(t){E[t]=C})):E[this.event]=C;var data={class:d},T=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:h,route:l,navigate:C,isActive:d[O],isExactActive:d[S]});if(T){if(1===T.length)return T[0];if(T.length>1||!T.length)return 0===T.length?t():t("span",{},T)}if("a"===this.tag)data.on=E,data.attrs={href:h,"aria-current":k};else{var a=nt(this.$slots.default);if(a){a.isStatic=!1;var j=a.data=r({},a.data);for(var I in j.on=j.on||{},j.on){var M=j.on[I];I in E&&(j.on[I]=Array.isArray(M)?M:[M])}for(var P in E)P in j.on?j.on[P].push(E[P]):j.on[P]=C;var N=a.data.attrs=r({},a.data.attrs);N.href=h,N["aria-current"]=k}else data.on=E}return t(this.tag,data,this.$slots.default)}};function et(t){if(!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey||t.defaultPrevented||void 0!==t.button&&0!==t.button)){if(t.currentTarget&&t.currentTarget.getAttribute){var e=t.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(e))return}return t.preventDefault&&t.preventDefault(),!0}}function nt(t){if(t)for(var e,i=0;i<t.length;i++){if("a"===(e=t[i]).tag)return e;if(e.children&&(e=nt(e.children)))return e}}var ot="undefined"!=typeof window;function it(t,e,n,r,o){var c=e||[],f=n||Object.create(null),l=r||Object.create(null);t.forEach((function(t){at(c,f,l,t,o)}));for(var i=0,h=c.length;i<h;i++)"*"===c[i]&&(c.push(c.splice(i,1)[0]),h--,i--);return{pathList:c,pathMap:f,nameMap:l}}function at(t,e,n,r,o,c){var path=r.path,f=r.name;var l=r.pathToRegexpOptions||{},h=function(path,t,e){e||(path=path.replace(/\/$/,""));if("/"===path[0])return path;if(null==t)return path;return j(t.path+"/"+path)}(path,o,l.strict);"boolean"==typeof r.caseSensitive&&(l.sensitive=r.caseSensitive);var d={path:h,regex:st(h,l),components:r.components||{default:r.component},alias:r.alias?"string"==typeof r.alias?[r.alias]:r.alias:[],instances:{},enteredCbs:{},name:f,parent:o,matchAs:c,redirect:r.redirect,beforeEnter:r.beforeEnter,meta:r.meta||{},props:null==r.props?{}:r.components?r.props:{default:r.props}};if(r.children&&r.children.forEach((function(r){var o=c?j(c+"/"+r.path):void 0;at(t,e,n,r,d,o)})),e[d.path]||(t.push(d.path),e[d.path]=d),void 0!==r.alias)for(var v=Array.isArray(r.alias)?r.alias:[r.alias],i=0;i<v.length;++i){0;var m={path:v[i],children:r.children};at(t,e,n,m,o,d.path||"/")}f&&(n[f]||(n[f]=d))}function st(path,t){return M(path,[],t)}function ct(t,e){var n=it(t),r=n.pathList,o=n.pathMap,c=n.nameMap;function f(t,n,f){var l=X(t,n,!1,e),d=l.name;if(d){var v=c[d];if(!v)return h(null,l);var m=v.regex.keys.filter((function(t){return!t.optional})).map((function(t){return t.name}));if("object"!=typeof l.params&&(l.params={}),n&&"object"==typeof n.params)for(var y in n.params)!(y in l.params)&&m.indexOf(y)>-1&&(l.params[y]=n.params[y]);return l.path=Q(v.path,l.params),h(v,l,f)}if(l.path){l.params={};for(var i=0;i<r.length;i++){var path=r[i],_=o[path];if(ut(_.regex,l.path,l.params))return h(_,l,f)}}return h(null,l)}function l(t,n){var r=t.redirect,o="function"==typeof r?r(_(t,n,null,e)):r;if("string"==typeof o&&(o={path:o}),!o||"object"!=typeof o)return h(null,n);var l=o,d=l.name,path=l.path,v=n.query,m=n.hash,y=n.params;if(v=l.hasOwnProperty("query")?l.query:v,m=l.hasOwnProperty("hash")?l.hash:m,y=l.hasOwnProperty("params")?l.params:y,d){c[d];return f({_normalized:!0,name:d,query:v,hash:m,params:y},void 0,n)}if(path){var w=function(path,t){return T(path,t.parent?t.parent.path:"/",!0)}(path,t);return f({_normalized:!0,path:Q(w,y),query:v,hash:m},void 0,n)}return h(null,n)}function h(t,n,r){return t&&t.redirect?l(t,r||n):t&&t.matchAs?function(t,e,n){var r=f({_normalized:!0,path:Q(n,e.params)});if(r){var o=r.matched,c=o[o.length-1];return e.params=r.params,h(c,e)}return h(null,e)}(0,n,t.matchAs):_(t,n,r,e)}return{match:f,addRoute:function(t,e){var n="object"!=typeof t?c[t]:void 0;it([e||t],r,o,c,n),n&&n.alias.length&&it(n.alias.map((function(t){return{path:t,children:[e]}})),r,o,c,n)},getRoutes:function(){return r.map((function(path){return o[path]}))},addRoutes:function(t){it(t,r,o,c)}}}function ut(t,path,e){var n=path.match(t);if(!n)return!1;if(!e)return!0;for(var i=1,r=n.length;i<r;++i){var o=t.keys[i-1];o&&(e[o.name||"pathMatch"]="string"==typeof n[i]?h(n[i]):n[i])}return!0}var ft=ot&&window.performance&&window.performance.now?window.performance:Date;function lt(){return ft.now().toFixed(3)}var pt=lt();function ht(){return pt}function vt(t){return pt=t}var mt=Object.create(null);function yt(){"scrollRestoration"in window.history&&(window.history.scrollRestoration="manual");var t=window.location.protocol+"//"+window.location.host,e=window.location.href.replace(t,""),n=r({},window.history.state);return n.key=ht(),window.history.replaceState(n,"",e),window.addEventListener("popstate",_t),function(){window.removeEventListener("popstate",_t)}}function gt(t,e,n,r){if(t.app){var o=t.options.scrollBehavior;o&&t.app.$nextTick((function(){var c=function(){var t=ht();if(t)return mt[t]}(),f=o.call(t,e,n,r?c:null);f&&("function"==typeof f.then?f.then((function(t){$t(t,c)})).catch((function(t){0})):$t(f,c))}))}}function bt(){var t=ht();t&&(mt[t]={x:window.pageXOffset,y:window.pageYOffset})}function _t(t){bt(),t.state&&t.state.key&&vt(t.state.key)}function wt(t){return Ot(t.x)||Ot(t.y)}function xt(t){return{x:Ot(t.x)?t.x:window.pageXOffset,y:Ot(t.y)?t.y:window.pageYOffset}}function Ot(t){return"number"==typeof t}var St=/^#\d/;function $t(t,e){var n,r="object"==typeof t;if(r&&"string"==typeof t.selector){var o=St.test(t.selector)?document.getElementById(t.selector.slice(1)):document.querySelector(t.selector);if(o){var c=t.offset&&"object"==typeof t.offset?t.offset:{};e=function(t,e){var n=document.documentElement.getBoundingClientRect(),r=t.getBoundingClientRect();return{x:r.left-n.left-e.x,y:r.top-n.top-e.y}}(o,c={x:Ot((n=c).x)?n.x:0,y:Ot(n.y)?n.y:0})}else wt(t)&&(e=xt(t))}else r&&wt(t)&&(e=xt(t));e&&("scrollBehavior"in document.documentElement.style?window.scrollTo({left:e.x,top:e.y,behavior:t.behavior}):window.scrollTo(e.x,e.y))}var At,kt=ot&&((-1===(At=window.navigator.userAgent).indexOf("Android 2.")&&-1===At.indexOf("Android 4.0")||-1===At.indexOf("Mobile Safari")||-1!==At.indexOf("Chrome")||-1!==At.indexOf("Windows Phone"))&&window.history&&"function"==typeof window.history.pushState);function Ct(t,e){bt();var n=window.history;try{if(e){var o=r({},n.state);o.key=ht(),n.replaceState(o,"",t)}else n.pushState({key:vt(lt())},"",t)}catch(n){window.location[e?"replace":"assign"](t)}}function Et(t){Ct(t,!0)}var Tt={redirected:2,aborted:4,cancelled:8,duplicated:16};function jt(t,e){return Mt(t,e,Tt.redirected,'Redirected when going from "'+t.fullPath+'" to "'+function(t){if("string"==typeof t)return t;if("path"in t)return t.path;var e={};return Pt.forEach((function(n){n in t&&(e[n]=t[n])})),JSON.stringify(e,null,2)}(e)+'" via a navigation guard.')}function It(t,e){return Mt(t,e,Tt.cancelled,'Navigation cancelled from "'+t.fullPath+'" to "'+e.fullPath+'" with a new navigation.')}function Mt(t,e,n,r){var o=new Error(r);return o._isRouter=!0,o.from=t,o.to=e,o.type=n,o}var Pt=["params","query","hash"];function Nt(t){return Object.prototype.toString.call(t).indexOf("Error")>-1}function Lt(t,e){return Nt(t)&&t._isRouter&&(null==e||t.type===e)}function Rt(t,e,n){var r=function(o){o>=t.length?n():t[o]?e(t[o],(function(){r(o+1)})):r(o+1)};r(0)}function Ft(t){return function(e,n,r){var o=!1,c=0,f=null;Dt(t,(function(t,e,n,l){if("function"==typeof t&&void 0===t.cid){o=!0,c++;var h,d=Bt((function(e){var o;((o=e).__esModule||Ht&&"Module"===o[Symbol.toStringTag])&&(e=e.default),t.resolved="function"==typeof e?e:Y.extend(e),n.components[l]=e,--c<=0&&r()})),v=Bt((function(t){var e="Failed to resolve async component "+l+": "+t;f||(f=Nt(t)?t:new Error(e),r(f))}));try{h=t(d,v)}catch(t){v(t)}if(h)if("function"==typeof h.then)h.then(d,v);else{var m=h.component;m&&"function"==typeof m.then&&m.then(d,v)}}})),o||r()}}function Dt(t,e){return Ut(t.map((function(t){return Object.keys(t.components).map((function(n){return e(t.components[n],t.instances[n],t,n)}))})))}function Ut(t){return Array.prototype.concat.apply([],t)}var Ht="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function Bt(t){var e=!1;return function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];if(!e)return e=!0,t.apply(this,n)}}var Vt=function(t,base){this.router=t,this.base=function(base){if(!base)if(ot){var t=document.querySelector("base");base=(base=t&&t.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else base="/";"/"!==base.charAt(0)&&(base="/"+base);return base.replace(/\/$/,"")}(base),this.current=x,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function zt(t,e,n,r){var o=Dt(t,(function(t,r,o,c){var f=function(t,e){"function"!=typeof t&&(t=Y.extend(t));return t.options[e]}(t,e);if(f)return Array.isArray(f)?f.map((function(t){return n(t,r,o,c)})):n(f,r,o,c)}));return Ut(r?o.reverse():o)}function qt(t,e){if(e)return function(){return t.apply(e,arguments)}}Vt.prototype.listen=function(t){this.cb=t},Vt.prototype.onReady=function(t,e){this.ready?t():(this.readyCbs.push(t),e&&this.readyErrorCbs.push(e))},Vt.prototype.onError=function(t){this.errorCbs.push(t)},Vt.prototype.transitionTo=function(t,e,n){var r,o=this;try{r=this.router.match(t,this.current)}catch(t){throw this.errorCbs.forEach((function(e){e(t)})),t}var c=this.current;this.confirmTransition(r,(function(){o.updateRoute(r),e&&e(r),o.ensureURL(),o.router.afterHooks.forEach((function(t){t&&t(r,c)})),o.ready||(o.ready=!0,o.readyCbs.forEach((function(t){t(r)})))}),(function(t){n&&n(t),t&&!o.ready&&(Lt(t,Tt.redirected)&&c===x||(o.ready=!0,o.readyErrorCbs.forEach((function(e){e(t)}))))}))},Vt.prototype.confirmTransition=function(t,e,n){var r=this,o=this.current;this.pending=t;var c,f,l=function(t){!Lt(t)&&Nt(t)&&(r.errorCbs.length?r.errorCbs.forEach((function(e){e(t)})):console.error(t)),n&&n(t)},h=t.matched.length-1,d=o.matched.length-1;if($(t,o)&&h===d&&t.matched[h]===o.matched[d])return this.ensureURL(),t.hash&&gt(this.router,o,t,!1),l(((f=Mt(c=o,t,Tt.duplicated,'Avoided redundant navigation to current location: "'+c.fullPath+'".')).name="NavigationDuplicated",f));var v=function(t,e){var i,n=Math.max(t.length,e.length);for(i=0;i<n&&t[i]===e[i];i++);return{updated:e.slice(0,i),activated:e.slice(i),deactivated:t.slice(i)}}(this.current.matched,t.matched),m=v.updated,y=v.deactivated,_=v.activated,w=[].concat(function(t){return zt(t,"beforeRouteLeave",qt,!0)}(y),this.router.beforeHooks,function(t){return zt(t,"beforeRouteUpdate",qt)}(m),_.map((function(t){return t.beforeEnter})),Ft(_)),x=function(e,n){if(r.pending!==t)return l(It(o,t));try{e(t,o,(function(e){!1===e?(r.ensureURL(!0),l(function(t,e){return Mt(t,e,Tt.aborted,'Navigation aborted from "'+t.fullPath+'" to "'+e.fullPath+'" via a navigation guard.')}(o,t))):Nt(e)?(r.ensureURL(!0),l(e)):"string"==typeof e||"object"==typeof e&&("string"==typeof e.path||"string"==typeof e.name)?(l(jt(o,t)),"object"==typeof e&&e.replace?r.replace(e):r.push(e)):n(e)}))}catch(t){l(t)}};Rt(w,x,(function(){var n=function(t){return zt(t,"beforeRouteEnter",(function(t,e,n,r){return function(t,e,n){return function(r,o,c){return t(r,o,(function(t){"function"==typeof t&&(e.enteredCbs[n]||(e.enteredCbs[n]=[]),e.enteredCbs[n].push(t)),c(t)}))}}(t,n,r)}))}(_);Rt(n.concat(r.router.resolveHooks),x,(function(){if(r.pending!==t)return l(It(o,t));r.pending=null,e(t),r.router.app&&r.router.app.$nextTick((function(){k(t)}))}))}))},Vt.prototype.updateRoute=function(t){this.current=t,this.cb&&this.cb(t)},Vt.prototype.setupListeners=function(){},Vt.prototype.teardown=function(){this.listeners.forEach((function(t){t()})),this.listeners=[],this.current=x,this.pending=null};var Kt=function(t){function e(e,base){t.call(this,e,base),this._startLocation=Wt(this.base)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setupListeners=function(){var t=this;if(!(this.listeners.length>0)){var e=this.router,n=e.options.scrollBehavior,r=kt&&n;r&&this.listeners.push(yt());var o=function(){var n=t.current,o=Wt(t.base);t.current===x&&o===t._startLocation||t.transitionTo(o,(function(t){r&&gt(e,t,n,!0)}))};window.addEventListener("popstate",o),this.listeners.push((function(){window.removeEventListener("popstate",o)}))}},e.prototype.go=function(t){window.history.go(t)},e.prototype.push=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){Ct(j(r.base+t.fullPath)),gt(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){Et(j(r.base+t.fullPath)),gt(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.ensureURL=function(t){if(Wt(this.base)!==this.current.fullPath){var e=j(this.base+this.current.fullPath);t?Ct(e):Et(e)}},e.prototype.getCurrentLocation=function(){return Wt(this.base)},e}(Vt);function Wt(base){var path=window.location.pathname,t=path.toLowerCase(),e=base.toLowerCase();return!base||t!==e&&0!==t.indexOf(j(e+"/"))||(path=path.slice(base.length)),(path||"/")+window.location.search+window.location.hash}var Gt=function(t){function e(e,base,n){t.call(this,e,base),n&&function(base){var t=Wt(base);if(!/^\/#/.test(t))return window.location.replace(j(base+"/#"+t)),!0}(this.base)||Jt()}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setupListeners=function(){var t=this;if(!(this.listeners.length>0)){var e=this.router.options.scrollBehavior,n=kt&&e;n&&this.listeners.push(yt());var r=function(){var e=t.current;Jt()&&t.transitionTo(Qt(),(function(r){n&&gt(t.router,r,e,!0),kt||Zt(r.fullPath)}))},o=kt?"popstate":"hashchange";window.addEventListener(o,r),this.listeners.push((function(){window.removeEventListener(o,r)}))}},e.prototype.push=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){Yt(t.fullPath),gt(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){Zt(t.fullPath),gt(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.go=function(t){window.history.go(t)},e.prototype.ensureURL=function(t){var e=this.current.fullPath;Qt()!==e&&(t?Yt(e):Zt(e))},e.prototype.getCurrentLocation=function(){return Qt()},e}(Vt);function Jt(){var path=Qt();return"/"===path.charAt(0)||(Zt("/"+path),!1)}function Qt(){var t=window.location.href,e=t.indexOf("#");return e<0?"":t=t.slice(e+1)}function Xt(path){var t=window.location.href,i=t.indexOf("#");return(i>=0?t.slice(0,i):t)+"#"+path}function Yt(path){kt?Ct(Xt(path)):window.location.hash=path}function Zt(path){kt?Et(Xt(path)):window.location.replace(Xt(path))}var te=function(t){function e(e,base){t.call(this,e,base),this.stack=[],this.index=-1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.push=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index+1).concat(t),r.index++,e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index).concat(t),e&&e(t)}),n)},e.prototype.go=function(t){var e=this,n=this.index+t;if(!(n<0||n>=this.stack.length)){var r=this.stack[n];this.confirmTransition(r,(function(){var t=e.current;e.index=n,e.updateRoute(r),e.router.afterHooks.forEach((function(e){e&&e(r,t)}))}),(function(t){Lt(t,Tt.duplicated)&&(e.index=n)}))}},e.prototype.getCurrentLocation=function(){var t=this.stack[this.stack.length-1];return t?t.fullPath:"/"},e.prototype.ensureURL=function(){},e}(Vt),ee=function(t){void 0===t&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=ct(t.routes||[],this);var e=t.mode||"hash";switch(this.fallback="history"===e&&!kt&&!1!==t.fallback,this.fallback&&(e="hash"),ot||(e="abstract"),this.mode=e,e){case"history":this.history=new Kt(this,t.base);break;case"hash":this.history=new Gt(this,t.base,this.fallback);break;case"abstract":this.history=new te(this,t.base)}},ne={currentRoute:{configurable:!0}};ee.prototype.match=function(t,e,n){return this.matcher.match(t,e,n)},ne.currentRoute.get=function(){return this.history&&this.history.current},ee.prototype.init=function(t){var e=this;if(this.apps.push(t),t.$once("hook:destroyed",(function(){var n=e.apps.indexOf(t);n>-1&&e.apps.splice(n,1),e.app===t&&(e.app=e.apps[0]||null),e.app||e.history.teardown()})),!this.app){this.app=t;var n=this.history;if(n instanceof Kt||n instanceof Gt){var r=function(t){n.setupListeners(),function(t){var r=n.current,o=e.options.scrollBehavior;kt&&o&&"fullPath"in t&&gt(e,t,r,!1)}(t)};n.transitionTo(n.getCurrentLocation(),r,r)}n.listen((function(t){e.apps.forEach((function(e){e._route=t}))}))}},ee.prototype.beforeEach=function(t){return oe(this.beforeHooks,t)},ee.prototype.beforeResolve=function(t){return oe(this.resolveHooks,t)},ee.prototype.afterEach=function(t){return oe(this.afterHooks,t)},ee.prototype.onReady=function(t,e){this.history.onReady(t,e)},ee.prototype.onError=function(t){this.history.onError(t)},ee.prototype.push=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!=typeof Promise)return new Promise((function(e,n){r.history.push(t,e,n)}));this.history.push(t,e,n)},ee.prototype.replace=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!=typeof Promise)return new Promise((function(e,n){r.history.replace(t,e,n)}));this.history.replace(t,e,n)},ee.prototype.go=function(t){this.history.go(t)},ee.prototype.back=function(){this.go(-1)},ee.prototype.forward=function(){this.go(1)},ee.prototype.getMatchedComponents=function(t){var e=t?t.matched?t:this.resolve(t).route:this.currentRoute;return e?[].concat.apply([],e.matched.map((function(t){return Object.keys(t.components).map((function(e){return t.components[e]}))}))):[]},ee.prototype.resolve=function(t,e,n){var r=X(t,e=e||this.history.current,n,this),o=this.match(r,e),c=o.redirectedFrom||o.fullPath,f=function(base,t,e){var path="hash"===e?"#"+t:t;return base?j(base+"/"+path):path}(this.history.base,c,this.mode);return{location:r,route:o,href:f,normalizedTo:r,resolved:o}},ee.prototype.getRoutes=function(){return this.matcher.getRoutes()},ee.prototype.addRoute=function(t,e){this.matcher.addRoute(t,e),this.history.current!==x&&this.history.transitionTo(this.history.getCurrentLocation())},ee.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==x&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(ee.prototype,ne);var re=ee;function oe(t,e){return t.push(e),function(){var i=t.indexOf(e);i>-1&&t.splice(i,1)}}ee.install=function t(e){if(!t.installed||Y!==e){t.installed=!0,Y=e;var n=function(t){return void 0!==t},r=function(t,e){var i=t.$options._parentVnode;n(i)&&n(i=i.data)&&n(i=i.registerRouteInstance)&&i(t,e)};e.mixin({beforeCreate:function(){n(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),e.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,r(this,this)},destroyed:function(){r(this)}}),Object.defineProperty(e.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(e.prototype,"$route",{get:function(){return this._routerRoot._route}}),e.component("RouterView",C),e.component("RouterLink",tt);var o=e.config.optionMergeStrategies;o.beforeRouteEnter=o.beforeRouteLeave=o.beforeRouteUpdate=o.created}},ee.version="3.6.5",ee.isNavigationFailure=Lt,ee.NavigationFailureType=Tt,ee.START_LOCATION=x,ot&&window.Vue&&window.Vue.use(ee)},function(t,e,n){t.exports=function(){"use strict";function t(t){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var e in source)t[e]=source[e]}return t}function e(n,r){function o(e,o,c){if("undefined"!=typeof document){"number"==typeof(c=t({},r,c)).expires&&(c.expires=new Date(Date.now()+864e5*c.expires)),c.expires&&(c.expires=c.expires.toUTCString()),e=encodeURIComponent(e).replace(/%(2[346B]|5E|60|7C)/g,decodeURIComponent).replace(/[()]/g,escape);var f="";for(var l in c)c[l]&&(f+="; "+l,!0!==c[l]&&(f+="="+c[l].split(";")[0]));return document.cookie=e+"="+n.write(o,e)+f}}function c(t){if("undefined"!=typeof document&&(!arguments.length||t)){for(var e=document.cookie?document.cookie.split("; "):[],r={},i=0;i<e.length;i++){var o=e[i].split("="),c=o.slice(1).join("=");try{var f=decodeURIComponent(o[0]);if(r[f]=n.read(c,f),t===f)break}catch(t){}}return t?r[t]:r}}return Object.create({set:o,get:c,remove:function(e,n){o(e,"",t({},n,{expires:-1}))},withAttributes:function(n){return e(this.converter,t({},this.attributes,n))},withConverter:function(n){return e(t({},this.converter,n),this.attributes)}},{attributes:{value:Object.freeze(r)},converter:{value:Object.freeze(n)}})}return e({read:function(t){return'"'===t[0]&&(t=t.slice(1,-1)),t.replace(/(%[\dA-F]{2})+/gi,decodeURIComponent)},write:function(t){return encodeURIComponent(t).replace(/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,decodeURIComponent)}},{path:"/"})}()},,,function(t,e,n){var r=n(6),o=n(99),c=n(12).f,f=n(56).f,l=n(94),h=n(72),d=r.RegExp,v=d,m=d.prototype,y=/a/g,_=/a/g,w=new d(y)!==y;if(n(10)&&(!w||n(9)((function(){return _[n(5)("match")]=!1,d(y)!=y||d(_)==_||"/a/i"!=d(y,"i")})))){d=function(p,t){var e=this instanceof d,n=l(p),r=void 0===t;return!e&&n&&p.constructor===d&&r?p:o(w?new v(n&&!r?p.source:p,t):v((n=p instanceof d)?p.source:p,n&&r?h.call(p):t),e?this:m,d)};for(var x=function(t){t in d||c(d,t,{configurable:!0,get:function(){return v[t]},set:function(e){v[t]=e}})},O=f(v),i=0;O.length>i;)x(O[i++]);m.constructor=d,d.prototype=m,n(14)(r,"RegExp",d)}n(91)("RegExp")},function(t,e,n){t.exports=!n(10)&&!n(9)((function(){return 7!=Object.defineProperty(n(78)("div"),"a",{get:function(){return 7}}).a}))},function(t,e,n){var r=n(53),o=Math.max,c=Math.min;t.exports=function(t,e){return(t=r(t))<0?o(t+e,0):c(t,e)}},function(t,e,n){e.f=n(5)},function(t,e,n){var r=n(32),o=n(22),c=n(113)(!1),f=n(82)("IE_PROTO");t.exports=function(object,t){var e,n=o(object),i=0,l=[];for(e in n)e!=f&&r(n,e)&&l.push(e);for(;t.length>i;)r(n,e=t[i++])&&(~c(l,e)||l.push(e));return l}},function(t,e,n){var r=n(22),o=n(18),c=n(110);t.exports=function(t){return function(e,n,f){var l,h=r(e),d=o(h.length),v=c(f,d);if(t&&n!=n){for(;d>v;)if((l=h[v++])!=l)return!0}else for(;d>v;v++)if((t||v in h)&&h[v]===n)return t||v||0;return!t&&-1}}},function(t,e,n){var r=n(34);t.exports=Array.isArray||function(t){return"Array"==r(t)}},function(t,e,n){var r=n(8);t.exports=function(t,e,n,o){try{return o?e(r(n)[0],n[1]):e(n)}catch(e){var c=t.return;throw void 0!==c&&r(c.call(t)),e}}},function(t,e,n){var r=n(58),o=n(5)("iterator"),c=Array.prototype;t.exports=function(t){return void 0!==t&&(r.Array===t||c[o]===t)}},function(t,e,n){"use strict";var r=n(12),o=n(50);t.exports=function(object,t,e){t in object?r.f(object,t,o(0,e)):object[t]=e}},function(t,e,n){var r=n(69),o=n(5)("iterator"),c=n(58);t.exports=n(30).getIteratorMethod=function(t){if(null!=t)return t[o]||t["@@iterator"]||c[r(t)]}},function(t,e,n){"use strict";var r=n(85),o=n(120),c=n(58),f=n(22);t.exports=n(86)(Array,"Array",(function(t,e){this._t=f(t),this._i=0,this._k=e}),(function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,o(1)):o(0,"keys"==e?n:"values"==e?t[n]:[n,t[n]])}),"values"),c.Arguments=c.Array,r("keys"),r("values"),r("entries")},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e,n){var r,o,c,f=n(33),l=n(154),html=n(79),h=n(78),d=n(6),v=d.process,m=d.setImmediate,y=d.clearImmediate,_=d.MessageChannel,w=d.Dispatch,x=0,O={},S="onreadystatechange",$=function(){var t=+this;if(O.hasOwnProperty(t)){var e=O[t];delete O[t],e()}},A=function(t){$.call(t.data)};m&&y||(m=function(t){for(var e=[],i=1;arguments.length>i;)e.push(arguments[i++]);return O[++x]=function(){l("function"==typeof t?t:Function(t),e)},r(x),x},y=function(t){delete O[t]},"process"==n(34)(v)?r=function(t){v.nextTick(f($,t,1))}:w&&w.now?r=function(t){w.now(f($,t,1))}:_?(c=(o=new _).port2,o.port1.onmessage=A,r=f(c.postMessage,c,1)):d.addEventListener&&"function"==typeof postMessage&&!d.importScripts?(r=function(t){d.postMessage(t+"","*")},d.addEventListener("message",A,!1)):r=S in h("script")?function(t){html.appendChild(h("script")).onreadystatechange=function(){html.removeChild(this),$.call(t)}}:function(t){setTimeout(f($,t,1),0)}),t.exports={set:m,clear:y}},function(t,e,n){"use strict";var r=n(66);function o(t){var e,n;this.promise=new t((function(t,r){if(void 0!==e||void 0!==n)throw TypeError("Bad Promise constructor");e=t,n=r})),this.resolve=r(e),this.reject=r(n)}t.exports.f=function(t){return new o(t)}},function(t,e,n){var r=n(8),o=n(13),c=n(122);t.exports=function(t,e){if(r(t),o(e)&&e.constructor===t)return e;var n=c.f(t);return(0,n.resolve)(e),n.promise}},function(t,e,n){"use strict";var r=n(9);t.exports=function(t,e){return!!t&&r((function(){e?t.call(null,(function(){}),1):t.call(null)}))}},function(t,e,n){var r=n(4),o=n(30),c=n(9);t.exports=function(t,e){var n=(o.Object||{})[t]||Object[t],f={};f[t]=e(n),r(r.S+r.F*c((function(){n(1)})),"Object",f)}},function(t,e,n){var r=n(53),o=n(37);t.exports=function(t){return function(e,n){var a,b,s=String(o(e)),i=r(n),c=s.length;return i<0||i>=c?t?"":void 0:(a=s.charCodeAt(i))<55296||a>56319||i+1===c||(b=s.charCodeAt(i+1))<56320||b>57343?t?s.charAt(i):a:t?s.slice(i,i+2):b-56320+(a-55296<<10)+65536}}},function(t,e,n){"use strict";var r=n(8),o=n(166),c=n(70);n(71)("search",1,(function(t,e,n,f){return[function(n){var r=t(this),o=null==n?void 0:n[e];return void 0!==o?o.call(n,r):new RegExp(n)[e](String(r))},function(t){var e=f(n,t,this);if(e.done)return e.value;var l=r(t),h=String(this),d=l.lastIndex;o(d,0)||(l.lastIndex=0);var v=c(l,h);return o(l.lastIndex,d)||(l.lastIndex=d),null===v?-1:v.index}]}))},,,,,,,function(t,e,n){var r=n(13);t.exports=function(t,e){if(!r(t)||t._t!==e)throw TypeError("Incompatible receiver, "+e+" required!");return t}},,,,,,function(t,e,n){"use strict";n.d(e,"a",(function(){return f}));var r=n(60);var o=n(76),c=n(46);function f(t){return function(t){if(Array.isArray(t))return Object(r.a)(t)}(t)||Object(o.a)(t)||Object(c.a)(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}},function(t,e,n){"use strict";function r(source,t){if(null==source)return{};var e,i,n=function(source,t){if(null==source)return{};var e,i,n={},r=Object.keys(source);for(i=0;i<r.length;i++)e=r[i],t.indexOf(e)>=0||(n[e]=source[e]);return n}(source,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(source);for(i=0;i<r.length;i++)e=r[i],t.indexOf(e)>=0||Object.prototype.propertyIsEnumerable.call(source,e)&&(n[e]=source[e])}return n}n.d(e,"a",(function(){return r}))},function(t,e,n){"use strict";var r=n(6),o=n(32),c=n(34),f=n(99),l=n(64),h=n(9),d=n(56).f,v=n(57).f,m=n(12).f,y=n(178).trim,_="Number",w=r.Number,x=w,O=w.prototype,S=c(n(68)(O))==_,$="trim"in String.prototype,A=function(t){var e=l(t,!1);if("string"==typeof e&&e.length>2){var n,r,o,c=(e=$?e.trim():y(e,3)).charCodeAt(0);if(43===c||45===c){if(88===(n=e.charCodeAt(2))||120===n)return NaN}else if(48===c){switch(e.charCodeAt(1)){case 66:case 98:r=2,o=49;break;case 79:case 111:r=8,o=55;break;default:return+e}for(var code,f=e.slice(2),i=0,h=f.length;i<h;i++)if((code=f.charCodeAt(i))<48||code>o)return NaN;return parseInt(f,r)}}return+e};if(!w(" 0o1")||!w("0b1")||w("+0x1")){w=function(t){var e=arguments.length<1?0:t,n=this;return n instanceof w&&(S?h((function(){O.valueOf.call(n)})):c(n)!=_)?f(new x(A(e)),n,w):A(e)};for(var k,C=n(10)?d(x):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),E=0;C.length>E;E++)o(x,k=C[E])&&!o(w,k)&&m(w,k,v(x,k));w.prototype=O,O.constructor=w,n(14)(r,_,w)}},function(t,e,n){"use strict";var r=n(4),o=n(18),c=n(93),f="endsWith",l="".endsWith;r(r.P+r.F*n(95)(f),"String",{endsWith:function(t){var e=c(this,t,f),n=arguments.length>1?arguments[1]:void 0,r=o(e.length),h=void 0===n?r:Math.min(o(n),r),d=String(t);return l?l.call(e,d,h):e.slice(h-d.length,h)===d}})},,,function(t,e,n){t.exports=n(65)("native-function-to-string",Function.toString)},function(t,e,n){var r=n(6),o=n(30),c=n(52),f=n(111),l=n(12).f;t.exports=function(t){var e=o.Symbol||(o.Symbol=c?{}:r.Symbol||{});"_"==t.charAt(0)||t in e||l(e,t,{value:f.f(t)})}},function(t,e,n){var r=n(38),o=n(67),c=n(55);t.exports=function(t){var e=r(t),n=o.f;if(n)for(var f,l=n(t),h=c.f,i=0;l.length>i;)h.call(t,f=l[i++])&&e.push(f);return e}},function(t,e,n){var r=n(12),o=n(8),c=n(38);t.exports=n(10)?Object.defineProperties:function(t,e){o(t);for(var n,f=c(e),l=f.length,i=0;l>i;)r.f(t,n=f[i++],e[n]);return t}},function(t,e,n){var r=n(22),o=n(56).f,c={}.toString,f="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function(t){return f&&"[object Window]"==c.call(t)?function(t){try{return o(t)}catch(t){return f.slice()}}(t):o(r(t))}},function(t,e,n){"use strict";var r=n(68),o=n(50),c=n(54),f={};n(31)(f,n(5)("iterator"),(function(){return this})),t.exports=function(t,e,n){t.prototype=r(f,{next:o(1,n)}),c(t,e+" Iterator")}},function(t,e,n){var r=n(32),o=n(39),c=n(82)("IE_PROTO"),f=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=o(t),r(t,c)?t[c]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?f:null}},function(t,e,n){"use strict";var r,o,c,f,l=n(52),h=n(6),d=n(33),v=n(69),m=n(4),y=n(13),_=n(66),w=n(87),x=n(88),O=n(89),S=n(121).set,$=n(155)(),A=n(122),k=n(156),C=n(157),E=n(123),T="Promise",j=h.TypeError,I=h.process,M=I&&I.versions,P=M&&M.v8||"",N=h.Promise,L="process"==v(I),R=function(){},F=o=A.f,D=!!function(){try{var t=N.resolve(1),e=(t.constructor={})[n(5)("species")]=function(t){t(R,R)};return(L||"function"==typeof PromiseRejectionEvent)&&t.then(R)instanceof e&&0!==P.indexOf("6.6")&&-1===C.indexOf("Chrome/66")}catch(t){}}(),U=function(t){var e;return!(!y(t)||"function"!=typeof(e=t.then))&&e},H=function(t,e){if(!t._n){t._n=!0;var n=t._c;$((function(){for(var r=t._v,o=1==t._s,i=0,c=function(e){var n,c,f,l=o?e.ok:e.fail,h=e.resolve,d=e.reject,v=e.domain;try{l?(o||(2==t._h&&z(t),t._h=1),!0===l?n=r:(v&&v.enter(),n=l(r),v&&(v.exit(),f=!0)),n===e.promise?d(j("Promise-chain cycle")):(c=U(n))?c.call(n,h,d):h(n)):d(r)}catch(t){v&&!f&&v.exit(),d(t)}};n.length>i;)c(n[i++]);t._c=[],t._n=!1,e&&!t._h&&B(t)}))}},B=function(t){S.call(h,(function(){var e,n,r,o=t._v,c=V(t);if(c&&(e=k((function(){L?I.emit("unhandledRejection",o,t):(n=h.onunhandledrejection)?n({promise:t,reason:o}):(r=h.console)&&r.error&&r.error("Unhandled promise rejection",o)})),t._h=L||V(t)?2:1),t._a=void 0,c&&e.e)throw e.v}))},V=function(t){return 1!==t._h&&0===(t._a||t._c).length},z=function(t){S.call(h,(function(){var e;L?I.emit("rejectionHandled",t):(e=h.onrejectionhandled)&&e({promise:t,reason:t._v})}))},K=function(t){var e=this;e._d||(e._d=!0,(e=e._w||e)._v=t,e._s=2,e._a||(e._a=e._c.slice()),H(e,!0))},W=function(t){var e,n=this;if(!n._d){n._d=!0,n=n._w||n;try{if(n===t)throw j("Promise can't be resolved itself");(e=U(t))?$((function(){var r={_w:n,_d:!1};try{e.call(t,d(W,r,1),d(K,r,1))}catch(t){K.call(r,t)}})):(n._v=t,n._s=1,H(n,!1))}catch(t){K.call({_w:n,_d:!1},t)}}};D||(N=function(t){w(this,N,T,"_h"),_(t),r.call(this);try{t(d(W,this,1),d(K,this,1))}catch(t){K.call(this,t)}},(r=function(t){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1}).prototype=n(90)(N.prototype,{then:function(t,e){var n=F(O(this,N));return n.ok="function"!=typeof t||t,n.fail="function"==typeof e&&e,n.domain=L?I.domain:void 0,this._c.push(n),this._a&&this._a.push(n),this._s&&H(this,!1),n.promise},catch:function(t){return this.then(void 0,t)}}),c=function(){var t=new r;this.promise=t,this.resolve=d(W,t,1),this.reject=d(K,t,1)},A.f=F=function(t){return t===N||t===f?new c(t):o(t)}),m(m.G+m.W+m.F*!D,{Promise:N}),n(54)(N,T),n(91)(T),f=n(30).Promise,m(m.S+m.F*!D,T,{reject:function(t){var e=F(this);return(0,e.reject)(t),e.promise}}),m(m.S+m.F*(l||!D),T,{resolve:function(t){return E(l&&this===f?N:this,t)}}),m(m.S+m.F*!(D&&n(84)((function(t){N.all(t).catch(R)}))),T,{all:function(t){var e=this,n=F(e),r=n.resolve,o=n.reject,c=k((function(){var n=[],c=0,f=1;x(t,!1,(function(t){var l=c++,h=!1;n.push(void 0),f++,e.resolve(t).then((function(t){h||(h=!0,n[l]=t,--f||r(n))}),o)})),--f||r(n)}));return c.e&&o(c.v),n.promise},race:function(t){var e=this,n=F(e),r=n.reject,o=k((function(){x(t,!1,(function(t){e.resolve(t).then(n.resolve,r)}))}));return o.e&&r(o.v),n.promise}})},function(t,e){t.exports=function(t,e,n){var r=void 0===n;switch(e.length){case 0:return r?t():t.call(n);case 1:return r?t(e[0]):t.call(n,e[0]);case 2:return r?t(e[0],e[1]):t.call(n,e[0],e[1]);case 3:return r?t(e[0],e[1],e[2]):t.call(n,e[0],e[1],e[2]);case 4:return r?t(e[0],e[1],e[2],e[3]):t.call(n,e[0],e[1],e[2],e[3])}return t.apply(n,e)}},function(t,e,n){var r=n(6),o=n(121).set,c=r.MutationObserver||r.WebKitMutationObserver,f=r.process,l=r.Promise,h="process"==n(34)(f);t.exports=function(){var head,t,e,n=function(){var n,r;for(h&&(n=f.domain)&&n.exit();head;){r=head.fn,head=head.next;try{r()}catch(n){throw head?e():t=void 0,n}}t=void 0,n&&n.enter()};if(h)e=function(){f.nextTick(n)};else if(!c||r.navigator&&r.navigator.standalone)if(l&&l.resolve){var d=l.resolve(void 0);e=function(){d.then(n)}}else e=function(){o.call(r,n)};else{var v=!0,m=document.createTextNode("");new c(n).observe(m,{characterData:!0}),e=function(){m.data=v=!v}}return function(n){var r={fn:n,next:void 0};t&&(t.next=r),head||(head=r,e()),t=r}}},function(t,e){t.exports=function(t){try{return{e:!1,v:t()}}catch(t){return{e:!0,v:t}}}},function(t,e,n){var r=n(6).navigator;t.exports=r&&r.userAgent||""},function(t,e,n){var r=n(4);r(r.S+r.F,"Object",{assign:n(159)})},function(t,e,n){"use strict";var r=n(10),o=n(38),c=n(67),f=n(55),l=n(39),h=n(81),d=Object.assign;t.exports=!d||n(9)((function(){var t={},e={},n=Symbol(),r="abcdefghijklmnopqrst";return t[n]=7,r.split("").forEach((function(t){e[t]=t})),7!=d({},t)[n]||Object.keys(d({},e)).join("")!=r}))?function(t,source){for(var e=l(t),n=arguments.length,d=1,v=c.f,m=f.f;n>d;)for(var y,_=h(arguments[d++]),w=v?o(_).concat(v(_)):o(_),x=w.length,O=0;x>O;)y=w[O++],r&&!m.call(_,y)||(e[y]=_[y]);return e}:d},function(t,e,n){"use strict";var r=n(4),o=n(30),c=n(6),f=n(89),l=n(123);r(r.P+r.R,"Promise",{finally:function(t){var e=f(this,o.Promise||c.Promise),n="function"==typeof t;return this.then(n?function(n){return l(e,t()).then((function(){return n}))}:t,n?function(n){return l(e,t()).then((function(){throw n}))}:t)}})},function(t,e,n){var r=n(162);t.exports=function(t,e){return new(r(t))(e)}},function(t,e,n){var r=n(13),o=n(114),c=n(5)("species");t.exports=function(t){var e;return o(t)&&("function"!=typeof(e=t.constructor)||e!==Array&&!o(e.prototype)||(e=void 0),r(e)&&null===(e=e[c])&&(e=void 0)),void 0===e?Array:e}},function(t,e,n){var r=n(56),o=n(67),c=n(8),f=n(6).Reflect;t.exports=f&&f.ownKeys||function(t){var e=r.f(c(t)),n=o.f;return n?e.concat(n(t)):e}},function(t,e,n){var r=n(10),o=n(38),c=n(22),f=n(55).f;t.exports=function(t){return function(e){for(var n,l=c(e),h=o(l),d=h.length,i=0,v=[];d>i;)n=h[i++],r&&!f.call(l,n)||v.push(t?[n,l[n]]:l[n]);return v}}},function(t,e,n){"use strict";var r=n(98);n(4)({target:"RegExp",proto:!0,forced:r!==/./.exec},{exec:r})},function(t,e){t.exports=Object.is||function(t,e){return t===e?0!==t||1/t==1/e:t!=t&&e!=e}},function(t,e,n){var r=n(13),o=n(8),c=function(t,e){if(o(t),!r(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,e,r){try{(r=n(33)(Function.call,n(57).f(Object.prototype,"__proto__").set,2))(t,[]),e=!(t instanceof Array)}catch(t){e=!0}return function(t,n){return c(t,n),e?t.__proto__=n:r(t,n),t}}({},!1):void 0),check:c}},function(t,e,n){n(10)&&"g"!=/./g.flags&&n(12).f(RegExp.prototype,"flags",{configurable:!0,get:n(72)})},function(t,e,n){var r=n(4);r(r.P,"String",{repeat:n(170)})},function(t,e,n){"use strict";var r=n(53),o=n(37);t.exports=function(t){var e=String(o(this)),n="",c=r(t);if(c<0||c==1/0)throw RangeError("Count can't be negative");for(;c>0;(c>>>=1)&&(e+=e))1&c&&(n+=e);return n}},function(t,e,n){"use strict";(function(e,n){var r=Object.freeze({});function o(t){return null==t}function c(t){return null!=t}function f(t){return!0===t}function i(t){return"string"==typeof t||"number"==typeof t||"symbol"==typeof t||"boolean"==typeof t}function l(t){return null!==t&&"object"==typeof t}var a=Object.prototype.toString;function s(t){return"[object Object]"===a.call(t)}function h(t){var e=parseFloat(String(t));return e>=0&&Math.floor(e)===e&&isFinite(t)}function u(t){return c(t)&&"function"==typeof t.then&&"function"==typeof t.catch}function d(t){return null==t?"":Array.isArray(t)||s(t)&&t.toString===a?JSON.stringify(t,null,2):String(t)}function v(t){var e=parseFloat(t);return isNaN(e)?t:e}function p(t,e){for(var n=Object.create(null),r=t.split(","),i=0;i<r.length;i++)n[r[i]]=!0;return e?function(t){return n[t.toLowerCase()]}:function(t){return n[t]}}var m=p("slot,component",!0),y=p("key,ref,slot,slot-scope,is");function _(t,e){if(t.length){var n=t.indexOf(e);if(n>-1)return t.splice(n,1)}}var w=Object.prototype.hasOwnProperty;function x(t,e){return w.call(t,e)}function g(t){var e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}var O=/-(\w)/g,b=g((function(t){return t.replace(O,(function(t,e){return e?e.toUpperCase():""}))})),S=g((function(t){return t.charAt(0).toUpperCase()+t.slice(1)})),$=/\B([A-Z])/g,A=g((function(t){return t.replace($,"-$1").toLowerCase()})),k=Function.prototype.bind?function(t,e){return t.bind(e)}:function(t,e){function n(n){var r=arguments.length;return r?r>1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n};function C(t,e){e=e||0;for(var n=t.length-e,r=new Array(n);n--;)r[n]=t[n+e];return r}function E(t,e){for(var n in e)t[n]=e[n];return t}function T(t){for(var e={},n=0;n<t.length;n++)t[n]&&E(e,t[n]);return e}function j(t,e,n){}var I=function(t,e,n){return!1},M=function(t){return t};function P(t,e){if(t===e)return!0;var n=l(t),r=l(e);if(!n||!r)return!n&&!r&&String(t)===String(e);try{var i=Array.isArray(t),a=Array.isArray(e);if(i&&a)return t.length===e.length&&t.every((function(t,n){return P(t,e[n])}));if(t instanceof Date&&e instanceof Date)return t.getTime()===e.getTime();if(i||a)return!1;var s=Object.keys(t),o=Object.keys(e);return s.length===o.length&&s.every((function(n){return P(t[n],e[n])}))}catch(t){return!1}}function N(t,e){for(var n=0;n<t.length;n++)if(P(t[n],e))return n;return-1}function L(t){var e=!1;return function(){e||(e=!0,t.apply(this,arguments))}}var R="data-server-rendered",F=["component","directive","filter"],D=["beforeCreate","created","beforeMount","mounted","beforeUpdate","updated","beforeDestroy","destroyed","activated","deactivated","errorCaptured","serverPrefetch"],U={optionMergeStrategies:Object.create(null),silent:!1,productionTip:!1,devtools:!1,performance:!1,errorHandler:null,warnHandler:null,ignoredElements:[],keyCodes:Object.create(null),isReservedTag:I,isReservedAttr:I,isUnknownElement:I,getTagNamespace:j,parsePlatformTagName:M,mustUseProp:I,async:!0,_lifecycleHooks:D},H=/a-zA-Z\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C-\u200D\u203F-\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD/;function B(t,e,n,r){Object.defineProperty(t,e,{value:n,enumerable:!!r,writable:!0,configurable:!0})}var V,z=new RegExp("[^"+H.source+".$_\\d]"),K="__proto__"in{},W="undefined"!=typeof window,G="undefined"!=typeof WXEnvironment&&!!WXEnvironment.platform,J=G&&WXEnvironment.platform.toLowerCase(),Q=W&&window.navigator.userAgent.toLowerCase(),q=Q&&/msie|trident/.test(Q),X=Q&&Q.indexOf("msie 9.0")>0,Y=Q&&Q.indexOf("edge/")>0,Z=(Q&&Q.indexOf("android"),Q&&/iphone|ipad|ipod|ios/.test(Q)||"ios"===J),tt=(Q&&/chrome\/\d+/.test(Q),Q&&/phantomjs/.test(Q),Q&&Q.match(/firefox\/(\d+)/)),et={}.watch,nt=!1;if(W)try{var ot={};Object.defineProperty(ot,"passive",{get:function(){nt=!0}}),window.addEventListener("test-passive",null,ot)}catch(r){}var it=function(){return void 0===V&&(V=!W&&!G&&void 0!==e&&e.process&&"server"===e.process.env.VUE_ENV),V},at=W&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function st(t){return"function"==typeof t&&/native code/.test(t.toString())}var ct,ut="undefined"!=typeof Symbol&&st(Symbol)&&"undefined"!=typeof Reflect&&st(Reflect.ownKeys);ct="undefined"!=typeof Set&&st(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var ft=j,lt=0,pt=function(){this.id=lt++,this.subs=[]};pt.prototype.addSub=function(t){this.subs.push(t)},pt.prototype.removeSub=function(t){_(this.subs,t)},pt.prototype.depend=function(){pt.target&&pt.target.addDep(this)},pt.prototype.notify=function(){for(var t=this.subs.slice(),e=0,n=t.length;e<n;e++)t[e].update()},pt.target=null;var ht=[];function vt(t){ht.push(t),pt.target=t}function mt(){ht.pop(),pt.target=ht[ht.length-1]}var yt=function(t,e,n,r,i,o,a,s){this.tag=t,this.data=e,this.children=n,this.text=r,this.elm=i,this.ns=void 0,this.context=o,this.fnContext=void 0,this.fnOptions=void 0,this.fnScopeId=void 0,this.key=e&&e.key,this.componentOptions=a,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1,this.asyncFactory=s,this.asyncMeta=void 0,this.isAsyncPlaceholder=!1},gt={child:{configurable:!0}};gt.child.get=function(){return this.componentInstance},Object.defineProperties(yt.prototype,gt);var bt=function(t){void 0===t&&(t="");var e=new yt;return e.text=t,e.isComment=!0,e};function _t(t){return new yt(void 0,void 0,void 0,String(t))}function wt(t){var e=new yt(t.tag,t.data,t.children&&t.children.slice(),t.text,t.elm,t.context,t.componentOptions,t.asyncFactory);return e.ns=t.ns,e.isStatic=t.isStatic,e.key=t.key,e.isComment=t.isComment,e.fnContext=t.fnContext,e.fnOptions=t.fnOptions,e.fnScopeId=t.fnScopeId,e.asyncMeta=t.asyncMeta,e.isCloned=!0,e}var xt=Array.prototype,Ot=Object.create(xt);["push","pop","shift","unshift","splice","sort","reverse"].forEach((function(t){var e=xt[t];B(Ot,t,(function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];var i,o=e.apply(this,n),a=this.__ob__;switch(t){case"push":case"unshift":i=n;break;case"splice":i=n.slice(2)}return i&&a.observeArray(i),a.dep.notify(),o}))}));var St=Object.getOwnPropertyNames(Ot),$t=!0;function At(t){$t=t}var kt=function(t){var e;this.value=t,this.dep=new pt,this.vmCount=0,B(t,"__ob__",this),Array.isArray(t)?(K?(e=Ot,t.__proto__=e):function(t,e,n){for(var r=0,i=n.length;r<i;r++){var o=n[r];B(t,o,e[o])}}(t,Ot,St),this.observeArray(t)):this.walk(t)};function Ct(t,e){var n;if(l(t)&&!(t instanceof yt))return x(t,"__ob__")&&t.__ob__ instanceof kt?n=t.__ob__:$t&&!it()&&(Array.isArray(t)||s(t))&&Object.isExtensible(t)&&!t._isVue&&(n=new kt(t)),e&&n&&n.vmCount++,n}function Et(t,e,n,r,i){var o=new pt,a=Object.getOwnPropertyDescriptor(t,e);if(!a||!1!==a.configurable){var s=a&&a.get,c=a&&a.set;s&&!c||2!==arguments.length||(n=t[e]);var u=!i&&Ct(n);Object.defineProperty(t,e,{enumerable:!0,configurable:!0,get:function(){var e=s?s.call(t):n;return pt.target&&(o.depend(),u&&(u.dep.depend(),Array.isArray(e)&&function t(e){for(var n=void 0,r=0,i=e.length;r<i;r++)(n=e[r])&&n.__ob__&&n.__ob__.dep.depend(),Array.isArray(n)&&t(n)}(e))),e},set:function(e){var r=s?s.call(t):n;e===r||e!=e&&r!=r||s&&!c||(c?c.call(t,e):n=e,u=!i&&Ct(e),o.notify())}})}}function Tt(t,e,n){if(Array.isArray(t)&&h(e))return t.length=Math.max(t.length,e),t.splice(e,1,n),n;if(e in t&&!(e in Object.prototype))return t[e]=n,n;var r=t.__ob__;return t._isVue||r&&r.vmCount?n:r?(Et(r.value,e,n),r.dep.notify(),n):(t[e]=n,n)}function jt(t,e){if(Array.isArray(t)&&h(e))t.splice(e,1);else{var n=t.__ob__;t._isVue||n&&n.vmCount||x(t,e)&&(delete t[e],n&&n.dep.notify())}}kt.prototype.walk=function(t){for(var e=Object.keys(t),n=0;n<e.length;n++)Et(t,e[n])},kt.prototype.observeArray=function(t){for(var e=0,n=t.length;e<n;e++)Ct(t[e])};var It=U.optionMergeStrategies;function Mt(t,e){if(!e)return t;for(var n,r,i,o=ut?Reflect.ownKeys(e):Object.keys(e),a=0;a<o.length;a++)"__ob__"!==(n=o[a])&&(r=t[n],i=e[n],x(t,n)?r!==i&&s(r)&&s(i)&&Mt(r,i):Tt(t,n,i));return t}function Pt(t,e,n){return n?function(){var r="function"==typeof e?e.call(n,n):e,i="function"==typeof t?t.call(n,n):t;return r?Mt(r,i):i}:e?t?function(){return Mt("function"==typeof e?e.call(this,this):e,"function"==typeof t?t.call(this,this):t)}:e:t}function Nt(t,e){var n=e?t?t.concat(e):Array.isArray(e)?e:[e]:t;return n?function(t){for(var e=[],n=0;n<t.length;n++)-1===e.indexOf(t[n])&&e.push(t[n]);return e}(n):n}function Lt(t,e,n,r){var i=Object.create(t||null);return e?E(i,e):i}It.data=function(t,e,n){return n?Pt(t,e,n):e&&"function"!=typeof e?t:Pt(t,e)},D.forEach((function(t){It[t]=Nt})),F.forEach((function(t){It[t+"s"]=Lt})),It.watch=function(t,e,n,r){if(t===et&&(t=void 0),e===et&&(e=void 0),!e)return Object.create(t||null);if(!t)return e;var i={};for(var o in E(i,t),e){var a=i[o],s=e[o];a&&!Array.isArray(a)&&(a=[a]),i[o]=a?a.concat(s):Array.isArray(s)?s:[s]}return i},It.props=It.methods=It.inject=It.computed=function(t,e,n,r){if(!t)return e;var i=Object.create(null);return E(i,t),e&&E(i,e),i},It.provide=Pt;var Rt=function(t,e){return void 0===e?t:e};function Ft(t,e,n){if("function"==typeof e&&(e=e.options),function(t,e){var n=t.props;if(n){var r,i,o={};if(Array.isArray(n))for(r=n.length;r--;)"string"==typeof(i=n[r])&&(o[b(i)]={type:null});else if(s(n))for(var a in n)i=n[a],o[b(a)]=s(i)?i:{type:i};t.props=o}}(e),function(t,e){var n=t.inject;if(n){var r=t.inject={};if(Array.isArray(n))for(var i=0;i<n.length;i++)r[n[i]]={from:n[i]};else if(s(n))for(var o in n){var a=n[o];r[o]=s(a)?E({from:o},a):{from:a}}}}(e),function(t){var e=t.directives;if(e)for(var n in e){var r=e[n];"function"==typeof r&&(e[n]={bind:r,update:r})}}(e),!e._base&&(e.extends&&(t=Ft(t,e.extends,n)),e.mixins))for(var r=0,i=e.mixins.length;r<i;r++)t=Ft(t,e.mixins[r],n);var o,a={};for(o in t)c(o);for(o in e)x(t,o)||c(o);function c(r){var i=It[r]||Rt;a[r]=i(t[r],e[r],n,r)}return a}function Dt(t,e,n,r){if("string"==typeof n){var i=t[e];if(x(i,n))return i[n];var o=b(n);if(x(i,o))return i[o];var a=S(o);return x(i,a)?i[a]:i[n]||i[o]||i[a]}}function Ut(t,e,n,r){var i=e[t],o=!x(n,t),a=n[t],s=zt(Boolean,i.type);if(s>-1)if(o&&!x(i,"default"))a=!1;else if(""===a||a===A(t)){var c=zt(String,i.type);(c<0||s<c)&&(a=!0)}if(void 0===a){a=function(t,e,n){if(x(e,"default")){var r=e.default;return t&&t.$options.propsData&&void 0===t.$options.propsData[n]&&void 0!==t._props[n]?t._props[n]:"function"==typeof r&&"Function"!==Bt(e.type)?r.call(t):r}}(r,i,t);var u=$t;At(!0),Ct(a),At(u)}return a}var Ht=/^\s*function (\w+)/;function Bt(t){var e=t&&t.toString().match(Ht);return e?e[1]:""}function Vt(t,e){return Bt(t)===Bt(e)}function zt(t,e){if(!Array.isArray(e))return Vt(e,t)?0:-1;for(var n=0,r=e.length;n<r;n++)if(Vt(e[n],t))return n;return-1}function qt(t,e,n){vt();try{if(e)for(var r=e;r=r.$parent;){var i=r.$options.errorCaptured;if(i)for(var o=0;o<i.length;o++)try{if(!1===i[o].call(r,t,e,n))return}catch(t){Wt(t,r,"errorCaptured hook")}}Wt(t,e,n)}finally{mt()}}function Kt(t,e,n,r,i){var o;try{(o=n?t.apply(e,n):t.call(e))&&!o._isVue&&u(o)&&!o._handled&&(o.catch((function(t){return qt(t,r,i+" (Promise/async)")})),o._handled=!0)}catch(t){qt(t,r,i)}return o}function Wt(t,e,n){if(U.errorHandler)try{return U.errorHandler.call(null,t,e,n)}catch(e){e!==t&&Gt(e,null,"config.errorHandler")}Gt(t,e,n)}function Gt(t,e,n){if(!W&&!G||"undefined"==typeof console)throw t;console.error(t)}var Jt,Qt=!1,Xt=[],Yt=!1;function Zt(){Yt=!1;var t=Xt.slice(0);Xt.length=0;for(var e=0;e<t.length;e++)t[e]()}if("undefined"!=typeof Promise&&st(Promise)){var te=Promise.resolve();Jt=function(){te.then(Zt),Z&&setTimeout(j)},Qt=!0}else if(q||"undefined"==typeof MutationObserver||!st(MutationObserver)&&"[object MutationObserverConstructor]"!==MutationObserver.toString())Jt=void 0!==n&&st(n)?function(){n(Zt)}:function(){setTimeout(Zt,0)};else{var ee=1,ne=new MutationObserver(Zt),re=document.createTextNode(String(ee));ne.observe(re,{characterData:!0}),Jt=function(){ee=(ee+1)%2,re.data=String(ee)},Qt=!0}function oe(t,e){var n;if(Xt.push((function(){if(t)try{t.call(e)}catch(t){qt(t,e,"nextTick")}else n&&n(e)})),Yt||(Yt=!0,Jt()),!t&&"undefined"!=typeof Promise)return new Promise((function(t){n=t}))}var ie=new ct;function ae(t){!function t(e,n){var r,i,a=Array.isArray(e);if(!(!a&&!l(e)||Object.isFrozen(e)||e instanceof yt)){if(e.__ob__){var s=e.__ob__.dep.id;if(n.has(s))return;n.add(s)}if(a)for(r=e.length;r--;)t(e[r],n);else for(r=(i=Object.keys(e)).length;r--;)t(e[i[r]],n)}}(t,ie),ie.clear()}var se=g((function(t){var e="&"===t.charAt(0),n="~"===(t=e?t.slice(1):t).charAt(0),r="!"===(t=n?t.slice(1):t).charAt(0);return{name:t=r?t.slice(1):t,once:n,capture:r,passive:e}}));function rt(t,e){function n(){var t=arguments,r=n.fns;if(!Array.isArray(r))return Kt(r,null,arguments,e,"v-on handler");for(var i=r.slice(),o=0;o<i.length;o++)Kt(i[o],null,t,e,"v-on handler")}return n.fns=t,n}function ce(t,e,i,n,a,s){var r,u,c,l;for(r in t)u=t[r],c=e[r],l=se(r),o(u)||(o(c)?(o(u.fns)&&(u=t[r]=rt(u,s)),f(l.once)&&(u=t[r]=a(l.name,u,l.capture)),i(l.name,u,l.capture,l.passive,l.params)):u!==c&&(c.fns=u,t[r]=c));for(r in e)o(t[r])&&n((l=se(r)).name,e[r],l.capture)}function ue(t,i,e){var a;t instanceof yt&&(t=t.data.hook||(t.data.hook={}));var s=t[i];function n(){e.apply(this,arguments),_(a.fns,n)}o(s)?a=rt([n]):c(s.fns)&&f(s.merged)?(a=s).fns.push(n):a=rt([s,n]),a.merged=!0,t[i]=a}function fe(t,e,n,i,r){if(c(e)){if(x(e,n))return t[n]=e[n],r||delete e[n],!0;if(x(e,i))return t[n]=e[i],r||delete e[i],!0}return!1}function le(t){return i(t)?[_t(t)]:Array.isArray(t)?function t(e,a){var n,u,r,l,s=[];for(n=0;n<e.length;n++)o(u=e[n])||"boolean"==typeof u||(l=s[r=s.length-1],Array.isArray(u)?u.length>0&&(pe((u=t(u,(a||"")+"_"+n))[0])&&pe(l)&&(s[r]=_t(l.text+u[0].text),u.shift()),s.push.apply(s,u)):i(u)?pe(l)?s[r]=_t(l.text+u):""!==u&&s.push(_t(u)):pe(u)&&pe(l)?s[r]=_t(l.text+u.text):(f(e._isVList)&&c(u.tag)&&o(u.key)&&c(a)&&(u.key="__vlist"+a+"_"+n+"__"),s.push(u)));return s}(t):void 0}function pe(t){return c(t)&&c(t.text)&&!1===t.isComment}function he(t,e){if(t){for(var n=Object.create(null),r=ut?Reflect.ownKeys(t):Object.keys(t),i=0;i<r.length;i++){var o=r[i];if("__ob__"!==o){for(var a=t[o].from,s=e;s;){if(s._provided&&x(s._provided,a)){n[o]=s._provided[a];break}s=s.$parent}if(!s&&"default"in t[o]){var c=t[o].default;n[o]="function"==typeof c?c.call(e):c}}}return n}}function de(t,e){if(!t||!t.length)return{};for(var n={},r=0,i=t.length;r<i;r++){var o=t[r],a=o.data;if(a&&a.attrs&&a.attrs.slot&&delete a.attrs.slot,o.context!==e&&o.fnContext!==e||!a||null==a.slot)(n.default||(n.default=[])).push(o);else{var s=a.slot,c=n[s]||(n[s]=[]);"template"===o.tag?c.push.apply(c,o.children||[]):c.push(o)}}for(var u in n)n[u].every(ve)&&delete n[u];return n}function ve(t){return t.isComment&&!t.asyncFactory||" "===t.text}function me(t){return t.isComment&&t.asyncFactory}function dt(t,e,n){var i,o=Object.keys(e).length>0,a=t?!!t.$stable:!o,s=t&&t.$key;if(t){if(t._normalized)return t._normalized;if(a&&n&&n!==r&&s===n.$key&&!o&&!n.$hasNormal)return n;for(var c in i={},t)t[c]&&"$"!==c[0]&&(i[c]=ye(e,c,t[c]))}else i={};for(var u in e)u in i||(i[u]=ge(e,u));return t&&Object.isExtensible(t)&&(t._normalized=i),B(i,"$stable",a),B(i,"$key",s),B(i,"$hasNormal",o),i}function ye(t,e,n){var r=function(){var t=arguments.length?n.apply(null,arguments):n({}),e=(t=t&&"object"==typeof t&&!Array.isArray(t)?[t]:le(t))&&t[0];return t&&(!e||1===t.length&&e.isComment&&!me(e))?void 0:t};return n.proxy&&Object.defineProperty(t,e,{get:r,enumerable:!0,configurable:!0}),r}function ge(t,e){return function(){return t[e]}}function be(t,e){var n,i,a,s,r;if(Array.isArray(t)||"string"==typeof t)for(n=new Array(t.length),i=0,a=t.length;i<a;i++)n[i]=e(t[i],i);else if("number"==typeof t)for(n=new Array(t),i=0;i<t;i++)n[i]=e(i+1,i);else if(l(t))if(ut&&t[Symbol.iterator]){n=[];for(var u=t[Symbol.iterator](),o=u.next();!o.done;)n.push(e(o.value,n.length)),o=u.next()}else for(s=Object.keys(t),n=new Array(s.length),i=0,a=s.length;i<a;i++)r=s[i],n[i]=e(t[r],r,i);return c(n)||(n=[]),n._isVList=!0,n}function _e(t,e,n,r){var i,o=this.$scopedSlots[t];o?(n=n||{},r&&(n=E(E({},r),n)),i=o(n)||("function"==typeof e?e():e)):i=this.$slots[t]||("function"==typeof e?e():e);var a=n&&n.slot;return a?this.$createElement("template",{slot:a},i):i}function we(t){return Dt(this.$options,"filters",t)||M}function xe(t,e){return Array.isArray(t)?-1===t.indexOf(e):t!==e}function Oe(t,e,n,r,i){var o=U.keyCodes[e]||n;return i&&r&&!U.keyCodes[e]?xe(i,r):o?xe(o,t):r?A(r)!==e:void 0===t}function Se(t,e,n,r,i){if(n&&l(n)){var a;Array.isArray(n)&&(n=T(n));var s=function(o){if("class"===o||"style"===o||y(o))a=t;else{var s=t.attrs&&t.attrs.type;a=r||U.mustUseProp(e,s,o)?t.domProps||(t.domProps={}):t.attrs||(t.attrs={})}var c=b(o),u=A(o);c in a||u in a||(a[o]=n[o],i&&((t.on||(t.on={}))["update:"+o]=function(t){n[o]=t}))};for(var o in n)s(o)}return t}function $e(t,e){var n=this._staticTrees||(this._staticTrees=[]),r=n[t];return r&&!e||ke(r=n[t]=this.$options.staticRenderFns[t].call(this._renderProxy,null,this),"__static__"+t,!1),r}function Ae(t,e,n){return ke(t,"__once__"+e+(n?"_"+n:""),!0),t}function ke(t,e,n){if(Array.isArray(t))for(var r=0;r<t.length;r++)t[r]&&"string"!=typeof t[r]&&Ce(t[r],e+"_"+r,n);else Ce(t,e,n)}function Ce(t,e,n){t.isStatic=!0,t.key=e,t.isOnce=n}function Ee(t,e){if(e&&s(e)){var n=t.on=t.on?E({},t.on):{};for(var r in e){var i=n[r],o=e[r];n[r]=i?[].concat(i,o):o}}return t}function Te(t,e,n,r){e=e||{$stable:!n};for(var i=0;i<t.length;i++){var o=t[i];Array.isArray(o)?Te(o,e,n):o&&(o.proxy&&(o.fn.proxy=!0),e[o.key]=o.fn)}return r&&(e.$key=r),e}function je(t,e){for(var n=0;n<e.length;n+=2){var r=e[n];"string"==typeof r&&r&&(t[e[n]]=e[n+1])}return t}function Ie(t,e){return"string"==typeof t?e+t:t}function Me(t){t._o=Ae,t._n=v,t._s=d,t._l=be,t._t=_e,t._q=P,t._i=N,t._m=$e,t._f=we,t._k=Oe,t._b=Se,t._v=_t,t._e=bt,t._u=Te,t._g=Ee,t._d=je,t._p=Ie}function Pe(t,e,i,n,a){var s,o=this,u=a.options;x(n,"_uid")?(s=Object.create(n))._original=n:(s=n,n=n._original);var c=f(u._compiled),l=!c;this.data=t,this.props=e,this.children=i,this.parent=n,this.listeners=t.on||r,this.injections=he(u.inject,n),this.slots=function(){return o.$slots||dt(t.scopedSlots,o.$slots=de(i,n)),o.$slots},Object.defineProperty(this,"scopedSlots",{enumerable:!0,get:function(){return dt(t.scopedSlots,this.slots())}}),c&&(this.$options=u,this.$slots=this.slots(),this.$scopedSlots=dt(t.scopedSlots,this.$slots)),u._scopeId?this._c=function(t,e,r,o){var i=He(s,t,e,r,o,l);return i&&!Array.isArray(i)&&(i.fnScopeId=u._scopeId,i.fnContext=n),i}:this._c=function(t,e,n,r){return He(s,t,e,n,r,l)}}function Ne(t,e,n,r,i){var o=wt(t);return o.fnContext=n,o.fnOptions=r,e.slot&&((o.data||(o.data={})).slot=e.slot),o}function Le(t,e){for(var n in e)t[b(n)]=e[n]}Me(Pe.prototype);var Re={init:function(t,e){if(t.componentInstance&&!t.componentInstance._isDestroyed&&t.data.keepAlive){var n=t;Re.prepatch(n,n)}else(t.componentInstance=function(t,e){var n={_isComponent:!0,_parentVnode:t,parent:e},i=t.data.inlineTemplate;return c(i)&&(n.render=i.render,n.staticRenderFns=i.staticRenderFns),new t.componentOptions.Ctor(n)}(t,Qe)).$mount(e?t.elm:void 0,e)},prepatch:function(t,e){var n=e.componentOptions;!function(t,e,n,i,o){var a=i.data.scopedSlots,s=t.$scopedSlots,c=!!(a&&!a.$stable||s!==r&&!s.$stable||a&&t.$scopedSlots.$key!==a.$key||!a&&t.$scopedSlots.$key),u=!!(o||t.$options._renderChildren||c);if(t.$options._parentVnode=i,t.$vnode=i,t._vnode&&(t._vnode.parent=i),t.$options._renderChildren=o,t.$attrs=i.data.attrs||r,t.$listeners=n||r,e&&t.$options.props){At(!1);for(var f=t._props,l=t.$options._propKeys||[],p=0;p<l.length;p++){var h=l[p],d=t.$options.props;f[h]=Ut(h,d,e,t)}At(!0),t.$options.propsData=e}n=n||r;var v=t.$options._parentListeners;t.$options._parentListeners=n,Je(t,n,v),u&&(t.$slots=de(o,i.context),t.$forceUpdate())}(e.componentInstance=t.componentInstance,n.propsData,n.listeners,e,n.children)},insert:function(t){var e,n=t.context,r=t.componentInstance;r._isMounted||(r._isMounted=!0,tn(r,"mounted")),t.data.keepAlive&&(n._isMounted?((e=r)._inactive=!1,nn.push(e)):Ze(r,!0))},destroy:function(t){var e=t.componentInstance;e._isDestroyed||(t.data.keepAlive?function t(e,n){if(!(n&&(e._directInactive=!0,Ye(e))||e._inactive)){e._inactive=!0;for(var r=0;r<e.$children.length;r++)t(e.$children[r]);tn(e,"deactivated")}}(e,!0):e.$destroy())}},Fe=Object.keys(Re);function De(i,a,s,t,e){if(!o(i)){var n=s.$options._base;if(l(i)&&(i=n.extend(i)),"function"==typeof i){var p;if(o(i.cid)&&void 0===(i=function(t,i){if(f(t.error)&&c(t.errorComp))return t.errorComp;if(c(t.resolved))return t.resolved;var a=Ve;if(a&&c(t.owners)&&-1===t.owners.indexOf(a)&&t.owners.push(a),f(t.loading)&&c(t.loadingComp))return t.loadingComp;if(a&&!c(t.owners)){var s=t.owners=[a],e=!0,n=null,r=null;a.$on("hook:destroyed",(function(){return _(s,a)}));var p=function(t){for(var e=0,o=s.length;e<o;e++)s[e].$forceUpdate();t&&(s.length=0,null!==n&&(clearTimeout(n),n=null),null!==r&&(clearTimeout(r),r=null))},h=L((function(n){t.resolved=ze(n,i),e?s.length=0:p(!0)})),d=L((function(e){c(t.errorComp)&&(t.error=!0,p(!0))})),v=t(h,d);return l(v)&&(u(v)?o(t.resolved)&&v.then(h,d):u(v.component)&&(v.component.then(h,d),c(v.error)&&(t.errorComp=ze(v.error,i)),c(v.loading)&&(t.loadingComp=ze(v.loading,i),0===v.delay?t.loading=!0:n=setTimeout((function(){n=null,o(t.resolved)&&o(t.error)&&(t.loading=!0,p(!1))}),v.delay||200)),c(v.timeout)&&(r=setTimeout((function(){r=null,o(t.resolved)&&d(null)}),v.timeout)))),e=!1,t.loading?t.loadingComp:t.resolved}}(p=i,n)))return function(t,e,n,r,i){var o=bt();return o.asyncFactory=t,o.asyncMeta={data:e,context:n,children:r,tag:i},o}(p,a,s,t,e);a=a||{},xn(i),c(a.model)&&function(t,e){var n=t.model&&t.model.prop||"value",i=t.model&&t.model.event||"input";(e.attrs||(e.attrs={}))[n]=e.model.value;var r=e.on||(e.on={}),a=r[i],s=e.model.callback;c(a)?(Array.isArray(a)?-1===a.indexOf(s):a!==s)&&(r[i]=[s].concat(a)):r[i]=s}(i.options,a);var h=function(t,e,i){var n=e.options.props;if(!o(n)){var a={},s=t.attrs,r=t.props;if(c(s)||c(r))for(var u in n){var f=A(u);fe(a,r,u,f,!0)||fe(a,s,u,f,!1)}return a}}(a,i);if(f(i.options.functional))return function(t,e,i,n,a){var s=t.options,o={},u=s.props;if(c(u))for(var f in u)o[f]=Ut(f,u,e||r);else c(i.attrs)&&Le(o,i.attrs),c(i.props)&&Le(o,i.props);var l=new Pe(i,o,a,n,t),p=s.render.call(null,l._c,l);if(p instanceof yt)return Ne(p,i,l.parent,s);if(Array.isArray(p)){for(var h=le(p)||[],d=new Array(h.length),v=0;v<h.length;v++)d[v]=Ne(h[v],i,l.parent,s);return d}}(i,h,a,s,t);var d=a.on;if(a.on=a.nativeOn,f(i.options.abstract)){var v=a.slot;a={},v&&(a.slot=v)}!function(t){for(var e=t.hook||(t.hook={}),n=0;n<Fe.length;n++){var r=Fe[n],i=e[r],o=Re[r];i===o||i&&i._merged||(e[r]=i?Ue(o,i):o)}}(a);var m=i.options.name||e;return new yt("vue-component-"+i.cid+(m?"-"+m:""),a,void 0,void 0,void 0,s,{Ctor:i,propsData:h,listeners:d,tag:e,children:t},p)}}}function Ue(t,e){var n=function(n,r){t(n,r),e(n,r)};return n._merged=!0,n}function He(t,a,s,e,u,n){return(Array.isArray(s)||i(s))&&(u=e,e=s,s=void 0),f(n)&&(u=2),function(t,i,a,s,e){if(c(a)&&c(a.__ob__))return bt();if(c(a)&&c(a.is)&&(i=a.is),!i)return bt();var u,n,r;(Array.isArray(s)&&"function"==typeof s[0]&&((a=a||{}).scopedSlots={default:s[0]},s.length=0),2===e?s=le(s):1===e&&(s=function(t){for(var e=0;e<t.length;e++)if(Array.isArray(t[e]))return Array.prototype.concat.apply([],t);return t}(s)),"string"==typeof i)?(n=t.$vnode&&t.$vnode.ns||U.getTagNamespace(i),u=U.isReservedTag(i)?new yt(U.parsePlatformTagName(i),a,s,void 0,void 0,t):a&&a.pre||!c(r=Dt(t.$options,"components",i))?new yt(i,a,s,void 0,void 0,t):De(r,a,t,s,i)):u=De(i,a,t,s);return Array.isArray(u)?u:c(u)?(c(n)&&function t(i,e,a){if(i.ns=e,"foreignObject"===i.tag&&(e=void 0,a=!0),c(i.children))for(var s=0,n=i.children.length;s<n;s++){var u=i.children[s];c(u.tag)&&(o(u.ns)||f(a)&&"svg"!==u.tag)&&t(u,e,a)}}(u,n),c(a)&&function(t){l(t.style)&&ae(t.style),l(t.class)&&ae(t.class)}(a),u):bt()}(t,a,s,e,u)}var Be,Ve=null;function ze(t,e){return(t.__esModule||ut&&"Module"===t[Symbol.toStringTag])&&(t=t.default),l(t)?e.extend(t):t}function qe(t){if(Array.isArray(t))for(var e=0;e<t.length;e++){var n=t[e];if(c(n)&&(c(n.componentOptions)||me(n)))return n}}function Ke(t,e){Be.$on(t,e)}function We(t,e){Be.$off(t,e)}function Ge(t,e){var n=Be;return function r(){null!==e.apply(null,arguments)&&n.$off(t,r)}}function Je(t,e,n){Be=t,ce(e,n||{},Ke,We,Ge,t),Be=void 0}var Qe=null;function Xe(t){var e=Qe;return Qe=t,function(){Qe=e}}function Ye(t){for(;t&&(t=t.$parent);)if(t._inactive)return!0;return!1}function Ze(t,e){if(e){if(t._directInactive=!1,Ye(t))return}else if(t._directInactive)return;if(t._inactive||null===t._inactive){t._inactive=!1;for(var n=0;n<t.$children.length;n++)Ze(t.$children[n]);tn(t,"activated")}}function tn(t,e){vt();var n=t.$options[e],r=e+" hook";if(n)for(var i=0,o=n.length;i<o;i++)Kt(n[i],t,null,t,r);t._hasHookEvent&&t.$emit("hook:"+e),mt()}var en=[],nn=[],rn={},on=!1,an=!1,sn=0,cn=0,un=Date.now;if(W&&!q){var fn=window.performance;fn&&"function"==typeof fn.now&&un()>document.createEvent("Event").timeStamp&&(un=function(){return fn.now()})}function ln(){var t,e;for(cn=un(),an=!0,en.sort((function(t,e){return t.id-e.id})),sn=0;sn<en.length;sn++)(t=en[sn]).before&&t.before(),e=t.id,rn[e]=null,t.run();var n=nn.slice(),r=en.slice();sn=en.length=nn.length=0,rn={},on=an=!1,function(t){for(var e=0;e<t.length;e++)t[e]._inactive=!0,Ze(t[e],!0)}(n),function(t){for(var e=t.length;e--;){var n=t[e],r=n.vm;r._watcher===n&&r._isMounted&&!r._isDestroyed&&tn(r,"updated")}}(r),at&&U.devtools&&at.emit("flush")}var pn=0,hn=function(t,e,n,r,i){this.vm=t,i&&(t._watcher=this),t._watchers.push(this),r?(this.deep=!!r.deep,this.user=!!r.user,this.lazy=!!r.lazy,this.sync=!!r.sync,this.before=r.before):this.deep=this.user=this.lazy=this.sync=!1,this.cb=n,this.id=++pn,this.active=!0,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=new ct,this.newDepIds=new ct,this.expression="","function"==typeof e?this.getter=e:(this.getter=function(t){if(!z.test(t)){var e=t.split(".");return function(t){for(var n=0;n<e.length;n++){if(!t)return;t=t[e[n]]}return t}}}(e),this.getter||(this.getter=j)),this.value=this.lazy?void 0:this.get()};hn.prototype.get=function(){var t;vt(this);var e=this.vm;try{t=this.getter.call(e,e)}catch(t){if(!this.user)throw t;qt(t,e,'getter for watcher "'+this.expression+'"')}finally{this.deep&&ae(t),mt(),this.cleanupDeps()}return t},hn.prototype.addDep=function(t){var e=t.id;this.newDepIds.has(e)||(this.newDepIds.add(e),this.newDeps.push(t),this.depIds.has(e)||t.addSub(this))},hn.prototype.cleanupDeps=function(){for(var t=this.deps.length;t--;){var e=this.deps[t];this.newDepIds.has(e.id)||e.removeSub(this)}var n=this.depIds;this.depIds=this.newDepIds,this.newDepIds=n,this.newDepIds.clear(),n=this.deps,this.deps=this.newDeps,this.newDeps=n,this.newDeps.length=0},hn.prototype.update=function(){this.lazy?this.dirty=!0:this.sync?this.run():function(t){var e=t.id;if(null==rn[e]){if(rn[e]=!0,an){for(var n=en.length-1;n>sn&&en[n].id>t.id;)n--;en.splice(n+1,0,t)}else en.push(t);on||(on=!0,oe(ln))}}(this)},hn.prototype.run=function(){if(this.active){var t=this.get();if(t!==this.value||l(t)||this.deep){var e=this.value;if(this.value=t,this.user){var n='callback for watcher "'+this.expression+'"';Kt(this.cb,this.vm,[t,e],this.vm,n)}else this.cb.call(this.vm,t,e)}}},hn.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},hn.prototype.depend=function(){for(var t=this.deps.length;t--;)this.deps[t].depend()},hn.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||_(this.vm._watchers,this);for(var t=this.deps.length;t--;)this.deps[t].removeSub(this);this.active=!1}};var dn={enumerable:!0,configurable:!0,get:j,set:j};function vn(t,e,n){dn.get=function(){return this[e][n]},dn.set=function(t){this[e][n]=t},Object.defineProperty(t,n,dn)}var mn={lazy:!0};function yn(t,e,n){var r=!it();"function"==typeof n?(dn.get=r?gn(e):bn(n),dn.set=j):(dn.get=n.get?r&&!1!==n.cache?gn(e):bn(n.get):j,dn.set=n.set||j),Object.defineProperty(t,e,dn)}function gn(t){return function(){var e=this._computedWatchers&&this._computedWatchers[t];if(e)return e.dirty&&e.evaluate(),pt.target&&e.depend(),e.value}}function bn(t){return function(){return t.call(this,this)}}function _n(t,e,n,r){return s(n)&&(r=n,n=n.handler),"string"==typeof n&&(n=t[n]),t.$watch(e,n,r)}var wn=0;function xn(t){var e=t.options;if(t.super){var n=xn(t.super);if(n!==t.superOptions){t.superOptions=n;var r=function(t){var e,n=t.options,r=t.sealedOptions;for(var i in n)n[i]!==r[i]&&(e||(e={}),e[i]=n[i]);return e}(t);r&&E(t.extendOptions,r),(e=t.options=Ft(n,t.extendOptions)).name&&(e.components[e.name]=t)}}return e}function On(t){this._init(t)}function Sn(t){return t&&(t.Ctor.options.name||t.tag)}function $n(t,e){return Array.isArray(t)?t.indexOf(e)>-1:"string"==typeof t?t.split(",").indexOf(e)>-1:(n=t,"[object RegExp]"===a.call(n)&&t.test(e));var n}function An(t,e){var n=t.cache,r=t.keys,i=t._vnode;for(var o in n){var a=n[o];if(a){var s=a.name;s&&!e(s)&&kn(n,o,r,i)}}}function kn(t,e,n,r){var i=t[e];!i||r&&i.tag===r.tag||i.componentInstance.$destroy(),t[e]=null,_(n,e)}!function(t){t.prototype._init=function(t){var e=this;e._uid=wn++,e._isVue=!0,t&&t._isComponent?function(t,e){var n=t.$options=Object.create(t.constructor.options),r=e._parentVnode;n.parent=e.parent,n._parentVnode=r;var i=r.componentOptions;n.propsData=i.propsData,n._parentListeners=i.listeners,n._renderChildren=i.children,n._componentTag=i.tag,e.render&&(n.render=e.render,n.staticRenderFns=e.staticRenderFns)}(e,t):e.$options=Ft(xn(e.constructor),t||{},e),e._renderProxy=e,e._self=e,function(t){var e=t.$options,n=e.parent;if(n&&!e.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(t)}t.$parent=n,t.$root=n?n.$root:t,t.$children=[],t.$refs={},t._watcher=null,t._inactive=null,t._directInactive=!1,t._isMounted=!1,t._isDestroyed=!1,t._isBeingDestroyed=!1}(e),function(t){t._events=Object.create(null),t._hasHookEvent=!1;var e=t.$options._parentListeners;e&&Je(t,e)}(e),function(t){t._vnode=null,t._staticTrees=null;var e=t.$options,n=t.$vnode=e._parentVnode,i=n&&n.context;t.$slots=de(e._renderChildren,i),t.$scopedSlots=r,t._c=function(e,n,r,i){return He(t,e,n,r,i,!1)},t.$createElement=function(e,n,r,i){return He(t,e,n,r,i,!0)};var o=n&&n.data;Et(t,"$attrs",o&&o.attrs||r,null,!0),Et(t,"$listeners",e._parentListeners||r,null,!0)}(e),tn(e,"beforeCreate"),function(t){var e=he(t.$options.inject,t);e&&(At(!1),Object.keys(e).forEach((function(n){Et(t,n,e[n])})),At(!0))}(e),function(t){t._watchers=[];var e=t.$options;e.props&&function(t,e){var n=t.$options.propsData||{},r=t._props={},i=t.$options._propKeys=[];t.$parent&&At(!1);var o=function(o){i.push(o);var a=Ut(o,e,n,t);Et(r,o,a),o in t||vn(t,"_props",o)};for(var a in e)o(a);At(!0)}(t,e.props),e.methods&&function(t,e){for(var n in t.$options.props,e)t[n]="function"!=typeof e[n]?j:k(e[n],t)}(t,e.methods),e.data?function(t){var e=t.$options.data;s(e=t._data="function"==typeof e?function(t,e){vt();try{return t.call(e,e)}catch(t){return qt(t,e,"data()"),{}}finally{mt()}}(e,t):e||{})||(e={});for(var a,n=Object.keys(e),r=t.$options.props,i=(t.$options.methods,n.length);i--;){var o=n[i];r&&x(r,o)||36!==(a=(o+"").charCodeAt(0))&&95!==a&&vn(t,"_data",o)}Ct(e,!0)}(t):Ct(t._data={},!0),e.computed&&function(t,e){var n=t._computedWatchers=Object.create(null),r=it();for(var i in e){var o=e[i],a="function"==typeof o?o:o.get;r||(n[i]=new hn(t,a||j,j,mn)),i in t||yn(t,i,o)}}(t,e.computed),e.watch&&e.watch!==et&&function(t,e){for(var n in e){var r=e[n];if(Array.isArray(r))for(var i=0;i<r.length;i++)_n(t,n,r[i]);else _n(t,n,r)}}(t,e.watch)}(e),function(t){var e=t.$options.provide;e&&(t._provided="function"==typeof e?e.call(t):e)}(e),tn(e,"created"),e.$options.el&&e.$mount(e.$options.el)}}(On),function(t){Object.defineProperty(t.prototype,"$data",{get:function(){return this._data}}),Object.defineProperty(t.prototype,"$props",{get:function(){return this._props}}),t.prototype.$set=Tt,t.prototype.$delete=jt,t.prototype.$watch=function(t,e,n){if(s(e))return _n(this,t,e,n);(n=n||{}).user=!0;var r=new hn(this,t,e,n);if(n.immediate){var i='callback for immediate watcher "'+r.expression+'"';vt(),Kt(e,this,[r.value],this,i),mt()}return function(){r.teardown()}}}(On),function(t){var e=/^hook:/;t.prototype.$on=function(t,n){var r=this;if(Array.isArray(t))for(var i=0,o=t.length;i<o;i++)r.$on(t[i],n);else(r._events[t]||(r._events[t]=[])).push(n),e.test(t)&&(r._hasHookEvent=!0);return r},t.prototype.$once=function(t,e){var n=this;function r(){n.$off(t,r),e.apply(n,arguments)}return r.fn=e,n.$on(t,r),n},t.prototype.$off=function(t,e){var n=this;if(!arguments.length)return n._events=Object.create(null),n;if(Array.isArray(t)){for(var r=0,i=t.length;r<i;r++)n.$off(t[r],e);return n}var o,a=n._events[t];if(!a)return n;if(!e)return n._events[t]=null,n;for(var s=a.length;s--;)if((o=a[s])===e||o.fn===e){a.splice(s,1);break}return n},t.prototype.$emit=function(t){var e=this._events[t];if(e){e=e.length>1?C(e):e;for(var n=C(arguments,1),r='event handler for "'+t+'"',i=0,o=e.length;i<o;i++)Kt(e[i],this,n,this,r)}return this}}(On),function(t){t.prototype._update=function(t,e){var n=this,r=n.$el,i=n._vnode,o=Xe(n);n._vnode=t,n.$el=i?n.__patch__(i,t):n.__patch__(n.$el,t,e,!1),o(),r&&(r.__vue__=null),n.$el&&(n.$el.__vue__=n),n.$vnode&&n.$parent&&n.$vnode===n.$parent._vnode&&(n.$parent.$el=n.$el)},t.prototype.$forceUpdate=function(){this._watcher&&this._watcher.update()},t.prototype.$destroy=function(){var t=this;if(!t._isBeingDestroyed){tn(t,"beforeDestroy"),t._isBeingDestroyed=!0;var e=t.$parent;!e||e._isBeingDestroyed||t.$options.abstract||_(e.$children,t),t._watcher&&t._watcher.teardown();for(var n=t._watchers.length;n--;)t._watchers[n].teardown();t._data.__ob__&&t._data.__ob__.vmCount--,t._isDestroyed=!0,t.__patch__(t._vnode,null),tn(t,"destroyed"),t.$off(),t.$el&&(t.$el.__vue__=null),t.$vnode&&(t.$vnode.parent=null)}}}(On),function(t){Me(t.prototype),t.prototype.$nextTick=function(t){return oe(t,this)},t.prototype._render=function(){var t,e=this,n=e.$options,r=n.render,i=n._parentVnode;i&&(e.$scopedSlots=dt(i.data.scopedSlots,e.$slots,e.$scopedSlots)),e.$vnode=i;try{Ve=e,t=r.call(e._renderProxy,e.$createElement)}catch(n){qt(n,e,"render"),t=e._vnode}finally{Ve=null}return Array.isArray(t)&&1===t.length&&(t=t[0]),t instanceof yt||(t=bt()),t.parent=i,t}}(On);var Cn=[String,RegExp,Array],En={KeepAlive:{name:"keep-alive",abstract:!0,props:{include:Cn,exclude:Cn,max:[String,Number]},methods:{cacheVNode:function(){var t=this.cache,e=this.keys,n=this.vnodeToCache,r=this.keyToCache;if(n){var i=n.tag,o=n.componentInstance,a=n.componentOptions;t[r]={name:Sn(a),tag:i,componentInstance:o},e.push(r),this.max&&e.length>parseInt(this.max)&&kn(t,e[0],e,this._vnode),this.vnodeToCache=null}}},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var t in this.cache)kn(this.cache,t,this.keys)},mounted:function(){var t=this;this.cacheVNode(),this.$watch("include",(function(e){An(t,(function(t){return $n(e,t)}))})),this.$watch("exclude",(function(e){An(t,(function(t){return!$n(e,t)}))}))},updated:function(){this.cacheVNode()},render:function(){var t=this.$slots.default,e=qe(t),n=e&&e.componentOptions;if(n){var r=Sn(n),i=this.include,o=this.exclude;if(i&&(!r||!$n(i,r))||o&&r&&$n(o,r))return e;var a=this.cache,s=this.keys,c=null==e.key?n.Ctor.cid+(n.tag?"::"+n.tag:""):e.key;a[c]?(e.componentInstance=a[c].componentInstance,_(s,c),s.push(c)):(this.vnodeToCache=e,this.keyToCache=c),e.data.keepAlive=!0}return e||t&&t[0]}}};!function(t){var e={get:function(){return U}};Object.defineProperty(t,"config",e),t.util={warn:ft,extend:E,mergeOptions:Ft,defineReactive:Et},t.set=Tt,t.delete=jt,t.nextTick=oe,t.observable=function(t){return Ct(t),t},t.options=Object.create(null),F.forEach((function(e){t.options[e+"s"]=Object.create(null)})),t.options._base=t,E(t.options.components,En),function(t){t.use=function(t){var e=this._installedPlugins||(this._installedPlugins=[]);if(e.indexOf(t)>-1)return this;var n=C(arguments,1);return n.unshift(this),"function"==typeof t.install?t.install.apply(t,n):"function"==typeof t&&t.apply(null,n),e.push(t),this}}(t),function(t){t.mixin=function(t){return this.options=Ft(this.options,t),this}}(t),function(t){t.cid=0;var e=1;t.extend=function(t){t=t||{};var n=this,r=n.cid,i=t._Ctor||(t._Ctor={});if(i[r])return i[r];var o=t.name||n.options.name,a=function(t){this._init(t)};return(a.prototype=Object.create(n.prototype)).constructor=a,a.cid=e++,a.options=Ft(n.options,t),a.super=n,a.options.props&&function(t){var e=t.options.props;for(var n in e)vn(t.prototype,"_props",n)}(a),a.options.computed&&function(t){var e=t.options.computed;for(var n in e)yn(t.prototype,n,e[n])}(a),a.extend=n.extend,a.mixin=n.mixin,a.use=n.use,F.forEach((function(t){a[t]=n[t]})),o&&(a.options.components[o]=a),a.superOptions=n.options,a.extendOptions=t,a.sealedOptions=E({},a.options),i[r]=a,a}}(t),function(t){F.forEach((function(e){t[e]=function(t,n){return n?("component"===e&&s(n)&&(n.name=n.name||t,n=this.options._base.extend(n)),"directive"===e&&"function"==typeof n&&(n={bind:n,update:n}),this.options[e+"s"][t]=n,n):this.options[e+"s"][t]}}))}(t)}(On),Object.defineProperty(On.prototype,"$isServer",{get:it}),Object.defineProperty(On.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(On,"FunctionalRenderContext",{value:Pe}),On.version="2.6.14";var Tn=p("style,class"),jn=p("input,textarea,option,select,progress"),In=function(t,e,n){return"value"===n&&jn(t)&&"button"!==e||"selected"===n&&"option"===t||"checked"===n&&"input"===t||"muted"===n&&"video"===t},Mn=p("contenteditable,draggable,spellcheck"),Pn=p("events,caret,typing,plaintext-only"),Nn=p("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,truespeed,typemustmatch,visible"),Ln="http://www.w3.org/1999/xlink",Rn=function(t){return":"===t.charAt(5)&&"xlink"===t.slice(0,5)},Fn=function(t){return Rn(t)?t.slice(6,t.length):""},Dn=function(t){return null==t||!1===t};function Un(t,e){return{staticClass:Hn(t.staticClass,e.staticClass),class:c(t.class)?[t.class,e.class]:e.class}}function Hn(t,e){return t?e?t+" "+e:t:e||""}function Bn(t){return Array.isArray(t)?function(t){for(var e,n="",i=0,r=t.length;i<r;i++)c(e=Bn(t[i]))&&""!==e&&(n&&(n+=" "),n+=e);return n}(t):l(t)?function(t){var e="";for(var n in t)t[n]&&(e&&(e+=" "),e+=n);return e}(t):"string"==typeof t?t:""}var Vn={svg:"http://www.w3.org/2000/svg",math:"http://www.w3.org/1998/Math/MathML"},zn=p("html,body,base,head,link,meta,style,title,address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,menuitem,summary,content,element,shadow,template,blockquote,iframe,tfoot"),qn=p("svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,foreignobject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view",!0),Kn=function(t){return zn(t)||qn(t)};function Wn(t){return qn(t)?"svg":"math"===t?"math":void 0}var Gn=Object.create(null),Jn=p("text,number,password,search,email,tel,url");function Qn(t){return"string"==typeof t?document.querySelector(t)||document.createElement("div"):t}var Xn=Object.freeze({createElement:function(t,e){var n=document.createElement(t);return"select"!==t||e.data&&e.data.attrs&&void 0!==e.data.attrs.multiple&&n.setAttribute("multiple","multiple"),n},createElementNS:function(t,e){return document.createElementNS(Vn[t],e)},createTextNode:function(t){return document.createTextNode(t)},createComment:function(t){return document.createComment(t)},insertBefore:function(t,e,n){t.insertBefore(e,n)},removeChild:function(t,e){t.removeChild(e)},appendChild:function(t,e){t.appendChild(e)},parentNode:function(t){return t.parentNode},nextSibling:function(t){return t.nextSibling},tagName:function(t){return t.tagName},setTextContent:function(t,e){t.textContent=e},setStyleScope:function(t,e){t.setAttribute(e,"")}}),tr={create:function(t,e){Yn(e)},update:function(t,e){t.data.ref!==e.data.ref&&(Yn(t,!0),Yn(e))},destroy:function(t){Yn(t,!0)}};function Yn(t,e){var n=t.data.ref;if(c(n)){var i=t.context,r=t.componentInstance||t.elm,a=i.$refs;e?Array.isArray(a[n])?_(a[n],r):a[n]===r&&(a[n]=void 0):t.data.refInFor?Array.isArray(a[n])?a[n].indexOf(r)<0&&a[n].push(r):a[n]=[r]:a[n]=r}}var Zn=new yt("",{},[]),er=["create","activate","update","remove","destroy"];function nr(t,i){return t.key===i.key&&t.asyncFactory===i.asyncFactory&&(t.tag===i.tag&&t.isComment===i.isComment&&c(t.data)===c(i.data)&&function(t,e){if("input"!==t.tag)return!0;var n,i=c(n=t.data)&&c(n=n.attrs)&&n.type,r=c(n=e.data)&&c(n=n.attrs)&&n.type;return i===r||Jn(i)&&Jn(r)}(t,i)||f(t.isAsyncPlaceholder)&&o(i.asyncFactory.error))}function rr(t,e,n){var i,r,a={};for(i=e;i<=n;++i)c(r=t[i].key)&&(a[r]=i);return a}var or={create:ir,update:ir,destroy:function(t){ir(t,Zn)}};function ir(t,e){(t.data.directives||e.data.directives)&&function(t,e){var n,r,i,o=t===Zn,a=e===Zn,s=sr(t.data.directives,t.context),c=sr(e.data.directives,e.context),u=[],f=[];for(n in c)r=s[n],i=c[n],r?(i.oldValue=r.value,i.oldArg=r.arg,ur(i,"update",e,t),i.def&&i.def.componentUpdated&&f.push(i)):(ur(i,"bind",e,t),i.def&&i.def.inserted&&u.push(i));if(u.length){var l=function(){for(var n=0;n<u.length;n++)ur(u[n],"inserted",e,t)};o?ue(e,"insert",l):l()}if(f.length&&ue(e,"postpatch",(function(){for(var n=0;n<f.length;n++)ur(f[n],"componentUpdated",e,t)})),!o)for(n in s)c[n]||ur(s[n],"unbind",t,t,a)}(t,e)}var ar=Object.create(null);function sr(t,e){var n,r,i=Object.create(null);if(!t)return i;for(n=0;n<t.length;n++)(r=t[n]).modifiers||(r.modifiers=ar),i[cr(r)]=r,r.def=Dt(e.$options,"directives",r.name);return i}function cr(t){return t.rawName||t.name+"."+Object.keys(t.modifiers||{}).join(".")}function ur(t,e,n,r,i){var o=t.def&&t.def[e];if(o)try{o(n.elm,t,n,r,i)}catch(r){qt(r,n.context,"directive "+t.name+" "+e+" hook")}}var fr=[tr,or];function lr(t,e){var i=e.componentOptions;if(!(c(i)&&!1===i.Ctor.options.inheritAttrs||o(t.data.attrs)&&o(e.data.attrs))){var n,a,s=e.elm,r=t.data.attrs||{},u=e.data.attrs||{};for(n in c(u.__ob__)&&(u=e.data.attrs=E({},u)),u)a=u[n],r[n]!==a&&hr(s,n,a,e.data.pre);for(n in(q||Y)&&u.value!==r.value&&hr(s,"value",u.value),r)o(u[n])&&(Rn(n)?s.removeAttributeNS(Ln,Fn(n)):Mn(n)||s.removeAttribute(n))}}function hr(t,e,n,r){r||t.tagName.indexOf("-")>-1?pr(t,e,n):Nn(e)?Dn(n)?t.removeAttribute(e):(n="allowfullscreen"===e&&"EMBED"===t.tagName?"true":e,t.setAttribute(e,n)):Mn(e)?t.setAttribute(e,function(t,e){return Dn(e)||"false"===e?"false":"contenteditable"===t&&Pn(e)?e:"true"}(e,n)):Rn(e)?Dn(n)?t.removeAttributeNS(Ln,Fn(e)):t.setAttributeNS(Ln,e,n):pr(t,e,n)}function pr(t,e,n){if(Dn(n))t.removeAttribute(e);else{if(q&&!X&&"TEXTAREA"===t.tagName&&"placeholder"===e&&""!==n&&!t.__ieph){var r=function(e){e.stopImmediatePropagation(),t.removeEventListener("input",r)};t.addEventListener("input",r),t.__ieph=!0}t.setAttribute(e,n)}}var dr={create:lr,update:lr};function vr(t,e){var i=e.elm,n=e.data,a=t.data;if(!(o(n.staticClass)&&o(n.class)&&(o(a)||o(a.staticClass)&&o(a.class)))){var s=function(t){for(var e=t.data,n=t,i=t;c(i.componentInstance);)(i=i.componentInstance._vnode)&&i.data&&(e=Un(i.data,e));for(;c(n=n.parent);)n&&n.data&&(e=Un(e,n.data));return function(t,e){return c(t)||c(e)?Hn(t,Bn(e)):""}(e.staticClass,e.class)}(e),r=i._transitionClasses;c(r)&&(s=Hn(s,Bn(r))),s!==i._prevClass&&(i.setAttribute("class",s),i._prevClass=s)}}var mr,br,yr,gr,_r,wr,xr={create:vr,update:vr},Or=/[\w).+\-_$\]]/;function Sr(t){var e,n,r,i,o,a=!1,s=!1,c=!1,u=!1,f=0,l=0,p=0,h=0;for(r=0;r<t.length;r++)if(n=e,e=t.charCodeAt(r),a)39===e&&92!==n&&(a=!1);else if(s)34===e&&92!==n&&(s=!1);else if(c)96===e&&92!==n&&(c=!1);else if(u)47===e&&92!==n&&(u=!1);else if(124!==e||124===t.charCodeAt(r+1)||124===t.charCodeAt(r-1)||f||l||p){switch(e){case 34:s=!0;break;case 39:a=!0;break;case 96:c=!0;break;case 40:p++;break;case 41:p--;break;case 91:l++;break;case 93:l--;break;case 123:f++;break;case 125:f--}if(47===e){for(var d=r-1,v=void 0;d>=0&&" "===(v=t.charAt(d));d--);v&&Or.test(v)||(u=!0)}}else void 0===i?(h=r+1,i=t.slice(0,r).trim()):m();function m(){(o||(o=[])).push(t.slice(h,r).trim()),h=r+1}if(void 0===i?i=t.slice(0,r).trim():0!==h&&m(),o)for(r=0;r<o.length;r++)i=$r(i,o[r]);return i}function $r(t,e){var n=e.indexOf("(");if(n<0)return'_f("'+e+'")('+t+")";var r=e.slice(0,n),i=e.slice(n+1);return'_f("'+r+'")('+t+(")"!==i?","+i:i)}function Ar(t,e){console.error("[Vue compiler]: "+t)}function kr(t,e){return t?t.map((function(t){return t[e]})).filter((function(t){return t})):[]}function Cr(t,e,n,r,i){(t.props||(t.props=[])).push(Rr({name:e,value:n,dynamic:i},r)),t.plain=!1}function Er(t,e,n,r,i){(i?t.dynamicAttrs||(t.dynamicAttrs=[]):t.attrs||(t.attrs=[])).push(Rr({name:e,value:n,dynamic:i},r)),t.plain=!1}function Tr(t,e,n,r){t.attrsMap[e]=n,t.attrsList.push(Rr({name:e,value:n},r))}function jr(t,e,n,r,i,o,a,s){(t.directives||(t.directives=[])).push(Rr({name:e,rawName:n,value:r,arg:i,isDynamicArg:o,modifiers:a},s)),t.plain=!1}function Ir(t,e,n){return n?"_p("+e+',"'+t+'")':t+e}function Mr(t,e,n,i,o,a,s,c){var u;(i=i||r).right?c?e="("+e+")==='click'?'contextmenu':("+e+")":"click"===e&&(e="contextmenu",delete i.right):i.middle&&(c?e="("+e+")==='click'?'mouseup':("+e+")":"click"===e&&(e="mouseup")),i.capture&&(delete i.capture,e=Ir("!",e,c)),i.once&&(delete i.once,e=Ir("~",e,c)),i.passive&&(delete i.passive,e=Ir("&",e,c)),i.native?(delete i.native,u=t.nativeEvents||(t.nativeEvents={})):u=t.events||(t.events={});var f=Rr({value:n.trim(),dynamic:c},s);i!==r&&(f.modifiers=i);var l=u[e];Array.isArray(l)?o?l.unshift(f):l.push(f):u[e]=l?o?[f,l]:[l,f]:f,t.plain=!1}function Pr(t,e,n){var r=Nr(t,":"+e)||Nr(t,"v-bind:"+e);if(null!=r)return Sr(r);if(!1!==n){var i=Nr(t,e);if(null!=i)return JSON.stringify(i)}}function Nr(t,e,n){var r;if(null!=(r=t.attrsMap[e]))for(var i=t.attrsList,o=0,a=i.length;o<a;o++)if(i[o].name===e){i.splice(o,1);break}return n&&delete t.attrsMap[e],r}function Lr(t,e){for(var n=t.attrsList,r=0,i=n.length;r<i;r++){var o=n[r];if(e.test(o.name))return n.splice(r,1),o}}function Rr(t,e){return e&&(null!=e.start&&(t.start=e.start),null!=e.end&&(t.end=e.end)),t}function Fr(t,e,n){var r=n||{},i=r.number,o="$$v";r.trim&&(o="(typeof $$v === 'string'? $$v.trim(): $$v)"),i&&(o="_n("+o+")");var a=Dr(e,o);t.model={value:"("+e+")",expression:JSON.stringify(e),callback:"function ($$v) {"+a+"}"}}function Dr(t,e){var n=function(t){if(t=t.trim(),mr=t.length,t.indexOf("[")<0||t.lastIndexOf("]")<mr-1)return(gr=t.lastIndexOf("."))>-1?{exp:t.slice(0,gr),key:'"'+t.slice(gr+1)+'"'}:{exp:t,key:null};for(br=t,gr=_r=wr=0;!Hr();)Br(yr=Ur())?zr(yr):91===yr&&Vr(yr);return{exp:t.slice(0,_r),key:t.slice(_r+1,wr)}}(t);return null===n.key?t+"="+e:"$set("+n.exp+", "+n.key+", "+e+")"}function Ur(){return br.charCodeAt(++gr)}function Hr(){return gr>=mr}function Br(t){return 34===t||39===t}function Vr(t){var e=1;for(_r=gr;!Hr();)if(Br(t=Ur()))zr(t);else if(91===t&&e++,93===t&&e--,0===e){wr=gr;break}}function zr(t){for(var e=t;!Hr()&&(t=Ur())!==e;);}var qr,Kr="__r";function Wr(t,e,n){var r=qr;return function i(){null!==e.apply(null,arguments)&&Qr(t,i,n,r)}}var Gr=Qt&&!(tt&&Number(tt[1])<=53);function Jr(t,e,n,r){if(Gr){var i=cn,o=e;e=o._wrapper=function(t){if(t.target===t.currentTarget||t.timeStamp>=i||t.timeStamp<=0||t.target.ownerDocument!==document)return o.apply(this,arguments)}}qr.addEventListener(t,e,nt?{capture:n,passive:r}:n)}function Qr(t,e,n,r){(r||qr).removeEventListener(t,e._wrapper||e,n)}function Xr(t,e){if(!o(t.data.on)||!o(e.data.on)){var i=e.data.on||{},n=t.data.on||{};qr=e.elm,function(t){if(c(t.__r)){var e=q?"change":"input";t[e]=[].concat(t.__r,t[e]||[]),delete t.__r}c(t.__c)&&(t.change=[].concat(t.__c,t.change||[]),delete t.__c)}(i),ce(i,n,Jr,Qr,Wr,e.context),qr=void 0}}var Yr,Zr={create:Xr,update:Xr};function to(t,e){if(!o(t.data.domProps)||!o(e.data.domProps)){var i,n,a=e.elm,s=t.data.domProps||{},r=e.data.domProps||{};for(i in c(r.__ob__)&&(r=e.data.domProps=E({},r)),s)i in r||(a[i]="");for(i in r){if(n=r[i],"textContent"===i||"innerHTML"===i){if(e.children&&(e.children.length=0),n===s[i])continue;1===a.childNodes.length&&a.removeChild(a.childNodes[0])}if("value"===i&&"PROGRESS"!==a.tagName){a._value=n;var u=o(n)?"":String(n);eo(a,u)&&(a.value=u)}else if("innerHTML"===i&&qn(a.tagName)&&o(a.innerHTML)){(Yr=Yr||document.createElement("div")).innerHTML="<svg>"+n+"</svg>";for(var f=Yr.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;f.firstChild;)a.appendChild(f.firstChild)}else if(n!==s[i])try{a[i]=n}catch(t){}}}}function eo(t,e){return!t.composing&&("OPTION"===t.tagName||function(t,e){var n=!0;try{n=document.activeElement!==t}catch(t){}return n&&t.value!==e}(t,e)||function(t,e){var n=t.value,i=t._vModifiers;if(c(i)){if(i.number)return v(n)!==v(e);if(i.trim)return n.trim()!==e.trim()}return n!==e}(t,e))}var no={create:to,update:to},ro=g((function(t){var e={},n=/:(.+)/;return t.split(/;(?![^(]*\))/g).forEach((function(t){if(t){var r=t.split(n);r.length>1&&(e[r[0].trim()]=r[1].trim())}})),e}));function oo(t){var e=io(t.style);return t.staticStyle?E(t.staticStyle,e):e}function io(t){return Array.isArray(t)?T(t):"string"==typeof t?ro(t):t}var li,ao=/^--/,so=/\s*!important$/,co=function(t,e,n){if(ao.test(e))t.style.setProperty(e,n);else if(so.test(n))t.style.setProperty(A(e),n.replace(so,""),"important");else{var r=fo(e);if(Array.isArray(n))for(var i=0,o=n.length;i<o;i++)t.style[r]=n[i];else t.style[r]=n}},uo=["Webkit","Moz","ms"],fo=g((function(t){if(li=li||document.createElement("div").style,"filter"!==(t=b(t))&&t in li)return t;for(var e=t.charAt(0).toUpperCase()+t.slice(1),n=0;n<uo.length;n++){var r=uo[n]+e;if(r in li)return r}}));function lo(t,e){var i=e.data,n=t.data;if(!(o(i.staticStyle)&&o(i.style)&&o(n.staticStyle)&&o(n.style))){var a,s,r=e.elm,u=n.staticStyle,f=n.normalizedStyle||n.style||{},l=u||f,p=io(e.data.style)||{};e.data.normalizedStyle=c(p.__ob__)?E({},p):p;var h=function(t,e){for(var n,r={},i=t;i.componentInstance;)(i=i.componentInstance._vnode)&&i.data&&(n=oo(i.data))&&E(r,n);(n=oo(t.data))&&E(r,n);for(var o=t;o=o.parent;)o.data&&(n=oo(o.data))&&E(r,n);return r}(e);for(s in l)o(h[s])&&co(r,s,"");for(s in h)(a=h[s])!==l[s]&&co(r,s,null==a?"":a)}}var po={create:lo,update:lo},ho=/\s+/;function vo(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(ho).forEach((function(e){return t.classList.add(e)})):t.classList.add(e);else{var n=" "+(t.getAttribute("class")||"")+" ";n.indexOf(" "+e+" ")<0&&t.setAttribute("class",(n+e).trim())}}function mo(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(ho).forEach((function(e){return t.classList.remove(e)})):t.classList.remove(e),t.classList.length||t.removeAttribute("class");else{for(var n=" "+(t.getAttribute("class")||"")+" ",r=" "+e+" ";n.indexOf(r)>=0;)n=n.replace(r," ");(n=n.trim())?t.setAttribute("class",n):t.removeAttribute("class")}}function yo(t){if(t){if("object"==typeof t){var e={};return!1!==t.css&&E(e,go(t.name||"v")),E(e,t),e}return"string"==typeof t?go(t):void 0}}var go=g((function(t){return{enterClass:t+"-enter",enterToClass:t+"-enter-to",enterActiveClass:t+"-enter-active",leaveClass:t+"-leave",leaveToClass:t+"-leave-to",leaveActiveClass:t+"-leave-active"}})),bo=W&&!X,_o="transition",wo="animation",xo="transition",Oo="transitionend",So="animation",$o="animationend";bo&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(xo="WebkitTransition",Oo="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(So="WebkitAnimation",$o="webkitAnimationEnd"));var Ao=W?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(t){return t()};function ko(t){Ao((function(){Ao(t)}))}function Co(t,e){var n=t._transitionClasses||(t._transitionClasses=[]);n.indexOf(e)<0&&(n.push(e),vo(t,e))}function Eo(t,e){t._transitionClasses&&_(t._transitionClasses,e),mo(t,e)}function To(t,e,n){var r=Io(t,e),i=r.type,o=r.timeout,a=r.propCount;if(!i)return n();var s=i===_o?Oo:$o,c=0,u=function(){t.removeEventListener(s,f),n()},f=function(e){e.target===t&&++c>=a&&u()};setTimeout((function(){c<a&&u()}),o+1),t.addEventListener(s,f)}var jo=/\b(transform|all)(,|$)/;function Io(t,e){var n,r=window.getComputedStyle(t),i=(r[xo+"Delay"]||"").split(", "),o=(r[xo+"Duration"]||"").split(", "),a=Mo(i,o),s=(r[So+"Delay"]||"").split(", "),c=(r[So+"Duration"]||"").split(", "),u=Mo(s,c),f=0,l=0;return e===_o?a>0&&(n=_o,f=a,l=o.length):e===wo?u>0&&(n=wo,f=u,l=c.length):l=(n=(f=Math.max(a,u))>0?a>u?_o:wo:null)?n===_o?o.length:c.length:0,{type:n,timeout:f,propCount:l,hasTransform:n===_o&&jo.test(r[xo+"Property"])}}function Mo(t,e){for(;t.length<e.length;)t=t.concat(t);return Math.max.apply(null,e.map((function(e,n){return Po(e)+Po(t[n])})))}function Po(t){return 1e3*Number(t.slice(0,-1).replace(",","."))}function No(t,e){var i=t.elm;c(i._leaveCb)&&(i._leaveCb.cancelled=!0,i._leaveCb());var a=yo(t.data.transition);if(!o(a)&&!c(i._enterCb)&&1===i.nodeType){for(var s=a.css,n=a.type,u=a.enterClass,r=a.enterToClass,p=a.enterActiveClass,f=a.appearClass,h=a.appearToClass,d=a.appearActiveClass,m=a.beforeEnter,y=a.enter,g=a.afterEnter,_=a.enterCancelled,b=a.beforeAppear,w=a.appear,x=a.afterAppear,O=a.appearCancelled,S=a.duration,$=Qe,A=Qe.$vnode;A&&A.parent;)$=A.context,A=A.parent;var k=!$._isMounted||!t.isRootInsert;if(!k||w||""===w){var C=k&&f?f:u,E=k&&d?d:p,T=k&&h?h:r,j=k&&b||m,I=k&&"function"==typeof w?w:y,M=k&&x||g,P=k&&O||_,N=v(l(S)?S.enter:S),R=!1!==s&&!X,F=Fo(I),D=i._enterCb=L((function(){R&&(Eo(i,T),Eo(i,E)),D.cancelled?(R&&Eo(i,C),P&&P(i)):M&&M(i),i._enterCb=null}));t.data.show||ue(t,"insert",(function(){var e=i.parentNode,n=e&&e._pending&&e._pending[t.key];n&&n.tag===t.tag&&n.elm._leaveCb&&n.elm._leaveCb(),I&&I(i,D)})),j&&j(i),R&&(Co(i,C),Co(i,E),ko((function(){Eo(i,C),D.cancelled||(Co(i,T),F||(Ro(N)?setTimeout(D,N):To(i,n,D)))}))),t.data.show&&(e&&e(),I&&I(i,D)),R||F||D()}}}function Lo(t,e){var i=t.elm;c(i._enterCb)&&(i._enterCb.cancelled=!0,i._enterCb());var a=yo(t.data.transition);if(o(a)||1!==i.nodeType)return e();if(!c(i._leaveCb)){var s=a.css,n=a.type,u=a.leaveClass,r=a.leaveToClass,p=a.leaveActiveClass,f=a.beforeLeave,h=a.leave,d=a.afterLeave,m=a.leaveCancelled,y=a.delayLeave,g=a.duration,_=!1!==s&&!X,b=Fo(h),w=v(l(g)?g.leave:g),x=i._leaveCb=L((function(){i.parentNode&&i.parentNode._pending&&(i.parentNode._pending[t.key]=null),_&&(Eo(i,r),Eo(i,p)),x.cancelled?(_&&Eo(i,u),m&&m(i)):(e(),d&&d(i)),i._leaveCb=null}));y?y(O):O()}function O(){x.cancelled||(!t.data.show&&i.parentNode&&((i.parentNode._pending||(i.parentNode._pending={}))[t.key]=t),f&&f(i),_&&(Co(i,u),Co(i,p),ko((function(){Eo(i,u),x.cancelled||(Co(i,r),b||(Ro(w)?setTimeout(x,w):To(i,n,x)))}))),h&&h(i,x),_||b||x())}}function Ro(t){return"number"==typeof t&&!isNaN(t)}function Fo(t){if(o(t))return!1;var e=t.fns;return c(e)?Fo(Array.isArray(e)?e[0]:e):(t._length||t.length)>1}function Do(t,e){!0!==e.data.show&&No(e)}var Uo=function(t){var e,a,s={},n=t.modules,u=t.nodeOps;for(e=0;e<er.length;++e)for(s[er[e]]=[],a=0;a<n.length;++a)c(n[a][er[e]])&&s[er[e]].push(n[a][er[e]]);function r(t){var e=u.parentNode(t);c(e)&&u.removeChild(e,t)}function l(t,e,i,n,a,r,o){if(c(t.elm)&&c(r)&&(t=r[o]=wt(t)),t.isRootInsert=!a,!function(t,e,i,n){var a=t.data;if(c(a)){var r=c(t.componentInstance)&&a.keepAlive;if(c(a=a.hook)&&c(a=a.init)&&a(t,!1),c(t.componentInstance))return h(t,e),d(i,t.elm,n),f(r)&&function(t,e,n,i){for(var r,a=t;a.componentInstance;)if(c(r=(a=a.componentInstance._vnode).data)&&c(r=r.transition)){for(r=0;r<s.activate.length;++r)s.activate[r](Zn,a);e.push(a);break}d(n,t.elm,i)}(t,e,i,n),!0}}(t,e,i,n)){var l=t.data,p=t.children,m=t.tag;c(m)?(t.elm=t.ns?u.createElementNS(t.ns,m):u.createElement(m,t),g(t),v(t,p,e),c(l)&&y(t,e),d(i,t.elm,n)):f(t.isComment)?(t.elm=u.createComment(t.text),d(i,t.elm,n)):(t.elm=u.createTextNode(t.text),d(i,t.elm,n))}}function h(t,e){c(t.data.pendingInsert)&&(e.push.apply(e,t.data.pendingInsert),t.data.pendingInsert=null),t.elm=t.componentInstance.$el,m(t)?(y(t,e),g(t)):(Yn(t),e.push(t))}function d(t,e,n){c(t)&&(c(n)?u.parentNode(n)===t&&u.insertBefore(t,e,n):u.appendChild(t,e))}function v(t,e,n){if(Array.isArray(e))for(var r=0;r<e.length;++r)l(e[r],n,t.elm,null,!0,e,r);else i(t.text)&&u.appendChild(t.elm,u.createTextNode(String(t.text)))}function m(t){for(;t.componentInstance;)t=t.componentInstance._vnode;return c(t.tag)}function y(t,n){for(var r=0;r<s.create.length;++r)s.create[r](Zn,t);c(e=t.data.hook)&&(c(e.create)&&e.create(Zn,t),c(e.insert)&&n.push(t))}function g(t){var e;if(c(e=t.fnScopeId))u.setStyleScope(t.elm,e);else for(var n=t;n;)c(e=n.context)&&c(e=e.$options._scopeId)&&u.setStyleScope(t.elm,e),n=n.parent;c(e=Qe)&&e!==t.context&&e!==t.fnContext&&c(e=e.$options._scopeId)&&u.setStyleScope(t.elm,e)}function _(t,e,n,r,i,o){for(;r<=i;++r)l(n[r],o,t,e,!1,n,r)}function b(t){var e,n,i=t.data;if(c(i))for(c(e=i.hook)&&c(e=e.destroy)&&e(t),e=0;e<s.destroy.length;++e)s.destroy[e](t);if(c(e=t.children))for(n=0;n<t.children.length;++n)b(t.children[n])}function w(t,e,n){for(;e<=n;++e){var i=t[e];c(i)&&(c(i.tag)?(x(i),b(i)):r(i.elm))}}function x(t,e){if(c(e)||c(t.data)){var n,i=s.remove.length+1;for(c(e)?e.listeners+=i:e=function(t,e){function n(){0==--n.listeners&&r(t)}return n.listeners=e,n}(t.elm,i),c(n=t.componentInstance)&&c(n=n._vnode)&&c(n.data)&&x(n,e),n=0;n<s.remove.length;++n)s.remove[n](t,e);c(n=t.data.hook)&&c(n=n.remove)?n(t,e):e()}else r(t.elm)}function O(t,e,n,i){for(var r=n;r<i;r++){var a=e[r];if(c(a)&&nr(t,a))return r}}function S(t,i,e,a,n,r){if(t!==i){c(i.elm)&&c(a)&&(i=a[n]=wt(i));var p=i.elm=t.elm;if(f(t.isAsyncPlaceholder))c(i.asyncFactory.resolved)?k(t.elm,i,e):i.isAsyncPlaceholder=!0;else if(f(i.isStatic)&&f(t.isStatic)&&i.key===t.key&&(f(i.isCloned)||f(i.isOnce)))i.componentInstance=t.componentInstance;else{var h,d=i.data;c(d)&&c(h=d.hook)&&c(h=h.prepatch)&&h(t,i);var v=t.children,y=i.children;if(c(d)&&m(i)){for(h=0;h<s.update.length;++h)s.update[h](t,i);c(h=d.hook)&&c(h=h.update)&&h(t,i)}o(i.text)?c(v)&&c(y)?v!==y&&function(t,e,i,n,a){for(var s,r,f,p=0,h=0,d=e.length-1,v=e[0],m=e[d],y=i.length-1,g=i[0],b=i[y],x=!a;p<=d&&h<=y;)o(v)?v=e[++p]:o(m)?m=e[--d]:nr(v,g)?(S(v,g,n,i,h),v=e[++p],g=i[++h]):nr(m,b)?(S(m,b,n,i,y),m=e[--d],b=i[--y]):nr(v,b)?(S(v,b,n,i,y),x&&u.insertBefore(t,v.elm,u.nextSibling(m.elm)),v=e[++p],b=i[--y]):nr(m,g)?(S(m,g,n,i,h),x&&u.insertBefore(t,m.elm,v.elm),m=e[--d],g=i[++h]):(o(s)&&(s=rr(e,p,d)),o(r=c(g.key)?s[g.key]:O(g,e,p,d))?l(g,n,t,v.elm,!1,i,h):nr(f=e[r],g)?(S(f,g,n,i,h),e[r]=void 0,x&&u.insertBefore(t,f.elm,v.elm)):l(g,n,t,v.elm,!1,i,h),g=i[++h]);p>d?_(t,o(i[y+1])?null:i[y+1].elm,i,h,y,n):h>y&&w(e,p,d)}(p,v,y,e,r):c(y)?(c(t.text)&&u.setTextContent(p,""),_(p,null,y,0,y.length-1,e)):c(v)?w(v,0,v.length-1):c(t.text)&&u.setTextContent(p,""):t.text!==i.text&&u.setTextContent(p,i.text),c(d)&&c(h=d.hook)&&c(h=h.postpatch)&&h(t,i)}}}function $(t,e,i){if(f(i)&&c(t.parent))t.parent.data.pendingInsert=e;else for(var n=0;n<e.length;++n)e[n].data.hook.insert(e[n])}var A=p("attrs,class,staticClass,staticStyle,key");function k(t,e,i,n){var a,s=e.tag,r=e.data,u=e.children;if(n=n||r&&r.pre,e.elm=t,f(e.isComment)&&c(e.asyncFactory))return e.isAsyncPlaceholder=!0,!0;if(c(r)&&(c(a=r.hook)&&c(a=a.init)&&a(e,!0),c(a=e.componentInstance)))return h(e,i),!0;if(c(s)){if(c(u))if(t.hasChildNodes())if(c(a=r)&&c(a=a.domProps)&&c(a=a.innerHTML)){if(a!==t.innerHTML)return!1}else{for(var o=!0,l=t.firstChild,p=0;p<u.length;p++){if(!l||!k(l,u[p],i,n)){o=!1;break}l=l.nextSibling}if(!o||l)return!1}else v(e,u,i);if(c(r)){var d=!1;for(var m in r)if(!A(m)){d=!0,y(e,i);break}!d&&r.class&&ae(r.class)}}else t.data!==e.text&&(t.data=e.text);return!0}return function(t,i,e,a){if(!o(i)){var n,r=!1,p=[];if(o(t))r=!0,l(i,p);else{var h=c(t.nodeType);if(!h&&nr(t,i))S(t,i,p,null,null,a);else{if(h){if(1===t.nodeType&&t.hasAttribute(R)&&(t.removeAttribute(R),e=!0),f(e)&&k(t,i,p))return $(i,p,!0),t;n=t,t=new yt(u.tagName(n).toLowerCase(),{},[],void 0,n)}var d=t.elm,v=u.parentNode(d);if(l(i,p,d._leaveCb?null:v,u.nextSibling(d)),c(i.parent))for(var y=i.parent,g=m(i);y;){for(var _=0;_<s.destroy.length;++_)s.destroy[_](y);if(y.elm=i.elm,g){for(var x=0;x<s.create.length;++x)s.create[x](Zn,y);var O=y.data.hook.insert;if(O.merged)for(var A=1;A<O.fns.length;A++)O.fns[A]()}else Yn(y);y=y.parent}c(v)?w([t],0,0):c(t.tag)&&b(t)}}return $(i,p,r),i.elm}c(t)&&b(t)}}({nodeOps:Xn,modules:[dr,xr,Zr,no,po,W?{create:Do,activate:Do,remove:function(t,e){!0!==t.data.show?Lo(t,e):e()}}:{}].concat(fr)});X&&document.addEventListener("selectionchange",(function(){var t=document.activeElement;t&&t.vmodel&&Go(t,"input")}));var Ho={inserted:function(t,e,n,r){"select"===n.tag?(r.elm&&!r.elm._vOptions?ue(n,"postpatch",(function(){Ho.componentUpdated(t,e,n)})):Bo(t,e,n.context),t._vOptions=[].map.call(t.options,qo)):("textarea"===n.tag||Jn(t.type))&&(t._vModifiers=e.modifiers,e.modifiers.lazy||(t.addEventListener("compositionstart",Ko),t.addEventListener("compositionend",Wo),t.addEventListener("change",Wo),X&&(t.vmodel=!0)))},componentUpdated:function(t,e,n){if("select"===n.tag){Bo(t,e,n.context);var r=t._vOptions,i=t._vOptions=[].map.call(t.options,qo);i.some((function(t,e){return!P(t,r[e])}))&&(t.multiple?e.value.some((function(t){return zo(t,i)})):e.value!==e.oldValue&&zo(e.value,i))&&Go(t,"change")}}};function Bo(t,e,n){Vo(t,e,n),(q||Y)&&setTimeout((function(){Vo(t,e,n)}),0)}function Vo(t,e,n){var r=e.value,i=t.multiple;if(!i||Array.isArray(r)){for(var o,a,s=0,c=t.options.length;s<c;s++)if(a=t.options[s],i)o=N(r,qo(a))>-1,a.selected!==o&&(a.selected=o);else if(P(qo(a),r))return void(t.selectedIndex!==s&&(t.selectedIndex=s));i||(t.selectedIndex=-1)}}function zo(t,e){return e.every((function(e){return!P(e,t)}))}function qo(t){return"_value"in t?t._value:t.value}function Ko(t){t.target.composing=!0}function Wo(t){t.target.composing&&(t.target.composing=!1,Go(t.target,"input"))}function Go(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function Jo(t){return!t.componentInstance||t.data&&t.data.transition?t:Jo(t.componentInstance._vnode)}var Qo={model:Ho,show:{bind:function(t,e,n){var r=e.value,i=(n=Jo(n)).data&&n.data.transition,o=t.__vOriginalDisplay="none"===t.style.display?"":t.style.display;r&&i?(n.data.show=!0,No(n,(function(){t.style.display=o}))):t.style.display=r?o:"none"},update:function(t,e,n){var r=e.value;!r!=!e.oldValue&&((n=Jo(n)).data&&n.data.transition?(n.data.show=!0,r?No(n,(function(){t.style.display=t.__vOriginalDisplay})):Lo(n,(function(){t.style.display="none"}))):t.style.display=r?t.__vOriginalDisplay:"none")},unbind:function(t,e,n,r,i){i||(t.style.display=t.__vOriginalDisplay)}}},Xo={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function Yo(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?Yo(qe(e.children)):t}function Zo(t){var e={},n=t.$options;for(var r in n.propsData)e[r]=t[r];var i=n._parentListeners;for(var o in i)e[b(o)]=i[o];return e}function ti(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}var ei=function(t){return t.tag||me(t)},ni=function(t){return"show"===t.name},ri={name:"transition",props:Xo,abstract:!0,render:function(t){var e=this,n=this.$slots.default;if(n&&(n=n.filter(ei)).length){var r=this.mode,o=n[0];if(function(t){for(;t=t.parent;)if(t.data.transition)return!0}(this.$vnode))return o;var a=Yo(o);if(!a)return o;if(this._leaving)return ti(t,o);var s="__transition-"+this._uid+"-";a.key=null==a.key?a.isComment?s+"comment":s+a.tag:i(a.key)?0===String(a.key).indexOf(s)?a.key:s+a.key:a.key;var c=(a.data||(a.data={})).transition=Zo(this),u=this._vnode,f=Yo(u);if(a.data.directives&&a.data.directives.some(ni)&&(a.data.show=!0),f&&f.data&&!function(t,e){return e.key===t.key&&e.tag===t.tag}(a,f)&&!me(f)&&(!f.componentInstance||!f.componentInstance._vnode.isComment)){var l=f.data.transition=E({},c);if("out-in"===r)return this._leaving=!0,ue(l,"afterLeave",(function(){e._leaving=!1,e.$forceUpdate()})),ti(t,o);if("in-out"===r){if(me(a))return u;var p,h=function(){p()};ue(c,"afterEnter",h),ue(c,"enterCancelled",h),ue(l,"delayLeave",(function(t){p=t}))}}return o}}},oi=E({tag:String,moveClass:String},Xo);function ii(t){t.elm._moveCb&&t.elm._moveCb(),t.elm._enterCb&&t.elm._enterCb()}function ai(t){t.data.newPos=t.elm.getBoundingClientRect()}function si(t){var e=t.data.pos,n=t.data.newPos,r=e.left-n.left,i=e.top-n.top;if(r||i){t.data.moved=!0;var o=t.elm.style;o.transform=o.WebkitTransform="translate("+r+"px,"+i+"px)",o.transitionDuration="0s"}}delete oi.mode;var ci={Transition:ri,TransitionGroup:{props:oi,beforeMount:function(){var t=this,e=this._update;this._update=function(n,r){var i=Xe(t);t.__patch__(t._vnode,t.kept,!1,!0),t._vnode=t.kept,i(),e.call(t,n,r)}},render:function(t){for(var e=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,i=this.$slots.default||[],o=this.children=[],a=Zo(this),s=0;s<i.length;s++){var c=i[s];c.tag&&null!=c.key&&0!==String(c.key).indexOf("__vlist")&&(o.push(c),n[c.key]=c,(c.data||(c.data={})).transition=a)}if(r){for(var u=[],f=[],l=0;l<r.length;l++){var p=r[l];p.data.transition=a,p.data.pos=p.elm.getBoundingClientRect(),n[p.key]?u.push(p):f.push(p)}this.kept=t(e,null,u),this.removed=f}return t(e,null,o)},updated:function(){var t=this.prevChildren,e=this.moveClass||(this.name||"v")+"-move";t.length&&this.hasMove(t[0].elm,e)&&(t.forEach(ii),t.forEach(ai),t.forEach(si),this._reflow=document.body.offsetHeight,t.forEach((function(t){if(t.data.moved){var n=t.elm,r=n.style;Co(n,e),r.transform=r.WebkitTransform=r.transitionDuration="",n.addEventListener(Oo,n._moveCb=function t(r){r&&r.target!==n||r&&!/transform$/.test(r.propertyName)||(n.removeEventListener(Oo,t),n._moveCb=null,Eo(n,e))})}})))},methods:{hasMove:function(t,e){if(!bo)return!1;if(this._hasMove)return this._hasMove;var n=t.cloneNode();t._transitionClasses&&t._transitionClasses.forEach((function(t){mo(n,t)})),vo(n,e),n.style.display="none",this.$el.appendChild(n);var r=Io(n);return this.$el.removeChild(n),this._hasMove=r.hasTransform}}}};On.config.mustUseProp=In,On.config.isReservedTag=Kn,On.config.isReservedAttr=Tn,On.config.getTagNamespace=Wn,On.config.isUnknownElement=function(t){if(!W)return!0;if(Kn(t))return!1;if(t=t.toLowerCase(),null!=Gn[t])return Gn[t];var e=document.createElement(t);return t.indexOf("-")>-1?Gn[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:Gn[t]=/HTMLUnknownElement/.test(e.toString())},E(On.options.directives,Qo),E(On.options.components,ci),On.prototype.__patch__=W?Uo:j,On.prototype.$mount=function(t,e){return function(t,e,n){var r;return t.$el=e,t.$options.render||(t.$options.render=bt),tn(t,"beforeMount"),r=function(){t._update(t._render(),n)},new hn(t,r,j,{before:function(){t._isMounted&&!t._isDestroyed&&tn(t,"beforeUpdate")}},!0),n=!1,null==t.$vnode&&(t._isMounted=!0,tn(t,"mounted")),t}(this,t=t&&W?Qn(t):void 0,e)},W&&setTimeout((function(){U.devtools&&at&&at.emit("init",On)}),0);var ui,fi=/\{\{((?:.|\r?\n)+?)\}\}/g,pi=/[-.*+?^${}()|[\]\/\\]/g,hi=g((function(t){var e=t[0].replace(pi,"\\$&"),n=t[1].replace(pi,"\\$&");return new RegExp(e+"((?:.|\\n)+?)"+n,"g")})),di={staticKeys:["staticClass"],transformNode:function(t,e){e.warn;var n=Nr(t,"class");n&&(t.staticClass=JSON.stringify(n));var r=Pr(t,"class",!1);r&&(t.classBinding=r)},genData:function(t){var e="";return t.staticClass&&(e+="staticClass:"+t.staticClass+","),t.classBinding&&(e+="class:"+t.classBinding+","),e}},vi={staticKeys:["staticStyle"],transformNode:function(t,e){e.warn;var n=Nr(t,"style");n&&(t.staticStyle=JSON.stringify(ro(n)));var r=Pr(t,"style",!1);r&&(t.styleBinding=r)},genData:function(t){var e="";return t.staticStyle&&(e+="staticStyle:"+t.staticStyle+","),t.styleBinding&&(e+="style:("+t.styleBinding+"),"),e}},mi=p("area,base,br,col,embed,frame,hr,img,input,isindex,keygen,link,meta,param,source,track,wbr"),yi=p("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source"),gi=p("address,article,aside,base,blockquote,body,caption,col,colgroup,dd,details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,title,tr,track"),bi=/^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,_i=/^\s*((?:v-[\w-]+:|@|:|#)\[[^=]+?\][^\s"'<>\/=]*)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,wi="[a-zA-Z_][\\-\\.0-9_a-zA-Z"+H.source+"]*",xi="((?:"+wi+"\\:)?"+wi+")",Oi=new RegExp("^<"+xi),Si=/^\s*(\/?)>/,$i=new RegExp("^<\\/"+xi+"[^>]*>"),Ai=/^<!DOCTYPE [^>]+>/i,ki=/^<!\--/,Ci=/^<!\[/,Ei=p("script,style,textarea",!0),Ti={},ji={"&lt;":"<","&gt;":">","&quot;":'"',"&amp;":"&","&#10;":"\n","&#9;":"\t","&#39;":"'"},Ii=/&(?:lt|gt|quot|amp|#39);/g,Mi=/&(?:lt|gt|quot|amp|#39|#10|#9);/g,Pi=p("pre,textarea",!0),Ni=function(t,e){return t&&Pi(t)&&"\n"===e[0]};function Li(t,e){var n=e?Mi:Ii;return t.replace(n,(function(t){return ji[t]}))}var Ri,Fi,Di,Ui,Hi,Bi,Vi,zi,qi=/^@|^v-on:/,Ki=/^v-|^@|^:|^#/,Wi=/([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/,Gi=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,Ji=/^\(|\)$/g,Qi=/^\[.*\]$/,Xi=/:(.*)$/,Yi=/^:|^\.|^v-bind:/,Zi=/\.[^.\]]+(?=[^\]]*$)/g,ta=/^v-slot(:|$)|^#/,ea=/[\r\n]/,na=/[ \f\t\r\n]+/g,ra=g((function(t){return(ui=ui||document.createElement("div")).innerHTML=t,ui.textContent})),oa="_empty_";function ia(t,e,n){return{type:1,tag:t,attrsList:e,attrsMap:la(e),rawAttrsMap:{},parent:n,children:[]}}function aa(t,e){var n,r;(r=Pr(n=t,"key"))&&(n.key=r),t.plain=!t.key&&!t.scopedSlots&&!t.attrsList.length,function(t){var e=Pr(t,"ref");e&&(t.ref=e,t.refInFor=function(t){for(var e=t;e;){if(void 0!==e.for)return!0;e=e.parent}return!1}(t))}(t),function(t){var e;"template"===t.tag?(e=Nr(t,"scope"),t.slotScope=e||Nr(t,"slot-scope")):(e=Nr(t,"slot-scope"))&&(t.slotScope=e);var n=Pr(t,"slot");if(n&&(t.slotTarget='""'===n?'"default"':n,t.slotTargetDynamic=!(!t.attrsMap[":slot"]&&!t.attrsMap["v-bind:slot"]),"template"===t.tag||t.slotScope||Er(t,"slot",n,function(t,e){return t.rawAttrsMap[":"+e]||t.rawAttrsMap["v-bind:"+e]||t.rawAttrsMap[e]}(t,"slot"))),"template"===t.tag){var r=Lr(t,ta);if(r){var i=ua(r),o=i.name,a=i.dynamic;t.slotTarget=o,t.slotTargetDynamic=a,t.slotScope=r.value||oa}}else{var s=Lr(t,ta);if(s){var c=t.scopedSlots||(t.scopedSlots={}),u=ua(s),f=u.name,l=u.dynamic,p=c[f]=ia("template",[],t);p.slotTarget=f,p.slotTargetDynamic=l,p.children=t.children.filter((function(t){if(!t.slotScope)return t.parent=p,!0})),p.slotScope=s.value||oa,t.children=[],t.plain=!1}}}(t),function(t){"slot"===t.tag&&(t.slotName=Pr(t,"name"))}(t),function(t){var e;(e=Pr(t,"is"))&&(t.component=e),null!=Nr(t,"inline-template")&&(t.inlineTemplate=!0)}(t);for(var i=0;i<Di.length;i++)t=Di[i](t,e)||t;return function(t){var e,n,r,i,o,a,s,c,u=t.attrsList;for(e=0,n=u.length;e<n;e++)if(r=i=u[e].name,o=u[e].value,Ki.test(r))if(t.hasBindings=!0,(a=fa(r.replace(Ki,"")))&&(r=r.replace(Zi,"")),Yi.test(r))r=r.replace(Yi,""),o=Sr(o),(c=Qi.test(r))&&(r=r.slice(1,-1)),a&&(a.prop&&!c&&"innerHtml"===(r=b(r))&&(r="innerHTML"),a.camel&&!c&&(r=b(r)),a.sync&&(s=Dr(o,"$event"),c?Mr(t,'"update:"+('+r+")",s,null,!1,0,u[e],!0):(Mr(t,"update:"+b(r),s,null,!1,0,u[e]),A(r)!==b(r)&&Mr(t,"update:"+A(r),s,null,!1,0,u[e])))),a&&a.prop||!t.component&&Vi(t.tag,t.attrsMap.type,r)?Cr(t,r,o,u[e],c):Er(t,r,o,u[e],c);else if(qi.test(r))r=r.replace(qi,""),(c=Qi.test(r))&&(r=r.slice(1,-1)),Mr(t,r,o,a,!1,0,u[e],c);else{var f=(r=r.replace(Ki,"")).match(Xi),l=f&&f[1];c=!1,l&&(r=r.slice(0,-(l.length+1)),Qi.test(l)&&(l=l.slice(1,-1),c=!0)),jr(t,r,i,o,l,c,a,u[e])}else Er(t,r,JSON.stringify(o),u[e]),!t.component&&"muted"===r&&Vi(t.tag,t.attrsMap.type,r)&&Cr(t,r,"true",u[e])}(t),t}function sa(t){var e;if(e=Nr(t,"v-for")){var n=function(t){var e=t.match(Wi);if(e){var n={};n.for=e[2].trim();var r=e[1].trim().replace(Ji,""),i=r.match(Gi);return i?(n.alias=r.replace(Gi,"").trim(),n.iterator1=i[1].trim(),i[2]&&(n.iterator2=i[2].trim())):n.alias=r,n}}(e);n&&E(t,n)}}function ca(t,e){t.ifConditions||(t.ifConditions=[]),t.ifConditions.push(e)}function ua(t){var e=t.name.replace(ta,"");return e||"#"!==t.name[0]&&(e="default"),Qi.test(e)?{name:e.slice(1,-1),dynamic:!0}:{name:'"'+e+'"',dynamic:!1}}function fa(t){var e=t.match(Zi);if(e){var n={};return e.forEach((function(t){n[t.slice(1)]=!0})),n}}function la(t){for(var e={},n=0,r=t.length;n<r;n++)e[t[n].name]=t[n].value;return e}var pa=/^xmlns:NS\d+/,ha=/^NS\d+:/;function da(t){return ia(t.tag,t.attrsList.slice(),t.parent)}var va,ma,ya=[di,vi,{preTransformNode:function(t,e){if("input"===t.tag){var n,r=t.attrsMap;if(!r["v-model"])return;if((r[":type"]||r["v-bind:type"])&&(n=Pr(t,"type")),r.type||n||!r["v-bind"]||(n="("+r["v-bind"]+").type"),n){var i=Nr(t,"v-if",!0),o=i?"&&("+i+")":"",a=null!=Nr(t,"v-else",!0),s=Nr(t,"v-else-if",!0),c=da(t);sa(c),Tr(c,"type","checkbox"),aa(c,e),c.processed=!0,c.if="("+n+")==='checkbox'"+o,ca(c,{exp:c.if,block:c});var u=da(t);Nr(u,"v-for",!0),Tr(u,"type","radio"),aa(u,e),ca(c,{exp:"("+n+")==='radio'"+o,block:u});var f=da(t);return Nr(f,"v-for",!0),Tr(f,":type",n),aa(f,e),ca(c,{exp:i,block:f}),a?c.else=!0:s&&(c.elseif=s),c}}}}],ga={expectHTML:!0,modules:ya,directives:{model:function(t,e,n){var r=e.value,i=e.modifiers,o=t.tag,a=t.attrsMap.type;if(t.component)return Fr(t,r,i),!1;if("select"===o)!function(t,e,n){var r='var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = "_value" in o ? o._value : o.value;return '+(n&&n.number?"_n(val)":"val")+"});";Mr(t,"change",r=r+" "+Dr(e,"$event.target.multiple ? $$selectedVal : $$selectedVal[0]"),null,!0)}(t,r,i);else if("input"===o&&"checkbox"===a)!function(t,e,n){var r=n&&n.number,i=Pr(t,"value")||"null",o=Pr(t,"true-value")||"true",a=Pr(t,"false-value")||"false";Cr(t,"checked","Array.isArray("+e+")?_i("+e+","+i+")>-1"+("true"===o?":("+e+")":":_q("+e+","+o+")")),Mr(t,"change","var $$a="+e+",$$el=$event.target,$$c=$$el.checked?("+o+"):("+a+");if(Array.isArray($$a)){var $$v="+(r?"_n("+i+")":i)+",$$i=_i($$a,$$v);if($$el.checked){$$i<0&&("+Dr(e,"$$a.concat([$$v])")+")}else{$$i>-1&&("+Dr(e,"$$a.slice(0,$$i).concat($$a.slice($$i+1))")+")}}else{"+Dr(e,"$$c")+"}",null,!0)}(t,r,i);else if("input"===o&&"radio"===a)!function(t,e,n){var r=n&&n.number,i=Pr(t,"value")||"null";Cr(t,"checked","_q("+e+","+(i=r?"_n("+i+")":i)+")"),Mr(t,"change",Dr(e,i),null,!0)}(t,r,i);else if("input"===o||"textarea"===o)!function(t,e,n){var r=t.attrsMap.type,i=n||{},o=i.lazy,a=i.number,s=i.trim,c=!o&&"range"!==r,u=o?"change":"range"===r?Kr:"input",f="$event.target.value";s&&(f="$event.target.value.trim()"),a&&(f="_n("+f+")");var l=Dr(e,f);c&&(l="if($event.target.composing)return;"+l),Cr(t,"value","("+e+")"),Mr(t,u,l,null,!0),(s||a)&&Mr(t,"blur","$forceUpdate()")}(t,r,i);else if(!U.isReservedTag(o))return Fr(t,r,i),!1;return!0},text:function(t,e){e.value&&Cr(t,"textContent","_s("+e.value+")",e)},html:function(t,e){e.value&&Cr(t,"innerHTML","_s("+e.value+")",e)}},isPreTag:function(t){return"pre"===t},isUnaryTag:mi,mustUseProp:In,canBeLeftOpenTag:yi,isReservedTag:Kn,getTagNamespace:Wn,staticKeys:function(t){return t.reduce((function(t,e){return t.concat(e.staticKeys||[])}),[]).join(",")}(ya)},ba=g((function(t){return p("type,tag,attrsList,attrsMap,plain,parent,children,attrs,start,end,rawAttrsMap"+(t?","+t:""))}));var _a=/^([\w$_]+|\([^)]*?\))\s*=>|^function(?:\s+[\w$]+)?\s*\(/,wa=/\([^)]*?\);*$/,xa=/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/,Oa={esc:27,tab:9,enter:13,space:32,up:38,left:37,right:39,down:40,delete:[8,46]},Sa={esc:["Esc","Escape"],tab:"Tab",enter:"Enter",space:[" ","Spacebar"],up:["Up","ArrowUp"],left:["Left","ArrowLeft"],right:["Right","ArrowRight"],down:["Down","ArrowDown"],delete:["Backspace","Delete","Del"]},$a=function(t){return"if("+t+")return null;"},Aa={stop:"$event.stopPropagation();",prevent:"$event.preventDefault();",self:$a("$event.target !== $event.currentTarget"),ctrl:$a("!$event.ctrlKey"),shift:$a("!$event.shiftKey"),alt:$a("!$event.altKey"),meta:$a("!$event.metaKey"),left:$a("'button' in $event && $event.button !== 0"),middle:$a("'button' in $event && $event.button !== 1"),right:$a("'button' in $event && $event.button !== 2")};function ka(t,e){var n=e?"nativeOn:":"on:",r="",i="";for(var o in t){var a=Ca(t[o]);t[o]&&t[o].dynamic?i+=o+","+a+",":r+='"'+o+'":'+a+","}return r="{"+r.slice(0,-1)+"}",i?n+"_d("+r+",["+i.slice(0,-1)+"])":n+r}function Ca(t){if(!t)return"function(){}";if(Array.isArray(t))return"["+t.map((function(t){return Ca(t)})).join(",")+"]";var e=xa.test(t.value),n=_a.test(t.value),r=xa.test(t.value.replace(wa,""));if(t.modifiers){var i="",o="",a=[];for(var s in t.modifiers)if(Aa[s])o+=Aa[s],Oa[s]&&a.push(s);else if("exact"===s){var c=t.modifiers;o+=$a(["ctrl","shift","alt","meta"].filter((function(t){return!c[t]})).map((function(t){return"$event."+t+"Key"})).join("||"))}else a.push(s);return a.length&&(i+=function(t){return"if(!$event.type.indexOf('key')&&"+t.map(Ea).join("&&")+")return null;"}(a)),o&&(i+=o),"function($event){"+i+(e?"return "+t.value+".apply(null, arguments)":n?"return ("+t.value+").apply(null, arguments)":r?"return "+t.value:t.value)+"}"}return e||n?t.value:"function($event){"+(r?"return "+t.value:t.value)+"}"}function Ea(t){var e=parseInt(t,10);if(e)return"$event.keyCode!=="+e;var n=Oa[t],r=Sa[t];return"_k($event.keyCode,"+JSON.stringify(t)+","+JSON.stringify(n)+",$event.key,"+JSON.stringify(r)+")"}var Ta={on:function(t,e){t.wrapListeners=function(t){return"_g("+t+","+e.value+")"}},bind:function(t,e){t.wrapData=function(n){return"_b("+n+",'"+t.tag+"',"+e.value+","+(e.modifiers&&e.modifiers.prop?"true":"false")+(e.modifiers&&e.modifiers.sync?",true":"")+")"}},cloak:j},ja=function(t){this.options=t,this.warn=t.warn||Ar,this.transforms=kr(t.modules,"transformCode"),this.dataGenFns=kr(t.modules,"genData"),this.directives=E(E({},Ta),t.directives);var e=t.isReservedTag||I;this.maybeComponent=function(t){return!!t.component||!e(t.tag)},this.onceId=0,this.staticRenderFns=[],this.pre=!1};function Ia(t,e){var n=new ja(e);return{render:"with(this){return "+(t?"script"===t.tag?"null":Ma(t,n):'_c("div")')+"}",staticRenderFns:n.staticRenderFns}}function Ma(t,e){if(t.parent&&(t.pre=t.pre||t.parent.pre),t.staticRoot&&!t.staticProcessed)return Pa(t,e);if(t.once&&!t.onceProcessed)return Na(t,e);if(t.for&&!t.forProcessed)return Ra(t,e);if(t.if&&!t.ifProcessed)return La(t,e);if("template"!==t.tag||t.slotTarget||e.pre){if("slot"===t.tag)return function(t,e){var n=t.slotName||'"default"',r=Ha(t,e),i="_t("+n+(r?",function(){return "+r+"}":""),o=t.attrs||t.dynamicAttrs?za((t.attrs||[]).concat(t.dynamicAttrs||[]).map((function(t){return{name:b(t.name),value:t.value,dynamic:t.dynamic}}))):null,a=t.attrsMap["v-bind"];return!o&&!a||r||(i+=",null"),o&&(i+=","+o),a&&(i+=(o?"":",null")+","+a),i+")"}(t,e);var n;if(t.component)n=function(t,e,n){var r=e.inlineTemplate?null:Ha(e,n,!0);return"_c("+t+","+Fa(e,n)+(r?","+r:"")+")"}(t.component,t,e);else{var r;(!t.plain||t.pre&&e.maybeComponent(t))&&(r=Fa(t,e));var i=t.inlineTemplate?null:Ha(t,e,!0);n="_c('"+t.tag+"'"+(r?","+r:"")+(i?","+i:"")+")"}for(var o=0;o<e.transforms.length;o++)n=e.transforms[o](t,n);return n}return Ha(t,e)||"void 0"}function Pa(t,e){t.staticProcessed=!0;var n=e.pre;return t.pre&&(e.pre=t.pre),e.staticRenderFns.push("with(this){return "+Ma(t,e)+"}"),e.pre=n,"_m("+(e.staticRenderFns.length-1)+(t.staticInFor?",true":"")+")"}function Na(t,e){if(t.onceProcessed=!0,t.if&&!t.ifProcessed)return La(t,e);if(t.staticInFor){for(var n="",r=t.parent;r;){if(r.for){n=r.key;break}r=r.parent}return n?"_o("+Ma(t,e)+","+e.onceId+++","+n+")":Ma(t,e)}return Pa(t,e)}function La(t,e,n,r){return t.ifProcessed=!0,function t(e,n,r,i){if(!e.length)return i||"_e()";var o=e.shift();return o.exp?"("+o.exp+")?"+a(o.block)+":"+t(e,n,r,i):""+a(o.block);function a(t){return r?r(t,n):t.once?Na(t,n):Ma(t,n)}}(t.ifConditions.slice(),e,n,r)}function Ra(t,e,n,r){var i=t.for,o=t.alias,a=t.iterator1?","+t.iterator1:"",s=t.iterator2?","+t.iterator2:"";return t.forProcessed=!0,(r||"_l")+"(("+i+"),function("+o+a+s+"){return "+(n||Ma)(t,e)+"})"}function Fa(t,e){var n="{",r=function(t,e){var n=t.directives;if(n){var r,i,o,a,s="directives:[",c=!1;for(r=0,i=n.length;r<i;r++){o=n[r],a=!0;var u=e.directives[o.name];u&&(a=!!u(t,o,e.warn)),a&&(c=!0,s+='{name:"'+o.name+'",rawName:"'+o.rawName+'"'+(o.value?",value:("+o.value+"),expression:"+JSON.stringify(o.value):"")+(o.arg?",arg:"+(o.isDynamicArg?o.arg:'"'+o.arg+'"'):"")+(o.modifiers?",modifiers:"+JSON.stringify(o.modifiers):"")+"},")}return c?s.slice(0,-1)+"]":void 0}}(t,e);r&&(n+=r+","),t.key&&(n+="key:"+t.key+","),t.ref&&(n+="ref:"+t.ref+","),t.refInFor&&(n+="refInFor:true,"),t.pre&&(n+="pre:true,"),t.component&&(n+='tag:"'+t.tag+'",');for(var i=0;i<e.dataGenFns.length;i++)n+=e.dataGenFns[i](t);if(t.attrs&&(n+="attrs:"+za(t.attrs)+","),t.props&&(n+="domProps:"+za(t.props)+","),t.events&&(n+=ka(t.events,!1)+","),t.nativeEvents&&(n+=ka(t.nativeEvents,!0)+","),t.slotTarget&&!t.slotScope&&(n+="slot:"+t.slotTarget+","),t.scopedSlots&&(n+=function(t,e,n){var r=t.for||Object.keys(e).some((function(t){var n=e[t];return n.slotTargetDynamic||n.if||n.for||Da(n)})),i=!!t.if;if(!r)for(var o=t.parent;o;){if(o.slotScope&&o.slotScope!==oa||o.for){r=!0;break}o.if&&(i=!0),o=o.parent}var a=Object.keys(e).map((function(t){return Ua(e[t],n)})).join(",");return"scopedSlots:_u(["+a+"]"+(r?",null,true":"")+(!r&&i?",null,false,"+function(t){for(var e=5381,n=t.length;n;)e=33*e^t.charCodeAt(--n);return e>>>0}(a):"")+")"}(t,t.scopedSlots,e)+","),t.model&&(n+="model:{value:"+t.model.value+",callback:"+t.model.callback+",expression:"+t.model.expression+"},"),t.inlineTemplate){var o=function(t,e){var n=t.children[0];if(n&&1===n.type){var r=Ia(n,e.options);return"inlineTemplate:{render:function(){"+r.render+"},staticRenderFns:["+r.staticRenderFns.map((function(t){return"function(){"+t+"}"})).join(",")+"]}"}}(t,e);o&&(n+=o+",")}return n=n.replace(/,$/,"")+"}",t.dynamicAttrs&&(n="_b("+n+',"'+t.tag+'",'+za(t.dynamicAttrs)+")"),t.wrapData&&(n=t.wrapData(n)),t.wrapListeners&&(n=t.wrapListeners(n)),n}function Da(t){return 1===t.type&&("slot"===t.tag||t.children.some(Da))}function Ua(t,e){var n=t.attrsMap["slot-scope"];if(t.if&&!t.ifProcessed&&!n)return La(t,e,Ua,"null");if(t.for&&!t.forProcessed)return Ra(t,e,Ua);var r=t.slotScope===oa?"":String(t.slotScope),i="function("+r+"){return "+("template"===t.tag?t.if&&n?"("+t.if+")?"+(Ha(t,e)||"undefined")+":undefined":Ha(t,e)||"undefined":Ma(t,e))+"}",o=r?"":",proxy:true";return"{key:"+(t.slotTarget||'"default"')+",fn:"+i+o+"}"}function Ha(t,e,n,r,i){var o=t.children;if(o.length){var a=o[0];if(1===o.length&&a.for&&"template"!==a.tag&&"slot"!==a.tag){var s=n?e.maybeComponent(a)?",1":",0":"";return""+(r||Ma)(a,e)+s}var c=n?function(t,e){for(var n=0,r=0;r<t.length;r++){var i=t[r];if(1===i.type){if(Ba(i)||i.ifConditions&&i.ifConditions.some((function(t){return Ba(t.block)}))){n=2;break}(e(i)||i.ifConditions&&i.ifConditions.some((function(t){return e(t.block)})))&&(n=1)}}return n}(o,e.maybeComponent):0,u=i||Va;return"["+o.map((function(t){return u(t,e)})).join(",")+"]"+(c?","+c:"")}}function Ba(t){return void 0!==t.for||"template"===t.tag||"slot"===t.tag}function Va(t,e){return 1===t.type?Ma(t,e):3===t.type&&t.isComment?(r=t,"_e("+JSON.stringify(r.text)+")"):"_v("+(2===(n=t).type?n.expression:qa(JSON.stringify(n.text)))+")";var n,r}function za(t){for(var e="",n="",r=0;r<t.length;r++){var i=t[r],o=qa(i.value);i.dynamic?n+=i.name+","+o+",":e+='"'+i.name+'":'+o+","}return e="{"+e.slice(0,-1)+"}",n?"_d("+e+",["+n.slice(0,-1)+"])":e}function qa(t){return t.replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}function Ka(t,e){try{return new Function(t)}catch(n){return e.push({err:n,code:t}),j}}function Wa(t){var e=Object.create(null);return function(n,r,i){(r=E({},r)).warn,delete r.warn;var o=r.delimiters?String(r.delimiters)+n:n;if(e[o])return e[o];var a=t(n,r),s={},c=[];return s.render=Ka(a.render,c),s.staticRenderFns=a.staticRenderFns.map((function(t){return Ka(t,c)})),e[o]=s}}new RegExp("\\b"+"do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,super,throw,while,yield,delete,export,import,return,switch,default,extends,finally,continue,debugger,function,arguments".split(",").join("\\b|\\b")+"\\b");var Ga,Ja,Qa=(Ga=function(t,e){var n=function(t,e){Ri=e.warn||Ar,Bi=e.isPreTag||I,Vi=e.mustUseProp||I,zi=e.getTagNamespace||I,e.isReservedTag,Di=kr(e.modules,"transformNode"),Ui=kr(e.modules,"preTransformNode"),Hi=kr(e.modules,"postTransformNode"),Fi=e.delimiters;var n,r,i=[],o=!1!==e.preserveWhitespace,a=e.whitespace,s=!1,c=!1;function u(t){if(f(t),s||t.processed||(t=aa(t,e)),i.length||t===n||n.if&&(t.elseif||t.else)&&ca(n,{exp:t.elseif,block:t}),r&&!t.forbidden)if(t.elseif||t.else)a=t,(u=function(t){for(var e=t.length;e--;){if(1===t[e].type)return t[e];t.pop()}}(r.children))&&u.if&&ca(u,{exp:a.elseif,block:a});else{if(t.slotScope){var o=t.slotTarget||'"default"';(r.scopedSlots||(r.scopedSlots={}))[o]=t}r.children.push(t),t.parent=r}var a,u;t.children=t.children.filter((function(t){return!t.slotScope})),f(t),t.pre&&(s=!1),Bi(t.tag)&&(c=!1);for(var l=0;l<Hi.length;l++)Hi[l](t,e)}function f(t){if(!c)for(var e;(e=t.children[t.children.length-1])&&3===e.type&&" "===e.text;)t.children.pop()}return function(t,e){for(var n,r,i=[],o=e.expectHTML,a=e.isUnaryTag||I,s=e.canBeLeftOpenTag||I,c=0;t;){if(n=t,r&&Ei(r)){var u=0,f=r.toLowerCase(),l=Ti[f]||(Ti[f]=new RegExp("([\\s\\S]*?)(</"+f+"[^>]*>)","i")),p=t.replace(l,(function(t,n,r){return u=r.length,Ei(f)||"noscript"===f||(n=n.replace(/<!\--([\s\S]*?)-->/g,"$1").replace(/<!\[CDATA\[([\s\S]*?)]]>/g,"$1")),Ni(f,n)&&(n=n.slice(1)),e.chars&&e.chars(n),""}));c+=t.length-p.length,t=p,A(f,c-u,c)}else{var h=t.indexOf("<");if(0===h){if(ki.test(t)){var d=t.indexOf("--\x3e");if(d>=0){e.shouldKeepComment&&e.comment(t.substring(4,d),c,c+d+3),O(d+3);continue}}if(Ci.test(t)){var v=t.indexOf("]>");if(v>=0){O(v+2);continue}}var m=t.match(Ai);if(m){O(m[0].length);continue}var y=t.match($i);if(y){var g=c;O(y[0].length),A(y[1],g,c);continue}var _=S();if(_){$(_),Ni(_.tagName,t)&&O(1);continue}}var b=void 0,w=void 0,x=void 0;if(h>=0){for(w=t.slice(h);!($i.test(w)||Oi.test(w)||ki.test(w)||Ci.test(w)||(x=w.indexOf("<",1))<0);)h+=x,w=t.slice(h);b=t.substring(0,h)}h<0&&(b=t),b&&O(b.length),e.chars&&b&&e.chars(b,c-b.length,c)}if(t===n){e.chars&&e.chars(t);break}}function O(e){c+=e,t=t.substring(e)}function S(){var e=t.match(Oi);if(e){var n,r,i={tagName:e[1],attrs:[],start:c};for(O(e[0].length);!(n=t.match(Si))&&(r=t.match(_i)||t.match(bi));)r.start=c,O(r[0].length),r.end=c,i.attrs.push(r);if(n)return i.unarySlash=n[1],O(n[0].length),i.end=c,i}}function $(t){var n=t.tagName,c=t.unarySlash;o&&("p"===r&&gi(n)&&A(r),s(n)&&r===n&&A(n));for(var u=a(n)||!!c,f=t.attrs.length,l=new Array(f),p=0;p<f;p++){var h=t.attrs[p],d=h[3]||h[4]||h[5]||"",v="a"===n&&"href"===h[1]?e.shouldDecodeNewlinesForHref:e.shouldDecodeNewlines;l[p]={name:h[1],value:Li(d,v)}}u||(i.push({tag:n,lowerCasedTag:n.toLowerCase(),attrs:l,start:t.start,end:t.end}),r=n),e.start&&e.start(n,l,u,t.start,t.end)}function A(t,n,o){var a,s;if(null==n&&(n=c),null==o&&(o=c),t)for(s=t.toLowerCase(),a=i.length-1;a>=0&&i[a].lowerCasedTag!==s;a--);else a=0;if(a>=0){for(var u=i.length-1;u>=a;u--)e.end&&e.end(i[u].tag,n,o);i.length=a,r=a&&i[a-1].tag}else"br"===s?e.start&&e.start(t,[],!0,n,o):"p"===s&&(e.start&&e.start(t,[],!1,n,o),e.end&&e.end(t,n,o))}A()}(t,{warn:Ri,expectHTML:e.expectHTML,isUnaryTag:e.isUnaryTag,canBeLeftOpenTag:e.canBeLeftOpenTag,shouldDecodeNewlines:e.shouldDecodeNewlines,shouldDecodeNewlinesForHref:e.shouldDecodeNewlinesForHref,shouldKeepComment:e.comments,outputSourceRange:e.outputSourceRange,start:function(t,o,a,f,l){var p=r&&r.ns||zi(t);q&&"svg"===p&&(o=function(t){for(var e=[],n=0;n<t.length;n++){var r=t[n];pa.test(r.name)||(r.name=r.name.replace(ha,""),e.push(r))}return e}(o));var h,d=ia(t,o,r);p&&(d.ns=p),"style"!==(h=d).tag&&("script"!==h.tag||h.attrsMap.type&&"text/javascript"!==h.attrsMap.type)||it()||(d.forbidden=!0);for(var v=0;v<Ui.length;v++)d=Ui[v](d,e)||d;s||(function(t){null!=Nr(t,"v-pre")&&(t.pre=!0)}(d),d.pre&&(s=!0)),Bi(d.tag)&&(c=!0),s?function(t){var e=t.attrsList,n=e.length;if(n)for(var r=t.attrs=new Array(n),i=0;i<n;i++)r[i]={name:e[i].name,value:JSON.stringify(e[i].value)},null!=e[i].start&&(r[i].start=e[i].start,r[i].end=e[i].end);else t.pre||(t.plain=!0)}(d):d.processed||(sa(d),function(t){var e=Nr(t,"v-if");if(e)t.if=e,ca(t,{exp:e,block:t});else{null!=Nr(t,"v-else")&&(t.else=!0);var n=Nr(t,"v-else-if");n&&(t.elseif=n)}}(d),function(t){null!=Nr(t,"v-once")&&(t.once=!0)}(d)),n||(n=d),a?u(d):(r=d,i.push(d))},end:function(t,e,n){var o=i[i.length-1];i.length-=1,r=i[i.length-1],u(o)},chars:function(t,e,n){if(r&&(!q||"textarea"!==r.tag||r.attrsMap.placeholder!==t)){var i,u,f,l=r.children;(t=c||t.trim()?"script"===(i=r).tag||"style"===i.tag?t:ra(t):l.length?a?"condense"===a&&ea.test(t)?"":" ":o?" ":"":"")&&(c||"condense"!==a||(t=t.replace(na," ")),!s&&" "!==t&&(u=function(t,e){var n=e?hi(e):fi;if(n.test(t)){for(var r,i,o,a=[],s=[],c=n.lastIndex=0;r=n.exec(t);){(i=r.index)>c&&(s.push(o=t.slice(c,i)),a.push(JSON.stringify(o)));var u=Sr(r[1].trim());a.push("_s("+u+")"),s.push({"@binding":u}),c=i+r[0].length}return c<t.length&&(s.push(o=t.slice(c)),a.push(JSON.stringify(o))),{expression:a.join("+"),tokens:s}}}(t,Fi))?f={type:2,expression:u.expression,tokens:u.tokens,text:t}:" "===t&&l.length&&" "===l[l.length-1].text||(f={type:3,text:t}),f&&l.push(f))}},comment:function(t,e,n){if(r){var i={type:3,text:t,isComment:!0};r.children.push(i)}}}),n}(t.trim(),e);!1!==e.optimize&&function(t,e){t&&(va=ba(e.staticKeys||""),ma=e.isReservedTag||I,function t(e){if(e.static=function(t){return 2!==t.type&&(3===t.type||!(!t.pre&&(t.hasBindings||t.if||t.for||m(t.tag)||!ma(t.tag)||function(t){for(;t.parent;){if("template"!==(t=t.parent).tag)return!1;if(t.for)return!0}return!1}(t)||!Object.keys(t).every(va))))}(e),1===e.type){if(!ma(e.tag)&&"slot"!==e.tag&&null==e.attrsMap["inline-template"])return;for(var n=0,r=e.children.length;n<r;n++){var i=e.children[n];t(i),i.static||(e.static=!1)}if(e.ifConditions)for(var o=1,a=e.ifConditions.length;o<a;o++){var s=e.ifConditions[o].block;t(s),s.static||(e.static=!1)}}}(t),function t(e,n){if(1===e.type){if((e.static||e.once)&&(e.staticInFor=n),e.static&&e.children.length&&(1!==e.children.length||3!==e.children[0].type))return void(e.staticRoot=!0);if(e.staticRoot=!1,e.children)for(var r=0,i=e.children.length;r<i;r++)t(e.children[r],n||!!e.for);if(e.ifConditions)for(var o=1,a=e.ifConditions.length;o<a;o++)t(e.ifConditions[o].block,n)}}(t,!1))}(n,e);var r=Ia(n,e);return{ast:n,render:r.render,staticRenderFns:r.staticRenderFns}},function(t){function e(e,n){var r=Object.create(t),i=[],o=[];if(n)for(var a in n.modules&&(r.modules=(t.modules||[]).concat(n.modules)),n.directives&&(r.directives=E(Object.create(t.directives||null),n.directives)),n)"modules"!==a&&"directives"!==a&&(r[a]=n[a]);r.warn=function(t,e,n){(n?o:i).push(t)};var s=Ga(e.trim(),r);return s.errors=i,s.tips=o,s}return{compile:e,compileToFunctions:Wa(e)}})(ga),Xa=(Qa.compile,Qa.compileToFunctions);function Ya(t){return(Ja=Ja||document.createElement("div")).innerHTML=t?'<a href="\n"/>':'<div a="\n"/>',Ja.innerHTML.indexOf("&#10;")>0}var Za=!!W&&Ya(!1),ts=!!W&&Ya(!0),es=g((function(t){var e=Qn(t);return e&&e.innerHTML})),ns=On.prototype.$mount;On.prototype.$mount=function(t,e){if((t=t&&Qn(t))===document.body||t===document.documentElement)return this;var n=this.$options;if(!n.render){var r=n.template;if(r)if("string"==typeof r)"#"===r.charAt(0)&&(r=es(r));else{if(!r.nodeType)return this;r=r.innerHTML}else t&&(r=function(t){if(t.outerHTML)return t.outerHTML;var e=document.createElement("div");return e.appendChild(t.cloneNode(!0)),e.innerHTML}(t));if(r){var i=Xa(r,{outputSourceRange:!1,shouldDecodeNewlines:Za,shouldDecodeNewlinesForHref:ts,delimiters:n.delimiters,comments:n.comments},this),o=i.render,a=i.staticRenderFns;n.render=o,n.staticRenderFns=a}}return ns.call(this,t,e)},On.compile=Xa,t.exports=On}).call(this,n(44),n(172).setImmediate)},function(t,e,n){(function(t){var r=void 0!==t&&t||"undefined"!=typeof self&&self||window,o=Function.prototype.apply;function c(t,e){this._id=t,this._clearFn=e}e.setTimeout=function(){return new c(o.call(setTimeout,r,arguments),clearTimeout)},e.setInterval=function(){return new c(o.call(setInterval,r,arguments),clearInterval)},e.clearTimeout=e.clearInterval=function(t){t&&t.close()},c.prototype.unref=c.prototype.ref=function(){},c.prototype.close=function(){this._clearFn.call(r,this._id)},e.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},e.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},e._unrefActive=e.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;e>=0&&(t._idleTimeoutId=setTimeout((function(){t._onTimeout&&t._onTimeout()}),e))},n(173),e.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==t&&t.setImmediate||this&&this.setImmediate,e.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==t&&t.clearImmediate||this&&this.clearImmediate}).call(this,n(44))},function(t,e,n){(function(t,e){!function(t,n){"use strict";if(!t.setImmediate){var r,html,o,c,f,l=1,h={},d=!1,v=t.document,m=Object.getPrototypeOf&&Object.getPrototypeOf(t);m=m&&m.setTimeout?m:t,"[object process]"==={}.toString.call(t.process)?r=function(t){e.nextTick((function(){_(t)}))}:!function(){if(t.postMessage&&!t.importScripts){var e=!0,n=t.onmessage;return t.onmessage=function(){e=!1},t.postMessage("","*"),t.onmessage=n,e}}()?t.MessageChannel?((o=new MessageChannel).port1.onmessage=function(t){_(t.data)},r=function(t){o.port2.postMessage(t)}):v&&"onreadystatechange"in v.createElement("script")?(html=v.documentElement,r=function(t){var script=v.createElement("script");script.onreadystatechange=function(){_(t),script.onreadystatechange=null,html.removeChild(script),script=null},html.appendChild(script)}):r=function(t){setTimeout(_,0,t)}:(c="setImmediate$"+Math.random()+"$",f=function(e){e.source===t&&"string"==typeof e.data&&0===e.data.indexOf(c)&&_(+e.data.slice(c.length))},t.addEventListener?t.addEventListener("message",f,!1):t.attachEvent("onmessage",f),r=function(e){t.postMessage(c+e,"*")}),m.setImmediate=function(t){"function"!=typeof t&&(t=new Function(""+t));for(var e=new Array(arguments.length-1),i=0;i<e.length;i++)e[i]=arguments[i+1];var n={callback:t,args:e};return h[l]=n,r(l),l++},m.clearImmediate=y}function y(t){delete h[t]}function _(t){if(d)setTimeout(_,0,t);else{var e=h[t];if(e){d=!0;try{!function(t){var e=t.callback,n=t.args;switch(n.length){case 0:e();break;case 1:e(n[0]);break;case 2:e(n[0],n[1]);break;case 3:e(n[0],n[1],n[2]);break;default:e.apply(void 0,n)}}(e)}finally{y(t),d=!1}}}}}("undefined"==typeof self?void 0===t?this:t:self)}).call(this,n(44),n(174))},function(t,e){var n,r,o=t.exports={};function c(){throw new Error("setTimeout has not been defined")}function f(){throw new Error("clearTimeout has not been defined")}function l(t){if(n===setTimeout)return setTimeout(t,0);if((n===c||!n)&&setTimeout)return n=setTimeout,setTimeout(t,0);try{return n(t,0)}catch(e){try{return n.call(null,t,0)}catch(e){return n.call(this,t,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:c}catch(t){n=c}try{r="function"==typeof clearTimeout?clearTimeout:f}catch(t){r=f}}();var h,d=[],v=!1,m=-1;function y(){v&&h&&(v=!1,h.length?d=h.concat(d):m=-1,d.length&&_())}function _(){if(!v){var t=l(y);v=!0;for(var e=d.length;e;){for(h=d,d=[];++m<e;)h&&h[m].run();m=-1,e=d.length}h=null,v=!1,function(marker){if(r===clearTimeout)return clearTimeout(marker);if((r===f||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(marker);try{r(marker)}catch(t){try{return r.call(null,marker)}catch(t){return r.call(this,marker)}}}(t)}}function w(t,e){this.fun=t,this.array=e}function x(){}o.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var i=1;i<arguments.length;i++)e[i-1]=arguments[i];d.push(new w(t,e)),1!==d.length||v||l(_)},w.prototype.run=function(){this.fun.apply(null,this.array)},o.title="browser",o.browser=!0,o.env={},o.argv=[],o.version="",o.versions={},o.on=x,o.addListener=x,o.once=x,o.off=x,o.removeListener=x,o.removeAllListeners=x,o.emit=x,o.prependListener=x,o.prependOnceListener=x,o.listeners=function(t){return[]},o.binding=function(t){throw new Error("process.binding is not supported")},o.cwd=function(){return"/"},o.chdir=function(t){throw new Error("process.chdir is not supported")},o.umask=function(){return 0}},,,,function(t,e,n){var r=n(4),o=n(37),c=n(9),f=n(179),l="["+f+"]",h=RegExp("^"+l+l+"*"),d=RegExp(l+l+"*$"),v=function(t,e,n){var o={},l=c((function(){return!!f[t]()||"​…"!="​…"[t]()})),h=o[t]=l?e(m):f[t];n&&(o[n]=h),r(r.P+r.F*l,"String",o)},m=v.trim=function(t,e){return t=String(o(t)),1&e&&(t=t.replace(h,"")),2&e&&(t=t.replace(d,"")),t};t.exports=v},function(t,e){t.exports="\t\n\v\f\r   ᠎              \u2028\u2029\ufeff"},,,,,,function(t,e,n){"use strict";e.parse=function(t,e){if("string"!=typeof t)throw new TypeError("argument str must be a string");for(var n={},o=e||{},f=t.split(c),h=o.decode||r,i=0;i<f.length;i++){var d=f[i],v=d.indexOf("=");if(!(v<0)){var m=d.substr(0,v).trim(),y=d.substr(++v,d.length).trim();'"'==y[0]&&(y=y.slice(1,-1)),null==n[m]&&(n[m]=l(y,h))}}return n},e.serialize=function(t,e,n){var r=n||{},c=r.encode||o;if("function"!=typeof c)throw new TypeError("option encode is invalid");if(!f.test(t))throw new TypeError("argument name is invalid");var l=c(e);if(l&&!f.test(l))throw new TypeError("argument val is invalid");var h=t+"="+l;if(null!=r.maxAge){var d=r.maxAge-0;if(isNaN(d))throw new Error("maxAge should be a Number");h+="; Max-Age="+Math.floor(d)}if(r.domain){if(!f.test(r.domain))throw new TypeError("option domain is invalid");h+="; Domain="+r.domain}if(r.path){if(!f.test(r.path))throw new TypeError("option path is invalid");h+="; Path="+r.path}if(r.expires){if("function"!=typeof r.expires.toUTCString)throw new TypeError("option expires is invalid");h+="; Expires="+r.expires.toUTCString()}r.httpOnly&&(h+="; HttpOnly");r.secure&&(h+="; Secure");if(r.sameSite){switch("string"==typeof r.sameSite?r.sameSite.toLowerCase():r.sameSite){case!0:h+="; SameSite=Strict";break;case"lax":h+="; SameSite=Lax";break;case"strict":h+="; SameSite=Strict";break;default:throw new TypeError("option sameSite is invalid")}}return h};var r=decodeURIComponent,o=encodeURIComponent,c=/; */,f=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/;function l(t,e){try{return e(t)}catch(e){return t}}},function(t,e,n){"use strict";var strong=n(187),r=n(134),o="Map";t.exports=n(188)(o,(function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}}),{get:function(t){var e=strong.getEntry(r(this,o),t);return e&&e.v},set:function(t,e){return strong.def(r(this,o),0===t?0:t,e)}},strong,!0)},function(t,e,n){"use strict";var r=n(12).f,o=n(68),c=n(90),f=n(33),l=n(87),h=n(88),d=n(86),v=n(120),m=n(91),y=n(10),_=n(80).fastKey,w=n(134),x=y?"_s":"size",O=function(t,e){var n,r=_(e);if("F"!==r)return t._i[r];for(n=t._f;n;n=n.n)if(n.k==e)return n};t.exports={getConstructor:function(t,e,n,d){var v=t((function(t,r){l(t,v,e,"_i"),t._t=e,t._i=o(null),t._f=void 0,t._l=void 0,t[x]=0,null!=r&&h(r,n,t[d],t)}));return c(v.prototype,{clear:function(){for(var t=w(this,e),data=t._i,n=t._f;n;n=n.n)n.r=!0,n.p&&(n.p=n.p.n=void 0),delete data[n.i];t._f=t._l=void 0,t[x]=0},delete:function(t){var n=w(this,e),r=O(n,t);if(r){var o=r.n,c=r.p;delete n._i[r.i],r.r=!0,c&&(c.n=o),o&&(o.p=c),n._f==r&&(n._f=o),n._l==r&&(n._l=c),n[x]--}return!!r},forEach:function(t){w(this,e);for(var n,r=f(t,arguments.length>1?arguments[1]:void 0,3);n=n?n.n:this._f;)for(r(n.v,n.k,this);n&&n.r;)n=n.p},has:function(t){return!!O(w(this,e),t)}}),y&&r(v.prototype,"size",{get:function(){return w(this,e)[x]}}),v},def:function(t,e,n){var r,o,c=O(t,e);return c?c.v=n:(t._l=c={i:o=_(e,!0),k:e,v:n,p:r=t._l,n:void 0,r:!1},t._f||(t._f=c),r&&(r.n=c),t[x]++,"F"!==o&&(t._i[o]=c)),t},getEntry:O,setStrong:function(t,e,n){d(t,e,(function(t,n){this._t=w(t,e),this._k=n,this._l=void 0}),(function(){for(var t=this,e=t._k,n=t._l;n&&n.r;)n=n.p;return t._t&&(t._l=n=n?n.n:t._t._f)?v(0,"keys"==e?n.k:"values"==e?n.v:[n.k,n.v]):(t._t=void 0,v(1))}),n?"entries":"values",!n,!0),m(e)}}},function(t,e,n){"use strict";var r=n(6),o=n(4),c=n(14),f=n(90),meta=n(80),l=n(88),h=n(87),d=n(13),v=n(9),m=n(84),y=n(54),_=n(99);t.exports=function(t,e,n,w,x,O){var S=r[t],$=S,A=x?"set":"add",k=$&&$.prototype,C={},E=function(t){var e=k[t];c(k,t,"delete"==t||"has"==t?function(a){return!(O&&!d(a))&&e.call(this,0===a?0:a)}:"get"==t?function(a){return O&&!d(a)?void 0:e.call(this,0===a?0:a)}:"add"==t?function(a){return e.call(this,0===a?0:a),this}:function(a,b){return e.call(this,0===a?0:a,b),this})};if("function"==typeof $&&(O||k.forEach&&!v((function(){(new $).entries().next()})))){var T=new $,j=T[A](O?{}:-0,1)!=T,I=v((function(){T.has(1)})),M=m((function(t){new $(t)})),P=!O&&v((function(){for(var t=new $,e=5;e--;)t[A](e,e);return!t.has(-0)}));M||(($=e((function(e,n){h(e,$,t);var r=_(new S,e,$);return null!=n&&l(n,x,r[A],r),r}))).prototype=k,k.constructor=$),(I||P)&&(E("delete"),E("has"),x&&E("get")),(P||j)&&E(A),O&&k.clear&&delete k.clear}else $=w.getConstructor(e,t,x,A),f($.prototype,n),meta.NEED=!0;return y($,t),C[t]=$,o(o.G+o.W+o.F*($!=S),C),O||w.setStrong($,t,x),$}}]]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/fb630ce1f2b24400e084.js b/docs/_nuxt/js/fb630ce1f2b24400e084.js
new file mode 100644
index 0000000..cea24dc
--- /dev/null
+++ b/docs/_nuxt/js/fb630ce1f2b24400e084.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[75],{376:function(n,t,e){"use strict";e.r(t),t.default="# 获取 Apache ECharts\n\nApache ECharts 提供了多种安装方式,你可以根据项目的实际情况选择以下任意一种方式安装。\n\n- 从 GitHub 获取\n- 从 npm 获取\n- 从 CDN 获取\n- 在线定制\n\n接下来我们将分别介绍这些安装方式,以及下载后的目录结构。\n\n## 安装方式\n\n### 从 npm 获取\n\n```sh\nnpm install echarts\n```\n\n详见[在项目中引入 Apache ECharts](${lang}/basics/import)。\n\n### 从 CDN 获取\n\n可以从以下免费 CDN 中获取和引用 ECharts。\n\n- [jsDelivr](https://www.jsdelivr.com/package/npm/echarts)\n- [unpkg](https://unpkg.com/browse/echarts/)\n- [cdnjs](https://cdnjs.com/libraries/echarts)\n\n### 从 GitHub 获取\n\n[apache/echarts](https://github.com/apache/echarts) 项目的 [release](https://github.com/apache/echarts/releases) 页面可以找到各个版本的链接。点击下载页面下方 Assets 中的 Source code,解压后 `dist` 目录下的 `echarts.js` 即为包含完整 ECharts 功能的文件。\n\n### 在线定制\n\n如果只想引入部分模块以减少包体积,可以使用 [ECharts 在线定制](${mainSitePath}builder.html)功能。\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/fb6fb8b7114f86159115.js b/docs/_nuxt/js/fb6fb8b7114f86159115.js
new file mode 100644
index 0000000..d507e4b
--- /dev/null
+++ b/docs/_nuxt/js/fb6fb8b7114f86159115.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[62],{363:function(e,n,t){"use strict";t.r(n),n.default="# Step Line Chart\n\nThe normal line chart connects two points by straight line directly, while the step line chart, also known as square wave chart, uses only horizontal and vertical lines to connect the nearby items together. Compared with the normal line chart, the step line chart significantly shows the sudden changes of analyzed data.\n\nIn ECharts, `step` is used to characterize the connection type of the step line chart. It has three available values: `'start'`, `'end'`, and `'middle'`. For item A and B, these values corresponded that the corner occurred at A, B, and mid-point between A and B.\n\n```js live\noption = {\n  legend: {},\n  xAxis: {\n    type: 'category',\n    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']\n  },\n  yAxis: {\n    type: 'value'\n  },\n  series: [\n    {\n      name: 'Step Start',\n      type: 'line',\n      step: 'start',\n      data: [120, 132, 101, 134, 90, 230, 210]\n    },\n    {\n      name: 'Step Middle',\n      type: 'line',\n      step: 'middle',\n      data: [220, 282, 201, 234, 290, 430, 410]\n    },\n    {\n      name: 'Step End',\n      type: 'line',\n      step: 'end',\n      data: [450, 432, 401, 454, 590, 530, 510]\n    }\n  ]\n};\n```\n\n> Please focus on the difference of line between three separate types.\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/fbfa475a066b1f7640ce.js b/docs/_nuxt/js/fbfa475a066b1f7640ce.js
new file mode 100644
index 0000000..bd25b70
--- /dev/null
+++ b/docs/_nuxt/js/fbfa475a066b1f7640ce.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[111],{412:function(n,e,t){"use strict";t.r(e),e.default="# 数据集\n\n`数据集(dataset)`是专门用来管理数据的组件。虽然每个系列都可以在 `series.data` 中设置数据,但是从 ECharts4 支持数据集开始,更推荐使用数据集来管理数据。因为这样,数据可以被多个组件复用,也方便进行 “数据和其他配置” 分离的配置风格。毕竟,在运行时,数据是最常改变的,而其他配置大多并不会改变。\n\n## 在系列中设置数据\n\n如果数据设置在 `系列(series)` 中,例如:\n\n```js live\noption = {\n  xAxis: {\n    type: 'category',\n    data: ['Matcha Latte', 'Milk Tea', 'Cheese Cocoa', 'Walnut Brownie']\n  },\n  yAxis: {},\n  series: [\n    {\n      type: 'bar',\n      name: '2015',\n      data: [89.3, 92.1, 94.4, 85.4]\n    },\n    {\n      type: 'bar',\n      name: '2016',\n      data: [95.8, 89.4, 91.2, 76.9]\n    },\n    {\n      type: 'bar',\n      name: '2017',\n      data: [97.7, 83.1, 92.5, 78.1]\n    }\n  ]\n};\n```\n\n这种方式的优点是,适于对一些特殊的数据结构(如“树”、“图”、超大数据)进行一定的数据类型定制。\n但是缺点是,常需要用户先处理数据,把数据分割设置到各个系列(和类目轴)中。此外,不利于多个系列共享一份数据,也不利于基于原始数据进行图表类型、系列的映射安排。\n\n## 在数据集中设置数据\n\n而数据设置在 `数据集(dataset)` 中,会有这些好处:\n\n- 能够贴近数据可视化常见思维方式:(I)提供数据,(II)指定数据到视觉的映射,从而形成图表。\n- 数据和其他配置可以被分离开来。数据常变,其他配置常不变。分开易于分别管理。\n- 数据可以被多个系列或者组件复用,对于大数据量的场景,不必为每个系列创建一份数据。\n- 支持更多的数据的常用格式,例如二维数组、对象数组等,一定程度上避免使用者为了数据格式而进行转换。\n\n下面是一个最简单的 `dataset` 的例子:\n\n```js live\noption = {\n  legend: {},\n  tooltip: {},\n  dataset: {\n    // 提供一份数据。\n    source: [\n      ['product', '2015', '2016', '2017'],\n      ['Matcha Latte', 43.3, 85.8, 93.7],\n      ['Milk Tea', 83.1, 73.4, 55.1],\n      ['Cheese Cocoa', 86.4, 65.2, 82.5],\n      ['Walnut Brownie', 72.4, 53.9, 39.1]\n    ]\n  },\n  // 声明一个 X 轴,类目轴(category)。默认情况下,类目轴对应到 dataset 第一列。\n  xAxis: { type: 'category' },\n  // 声明一个 Y 轴,数值轴。\n  yAxis: {},\n  // 声明多个 bar 系列,默认情况下,每个系列会自动对应到 dataset 的每一列。\n  series: [{ type: 'bar' }, { type: 'bar' }, { type: 'bar' }]\n};\n```\n\n或者也可以使用常见的“对象数组”的格式:\n\n```js live\noption = {\n  legend: {},\n  tooltip: {},\n  dataset: {\n    // 用 dimensions 指定了维度的顺序。直角坐标系中,如果 X 轴 type 为 category,\n    // 默认把第一个维度映射到 X 轴上,后面维度映射到 Y 轴上。\n    // 如果不指定 dimensions,也可以通过指定 series.encode\n    // 完成映射,参见后文。\n    dimensions: ['product', '2015', '2016', '2017'],\n    source: [\n      { product: 'Matcha Latte', '2015': 43.3, '2016': 85.8, '2017': 93.7 },\n      { product: 'Milk Tea', '2015': 83.1, '2016': 73.4, '2017': 55.1 },\n      { product: 'Cheese Cocoa', '2015': 86.4, '2016': 65.2, '2017': 82.5 },\n      { product: 'Walnut Brownie', '2015': 72.4, '2016': 53.9, '2017': 39.1 }\n    ]\n  },\n  xAxis: { type: 'category' },\n  yAxis: {},\n  series: [{ type: 'bar' }, { type: 'bar' }, { type: 'bar' }]\n};\n```\n\n## 数据到图形的映射\n\n如上所述,数据可视化的一个常见思路是:(I)提供数据,(II)指定数据到视觉的映射。\n\n简而言之,可以进行这些映射的设定:\n\n- 指定 `数据集` 的列(column)还是行(row)映射为 `系列(series)`。这件事可以使用 [series.seriesLayoutBy](${optionPath}series.seriesLayoutBy) 属性来配置。默认是按照列(column)来映射。\n- 指定维度映射的规则:如何从 dataset 的维度(一个“维度”的意思是一行/列)映射到坐标轴(如 X、Y 轴)、提示框(tooltip)、标签(label)、图形元素大小颜色等(visualMap)。这件事可以使用 [series.encode](${optionPath}series.encode) 属性,以及 [visualMap](${optionPath}visualMap) 组件来配置(如果有需要映射颜色大小等视觉维度的话)。上面的例子中,没有给出这种映射配置,那么 ECharts 就按最常见的理解进行默认映射:X 坐标轴声明为类目轴,默认情况下会自动对应到 `dataset.source` 中的第一列;三个柱图系列,一一对应到 `dataset.source` 中后面每一列。\n\n下面详细解释这些映射的设定。\n\n## 把数据集(dataset)的行或列映射为系列(series)\n\n有了数据表之后,使用者可以灵活地配置:数据如何对应到轴和图形系列。\n\n用户可以使用 `seriesLayoutBy` 配置项,改变图表对于行列的理解。`seriesLayoutBy` 可取值:\n\n- `'column'`: 默认值。系列被安放到 `dataset` 的列上面。\n- `'row'`: 系列被安放到 `dataset` 的行上面。\n\n看这个例子:\n\n```js live\noption = {\n  legend: {},\n  tooltip: {},\n  dataset: {\n    source: [\n      ['product', '2012', '2013', '2014', '2015'],\n      ['Matcha Latte', 41.1, 30.4, 65.1, 53.3],\n      ['Milk Tea', 86.5, 92.1, 85.7, 83.1],\n      ['Cheese Cocoa', 24.1, 67.2, 79.5, 86.4]\n    ]\n  },\n  xAxis: [\n    { type: 'category', gridIndex: 0 },\n    { type: 'category', gridIndex: 1 }\n  ],\n  yAxis: [{ gridIndex: 0 }, { gridIndex: 1 }],\n  grid: [{ bottom: '55%' }, { top: '55%' }],\n  series: [\n    // 这几个系列会出现在第一个直角坐标系中,每个系列对应到 dataset 的每一行。\n    { type: 'bar', seriesLayoutBy: 'row', xAxisIndex: 0, yAxisIndex: 0 },\n    { type: 'bar', seriesLayoutBy: 'row', xAxisIndex: 0, yAxisIndex: 0 },\n    { type: 'bar', seriesLayoutBy: 'row', xAxisIndex: 0, yAxisIndex: 0 },\n    // 这几个系列会出现在第二个直角坐标系中,每个系列对应到 dataset 的每一列。\n    { type: 'bar', seriesLayoutBy: 'column', xAxisIndex: 1, yAxisIndex: 1 },\n    { type: 'bar', seriesLayoutBy: 'column', xAxisIndex: 1, yAxisIndex: 1 },\n    { type: 'bar', seriesLayoutBy: 'column', xAxisIndex: 1, yAxisIndex: 1 },\n    { type: 'bar', seriesLayoutBy: 'column', xAxisIndex: 1, yAxisIndex: 1 }\n  ]\n};\n```\n\n## 维度(dimension)\n\n常用图表所描述的数据大部分是“二维表”结构,上述的例子中,我们都使用二维数组来容纳二维表。现在,当我们把系列(series)对应到“列”的时候,那么每一列就称为一个“维度(dimension)”,而每一行称为数据项(item)。反之,如果我们把系列(series)对应到表行,那么每一行就是“维度(dimension)”,每一列就是数据项(item)。\n\n维度可以有单独的名字,便于在图表中显示。维度名(dimension name)可以在定义在 dataset 的第一行(或者第一列)。例如下面的[例子](${lang}/concepts/dataset/#数据到图形的映射(series.encode))中,`'score'`、`'amount'`、`'product'` 就是维度名。从第二行开始,才是正式的数据。`dataset.source` 中第一行(列)到底包含不包含维度名,ECharts 默认会自动探测。当然也可以设置 `dataset.sourceHeader: true` 显示声明第一行(列)就是维度,或者 `dataset.sourceHeader: false` 表明第一行(列)开始就直接是数据。\n\n维度的定义,也可以使用单独的 `dataset.dimensions` 或者 `series.dimensions` 来定义,这样可以同时指定维度名,和维度的类型(dimension type):\n\n```js\nvar option1 = {\n  dataset: {\n    dimensions: [\n      { name: 'score' },\n      // 可以简写为 string ,表示 dimension name 。\n      'amount',\n      // 可以在 type 中指定维度类型。\n      { name: 'product', type: 'ordinal' }\n    ],\n    source: [\n      //...\n    ]\n  }\n  // ...\n};\n\nvar option2 = {\n  dataset: {\n    source: [\n      // ...\n    ]\n  },\n  series: {\n    type: 'line',\n    // series.dimensions 会更优先于 dataset.dimension 采纳。\n    dimensions: [\n      null, // 可以设置为 null 表示不想设置维度名\n      'amount',\n      { name: 'product', type: 'ordinal' }\n    ]\n  }\n  // ...\n};\n```\n\n大多数情况下,我们并不需要去设置维度类型,因为 ECharts 会自动尝试判断。但是如果不足够准确时,可以手动设置维度类型。\n\n维度类型(dimension type)可以取这些值:\n\n- `'number'`: 默认,表示普通数据。\n- `'ordinal'`: 对于类目、文本这些 string 类型的数据,如果需要能在数轴上使用,须是 'ordinal' 类型。ECharts 默认会试图自动判断这个类型。但是自动判断也可能不准确,所以使用者也可以手动强制指定。\n- `'time'`: 表示时间数据。设置成 `'time'` 则能支持自动解析数据成时间戳(timestamp),比如该维度的数据是 '2017-05-10',会自动被解析。如果这个维度被用在时间数轴([axis.type](${optionPath}xAxis.type) 为 `'time'`)上,那么会被自动设置为 `'time'` 类型。时间类型的支持参见 [data](${optionPath}series.data)。\n- `'float'`: 如果设置成 `'float'`,在存储时候会使用 `TypedArray`,对性能优化有好处。\n- `'int'`: 如果设置成 `'int'`,在存储时候会使用 `TypedArray`,对性能优化有好处。\n\n## 数据到图形的映射(series.encode)\n\n了解了维度的概念后,我们就可以使用 [series.encode](${optionPath}series.encode) 来做映射。总体是这样的感觉:\n\n```js live\nvar option = {\n  dataset: {\n    source: [\n      ['score', 'amount', 'product'],\n      [89.3, 58212, 'Matcha Latte'],\n      [57.1, 78254, 'Milk Tea'],\n      [74.4, 41032, 'Cheese Cocoa'],\n      [50.1, 12755, 'Cheese Brownie'],\n      [89.7, 20145, 'Matcha Cocoa'],\n      [68.1, 79146, 'Tea'],\n      [19.6, 91852, 'Orange Juice'],\n      [10.6, 101852, 'Lemon Juice'],\n      [32.7, 20112, 'Walnut Brownie']\n    ]\n  },\n  xAxis: {},\n  yAxis: { type: 'category' },\n  series: [\n    {\n      type: 'bar',\n      encode: {\n        // 将 \"amount\" 列映射到 X 轴。\n        x: 'amount',\n        // 将 \"product\" 列映射到 Y 轴。\n        y: 'product'\n      }\n    }\n  ]\n};\n```\n\n`series.encode` 声明的基本结构如下。其中冒号左边是坐标系、标签等特定名称,如 `'x'`, `'y'`, `'tooltip'` 等,冒号右边是数据中的维度名(string 格式)或者维度的序号(number 格式,从 0 开始计数),可以指定一个或多个维度(使用数组)。通常情况下,下面各种信息不需要所有的都写,按需写即可。\n\n下面是 `series.encode` 支持的属性:\n\n```js\n// 在任何坐标系和系列中,都支持:\nencode: {\n  // 使用 “名为 product 的维度” 和 “名为 score 的维度” 的值在 tooltip 中显示\n  tooltip: ['product', 'score']\n  // 使用 “维度 1” 和 “维度 3” 的维度名连起来作为系列名。(有时候名字比较长,这可以避免在 series.name 重复输入这些名字)\n  seriesName: [1, 3],\n  // 表示使用 “维度2” 中的值作为 id。这在使用 setOption 动态更新数据时有用处,可以使新老数据用 id 对应起来,从而能够产生合适的数据更新动画。\n  itemId: 2,\n  // 指定数据项的名称使用 “维度3” 在饼图等图表中有用,可以使这个名字显示在图例(legend)中。\n  itemName: 3\n}\n\n// 直角坐标系(grid/cartesian)特有的属性:\nencode: {\n  // 把 “维度1”、“维度5”、“名为 score 的维度” 映射到 X 轴:\n  x: [1, 5, 'score'],\n  // 把“维度0”映射到 Y 轴。\n  y: 0\n}\n\n// 单轴(singleAxis)特有的属性:\nencode: {\n  single: 3\n}\n\n// 极坐标系(polar)特有的属性:\nencode: {\n  radius: 3,\n  angle: 2\n}\n\n// 地理坐标系(geo)特有的属性:\nencode: {\n  lng: 3,\n  lat: 2\n}\n\n// 对于一些没有坐标系的图表,例如饼图、漏斗图等,可以是:\nencode: {\n  value: 3\n}\n```\n\n这是个更丰富的 `series.encode` 的 [示例](${exampleEditorPath}dataset-encode1&edit=1&reset=1) 。\n\n## 默认的 series.encode\n\n值得一提的是,当 `series.encode` 并没有指定时,ECharts 针对最常见直角坐标系中的图表(折线图、柱状图、散点图、K 线图等)、饼图、漏斗图,会采用一些默认的映射规则。默认的映射规则比较简单,大体是:\n\n- 在坐标系中(如直角坐标系、极坐标系等)\n  - 如果有类目轴([axis.type](${optionPath}xAxis.type) 为 `'category'`),则将第一列(行)映射到这个轴上,后续每一列(行)对应一个系列。\n  - 如果没有类目轴,假如坐标系有两个轴(例如直角坐标系的 X Y 轴),则每两列对应一个系列,这两列分别映射到这两个轴上。\n- 如果没有坐标系(如饼图)\n  - 取第一列(行)为名字,第二列(行)为数值(如果只有一列,则取第一列为数值)。\n\n默认的规则不能满足要求时,就可以自己来配置 `encode`,也并不复杂。这是一个 [例子](${exampleEditorPath}dataset-default&edit=1&reset=1)。\n\n## 几个常见的 series.encode 设置方式举例\n\n问:如何把第三列设置为 X 轴,第五列设置为 Y 轴?\n\n答:\n\n```js\noption = {\n  series: {\n    // 注意维度序号(dimensionIndex)从 0 开始计数,第三列是 dimensions[2]。\n    encode: { x: 2, y: 4 }\n    // ...\n  }\n};\n```\n\n问:如何把第三行设置为 X 轴,第五行设置为 Y 轴?\n\n答:\n\n```js\noption = {\n  series: {\n    encode: { x: 2, y: 4 },\n    seriesLayoutBy: 'row'\n    // ...\n  }\n};\n```\n\n问:如何把第二列设置为标签?\n\n答:\n关于标签的显示 [label.formatter](${optionPath}series.label.formatter),现在支持引用特定维度的值,例如:\n\n```js\nseries: {\n  label: {\n    // `'{@score}'` 表示 “名为 score” 的维度里的值。\n    // `'{@[4]}'` 表示引用序号为 4 的维度里的值。\n    formatter: 'aaa{@product}bbb{@score}ccc{@[4]}ddd';\n  }\n}\n```\n\n问:如何让第 2 列和第 3 列显示在提示框(tooltip)中?\n\n答:\n\n```js\noption = {\n  series: {\n    encode: {\n      tooltip: [1, 2]\n      // ...\n    }\n    // ...\n  }\n};\n```\n\n问:数据里没有维度名,那么怎么给出维度名?\n\n答:\n\n```js\nvar option = {\n  dataset: {\n    dimensions: ['score', 'amount'],\n    source: [\n      [89.3, 3371],\n      [92.1, 8123],\n      [94.4, 1954],\n      [85.4, 829]\n    ]\n  }\n};\n```\n\n问:如何把第三列映射为气泡图的点的大小?\n\n答:\n\n```js live\nvar option = {\n  dataset: {\n    source: [\n      [12, 323, 11.2],\n      [23, 167, 8.3],\n      [81, 284, 12],\n      [91, 413, 4.1],\n      [13, 287, 13.5]\n    ]\n  },\n  visualMap: {\n    show: false,\n    dimension: 2, // 指向第三列(列序号从 0 开始记,所以设置为 2)。\n    min: 2, // 需要给出数值范围,最小数值。\n    max: 15, // 需要给出数值范围,最大数值。\n    inRange: {\n      // 气泡尺寸:5 像素到 60 像素。\n      symbolSize: [5, 60]\n    }\n  },\n  xAxis: {},\n  yAxis: {},\n  series: {\n    type: 'scatter'\n  }\n};\n```\n\n问:encode 里指定了映射,但是不管用?\n\n答:可以查查有没有拼错,比如,维度名是:`'Life Expectancy'`,encode 中拼成了 `'Life Expectency'`。\n\n## 视觉通道(颜色、尺寸等)的映射\n\n我们可以使用 [visualMap](${optionPath}visualMap) 组件进行视觉通道的映射。详见 [visualMap](${optionPath}visualMap) 文档的介绍。这是一个 [示例](${exampleEditorPath}dataset-encode0&edit=1&reset=1)。\n\n## 数据的各种格式\n\n多数常见图表中,数据适于用二维表的形式描述。广为使用的数据表格软件(如 MS Excel、Numbers)或者关系数据数据库都是二维表。他们的数据可以导出成 JSON 格式,输入到 `dataset.source` 中,在不少情况下可以免去一些数据处理的步骤。\n\n> 假如数据导出成 csv 文件,那么可以使用一些 csv 工具如 [dsv](https://github.com/d3/d3-dsv) 或者 [PapaParse](https://github.com/mholt/PapaParse) 将 csv 转成 JSON。\n\n在 JavaScript 常用的数据传输格式中,二维数组可以比较直观的存储二维表。前面的示例都是使用二维数组表示。\n\n除了二维数组以外,dataset 也支持例如下面 key-value 方式的数据格式,这类格式也非常常见。但是这类格式中,目前并不支持 [seriesLayoutBy](${optionPath}series.seriesLayoutBy) 参数。\n\n```js\ndataset: [\n  {\n    // 按行的 key-value 形式(对象数组),这是个比较常见的格式。\n    source: [\n      { product: 'Matcha Latte', count: 823, score: 95.8 },\n      { product: 'Milk Tea', count: 235, score: 81.4 },\n      { product: 'Cheese Cocoa', count: 1042, score: 91.2 },\n      { product: 'Walnut Brownie', count: 988, score: 76.9 }\n    ]\n  },\n  {\n    // 按列的 key-value 形式。\n    source: {\n      product: ['Matcha Latte', 'Milk Tea', 'Cheese Cocoa', 'Walnut Brownie'],\n      count: [823, 235, 1042, 988],\n      score: [95.8, 81.4, 91.2, 76.9]\n    }\n  }\n];\n```\n\n## 多个 dataset 以及如何引用他们\n\n可以同时定义多个 dataset。系列可以通过 [series.datasetIndex](${optionPath}series.datasetIndex) 来指定引用哪个 dataset。例如:\n\n```js\nvar option = {\n  dataset: [\n    {\n      // 序号为 0 的 dataset。\n      source: []\n    },\n    {\n      // 序号为 1 的 dataset。\n      source: []\n    },\n    {\n      // 序号为 2 的 dataset。\n      source: []\n    }\n  ],\n  series: [\n    {\n      // 使用序号为 2 的 dataset。\n      datasetIndex: 2\n    },\n    {\n      // 使用序号为 1 的 dataset。\n      datasetIndex: 1\n    }\n  ]\n};\n```\n\n## ECharts 3 的数据设置方式(series.data)仍正常使用\n\nECharts 4 之前一直以来的数据声明方式仍然被正常支持,如果系列已经声明了 [series.data](${optionPath}series.data), 那么就会使用 [series.data](${optionPath}series.data) 而非 `dataset`。\n\n```js live\noption = {\n  xAxis: {\n    type: 'category',\n    data: ['Matcha Latte', 'Milk Tea', 'Cheese Cocoa', 'Walnut Brownie']\n  },\n  yAxis: {},\n  series: [\n    {\n      type: 'bar',\n      name: '2015',\n      data: [89.3, 92.1, 94.4, 85.4]\n    },\n    {\n      type: 'bar',\n      name: '2016',\n      data: [95.8, 89.4, 91.2, 76.9]\n    },\n    {\n      type: 'bar',\n      name: '2017',\n      data: [97.7, 83.1, 92.5, 78.1]\n    }\n  ]\n};\n```\n\n其实,[series.data](${optionPath}series.data) 也是种会一直存在的重要设置方式。一些特殊的非 table 格式的图表,如 [treemap](${optionPath}series-treemap)、[graph](${optionPath}series-graph)、[lines](${optionPath}series-lines) 等,现在仍不支持在 dataset 中设置,仍然需要使用 [series.data](${optionPath}series.data)。另外,对于巨大数据量的渲染(如百万以上的数据量),需要使用 [appendData](api.html#echartsInstance.appendData) 进行增量加载,这种情况不支持使用 `dataset`。\n\n## 其他\n\n目前并非所有图表都支持 dataset。支持 dataset 的图表有:\n`line`、`bar`、`pie`、`scatter`、`effectScatter`、`parallel`、`candlestick`、`map`、`funnel`、`custom`。\n后续会有更多的图表进行支持。\n\n最后,给出这个 [示例](${exampleEditorPath}dataset-link&edit=1&reset=1),多个图表共享一个 `dataset`,并带有联动交互。\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/fccb0455c3771b415728.js b/docs/_nuxt/js/fccb0455c3771b415728.js
new file mode 100644
index 0000000..8cfc9c7
--- /dev/null
+++ b/docs/_nuxt/js/fccb0455c3771b415728.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[55],{356:function(n,o,t){"use strict";t.r(o),o.default="# Bar Chart in Polar Coordinate System\n\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/fce33b4736fd8789804c.js b/docs/_nuxt/js/fce33b4736fd8789804c.js
new file mode 100644
index 0000000..2426d66
--- /dev/null
+++ b/docs/_nuxt/js/fce33b4736fd8789804c.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[58],{359:function(e,t,n){"use strict";n.r(t),t.default="# Area Chart\n\nThe area chart fills the space between the line and axis with the background color, to express the data by the size of the area. Compared with the normal line chart, the area chart has more intuitive visual effects. It is especially suitable for the scenario with a few series.\n\n```js live\noption = {\n  xAxis: {\n    data: ['A', 'B', 'C', 'D', 'E']\n  },\n  yAxis: {},\n  series: [\n    {\n      data: [10, 22, 28, 23, 19],\n      type: 'line',\n      areaStyle: {}\n    },\n    {\n      data: [25, 14, 23, 35, 10],\n      type: 'line',\n      areaStyle: {\n        color: '#ff0',\n        opacity: 0.5\n      }\n    }\n  ]\n};\n```\n\nIf you want to change the area style of the line chart, try to use [`areaStyle`](${optionPath}series-line.areaStyle). Set `'areaStyle'` to `{}` to use the default type: use the color of series to fill the area in translucent. If you want to change the style, try to override the configuration items in `'areaStyle'`. For example, the color of the second series was changed to yellow with 50% opacity.\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/fdaa5a3fbcf33611da58.js b/docs/_nuxt/js/fdaa5a3fbcf33611da58.js
new file mode 100644
index 0000000..a7d3c7d
--- /dev/null
+++ b/docs/_nuxt/js/fdaa5a3fbcf33611da58.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[128],{429:function(n,e,t){"use strict";t.r(e),e.default="# 基础折线图\n\n折线图主要用来展示数据项随着时间推移的趋势或变化。\n\n## 最简单的折线图\n\n如果我们想建立一个横坐标是类目型(category)、纵坐标是数值型(value)的折线图,我们可以使用这样的方式:\n\n```js live\noption = {\n  xAxis: {\n    type: 'category',\n    data: ['A', 'B', 'C']\n  },\n  yAxis: {\n    type: 'value'\n  },\n  series: [\n    {\n      data: [120, 200, 150],\n      type: 'line'\n    }\n  ]\n};\n```\n\n在这个例子中,我们通过 `xAxis` 将横坐标设为类目型,并指定了对应的值;通过 `type` 将 `yAxis` 的类型设定为数值型。在 `series` 中,我们将系列类型设为 `line`,并且通过 `data` 指定了折线图三个点的取值。这样,就能得到一个最简单的折线图了。\n\n> 这里 `xAxis` 和 `yAxis` 的 `type` 属性都可以隐去不写。因为坐标轴的默认类型是数值型,而 `xAxis` 指定了类目型的 `data`,所以 `ECharts` 也能识别出这是类目型的坐标轴。为了让大家更容易理解,我们特意写了 `type`。在实际的应用中,如果是 `'value'` 类型,也可以省略不写。\n\n## 笛卡尔坐标系中的折线图\n\n如果我们希望折线图在横坐标和纵坐标上都是连续的,即在笛卡尔坐标系中,应该如何实现呢?答案也很简单,只要把 `series` 的 `data` 每个数据用一个包含两个元素的数组表示就行了。\n\n```js live\noption = {\n  xAxis: {},\n  yAxis: {},\n  series: [\n    {\n      data: [\n        [20, 120],\n        [50, 200],\n        [40, 50]\n      ],\n      type: 'line'\n    }\n  ]\n};\n```\n\n## 折线图样式设置\n\n### 折线的样式\n\n折线图中折线的样式可以通过 `lineStyle` 设置。可以为其指定颜色、线宽、折线类型、阴影、不透明度等等,具体的可以参考配置项手册 [`series.lineStyle`](${optionPath}series-line.lineStyle) 了解。这里,我们以设置颜色(color)、线宽(width)和折线类型(type)为例说明。\n\n```js live\noption = {\n  xAxis: {\n    data: ['A', 'B', 'C', 'D', 'E']\n  },\n  yAxis: {},\n  series: [\n    {\n      data: [10, 22, 28, 23, 19],\n      type: 'line',\n      lineStyle: {\n        normal: {\n          color: 'green',\n          width: 4,\n          type: 'dashed'\n        }\n      }\n    }\n  ]\n};\n```\n\n这里设置折线宽度时,数据点描边的宽度是不会跟着改变的,而应该在数据点的配置项中另外设置。\n\n### 数据点的样式\n\n数据点的样式可以通过 [`series.itemStyle`](${optionPath}series-line.itemStyle) 指定填充颜色(color)、描边颜色(borderColor)、描边宽度(borderWidth)、描边类型(borderType)、阴影(shadowColor)、不透明度(opacity)等。与折线样式的设置十分相似,这里不再展开说明。\n\n## 在数据点处显示数值\n\n在系列中,这数据点的标签通过 [`series.label`](${optionPath}series-line.label) 属性指定。如果将 `label` 下的 `show` 指定为`true`,则表示该数值默认时就显示;如果为 `false`,而 [`series.emphasis.label.show`](${optionPath}series-line.emphasis.label.show) 为 `true`,则表示只有在鼠标移动到该数据时,才显示数值。\n\n```js live\noption = {\n  xAxis: {\n    data: ['A', 'B', 'C', 'D', 'E']\n  },\n  yAxis: {},\n  series: [\n    {\n      data: [10, 22, 28, 23, 19],\n      type: 'line',\n      label: {\n        show: true,\n        position: 'bottom',\n        textStyle: {\n          fontSize: 20\n        }\n      }\n    }\n  ]\n};\n```\n\n## 空数据\n\n在一个系列中,可能一个横坐标对应的取值是“空”的,将其设为 0 有时并不能满足我们的期望--空数据不应被其左右的数据连接。\n\n在 ECharts 中,我们使用字符串 `'-'` 表示空数据,这对其他系列的数据也是适用的。\n\n```js live\noption = {\n  xAxis: {\n    data: ['A', 'B', 'C', 'D', 'E']\n  },\n  yAxis: {},\n  series: [\n    {\n      data: [0, 22, '-', 23, 19],\n      type: 'line'\n    }\n  ]\n};\n```\n\n> 注意区别这个例子中,“空”数据与取值为 0 的数据。\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/fe87f7d068d53e338de9.js b/docs/_nuxt/js/fe87f7d068d53e338de9.js
new file mode 100644
index 0000000..54a221b
--- /dev/null
+++ b/docs/_nuxt/js/fe87f7d068d53e338de9.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[91],{392:function(n,t,e){"use strict";e.r(t),t.default="# 用颜色增强可视化效果\n\n在数据可视化所有的视觉通道中,色彩作为视觉的第一感知因素,对数据进行的视觉编码和传达是很有效的。如果使用得当,颜色可以非常有效地增强可视化效果。接下来,我们来看看具体有哪些使用颜色来增强可视化效果的的技巧和方法。\n\n## 颜色的情感共鸣\n\n颜色感知是一个复杂的物理和心理相互作用的结果。为了证明了人们感知到的色彩有冷与暖之分,日本色彩学家大智浩曾做过一个实验,将一个工作场地涂灰青色,另一个工作场地涂红橙色,两个工作场地的客观温度劳动强度相同,在灰青色工作场地工作的员工相对更容易感觉到冷。人们进一步研究发现,除了冷与暖的不同感受,色彩还有轻与重、远与近、活泼与忧郁等区分。所以,色彩之所以强大之处在于不同的色彩会使人的心理与生理产生不同的感受,从而引起情感反应和影响人们的情绪。\n\n在可视化的颜色选择上,如果我们选用的颜色与我们数据本身的特点以及想要传达的情绪吻合的话,就可以伴随着颜色的视觉传达而引起情感上的共鸣。\n\n例如某个甜品店各类甜品的销售占比,数据如下:\n\n<img max-width=\"830\" width=\"50%\" height=\"100%\" src=\"images/design/color/color01.png\" />\n\n针对这份数据,下面两个相同样式的图表,我们采用了两种不同配色方案,对比来看很明显,右图的配色更适合用来展示甜品数据。\n\n<img max-width=\"830\" width=\"100%\" height=\"100%\" src=\"images/design/color/color02.png\" />\n\n因为相较于蓝色、紫色而言,橙色、黄色、粉色、绿色都是有利于提升食欲的颜色,而且更容易使人们产生温暖、幸福的情感,而这种情感与吃甜品时人们产生的感觉是一致的。另一方面,甜品本身的面向用户大多数是儿童和女性,针对这部分用户,比较明快、可爱的图表颜色也是更好的选择。而左侧的图表的配色更适合用于展示某种商务、男性群体的数据,因为左图的配色更容易使人产生理性和冷静的情感。\n\n## 颜色的语义共鸣\n\n不同的颜色可以帮助我们识别和区分不同的类别。我们已经习惯将颜色和各种事物或概念绑定在一起。当提到某些事物时我们经常会迅速的在心中匹配其对应的颜色,例如提到“云朵”会想到白色,“爱情”会想到粉红色。这些自然的、与语义一致的颜色被称为\"语义共鸣色\"。\n\n研究表明,对于有固定颜色的词,匹配其具有语义共鸣的颜色,能有效的加速认知过程,反之则会阻碍认知,这种有趣的现象称为\"斯特鲁普效应\"。我们可以做个的对比试验,分别在上图两行文字中找到“黄”字。这个过程中,第一行的“黄”可以被快速定位到,因为对应使用了黄色。而在第二行寻找的时候,可能有人最早定位到的会是“紫”字,因为此处“紫”字使用了黄色,这就阻碍了我们寻找的速度和准确性。\n\n<img max-width=\"830\" width=\"100%\" height=\"100%\" src=\"images/design/color/color03.png\" />\n\n有效地利用语义共鸣色,即采用与数据本身意义一致的颜色,也可以提高可视化的认知效率。例如可以使用蓝色的来显示\"海洋\"的数据、使用黄色来显示“沙漠”的数据。\n\n视觉效果应该尽可能容易地解释,因此请尝试找到与观众的先入为主和文化联想相匹配的配色方案。如下示例中展示了猕猴桃、香蕉、橙子、草莓四种水果的销售数据,分别选择了与水果本身一致的颜色绿色、黄色、橙色、红色。这样,我们在辨别和记忆每个柱状所对应的水果时就轻而易举了。\n\n```js live\noption = {\n  color: ['#6E9D4E', '#EDDB4F', '#F7923A', '#F14747'],\n  title: {\n    text: '7月水果销量',\n    x: '2%',\n    y: '1%',\n    textStyle: {\n      color: '#fff',\n      fontSize: '26'\n    }\n  },\n  tooltip: {\n    trigger: 'axis'\n  },\n  legend: {\n    data: ['猕猴桃', '香蕉', '橙子', '草莓'],\n    align: 'right'\n  },\n  grid: {\n    left: '3%',\n    right: '3%',\n    top: '15%',\n    bottom: '3%',\n    containLabel: true\n  },\n  xAxis: [\n    {\n      type: 'category',\n      data: ['第一周', '第二周', '第三周', '第四周']\n    }\n  ],\n  yAxis: [\n    {\n      type: 'value',\n      axisLabel: {\n        formatter: '{value}'\n      }\n    }\n  ],\n  series: [\n    {\n      name: '猕猴桃',\n      type: 'bar',\n      data: [60, 110, 180, 100]\n    },\n    {\n      name: '香蕉',\n      type: 'bar',\n      data: [90, 130, 170, 130]\n    },\n    {\n      name: '橙子',\n      type: 'bar',\n      data: [120, 160, 140, 160]\n    },\n    {\n      name: '草莓',\n      type: 'bar',\n      data: [110, 190, 90, 100]\n    }\n  ]\n};\n```\n\n## 图表颜色要吻合常识\n\n在数据可视化的过程中,颜色的使用与图表的数据、展示环境、受众人群、社会背景等因素直接相关,我们不可以把颜色作为独立的因素去设计。在开始选择可视化作品的颜色时,请先克制住自由创作的热情,查看一下这是否是一份特殊的数据,再去选择对的颜色。例如一个股票数据的图表中,红色和绿色都有独特的含义。所以可视化图表颜色的选择吻合认知的常识,可以帮助我们更好地理解和区分数据。\n\n<iframe max-width=\"830\" width=\"100%\" height=\"400\"\nsrc=\"https://gallery.echartsjs.com/view-lite.html?cid=xp1oqJoQqG\">\n</iframe>\n\n再例如查看天气温度。蓝色和红色易于理解,无需任何解释,并且易于区分。\n\n<iframe max-width=\"830\" width=\"100%\" height=\"400\"\nsrc=\"https://gallery.echartsjs.com/view-lite.html?cid=xIVoX5gZcT&v=1\">\n</iframe>\n\n## 用颜色来区分数据\n\n我们通常会使用折线图来分析趋势,但是有的时候有需要明确的知道某个数据是否在某个区间范围内,因此我们可以主动地去配置定义区域。例如我们设定 25%-75% 这个范围内为我们计划完成的销售额,那我们可以在这个定义区域的范围内,给每个区域设置成一个底色,这样就可以高效的识别出每个数据处于哪个区间范围内,未达到、达到、超额完成的值。\n\n所以,颜色可以被用来作为提高图表的可阅读性和有效工具。\n\n<img max-width=\"830\" width=\"80%\" height=\"100%\" src=\"images/design/color/color04.png\" />\n"}}]);
\ No newline at end of file
diff --git a/docs/_nuxt/js/fece5d8adcf7333bf136.js b/docs/_nuxt/js/fece5d8adcf7333bf136.js
new file mode 100644
index 0000000..b9a949b
--- /dev/null
+++ b/docs/_nuxt/js/fece5d8adcf7333bf136.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[96],{397:function(n,t,e){"use strict";e.r(t),t.default='# 分组柱状图\n\n分组柱状图也被称为聚集柱状图。当两个或多个数据序列并排显示并在同一轴上的类别下分组时,将使用分组柱状图。相当于包含带有两个或更多图表的简单的条形图。\n\n<iframe max-width="830" width="100%" height="400"\nsrc="https://gallery.echartsjs.com/view-lite.html?cid=xr13FAH54f&v=1">\n</iframe>\n\n分组柱状图通常是用于将包含相同变量或类别的几个分组进行比较。像柱状图一样,每个柱的长度用于显示类别的数值,每个数据系列被分配一个单独的颜色或相同色系的不同饱和度,以区分它们,每组数据之间相互间隔并进行对比。\n\n<iframe max-width="830" width="100%" height="400"\n src="https://gallery.echartsjs.com/view-lite.html?cid=xry8WsXdOW&v=3">\n</iframe>\n\n## 分组柱状 \b 图的使用建议\n\n1、如果每个分组中的系列过多,数据的阅读难度就会越增加。因此,不建议每个分组中包含过多的系列。在系列较多时,可考虑使用堆叠柱状图。\n\n2、建议每两个分组之间的间距大于组内不同系列之间的间距,以免造成视觉上错误的归类和区分。\n'}}]);
\ No newline at end of file
diff --git a/docs/en/basics/download/index.html b/docs/en/basics/download/index.html
new file mode 100644
index 0000000..ad80b6d
--- /dev/null
+++ b/docs/en/basics/download/index.html
@@ -0,0 +1,13 @@
+<!doctype html>
+<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Download ECharts - Basics - Handbook - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="en"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/en/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/en/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/en/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/en/index.html" class="navbar-brand"><img src="https://echarts.apache.org/en/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/en/index.html">Home</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Docs<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/feature.html">Features</a></li><li><a href="https://echarts.apache.org/handbook/en/get-started/">Handbook</a></li><li><a href="https://echarts.apache.org/en/api.html">API</a></li><li><a href="https://echarts.apache.org/en/option.html">Chart Configuration</a></li><li><a href="https://echarts.apache.org/en/changelog.html">Changelog</a></li><li><a href="https://echarts.apache.org/en/faq.html">FAQ</a></li><li><a href="https://echarts.apache.org/handbook/en/basics/release-note/v6-upgrade-guide">V6 Upgrade Guide</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Download<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/download.html">Download</a></li><li><a href="https://echarts.apache.org/en/download-theme.html">Download Themes</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">Download Custom Series<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/download-extension.html">Download Extensions</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/en/index.html">Examples</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Resources<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/spreadsheet.html">Spread Sheet Tool</a></li><li><a href="https://echarts.apache.org/en/theme-builder.html">Theme Builder</a></li><li><a href="https://echarts.apache.org/en/cheat-sheet.html">Cheat Sheet</a></li><li><a href="https://echarts.apache.org/en/resources.html">More Resources</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/events.html">Events</a></li><li><a href="https://echarts.apache.org/en/committers.html">Committers</a></li><li><a href="https://echarts.apache.org/en/maillist.html">Mailing List</a></li><li><a href="https://echarts.apache.org/en/contributing.html">How to Contribute</a></li><li><a href="https://echarts.apache.org/en/dependencies.html">Dependencies</a></li><li><a href="https://echarts.apache.org/en/coding-standard.html">Code Standard</a></li><li><a href="https://github.com/apache/echarts" target="_blank">Source Code (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/security.html">Security</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">License<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">Events<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("zh")'>中文</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/en/get-started" class="nav-link"><span class="title">Get Started</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Basics</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/basics/download" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">Download ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/import" class="nav-link"><span class="title">Import ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/basics/help" class="nav-link"><span class="title">Get Help</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">What's New</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 Features</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">Migration from v5 to v6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">Migration from v4 to v5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Concepts</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/concepts/chart-size" class="nav-link"><span class="title">Chart Container</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/style" class="nav-link"><span class="title">Style</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/dataset" class="nav-link"><span class="title">Dataset</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/data-transform" class="nav-link"><span class="title">Data Transform</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/axis" class="nav-link"><span class="title">Axis</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/visual-map" class="nav-link"><span class="title">Visual Mapping</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/legend" class="nav-link"><span class="title">Legend</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/event" class="nav-link"><span class="title">Event and Action</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">How To Guides</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">Common Charts</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Bar</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">Basic Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">Stacked Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">Bar Racing</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">Waterfall</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Line</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">Basic Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">Stacked Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/area-line" class="nav-link"><span class="title">Area Chart</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">Smoothed Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/step-line" class="nav-link"><span class="title">Step Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Pie</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">Basic Pie</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">Ring Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/rose" class="nav-link"><span class="title">Rose Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Scatter</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">Basic Scatter</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Common Components</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Geo</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG Base Map</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">Cross Platform</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/cross-platform/server" class="nav-link"><span class="title">Server Side Rendering</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Data</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/data/dynamic-data" class="nav-link"><span class="title">Dynamic Data</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Label</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/label/rich-text" class="nav-link"><span class="title">Rich Text</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Animation</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/animation/transition" class="nav-link"><span class="title">Data Transition</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Interaction</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/drag" class="nav-link"><span class="title">Drag</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">Intelligent Pointer Snapping</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Best Practices</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/en/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/aria" class="nav-link"><span class="title">Aria</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/security" class="nav-link"><span class="title">Security Guidelines</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Edit Handbook</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/meta/edit-guide" class="nav-link"><span class="title">Edit Guide</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="get-apache-echarts" tabindex="-1">Get Apache ECharts</h1> <p>Apache ECharts offers a variety of installation options, so you can choose any of the following options depending on your project.</p> <ul><li>Install From npm</li> <li>Use From CDN</li> <li>Download From GitHub</li> <li>Online Customization</li></ul> <p>We'll go over each of these installation methods and the directory structure after download.</p> <h2 id="installation" tabindex="-1">Installation</h2> <h3 id="install-from-npm" tabindex="-1">Install From npm</h3> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-text line-numbers"><code>npm install echarts</code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>See <a href="en/basics/import">Import ECharts</a> for details on usage.</p> <h3 id="use-from-cdn" tabindex="-1">Use From CDN</h3> <p>ECharts is available on the following free CDNs:</p> <ul><li><a href="https://www.jsdelivr.com/package/npm/echarts">jsDelivr</a></li> <li><a href="https://unpkg.com/browse/echarts/">unpkg</a></li> <li><a href="https://cdnjs.com/libraries/echarts">cdnjs</a></li></ul> <h3 id="download-from-github" tabindex="-1">Download From GitHub</h3> <p>You can find links to each version on the <a href="https://github.com/apache/echarts/releases">releases</a> page of the <a href="https://github.com/apache/echarts">apache/echarts project</a>. Click on the Source code under Assets at the bottom of the desired release version. After downloading, unzip the file and locate <code>echarts.js</code> file in the <code>dist</code> folder to include the full ECharts functionality.</p> <h3 id="online-customization" tabindex="-1">Online Customization</h3> <p>If you want to introduce only some modules to reduce package size, you can use the <a href="https://echarts.apache.org/builder.html">ECharts online customization</a> function to create a customized download of ECharts.</p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">Contributors</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/en/basics/download.md" title="Edit this Document" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">Edit this page on GitHub</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/plainheart" target="_blank" class="post-contributor has-avatar"><img alt="plainheart" src="https://echarts.apache.org/en/images/people/plainheart.jpg" loading="lazy" decoding="async" fetchpriority="low"> <span>plainheart</span></a><a href="https://github.com/Ovilia" target="_blank" class="post-contributor has-avatar"><img alt="Ovilia" src="https://echarts.apache.org/en/images/people/羡辙.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>Ovilia</span></a><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a><a href="https://github.com/zachary-svoboda-accesso" target="_blank" class="post-contributor"><!----> <span>zachary-svoboda-accesso</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,i,e,r,a,l,d,n,o,s,h,c,p,f,u,m,g,b,v,C,w,S,y,k,E,P,x,B,D,G,z,A,R,I,L,j,F,M,V,N,_,H,T,O,U,W,X,Y,$,J,Z,q,K,Q,tt,it,et,rt,at,lt,dt,nt,ot){return{layout:"default",data:[{html:'<h1 id="get-apache-echarts" tabindex="-1">Get Apache ECharts</h1>\n<p>Apache ECharts offers a variety of installation options, so you can choose any of the following options depending on your project.</p>\n<ul>\n<li>Install From npm</li>\n<li>Use From CDN</li>\n<li>Download From GitHub</li>\n<li>Online Customization</li>\n</ul>\n<p>We\'ll go over each of these installation methods and the directory structure after download.</p>\n<h2 id="installation" tabindex="-1">Installation</h2>\n<h3 id="install-from-npm" tabindex="-1">Install From npm</h3>\n<md-code-block lang="sh" code="\'bnBtIGluc3RhbGwgZWNoYXJ0cw\'" line-highlights="\'\'" />\n<p>See <a href="en/basics/import">Import ECharts</a> for details on usage.</p>\n<h3 id="use-from-cdn" tabindex="-1">Use From CDN</h3>\n<p>ECharts is available on the following free CDNs:</p>\n<ul>\n<li><a href="https://www.jsdelivr.com/package/npm/echarts">jsDelivr</a></li>\n<li><a href="https://unpkg.com/browse/echarts/">unpkg</a></li>\n<li><a href="https://cdnjs.com/libraries/echarts">cdnjs</a></li>\n</ul>\n<h3 id="download-from-github" tabindex="-1">Download From GitHub</h3>\n<p>You can find links to each version on the <a href="https://github.com/apache/echarts/releases">releases</a> page of the <a href="https://github.com/apache/echarts">apache/echarts project</a>. Click on the Source code under Assets at the bottom of the desired release version. After downloading, unzip the file and locate <code>echarts.js</code> file in the <code>dist</code> folder to include the full ECharts functionality.</p>\n<h3 id="online-customization" tabindex="-1">Online Customization</h3>\n<p>If you want to introduce only some modules to reduce package size, you can use the <a href="https://echarts.apache.org/builder.html">ECharts online customization</a> function to create a customized download of ECharts.</p>\n',postPath:"en/basics/download",title:"Download ECharts - Basics"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:r},{title:"入门篇",dir:a,children:[{title:"获取 ECharts",dir:l},{title:"在项目中引入 ECharts",dir:d},{title:"资源列表",dir:n,draft:t},{title:"寻求帮助",dir:o},{title:"版本特性",dir:s,children:[{title:"ECharts 6 特性介绍",dir:h},{title:"v5 升级 v6 指南",dir:c},{title:"5.0",dir:p},{title:"v4 升级 v5 指南",dir:f},{title:5.2,dir:u},{title:5.3,dir:m},{title:5.4,dir:g},{title:5.5,dir:b},{title:5.6,dir:v}]}]},{title:"概念篇",dir:C,children:[{title:"图表容器及大小",dir:w},{title:"配置项",dir:S,draft:t},{title:"系列",dir:y,draft:t},{title:"样式",dir:k},{title:"数据集",dir:E},{title:"数据转换",dir:P},{title:"坐标系",dir:x,draft:t},{title:"坐标轴",dir:B},{title:"视觉映射",dir:e},{title:"图例",dir:D},{title:"事件与行为",dir:G}]},{title:"应用篇",dir:z,children:[{title:"常用图表类型",dir:A,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:R},{title:"堆叠柱状图",dir:I},{title:"动态排序柱状图",dir:L},{title:"极坐标系柱状图",dir:j,draft:t},{title:"阶梯瀑布图",dir:F},{title:"视觉映射的柱状图",dir:e,draft:t}]},{title:"折线图",dir:M,children:[{title:"基础折线图",dir:V},{title:"堆叠折线图",dir:N},{title:"区域面积图",dir:_},{title:"平滑曲线图",dir:H},{title:"阶梯线图",dir:T}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:O},{title:"圆环图",dir:U},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:W,children:[{title:"基础散点图",dir:X}]}]},{title:"常用组件",dir:Y,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:$}]}]},{title:"移动端优化",dir:i,draft:t},{title:"跨平台方案",dir:J,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:Z},{title:"数据下钻",dir:q,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:K}]},{title:"动画",dir:Q,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:it,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:et,draft:t},{title:"智能指针吸附",dir:rt}]}]},{title:"最佳实践",dir:at,children:[{title:"移动端优化",dir:i,draft:t},{title:lt,dir:dt},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:nt}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:ot}]}],en:[{title:"Get Started",dir:r},{title:"Basics",dir:a,children:[{title:"Download ECharts",dir:l},{title:"Import ECharts",dir:d},{title:"Resources",dir:n,draft:t},{title:"Get Help",dir:o},{title:"What's New",dir:s,children:[{title:"ECharts 6 Features",dir:h},{title:"Migration from v5 to v6",dir:c},{title:"5.0",dir:p},{title:"Migration from v4 to v5",dir:f},{title:5.2,dir:u},{title:5.3,dir:m},{title:5.4,dir:g},{title:5.5,dir:b},{title:5.6,dir:v}]}]},{title:"Concepts",dir:C,children:[{title:"Chart Container",dir:w},{title:"Chart Option",dir:S,draft:t},{title:"Series",dir:y,draft:t},{title:"Style",dir:k},{title:"Dataset",dir:E},{title:"Data Transform",dir:P},{title:"Coordinate",dir:x,draft:t},{title:"Axis",dir:B},{title:"Visual Mapping",dir:e},{title:"Legend",dir:D},{title:"Event and Action",dir:G}]},{title:"How To Guides",dir:z,children:[{title:"Common Charts",dir:A,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:R},{title:"Stacked Bar",dir:I},{title:"Bar Racing",dir:L},{title:"Bar Polar",dir:j,draft:t},{title:"Waterfall",dir:F}]},{title:"Line",dir:M,children:[{title:"Basic Line",dir:V},{title:"Stacked Line",dir:N},{title:"Area Chart",dir:_},{title:"Smoothed Line",dir:H},{title:"Step Line",dir:T}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:O},{title:"Ring Style",dir:U},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:W,children:[{title:"Basic Scatter",dir:X}]}]},{title:"Common Components",dir:Y,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:$}]}]},{title:"Mobile",dir:i,draft:t},{title:"Cross Platform",dir:J,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:Z},{title:"Drilldown",dir:q,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:K}]},{title:"Animation",dir:Q,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:it,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:et,draft:t},{title:"Intelligent Pointer Snapping",dir:rt}]}]},{title:"Best Practices",dir:at,children:[{title:"Mobile Optimization",dir:i,draft:t},{title:lt,dir:dt},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:nt}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:ot}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/en/basics/download",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/en/basics/help/index.html b/docs/en/basics/help/index.html
new file mode 100644
index 0000000..2ecba99
--- /dev/null
+++ b/docs/en/basics/help/index.html
@@ -0,0 +1,13 @@
+<!doctype html>
+<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Get Help - Basics - Handbook - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="en"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/en/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/en/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/en/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/en/index.html" class="navbar-brand"><img src="https://echarts.apache.org/en/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/en/index.html">Home</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Docs<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/feature.html">Features</a></li><li><a href="https://echarts.apache.org/handbook/en/get-started/">Handbook</a></li><li><a href="https://echarts.apache.org/en/api.html">API</a></li><li><a href="https://echarts.apache.org/en/option.html">Chart Configuration</a></li><li><a href="https://echarts.apache.org/en/changelog.html">Changelog</a></li><li><a href="https://echarts.apache.org/en/faq.html">FAQ</a></li><li><a href="https://echarts.apache.org/handbook/en/basics/release-note/v6-upgrade-guide">V6 Upgrade Guide</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Download<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/download.html">Download</a></li><li><a href="https://echarts.apache.org/en/download-theme.html">Download Themes</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">Download Custom Series<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/download-extension.html">Download Extensions</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/en/index.html">Examples</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Resources<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/spreadsheet.html">Spread Sheet Tool</a></li><li><a href="https://echarts.apache.org/en/theme-builder.html">Theme Builder</a></li><li><a href="https://echarts.apache.org/en/cheat-sheet.html">Cheat Sheet</a></li><li><a href="https://echarts.apache.org/en/resources.html">More Resources</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/events.html">Events</a></li><li><a href="https://echarts.apache.org/en/committers.html">Committers</a></li><li><a href="https://echarts.apache.org/en/maillist.html">Mailing List</a></li><li><a href="https://echarts.apache.org/en/contributing.html">How to Contribute</a></li><li><a href="https://echarts.apache.org/en/dependencies.html">Dependencies</a></li><li><a href="https://echarts.apache.org/en/coding-standard.html">Code Standard</a></li><li><a href="https://github.com/apache/echarts" target="_blank">Source Code (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/security.html">Security</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">License<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">Events<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("zh")'>中文</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/en/get-started" class="nav-link"><span class="title">Get Started</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Basics</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/basics/download" class="nav-link"><span class="title">Download ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/import" class="nav-link"><span class="title">Import ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/basics/help" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">Get Help</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">What's New</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 Features</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">Migration from v5 to v6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">Migration from v4 to v5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Concepts</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/concepts/chart-size" class="nav-link"><span class="title">Chart Container</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/style" class="nav-link"><span class="title">Style</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/dataset" class="nav-link"><span class="title">Dataset</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/data-transform" class="nav-link"><span class="title">Data Transform</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/axis" class="nav-link"><span class="title">Axis</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/visual-map" class="nav-link"><span class="title">Visual Mapping</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/legend" class="nav-link"><span class="title">Legend</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/event" class="nav-link"><span class="title">Event and Action</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">How To Guides</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">Common Charts</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Bar</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">Basic Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">Stacked Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">Bar Racing</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">Waterfall</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Line</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">Basic Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">Stacked Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/area-line" class="nav-link"><span class="title">Area Chart</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">Smoothed Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/step-line" class="nav-link"><span class="title">Step Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Pie</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">Basic Pie</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">Ring Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/rose" class="nav-link"><span class="title">Rose Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Scatter</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">Basic Scatter</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Common Components</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Geo</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG Base Map</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">Cross Platform</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/cross-platform/server" class="nav-link"><span class="title">Server Side Rendering</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Data</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/data/dynamic-data" class="nav-link"><span class="title">Dynamic Data</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Label</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/label/rich-text" class="nav-link"><span class="title">Rich Text</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Animation</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/animation/transition" class="nav-link"><span class="title">Data Transition</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Interaction</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/drag" class="nav-link"><span class="title">Drag</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">Intelligent Pointer Snapping</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Best Practices</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/en/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/aria" class="nav-link"><span class="title">Aria</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/security" class="nav-link"><span class="title">Security Guidelines</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Edit Handbook</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/meta/edit-guide" class="nav-link"><span class="title">Edit Guide</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="get-help" tabindex="-1">Get Help</h1> <h2 id="technical-problems" tabindex="-1">Technical Problems</h2> <h3 id="make-sure-that-existing-documentation-do-not-solve-your-problem" tabindex="-1">Make sure that existing documentation do not solve your problem</h3> <p>ECharts has a very large number of users, so it's more than likely that someone else has encountered and solved the problem you've had. By reading the documentation and using the search engine, you can solve your problem quickly by yourself without help from the community.</p> <p>Therefore, before doing anything else, make sure that current documentation and other resources can't solve your problem. Resources that can be helpful for you include,</p> <ul><li><a href="https://echarts.apache.org/api.html">API</a></li> <li><a href="https://echarts.apache.org/option.html">Option Manual</a> - you can try to use the search function</li> <li>Articles in this handbook</li> <li><a href="https://echarts.apache.org/faq.html">FAQ</a></li> <li>Searching in <a href="https://github.com/apache/echarts/issues">GitHub issue</a></li> <li>Using the search engine</li></ul> <h3 id="create-the-minimal-reproducible-demo" tabindex="-1">Create the Minimal Reproducible Demo</h3> <p>Create an example on <a href="https://echarts.apache.org/examples/editor.html">Official Editor</a>, <a href="https://codepen.io/Ovilia/pen/dyYWXWM">CodePen</a>, <a href="https://codesandbox.io/s/echarts-basic-example-template-mpfz1s">CodeSandbox</a> or <a href="https://jsfiddle.net/plainheart/e46ozpqj/7/">JSFiddle</a>, which will make it easier for others to reproduce your problem.</p> <p>The example should reproduce your problem in the simplest way. Removing unnecessary code and data can enable those who want to help you to locate and then solve the problem more quickly. Please refer to <a href="https://stackoverflow.com/help/minimal-reproducible-example">How to Create a Minimal, Reproducible Example</a> for more details.</p> <h3 id="determining-if-it's-a-bug" tabindex="-1">Determining if It's a Bug</h3> <h4 id="report-a-bug-or-request-a-new-feature" tabindex="-1">Report a Bug or Request a New Feature</h4> <p>If some behavior is different from the documentation or isn't what you expected, it's probably a bug. If it's a bug, or you have a feature request, please use the <a href="https://github.com/apache/echarts/issues/new/choose">issue template</a> to create a new issue and describe it in detail as per the prompts.</p> <h4 id="how-to-questions" tabindex="-1">How-To Questions</h4> <p>If it's not a bug, but you don't know how to achieve something, try the <a href="https://stackoverflow.com/questions/tagged/echarts">stackoverflow.com</a></p> <p>If you don't get an answer, you can also send an email to <a href="mailto:dev@echarts.apache.org">dev@echarts.apache.org</a>. In order for more people to understand your question and to get help in future searches, it is highly recommended to write the email in English.</p> <h2 id="non-technical-questions" tabindex="-1">Non-technical questions</h2> <p>For other non-technical questions, you can send an email in English to <a href="mailto:dev@echarts.apache.org">dev@echarts.apache.org</a>.</p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">Contributors</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/en/basics/help.md" title="Edit this Document" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">Edit this page on GitHub</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/plainheart" target="_blank" class="post-contributor has-avatar"><img alt="plainheart" src="https://echarts.apache.org/en/images/people/plainheart.jpg" loading="lazy" decoding="async" fetchpriority="low"> <span>plainheart</span></a><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,e,i,r,a,l,d,o,n,s,h,c,p,u,m,f,g,b,v,y,w,x,C,k,S,P,B,E,R,q,G,M,D,I,A,T,H,L,V,_,z,F,O,N,W,U,j,Q,X,$,J,Y,K,Z,tt,et,it,rt,at,lt,dt,ot,nt){return{layout:"default",data:[{html:'<h1 id="get-help" tabindex="-1">Get Help</h1>\n<h2 id="technical-problems" tabindex="-1">Technical Problems</h2>\n<h3 id="make-sure-that-existing-documentation-do-not-solve-your-problem" tabindex="-1">Make sure that existing documentation do not solve your problem</h3>\n<p>ECharts has a very large number of users, so it\'s more than likely that someone else has encountered and solved the problem you\'ve had. By reading the documentation and using the search engine, you can solve your problem quickly by yourself without help from the community.</p>\n<p>Therefore, before doing anything else, make sure that current documentation and other resources can\'t solve your problem. Resources that can be helpful for you include,</p>\n<ul>\n<li><a href="https://echarts.apache.org/api.html">API</a></li>\n<li><a href="https://echarts.apache.org/option.html">Option Manual</a> - you can try to use the search function</li>\n<li>Articles in this handbook</li>\n<li><a href="https://echarts.apache.org/faq.html">FAQ</a></li>\n<li>Searching in <a href="https://github.com/apache/echarts/issues">GitHub issue</a></li>\n<li>Using the search engine</li>\n</ul>\n<h3 id="create-the-minimal-reproducible-demo" tabindex="-1">Create the Minimal Reproducible Demo</h3>\n<p>Create an example on <a href="https://echarts.apache.org/examples/editor.html">Official Editor</a>, <a href="https://codepen.io/Ovilia/pen/dyYWXWM">CodePen</a>, <a href="https://codesandbox.io/s/echarts-basic-example-template-mpfz1s">CodeSandbox</a> or <a href="https://jsfiddle.net/plainheart/e46ozpqj/7/">JSFiddle</a>, which will make it easier for others to reproduce your problem.</p>\n<p>The example should reproduce your problem in the simplest way. Removing unnecessary code and data can enable those who want to help you to locate and then solve the problem more quickly. Please refer to <a href="https://stackoverflow.com/help/minimal-reproducible-example">How to Create a Minimal, Reproducible Example</a> for more details.</p>\n<h3 id="determining-if-it\'s-a-bug" tabindex="-1">Determining if It\'s a Bug</h3>\n<h4 id="report-a-bug-or-request-a-new-feature" tabindex="-1">Report a Bug or Request a New Feature</h4>\n<p>If some behavior is different from the documentation or isn\'t what you expected, it\'s probably a bug. If it\'s a bug, or you have a feature request, please use the <a href="https://github.com/apache/echarts/issues/new/choose">issue template</a> to create a new issue and describe it in detail as per the prompts.</p>\n<h4 id="how-to-questions" tabindex="-1">How-To Questions</h4>\n<p>If it\'s not a bug, but you don\'t know how to achieve something, try the <a href="https://stackoverflow.com/questions/tagged/echarts">stackoverflow.com</a></p>\n<p>If you don\'t get an answer, you can also send an email to <a href="mailto:dev@echarts.apache.org">dev@echarts.apache.org</a>. In order for more people to understand your question and to get help in future searches, it is highly recommended to write the email in English.</p>\n<h2 id="non-technical-questions" tabindex="-1">Non-technical questions</h2>\n<p>For other non-technical questions, you can send an email in English to <a href="mailto:dev@echarts.apache.org">dev@echarts.apache.org</a>.</p>\n',postPath:"en/basics/help",title:"Get Help - Basics"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:r},{title:"入门篇",dir:a,children:[{title:"获取 ECharts",dir:l},{title:"在项目中引入 ECharts",dir:d},{title:"资源列表",dir:o,draft:t},{title:"寻求帮助",dir:n},{title:"版本特性",dir:s,children:[{title:"ECharts 6 特性介绍",dir:h},{title:"v5 升级 v6 指南",dir:c},{title:"5.0",dir:p},{title:"v4 升级 v5 指南",dir:u},{title:5.2,dir:m},{title:5.3,dir:f},{title:5.4,dir:g},{title:5.5,dir:b},{title:5.6,dir:v}]}]},{title:"概念篇",dir:y,children:[{title:"图表容器及大小",dir:w},{title:"配置项",dir:x,draft:t},{title:"系列",dir:C,draft:t},{title:"样式",dir:k},{title:"数据集",dir:S},{title:"数据转换",dir:P},{title:"坐标系",dir:B,draft:t},{title:"坐标轴",dir:E},{title:"视觉映射",dir:i},{title:"图例",dir:R},{title:"事件与行为",dir:q}]},{title:"应用篇",dir:G,children:[{title:"常用图表类型",dir:M,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:D},{title:"堆叠柱状图",dir:I},{title:"动态排序柱状图",dir:A},{title:"极坐标系柱状图",dir:T,draft:t},{title:"阶梯瀑布图",dir:H},{title:"视觉映射的柱状图",dir:i,draft:t}]},{title:"折线图",dir:L,children:[{title:"基础折线图",dir:V},{title:"堆叠折线图",dir:_},{title:"区域面积图",dir:z},{title:"平滑曲线图",dir:F},{title:"阶梯线图",dir:O}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:N},{title:"圆环图",dir:W},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:U,children:[{title:"基础散点图",dir:j}]}]},{title:"常用组件",dir:Q,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:X}]}]},{title:"移动端优化",dir:e,draft:t},{title:"跨平台方案",dir:$,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:J},{title:"数据下钻",dir:Y,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:K}]},{title:"动画",dir:Z,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:et,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:it,draft:t},{title:"智能指针吸附",dir:rt}]}]},{title:"最佳实践",dir:at,children:[{title:"移动端优化",dir:e,draft:t},{title:lt,dir:dt},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:ot}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:nt}]}],en:[{title:"Get Started",dir:r},{title:"Basics",dir:a,children:[{title:"Download ECharts",dir:l},{title:"Import ECharts",dir:d},{title:"Resources",dir:o,draft:t},{title:"Get Help",dir:n},{title:"What's New",dir:s,children:[{title:"ECharts 6 Features",dir:h},{title:"Migration from v5 to v6",dir:c},{title:"5.0",dir:p},{title:"Migration from v4 to v5",dir:u},{title:5.2,dir:m},{title:5.3,dir:f},{title:5.4,dir:g},{title:5.5,dir:b},{title:5.6,dir:v}]}]},{title:"Concepts",dir:y,children:[{title:"Chart Container",dir:w},{title:"Chart Option",dir:x,draft:t},{title:"Series",dir:C,draft:t},{title:"Style",dir:k},{title:"Dataset",dir:S},{title:"Data Transform",dir:P},{title:"Coordinate",dir:B,draft:t},{title:"Axis",dir:E},{title:"Visual Mapping",dir:i},{title:"Legend",dir:R},{title:"Event and Action",dir:q}]},{title:"How To Guides",dir:G,children:[{title:"Common Charts",dir:M,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:D},{title:"Stacked Bar",dir:I},{title:"Bar Racing",dir:A},{title:"Bar Polar",dir:T,draft:t},{title:"Waterfall",dir:H}]},{title:"Line",dir:L,children:[{title:"Basic Line",dir:V},{title:"Stacked Line",dir:_},{title:"Area Chart",dir:z},{title:"Smoothed Line",dir:F},{title:"Step Line",dir:O}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:N},{title:"Ring Style",dir:W},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:U,children:[{title:"Basic Scatter",dir:j}]}]},{title:"Common Components",dir:Q,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:X}]}]},{title:"Mobile",dir:e,draft:t},{title:"Cross Platform",dir:$,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:J},{title:"Drilldown",dir:Y,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:K}]},{title:"Animation",dir:Z,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:et,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:it,draft:t},{title:"Intelligent Pointer Snapping",dir:rt}]}]},{title:"Best Practices",dir:at,children:[{title:"Mobile Optimization",dir:e,draft:t},{title:lt,dir:dt},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:ot}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:nt}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/en/basics/help",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/en/basics/import/index.html b/docs/en/basics/import/index.html
new file mode 100644
index 0000000..42510e0
--- /dev/null
+++ b/docs/en/basics/import/index.html
@@ -0,0 +1,132 @@
+<!doctype html>
+<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Import ECharts - Basics - Handbook - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="en"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/en/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/en/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/en/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/en/index.html" class="navbar-brand"><img src="https://echarts.apache.org/en/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/en/index.html">Home</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Docs<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/feature.html">Features</a></li><li><a href="https://echarts.apache.org/handbook/en/get-started/">Handbook</a></li><li><a href="https://echarts.apache.org/en/api.html">API</a></li><li><a href="https://echarts.apache.org/en/option.html">Chart Configuration</a></li><li><a href="https://echarts.apache.org/en/changelog.html">Changelog</a></li><li><a href="https://echarts.apache.org/en/faq.html">FAQ</a></li><li><a href="https://echarts.apache.org/handbook/en/basics/release-note/v6-upgrade-guide">V6 Upgrade Guide</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Download<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/download.html">Download</a></li><li><a href="https://echarts.apache.org/en/download-theme.html">Download Themes</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">Download Custom Series<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/download-extension.html">Download Extensions</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/en/index.html">Examples</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Resources<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/spreadsheet.html">Spread Sheet Tool</a></li><li><a href="https://echarts.apache.org/en/theme-builder.html">Theme Builder</a></li><li><a href="https://echarts.apache.org/en/cheat-sheet.html">Cheat Sheet</a></li><li><a href="https://echarts.apache.org/en/resources.html">More Resources</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/events.html">Events</a></li><li><a href="https://echarts.apache.org/en/committers.html">Committers</a></li><li><a href="https://echarts.apache.org/en/maillist.html">Mailing List</a></li><li><a href="https://echarts.apache.org/en/contributing.html">How to Contribute</a></li><li><a href="https://echarts.apache.org/en/dependencies.html">Dependencies</a></li><li><a href="https://echarts.apache.org/en/coding-standard.html">Code Standard</a></li><li><a href="https://github.com/apache/echarts" target="_blank">Source Code (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/security.html">Security</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">License<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">Events<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("zh")'>中文</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/en/get-started" class="nav-link"><span class="title">Get Started</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Basics</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/basics/download" class="nav-link"><span class="title">Download ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/import" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">Import ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/basics/help" class="nav-link"><span class="title">Get Help</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">What's New</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 Features</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">Migration from v5 to v6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">Migration from v4 to v5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Concepts</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/concepts/chart-size" class="nav-link"><span class="title">Chart Container</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/style" class="nav-link"><span class="title">Style</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/dataset" class="nav-link"><span class="title">Dataset</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/data-transform" class="nav-link"><span class="title">Data Transform</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/axis" class="nav-link"><span class="title">Axis</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/visual-map" class="nav-link"><span class="title">Visual Mapping</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/legend" class="nav-link"><span class="title">Legend</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/event" class="nav-link"><span class="title">Event and Action</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">How To Guides</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">Common Charts</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Bar</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">Basic Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">Stacked Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">Bar Racing</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">Waterfall</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Line</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">Basic Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">Stacked Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/area-line" class="nav-link"><span class="title">Area Chart</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">Smoothed Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/step-line" class="nav-link"><span class="title">Step Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Pie</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">Basic Pie</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">Ring Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/rose" class="nav-link"><span class="title">Rose Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Scatter</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">Basic Scatter</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Common Components</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Geo</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG Base Map</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">Cross Platform</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/cross-platform/server" class="nav-link"><span class="title">Server Side Rendering</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Data</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/data/dynamic-data" class="nav-link"><span class="title">Dynamic Data</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Label</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/label/rich-text" class="nav-link"><span class="title">Rich Text</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Animation</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/animation/transition" class="nav-link"><span class="title">Data Transition</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Interaction</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/drag" class="nav-link"><span class="title">Drag</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">Intelligent Pointer Snapping</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Best Practices</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/en/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/aria" class="nav-link"><span class="title">Aria</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/security" class="nav-link"><span class="title">Security Guidelines</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Edit Handbook</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/meta/edit-guide" class="nav-link"><span class="title">Edit Guide</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="using-echarts-as-an-npm-package" tabindex="-1">Using ECharts as an NPM Package</h1> <p>There are two approaches to using ECharts as a package. The simplest approach is to make all functionality immediately available by importing from <code>echarts</code>. However, it is encouraged to substantially decrease bundle size by only importing as necessary such as <code>echarts/core</code> and <code>echarts/charts</code>.</p> <h2 id="install-echarts-via-npm" tabindex="-1">Install ECharts via NPM</h2> <p>You can install ECharts via npm using the following command</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-text line-numbers"><code>npm install echarts</code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="import-all-echarts-functionality" tabindex="-1">Import All ECharts Functionality</h2> <p>To include all of ECharts, we simply need to import <code>echarts</code>.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">import</span> <span class="token operator">*</span> <span class="token keyword">as</span> echarts <span class="token keyword">from</span> <span class="token string">'echarts'</span><span class="token punctuation">;</span>
+
+<span class="token comment">// Create the echarts instance</span>
+<span class="token keyword">var</span> myChart <span class="token operator">=</span> echarts<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span>document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span><span class="token string">'main'</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+<span class="token comment">// Draw the chart</span>
+myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+  <span class="token literal-property property">title</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'ECharts Getting Started Example'</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">tooltip</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'shirt'</span><span class="token punctuation">,</span> <span class="token string">'cardigan'</span><span class="token punctuation">,</span> <span class="token string">'chiffon'</span><span class="token punctuation">,</span> <span class="token string">'pants'</span><span class="token punctuation">,</span> <span class="token string">'heels'</span><span class="token punctuation">,</span> <span class="token string">'socks'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'sales'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">20</span><span class="token punctuation">,</span> <span class="token number">36</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">20</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="shrinking-bundle-size" tabindex="-1">Shrinking Bundle Size</h2> <p>The above code will import all the charts and components in ECharts, but if you don't want to bring in all the components, you can use the tree-shakeable interface provided by ECharts to bundle the required components and get a minimal bundle.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token comment">// Import the echarts core module, which provides the necessary interfaces for using echarts.</span>
+<span class="token keyword">import</span> <span class="token operator">*</span> <span class="token keyword">as</span> echarts <span class="token keyword">from</span> <span class="token string">'echarts/core'</span><span class="token punctuation">;</span>
+
+<span class="token comment">// Import bar charts, all suffixed with Chart</span>
+<span class="token keyword">import</span> <span class="token punctuation">{</span> BarChart <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'echarts/charts'</span><span class="token punctuation">;</span>
+
+<span class="token comment">// Import the title, tooltip, rectangular coordinate system, dataset and transform components</span>
+<span class="token keyword">import</span> <span class="token punctuation">{</span>
+  TitleComponent<span class="token punctuation">,</span>
+  TooltipComponent<span class="token punctuation">,</span>
+  GridComponent<span class="token punctuation">,</span>
+  DatasetComponent<span class="token punctuation">,</span>
+  TransformComponent
+<span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'echarts/components'</span><span class="token punctuation">;</span>
+
+<span class="token comment">// Features like Universal Transition and Label Layout</span>
+<span class="token keyword">import</span> <span class="token punctuation">{</span> LabelLayout<span class="token punctuation">,</span> UniversalTransition <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'echarts/features'</span><span class="token punctuation">;</span>
+
+<span class="token comment">// Import the Canvas renderer</span>
+<span class="token comment">// Note that including the CanvasRenderer or SVGRenderer is a required step</span>
+<span class="token keyword">import</span> <span class="token punctuation">{</span> CanvasRenderer <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'echarts/renderers'</span><span class="token punctuation">;</span>
+
+<span class="token comment">// Register the required components</span>
+echarts<span class="token punctuation">.</span><span class="token function">use</span><span class="token punctuation">(</span><span class="token punctuation">[</span>
+  BarChart<span class="token punctuation">,</span>
+  TitleComponent<span class="token punctuation">,</span>
+  TooltipComponent<span class="token punctuation">,</span>
+  GridComponent<span class="token punctuation">,</span>
+  DatasetComponent<span class="token punctuation">,</span>
+  TransformComponent<span class="token punctuation">,</span>
+  LabelLayout<span class="token punctuation">,</span>
+  UniversalTransition<span class="token punctuation">,</span>
+  CanvasRenderer
+<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+<span class="token comment">// The chart is initialized and configured in the same manner as before</span>
+<span class="token keyword">var</span> myChart <span class="token operator">=</span> echarts<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span>document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span><span class="token string">'main'</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+  <span class="token comment">// ...</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <blockquote><p>Note that in order to keep the size of the package to a minimum, ECharts does not provide any renderer in the tree-shakeable interface, so you need to choose to import <code>CanvasRenderer</code> or <code>SVGRenderer</code> as the renderer. The advantage of this is that if you only need to use the SVG rendering mode, the bundle will not include the <code>CanvasRenderer</code> module, which is not needed.</p></blockquote> <p>The "Full Code" tab on our sample editor page provides a very convenient way to generate a tree-shakable code. It will generate tree-shakable code based on the current option dynamically to use it directly in your project.</p> <h2 id="creating-an-option-type-in-typescript" tabindex="-1">Creating an Option Type in TypeScript</h2> <p>For developers who are using TypeScript to develop ECharts, type interface is provided to create a minimal <code>EChartsOption</code> type. This type will be stricter than the default one provided because it will know exactly what components are being used. This can help you check for missing components or charts more effectively.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code><span class="token keyword">import</span> <span class="token operator">*</span> <span class="token keyword">as</span> echarts <span class="token keyword">from</span> <span class="token string">'echarts/core'</span><span class="token punctuation">;</span>
+<span class="token keyword">import</span> <span class="token punctuation">{</span>
+  BarChart<span class="token punctuation">,</span>
+  LineChart<span class="token punctuation">,</span>
+<span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'echarts/charts'</span><span class="token punctuation">;</span>
+<span class="token keyword">import</span> <span class="token punctuation">{</span>
+  TitleComponent<span class="token punctuation">,</span>
+  TooltipComponent<span class="token punctuation">,</span>
+  GridComponent<span class="token punctuation">,</span>
+  <span class="token comment">// Dataset</span>
+  DatasetComponent<span class="token punctuation">,</span>
+  <span class="token comment">// Built-in transform (filter, sort)</span>
+  TransformComponent
+<span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'echarts/components'</span><span class="token punctuation">;</span>
+<span class="token keyword">import</span> <span class="token punctuation">{</span> LabelLayout<span class="token punctuation">,</span> UniversalTransition <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'echarts/features'</span><span class="token punctuation">;</span>
+<span class="token keyword">import</span> <span class="token punctuation">{</span> CanvasRenderer <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'echarts/renderers'</span><span class="token punctuation">;</span>
+<span class="token keyword">import</span> <span class="token keyword">type</span> <span class="token punctuation">{</span>
+  <span class="token comment">// The series option types are defined with the SeriesOption suffix</span>
+  BarSeriesOption<span class="token punctuation">,</span> 
+  LineSeriesOption<span class="token punctuation">,</span>
+<span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'echarts/charts'</span><span class="token punctuation">;</span>
+<span class="token keyword">import</span> <span class="token keyword">type</span> <span class="token punctuation">{</span>
+  <span class="token comment">// The component option types are defined with the ComponentOption suffix</span>
+  TitleComponentOption<span class="token punctuation">,</span> 
+  TooltipComponentOption<span class="token punctuation">,</span>
+  GridComponentOption<span class="token punctuation">,</span>
+  DatasetComponentOption
+<span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'echarts/components'</span><span class="token punctuation">;</span>
+<span class="token keyword">import</span> <span class="token keyword">type</span> <span class="token punctuation">{</span> 
+  ComposeOption<span class="token punctuation">,</span> 
+<span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'echarts/core'</span><span class="token punctuation">;</span>
+
+<span class="token comment">// Create an Option type with only the required components and charts via ComposeOption</span>
+<span class="token keyword">type</span> <span class="token class-name">ECOption</span> <span class="token operator">=</span> ComposeOption<span class="token operator">&lt;</span>
+  <span class="token operator">|</span> BarSeriesOption
+  <span class="token operator">|</span> LineSeriesOption
+  <span class="token operator">|</span> TitleComponentOption
+  <span class="token operator">|</span> TooltipComponentOption
+  <span class="token operator">|</span> GridComponentOption
+  <span class="token operator">|</span> DatasetComponentOption
+<span class="token operator">></span><span class="token punctuation">;</span>
+
+<span class="token comment">// Register the required components</span>
+echarts<span class="token punctuation">.</span><span class="token function">use</span><span class="token punctuation">(</span><span class="token punctuation">[</span>
+  TitleComponent<span class="token punctuation">,</span>
+  TooltipComponent<span class="token punctuation">,</span>
+  GridComponent<span class="token punctuation">,</span>
+  DatasetComponent<span class="token punctuation">,</span>
+  TransformComponent<span class="token punctuation">,</span>
+  BarChart<span class="token punctuation">,</span>
+  LineChart<span class="token punctuation">,</span>
+  LabelLayout<span class="token punctuation">,</span>
+  UniversalTransition<span class="token punctuation">,</span>
+  CanvasRenderer
+<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+<span class="token keyword">const</span> option<span class="token operator">:</span> ECOption <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token comment">// ...</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">Contributors</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/en/basics/import.md" title="Edit this Document" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">Edit this page on GitHub</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/plainheart" target="_blank" class="post-contributor has-avatar"><img alt="plainheart" src="https://echarts.apache.org/en/images/people/plainheart.jpg" loading="lazy" decoding="async" fetchpriority="low"> <span>plainheart</span></a><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a><a href="https://github.com/aimuz" target="_blank" class="post-contributor"><!----> <span>aimuz</span></a><a href="https://github.com/ikeq" target="_blank" class="post-contributor"><!----> <span>ikeq</span></a><a href="https://github.com/zachary-svoboda-accesso" target="_blank" class="post-contributor"><!----> <span>zachary-svoboda-accesso</span></a><a href="https://github.com/btea" target="_blank" class="post-contributor"><!----> <span>btea</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,i,e,l,d,a,r,c,n,o,s,h,b,g,p,m,C,G,y,u,B,I,v,Z,X,w,W,V,R,J,Y,N,F,A,f,E,z,H,S,K,k,L,U,Q,T,M,x,D,P,j,O,q,_,$,tt,it,et,lt,dt,at,rt,ct,nt){return{layout:"default",data:[{html:'<h1 id="using-echarts-as-an-npm-package" tabindex="-1">Using ECharts as an NPM Package</h1>\n<p>There are two approaches to using ECharts as a package. The simplest approach is to make all functionality immediately available by importing from <code>echarts</code>. However, it is encouraged to substantially decrease bundle size by only importing as necessary such as <code>echarts/core</code> and <code>echarts/charts</code>.</p>\n<h2 id="install-echarts-via-npm" tabindex="-1">Install ECharts via NPM</h2>\n<p>You can install ECharts via npm using the following command</p>\n<md-code-block lang="shell" code="\'bnBtIGluc3RhbGwgZWNoYXJ0cw\'" line-highlights="\'\'" />\n<h2 id="import-all-echarts-functionality" tabindex="-1">Import All ECharts Functionality</h2>\n<p>To include all of ECharts, we simply need to import <code>echarts</code>.</p>\n<md-code-block lang="js" code="\'aW1wb3J0ICogYXMgZWNoYXJ0cyBmcm9tICdlY2hhcnRzJzsKCi8vIENyZWF0ZSB0aGUgZWNoYXJ0cyBpbnN0YW5jZQp2YXIgbXlDaGFydCA9IGVjaGFydHMuaW5pdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFpbicpKTsKCi8vIERyYXcgdGhlIGNoYXJ0Cm15Q2hhcnQuc2V0T3B0aW9uKHsKICB0aXRsZTogewogICAgdGV4dDogJ0VDaGFydHMgR2V0dGluZyBTdGFydGVkIEV4YW1wbGUnCiAgfSwKICB0b29sdGlwOiB7fSwKICB4QXhpczogewogICAgZGF0YTogWydzaGlydCcsICdjYXJkaWdhbicsICdjaGlmZm9uJywgJ3BhbnRzJywgJ2hlZWxzJywgJ3NvY2tzJ10KICB9LAogIHlBeGlzOiB7fSwKICBzZXJpZXM6IFsKICAgIHsKICAgICAgbmFtZTogJ3NhbGVzJywKICAgICAgdHlwZTogJ2JhcicsCiAgICAgIGRhdGE6IFs1LCAyMCwgMzYsIDEwLCAxMCwgMjBdCiAgICB9CiAgXQp9KTs\'" line-highlights="\'\'" />\n<h2 id="shrinking-bundle-size" tabindex="-1">Shrinking Bundle Size</h2>\n<p>The above code will import all the charts and components in ECharts, but if you don\'t want to bring in all the components, you can use the tree-shakeable interface provided by ECharts to bundle the required components and get a minimal bundle.</p>\n<md-code-block lang="js" code="\'Ly8gSW1wb3J0IHRoZSBlY2hhcnRzIGNvcmUgbW9kdWxlLCB3aGljaCBwcm92aWRlcyB0aGUgbmVjZXNzYXJ5IGludGVyZmFjZXMgZm9yIHVzaW5nIGVjaGFydHMuCmltcG9ydCAqIGFzIGVjaGFydHMgZnJvbSAnZWNoYXJ0cy9jb3JlJzsKCi8vIEltcG9ydCBiYXIgY2hhcnRzLCBhbGwgc3VmZml4ZWQgd2l0aCBDaGFydAppbXBvcnQgeyBCYXJDaGFydCB9IGZyb20gJ2VjaGFydHMvY2hhcnRzJzsKCi8vIEltcG9ydCB0aGUgdGl0bGUsIHRvb2x0aXAsIHJlY3Rhbmd1bGFyIGNvb3JkaW5hdGUgc3lzdGVtLCBkYXRhc2V0IGFuZCB0cmFuc2Zvcm0gY29tcG9uZW50cwppbXBvcnQgewogIFRpdGxlQ29tcG9uZW50LAogIFRvb2x0aXBDb21wb25lbnQsCiAgR3JpZENvbXBvbmVudCwKICBEYXRhc2V0Q29tcG9uZW50LAogIFRyYW5zZm9ybUNvbXBvbmVudAp9IGZyb20gJ2VjaGFydHMvY29tcG9uZW50cyc7CgovLyBGZWF0dXJlcyBsaWtlIFVuaXZlcnNhbCBUcmFuc2l0aW9uIGFuZCBMYWJlbCBMYXlvdXQKaW1wb3J0IHsgTGFiZWxMYXlvdXQsIFVuaXZlcnNhbFRyYW5zaXRpb24gfSBmcm9tICdlY2hhcnRzL2ZlYXR1cmVzJzsKCi8vIEltcG9ydCB0aGUgQ2FudmFzIHJlbmRlcmVyCi8vIE5vdGUgdGhhdCBpbmNsdWRpbmcgdGhlIENhbnZhc1JlbmRlcmVyIG9yIFNWR1JlbmRlcmVyIGlzIGEgcmVxdWlyZWQgc3RlcAppbXBvcnQgeyBDYW52YXNSZW5kZXJlciB9IGZyb20gJ2VjaGFydHMvcmVuZGVyZXJzJzsKCi8vIFJlZ2lzdGVyIHRoZSByZXF1aXJlZCBjb21wb25lbnRzCmVjaGFydHMudXNlKFsKICBCYXJDaGFydCwKICBUaXRsZUNvbXBvbmVudCwKICBUb29sdGlwQ29tcG9uZW50LAogIEdyaWRDb21wb25lbnQsCiAgRGF0YXNldENvbXBvbmVudCwKICBUcmFuc2Zvcm1Db21wb25lbnQsCiAgTGFiZWxMYXlvdXQsCiAgVW5pdmVyc2FsVHJhbnNpdGlvbiwKICBDYW52YXNSZW5kZXJlcgpdKTsKCi8vIFRoZSBjaGFydCBpcyBpbml0aWFsaXplZCBhbmQgY29uZmlndXJlZCBpbiB0aGUgc2FtZSBtYW5uZXIgYXMgYmVmb3JlCnZhciBteUNoYXJ0ID0gZWNoYXJ0cy5pbml0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYWluJykpOwpteUNoYXJ0LnNldE9wdGlvbih7CiAgLy8gLi4uCn0pOw\'" line-highlights="\'\'" />\n<blockquote>\n<p>Note that in order to keep the size of the package to a minimum, ECharts does not provide any renderer in the tree-shakeable interface, so you need to choose to import <code>CanvasRenderer</code> or <code>SVGRenderer</code> as the renderer. The advantage of this is that if you only need to use the SVG rendering mode, the bundle will not include the <code>CanvasRenderer</code> module, which is not needed.</p>\n</blockquote>\n<p>The &quot;Full Code&quot; tab on our sample editor page provides a very convenient way to generate a tree-shakable code. It will generate tree-shakable code based on the current option dynamically to use it directly in your project.</p>\n<h2 id="creating-an-option-type-in-typescript" tabindex="-1">Creating an Option Type in TypeScript</h2>\n<p>For developers who are using TypeScript to develop ECharts, type interface is provided to create a minimal <code>EChartsOption</code> type. This type will be stricter than the default one provided because it will know exactly what components are being used. This can help you check for missing components or charts more effectively.</p>\n<md-code-block lang="ts" code="\'aW1wb3J0ICogYXMgZWNoYXJ0cyBmcm9tICdlY2hhcnRzL2NvcmUnOwppbXBvcnQgewogIEJhckNoYXJ0LAogIExpbmVDaGFydCwKfSBmcm9tICdlY2hhcnRzL2NoYXJ0cyc7CmltcG9ydCB7CiAgVGl0bGVDb21wb25lbnQsCiAgVG9vbHRpcENvbXBvbmVudCwKICBHcmlkQ29tcG9uZW50LAogIC8vIERhdGFzZXQKICBEYXRhc2V0Q29tcG9uZW50LAogIC8vIEJ1aWx0LWluIHRyYW5zZm9ybSAoZmlsdGVyLCBzb3J0KQogIFRyYW5zZm9ybUNvbXBvbmVudAp9IGZyb20gJ2VjaGFydHMvY29tcG9uZW50cyc7CmltcG9ydCB7IExhYmVsTGF5b3V0LCBVbml2ZXJzYWxUcmFuc2l0aW9uIH0gZnJvbSAnZWNoYXJ0cy9mZWF0dXJlcyc7CmltcG9ydCB7IENhbnZhc1JlbmRlcmVyIH0gZnJvbSAnZWNoYXJ0cy9yZW5kZXJlcnMnOwppbXBvcnQgdHlwZSB7CiAgLy8gVGhlIHNlcmllcyBvcHRpb24gdHlwZXMgYXJlIGRlZmluZWQgd2l0aCB0aGUgU2VyaWVzT3B0aW9uIHN1ZmZpeAogIEJhclNlcmllc09wdGlvbiwgCiAgTGluZVNlcmllc09wdGlvbiwKfSBmcm9tICdlY2hhcnRzL2NoYXJ0cyc7CmltcG9ydCB0eXBlIHsKICAvLyBUaGUgY29tcG9uZW50IG9wdGlvbiB0eXBlcyBhcmUgZGVmaW5lZCB3aXRoIHRoZSBDb21wb25lbnRPcHRpb24gc3VmZml4CiAgVGl0bGVDb21wb25lbnRPcHRpb24sIAogIFRvb2x0aXBDb21wb25lbnRPcHRpb24sCiAgR3JpZENvbXBvbmVudE9wdGlvbiwKICBEYXRhc2V0Q29tcG9uZW50T3B0aW9uCn0gZnJvbSAnZWNoYXJ0cy9jb21wb25lbnRzJzsKaW1wb3J0IHR5cGUgeyAKICBDb21wb3NlT3B0aW9uLCAKfSBmcm9tICdlY2hhcnRzL2NvcmUnOwoKLy8gQ3JlYXRlIGFuIE9wdGlvbiB0eXBlIHdpdGggb25seSB0aGUgcmVxdWlyZWQgY29tcG9uZW50cyBhbmQgY2hhcnRzIHZpYSBDb21wb3NlT3B0aW9uCnR5cGUgRUNPcHRpb24gPSBDb21wb3NlT3B0aW9uPAogIHwgQmFyU2VyaWVzT3B0aW9uCiAgfCBMaW5lU2VyaWVzT3B0aW9uCiAgfCBUaXRsZUNvbXBvbmVudE9wdGlvbgogIHwgVG9vbHRpcENvbXBvbmVudE9wdGlvbgogIHwgR3JpZENvbXBvbmVudE9wdGlvbgogIHwgRGF0YXNldENvbXBvbmVudE9wdGlvbgo-OwoKLy8gUmVnaXN0ZXIgdGhlIHJlcXVpcmVkIGNvbXBvbmVudHMKZWNoYXJ0cy51c2UoWwogIFRpdGxlQ29tcG9uZW50LAogIFRvb2x0aXBDb21wb25lbnQsCiAgR3JpZENvbXBvbmVudCwKICBEYXRhc2V0Q29tcG9uZW50LAogIFRyYW5zZm9ybUNvbXBvbmVudCwKICBCYXJDaGFydCwKICBMaW5lQ2hhcnQsCiAgTGFiZWxMYXlvdXQsCiAgVW5pdmVyc2FsVHJhbnNpdGlvbiwKICBDYW52YXNSZW5kZXJlcgpdKTsKCmNvbnN0IG9wdGlvbjogRUNPcHRpb24gPSB7CiAgLy8gLi4uCn07\'" line-highlights="\'\'" />\n',postPath:"en/basics/import",title:"Import ECharts - Basics"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:l},{title:"入门篇",dir:d,children:[{title:"获取 ECharts",dir:a},{title:"在项目中引入 ECharts",dir:r},{title:"资源列表",dir:c,draft:t},{title:"寻求帮助",dir:n},{title:"版本特性",dir:o,children:[{title:"ECharts 6 特性介绍",dir:s},{title:"v5 升级 v6 指南",dir:h},{title:"5.0",dir:b},{title:"v4 升级 v5 指南",dir:g},{title:5.2,dir:p},{title:5.3,dir:m},{title:5.4,dir:C},{title:5.5,dir:G},{title:5.6,dir:y}]}]},{title:"概念篇",dir:u,children:[{title:"图表容器及大小",dir:B},{title:"配置项",dir:I,draft:t},{title:"系列",dir:v,draft:t},{title:"样式",dir:Z},{title:"数据集",dir:X},{title:"数据转换",dir:w},{title:"坐标系",dir:W,draft:t},{title:"坐标轴",dir:V},{title:"视觉映射",dir:e},{title:"图例",dir:R},{title:"事件与行为",dir:J}]},{title:"应用篇",dir:Y,children:[{title:"常用图表类型",dir:N,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:F},{title:"堆叠柱状图",dir:A},{title:"动态排序柱状图",dir:f},{title:"极坐标系柱状图",dir:E,draft:t},{title:"阶梯瀑布图",dir:z},{title:"视觉映射的柱状图",dir:e,draft:t}]},{title:"折线图",dir:H,children:[{title:"基础折线图",dir:S},{title:"堆叠折线图",dir:K},{title:"区域面积图",dir:k},{title:"平滑曲线图",dir:L},{title:"阶梯线图",dir:U}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:Q},{title:"圆环图",dir:T},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:M,children:[{title:"基础散点图",dir:x}]}]},{title:"常用组件",dir:D,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:P}]}]},{title:"移动端优化",dir:i,draft:t},{title:"跨平台方案",dir:j,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:O},{title:"数据下钻",dir:q,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:_}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:it,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:et,draft:t},{title:"智能指针吸附",dir:lt}]}]},{title:"最佳实践",dir:dt,children:[{title:"移动端优化",dir:i,draft:t},{title:at,dir:rt},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:ct}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:nt}]}],en:[{title:"Get Started",dir:l},{title:"Basics",dir:d,children:[{title:"Download ECharts",dir:a},{title:"Import ECharts",dir:r},{title:"Resources",dir:c,draft:t},{title:"Get Help",dir:n},{title:"What's New",dir:o,children:[{title:"ECharts 6 Features",dir:s},{title:"Migration from v5 to v6",dir:h},{title:"5.0",dir:b},{title:"Migration from v4 to v5",dir:g},{title:5.2,dir:p},{title:5.3,dir:m},{title:5.4,dir:C},{title:5.5,dir:G},{title:5.6,dir:y}]}]},{title:"Concepts",dir:u,children:[{title:"Chart Container",dir:B},{title:"Chart Option",dir:I,draft:t},{title:"Series",dir:v,draft:t},{title:"Style",dir:Z},{title:"Dataset",dir:X},{title:"Data Transform",dir:w},{title:"Coordinate",dir:W,draft:t},{title:"Axis",dir:V},{title:"Visual Mapping",dir:e},{title:"Legend",dir:R},{title:"Event and Action",dir:J}]},{title:"How To Guides",dir:Y,children:[{title:"Common Charts",dir:N,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:F},{title:"Stacked Bar",dir:A},{title:"Bar Racing",dir:f},{title:"Bar Polar",dir:E,draft:t},{title:"Waterfall",dir:z}]},{title:"Line",dir:H,children:[{title:"Basic Line",dir:S},{title:"Stacked Line",dir:K},{title:"Area Chart",dir:k},{title:"Smoothed Line",dir:L},{title:"Step Line",dir:U}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:Q},{title:"Ring Style",dir:T},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:M,children:[{title:"Basic Scatter",dir:x}]}]},{title:"Common Components",dir:D,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:P}]}]},{title:"Mobile",dir:i,draft:t},{title:"Cross Platform",dir:j,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:O},{title:"Drilldown",dir:q,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:_}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:it,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:et,draft:t},{title:"Intelligent Pointer Snapping",dir:lt}]}]},{title:"Best Practices",dir:dt,children:[{title:"Mobile Optimization",dir:i,draft:t},{title:at,dir:rt},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:ct}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:nt}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/en/basics/import",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/en/basics/release-note/5-2-0/index.html b/docs/en/basics/release-note/5-2-0/index.html
new file mode 100644
index 0000000..b3ac98d
--- /dev/null
+++ b/docs/en/basics/release-note/5-2-0/index.html
@@ -0,0 +1,602 @@
+<!doctype html>
+<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>5.2 - What's New - Basics - Handbook - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="en"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/en/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/en/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/en/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/en/index.html" class="navbar-brand"><img src="https://echarts.apache.org/en/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/en/index.html">Home</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Docs<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/feature.html">Features</a></li><li><a href="https://echarts.apache.org/handbook/en/get-started/">Handbook</a></li><li><a href="https://echarts.apache.org/en/api.html">API</a></li><li><a href="https://echarts.apache.org/en/option.html">Chart Configuration</a></li><li><a href="https://echarts.apache.org/en/changelog.html">Changelog</a></li><li><a href="https://echarts.apache.org/en/faq.html">FAQ</a></li><li><a href="https://echarts.apache.org/handbook/en/basics/release-note/v6-upgrade-guide">V6 Upgrade Guide</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Download<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/download.html">Download</a></li><li><a href="https://echarts.apache.org/en/download-theme.html">Download Themes</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">Download Custom Series<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/download-extension.html">Download Extensions</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/en/index.html">Examples</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Resources<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/spreadsheet.html">Spread Sheet Tool</a></li><li><a href="https://echarts.apache.org/en/theme-builder.html">Theme Builder</a></li><li><a href="https://echarts.apache.org/en/cheat-sheet.html">Cheat Sheet</a></li><li><a href="https://echarts.apache.org/en/resources.html">More Resources</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/events.html">Events</a></li><li><a href="https://echarts.apache.org/en/committers.html">Committers</a></li><li><a href="https://echarts.apache.org/en/maillist.html">Mailing List</a></li><li><a href="https://echarts.apache.org/en/contributing.html">How to Contribute</a></li><li><a href="https://echarts.apache.org/en/dependencies.html">Dependencies</a></li><li><a href="https://echarts.apache.org/en/coding-standard.html">Code Standard</a></li><li><a href="https://github.com/apache/echarts" target="_blank">Source Code (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/security.html">Security</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">License<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">Events<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("zh")'>中文</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/en/get-started" class="nav-link"><span class="title">Get Started</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Basics</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/basics/download" class="nav-link"><span class="title">Download ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/import" class="nav-link"><span class="title">Import ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/basics/help" class="nav-link"><span class="title">Get Help</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">What's New</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 Features</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">Migration from v5 to v6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">Migration from v4 to v5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-2-0" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Concepts</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/concepts/chart-size" class="nav-link"><span class="title">Chart Container</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/style" class="nav-link"><span class="title">Style</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/dataset" class="nav-link"><span class="title">Dataset</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/data-transform" class="nav-link"><span class="title">Data Transform</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/axis" class="nav-link"><span class="title">Axis</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/visual-map" class="nav-link"><span class="title">Visual Mapping</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/legend" class="nav-link"><span class="title">Legend</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/event" class="nav-link"><span class="title">Event and Action</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">How To Guides</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">Common Charts</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Bar</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">Basic Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">Stacked Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">Bar Racing</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">Waterfall</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Line</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">Basic Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">Stacked Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/area-line" class="nav-link"><span class="title">Area Chart</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">Smoothed Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/step-line" class="nav-link"><span class="title">Step Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Pie</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">Basic Pie</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">Ring Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/rose" class="nav-link"><span class="title">Rose Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Scatter</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">Basic Scatter</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Common Components</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Geo</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG Base Map</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">Cross Platform</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/cross-platform/server" class="nav-link"><span class="title">Server Side Rendering</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Data</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/data/dynamic-data" class="nav-link"><span class="title">Dynamic Data</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Label</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/label/rich-text" class="nav-link"><span class="title">Rich Text</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Animation</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/animation/transition" class="nav-link"><span class="title">Data Transition</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Interaction</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/drag" class="nav-link"><span class="title">Drag</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">Intelligent Pointer Snapping</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Best Practices</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/en/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/aria" class="nav-link"><span class="title">Aria</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/security" class="nav-link"><span class="title">Security Guidelines</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Edit Handbook</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/meta/edit-guide" class="nav-link"><span class="title">Edit Guide</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="what's-new-in-apache-echarts-5.2.0" tabindex="-1">What's New in Apache ECharts 5.2.0</h1> <h2 id="universal-transition" tabindex="-1">Universal Transition</h2> <p>Natural and smooth transition animations have been an important feature in Apache ECharts. By avoiding abrupt changes from data update, it not only improves the visual effect, but also provides the possibility to express the association and evolution of data. Therefore, in 5.2.0, we have further enhanced this animation capability. Next, we will see how this <strong>Universal Transition</strong> adds expressiveness and narrative power to the chart.</p> <p>In previous versions, transition animations had certain limitations: they could only be used for the position, size of the same shape, and they could only work on the same type of series. For example, the following example reflects the change in data percent through the change in sector shape in a pie chart.</p> <div class="md-live layout-lr"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">function makeRandomData() {
+  return [
+    {
+      value: Math.random(),
+      name: 'A'
+    },
+    {
+      value: Math.random(),
+      name: 'B'
+    },
+    {
+      value: Math.random(),
+      name: 'C'
+    }
+  ];
+}
+option = {
+  series: [
+    {
+      type: 'pie',
+      radius: [0, '50%'],
+      data: makeRandomData()
+    }
+  ]
+};
+
+setInterval(() => {
+  myChart.setOption({
+    series: {
+      data: makeRandomData()
+    }
+  });
+}, 2000);</textarea><pre data-testid="preview" class="prism-editor__editor"><span class="token keyword">function</span> <span class="token function">makeRandomData</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  <span class="token keyword">return</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">value</span><span class="token operator">:</span> Math<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'A'</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">value</span><span class="token operator">:</span> Math<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'B'</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">value</span><span class="token operator">:</span> Math<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'C'</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span>
+option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'pie'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">radius</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token string">'50%'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token function">makeRandomData</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span>
+
+<span class="token function">setInterval</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
+  myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+    <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token function">makeRandomData</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token number">2000</span><span class="token punctuation">)</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>And starting with 5.2.0, we introduced universal transition, a more powerful animation feature. With that, transitions are no longer limited to between series of the same type. Now, we can use this cross-series morphing to animate between any type of series and any type of shapes.</p> <p>How cool would this be? Let's have a look!</p> <h3 id="morphing-transition-across-series" tabindex="-1">Morphing transition across series</h3> <p>With <code>universalTransition: true</code> set to enable universion transition feature, switching from pie charts to bar charts, or from bar charts to scatter charts, or even between more complex charts like Sunburst and Treemap, can be morphed naturally.</p> <p>As follows, switching between a pie chart and a bar chart.</p> <div class="md-live layout-bt"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">const dataset = {
+  dimensions: ['name', 'score'],
+  source: [
+    ['Hannah Krause', 314],
+    ['Zhao Qian', 351],
+    ['Jasmin Krause ', 287],
+    ['Li Lei', 219],
+    ['Karle Neumann', 253],
+    ['Mia Neumann', 165],
+    ['Böhm Fuchs', 318],
+    ['Han Meimei', 366]
+  ]
+};
+const pieOption = {
+  dataset: [dataset],
+  series: [
+    {
+      type: 'pie',
+      // associate the series to be animated by id
+      id: 'Score',
+      radius: [0, '50%'],
+      universalTransition: true,
+      animationDurationUpdate: 1000
+    }
+  ]
+};
+const barOption = {
+  dataset: [dataset],
+  xAxis: {
+    type: 'category'
+  },
+  yAxis: {},
+  series: [
+    {
+      type: 'bar',
+      // associate the series to be animated by id
+      id: 'Score',
+      // Each data will have a different color
+      colorBy: 'data',
+      encode: { x: 'name', y: 'score' },
+      universalTransition: true,
+      animationDurationUpdate: 1000
+    }
+  ]
+};
+
+option = barOption;
+
+setInterval(() => {
+  option = option === pieOption ? barOption : pieOption;
+  // Use the notMerge form to remove the axes
+  myChart.setOption(option, true);
+}, 2000);</textarea><pre data-testid="preview" class="prism-editor__editor"><span class="token keyword">const</span> dataset <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">dimensions</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'name'</span><span class="token punctuation">,</span> <span class="token string">'score'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">[</span><span class="token string">'Hannah Krause'</span><span class="token punctuation">,</span> <span class="token number">314</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token string">'Zhao Qian'</span><span class="token punctuation">,</span> <span class="token number">351</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token string">'Jasmin Krause '</span><span class="token punctuation">,</span> <span class="token number">287</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token string">'Li Lei'</span><span class="token punctuation">,</span> <span class="token number">219</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token string">'Karle Neumann'</span><span class="token punctuation">,</span> <span class="token number">253</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token string">'Mia Neumann'</span><span class="token punctuation">,</span> <span class="token number">165</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token string">'Böhm Fuchs'</span><span class="token punctuation">,</span> <span class="token number">318</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token string">'Han Meimei'</span><span class="token punctuation">,</span> <span class="token number">366</span><span class="token punctuation">]</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span>
+<span class="token keyword">const</span> pieOption <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">dataset</span><span class="token operator">:</span> <span class="token punctuation">[</span>dataset<span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'pie'</span><span class="token punctuation">,</span>
+      <span class="token comment">// associate the series to be animated by id</span>
+      <span class="token literal-property property">id</span><span class="token operator">:</span> <span class="token string">'Score'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">radius</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token string">'50%'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">universalTransition</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">animationDurationUpdate</span><span class="token operator">:</span> <span class="token number">1000</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span>
+<span class="token keyword">const</span> barOption <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">dataset</span><span class="token operator">:</span> <span class="token punctuation">[</span>dataset<span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'category'</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token comment">// associate the series to be animated by id</span>
+      <span class="token literal-property property">id</span><span class="token operator">:</span> <span class="token string">'Score'</span><span class="token punctuation">,</span>
+      <span class="token comment">// Each data will have a different color</span>
+      <span class="token literal-property property">colorBy</span><span class="token operator">:</span> <span class="token string">'data'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">encode</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token string">'name'</span><span class="token punctuation">,</span> <span class="token literal-property property">y</span><span class="token operator">:</span> <span class="token string">'score'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">universalTransition</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">animationDurationUpdate</span><span class="token operator">:</span> <span class="token number">1000</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span>
+
+option <span class="token operator">=</span> barOption<span class="token punctuation">;</span>
+
+<span class="token function">setInterval</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
+  option <span class="token operator">=</span> option <span class="token operator">===</span> pieOption <span class="token operator">?</span> barOption <span class="token operator">:</span> pieOption<span class="token punctuation">;</span>
+  <span class="token comment">// Use the notMerge form to remove the axes</span>
+  myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span>option<span class="token punctuation">,</span> <span class="token boolean">true</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token number">2000</span><span class="token punctuation">)</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>More transitions between common charts.</p> <p><img src alt data-src="images/5-2-0/universal-transition.gif"></p> <p>Such transitions are no longer limited to just the basic line, bar, and pie charts, but also between bars and maps:</p> <p><img src alt data-src="images/5-2-0/universal-transition-2.gif"></p> <p>or between Sunburst and Treemap, or even between very flexible custom series can be transitions.</p> <p><img src alt data-src="images/5-2-0/universal-transition-3.gif"></p> <blockquote><p>Note that you need to configure the series ids to ensure that there is a one-to-one correspondence between the series that need to be animated for the transition.</p></blockquote> <blockquote><p>Minimal bundle needs to import this feature manually.</p> <pre><code class="language-ts">import { UniversalTransition } from 'echarts/features';
+echarts.use([UniversalTransition]);
+</code></pre></blockquote> <h3 id="data-split-and-merge-animations" tabindex="-1">Data split and merge animations</h3> <p>In addition to the common update of data values, sometimes we also encounter data aggregation, drill-down and other updates after interactions, when we can not directly apply one-to-one transitions, but need to use more animation effects like splitting and merging to express the transformation of data.</p> <p>In order to be able to express the possible many-to-many connections between data, in 5.2.0 we introduced a new concept <code>groupId</code>. We can set the group to the whole series via <a href="https://echarts.apache.org/option.html#series-bar.dataGroupId">series.dataGroupId</a>, or more fine-grained by <a href="https://echarts.apache.org/option.html#series-bar.dataGroupId">series.data.groupId</a> to set the group to which each data belongs. It's even easier if you use a <code>dataset</code> to manage the data, you can use <code>encode.itemGroupId</code> to specify a dimension encoded as <code>groupId</code>.</p> <p>For example, if we want to implement a drill-down animation for a bar chart, we can set the entire series of data after the drill-down to the same <code>groupId</code>, which then corresponds to the data before the drill-down</p> <div class="md-live layout-lr"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    data: ['Animals', 'Fruits', 'Cars']
+  },
+  yAxis: {},
+  dataGroupId: '',
+  animationDurationUpdate: 500,
+  series: {
+    type: 'bar',
+    id: 'sales',
+    data: [
+      {
+        value: 5,
+        groupId: 'animals'
+      },
+      {
+        value: 2,
+        groupId: 'fruits'
+      },
+      {
+        value: 4,
+        groupId: 'cars'
+      }
+    ],
+    universalTransition: {
+      enabled: true,
+      divideShape: 'clone'
+    }
+  }
+};
+
+const drilldownData = [
+  {
+    dataGroupId: 'animals',
+    data: [
+      ['Cats', 4],
+      ['Dogs', 2],
+      ['Cows', 1],
+      ['Sheep', 2],
+      ['Pigs', 1],
+      ['Cows', 1],
+      ['Sheep', 2],
+      ['Pigs', 1]
+    ]
+  },
+  {
+    dataGroupId: 'fruits',
+    data: [
+      ['Apples', 4],
+      ['Oranges', 2],
+      ['Oranges', 2]
+    ]
+  },
+  {
+    dataGroupId: 'cars',
+    data: [
+      ['Toyota', 4],
+      ['Opel', 2],
+      ['Volkswagen', 2],
+      ['Volkswagen', 2]
+    ]
+  }
+];
+
+myChart.on('click', event => {
+  if (event.data) {
+    const subData = drilldownData.find(data => {
+      return data.dataGroupId === event.data.groupId;
+    });
+    if (!subData) {
+      return;
+    }
+    myChart.setOption({
+      xAxis: {
+        data: subData.data.map(item => {
+          return item[0];
+        })
+      },
+      series: {
+        type: 'bar',
+        id: 'sales',
+        dataGroupId: subData.dataGroupId,
+        data: subData.data.map(item => {
+          return item[1];
+        }),
+        universalTransition: {
+          enabled: true,
+          divideShape: 'clone'
+        }
+      },
+      graphic: [
+        {
+          type: 'text',
+          left: 50,
+          top: 20,
+          style: {
+            text: 'Back',
+            fontSize: 18
+          },
+          onclick: function() {
+            myChart.setOption(option, true);
+          }
+        }
+      ]
+    });
+  }
+});</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'Animals'</span><span class="token punctuation">,</span> <span class="token string">'Fruits'</span><span class="token punctuation">,</span> <span class="token string">'Cars'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">dataGroupId</span><span class="token operator">:</span> <span class="token string">''</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">animationDurationUpdate</span><span class="token operator">:</span> <span class="token number">500</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">id</span><span class="token operator">:</span> <span class="token string">'sales'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token punctuation">{</span>
+        <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">5</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">groupId</span><span class="token operator">:</span> <span class="token string">'animals'</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token punctuation">{</span>
+        <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">2</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">groupId</span><span class="token operator">:</span> <span class="token string">'fruits'</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token punctuation">{</span>
+        <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">4</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">groupId</span><span class="token operator">:</span> <span class="token string">'cars'</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">universalTransition</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">enabled</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">divideShape</span><span class="token operator">:</span> <span class="token string">'clone'</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span>
+
+<span class="token keyword">const</span> drilldownData <span class="token operator">=</span> <span class="token punctuation">[</span>
+  <span class="token punctuation">{</span>
+    <span class="token literal-property property">dataGroupId</span><span class="token operator">:</span> <span class="token string">'animals'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token punctuation">[</span><span class="token string">'Cats'</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token string">'Dogs'</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token string">'Cows'</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token string">'Sheep'</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token string">'Pigs'</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token string">'Cows'</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token string">'Sheep'</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token string">'Pigs'</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">]</span>
+    <span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token punctuation">{</span>
+    <span class="token literal-property property">dataGroupId</span><span class="token operator">:</span> <span class="token string">'fruits'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token punctuation">[</span><span class="token string">'Apples'</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token string">'Oranges'</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token string">'Oranges'</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">]</span>
+    <span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token punctuation">{</span>
+    <span class="token literal-property property">dataGroupId</span><span class="token operator">:</span> <span class="token string">'cars'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token punctuation">[</span><span class="token string">'Toyota'</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token string">'Opel'</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token string">'Volkswagen'</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token string">'Volkswagen'</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">]</span>
+    <span class="token punctuation">]</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">]</span><span class="token punctuation">;</span>
+
+myChart<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'click'</span><span class="token punctuation">,</span> <span class="token parameter">event</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
+  <span class="token keyword">if</span> <span class="token punctuation">(</span>event<span class="token punctuation">.</span>data<span class="token punctuation">)</span> <span class="token punctuation">{</span>
+    <span class="token keyword">const</span> subData <span class="token operator">=</span> drilldownData<span class="token punctuation">.</span><span class="token function">find</span><span class="token punctuation">(</span><span class="token parameter">data</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
+      <span class="token keyword">return</span> data<span class="token punctuation">.</span>dataGroupId <span class="token operator">===</span> event<span class="token punctuation">.</span>data<span class="token punctuation">.</span>groupId<span class="token punctuation">;</span>
+    <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+    <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>subData<span class="token punctuation">)</span> <span class="token punctuation">{</span>
+      <span class="token keyword">return</span><span class="token punctuation">;</span>
+    <span class="token punctuation">}</span>
+    myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+      <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">data</span><span class="token operator">:</span> subData<span class="token punctuation">.</span>data<span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span><span class="token parameter">item</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
+          <span class="token keyword">return</span> item<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
+        <span class="token punctuation">}</span><span class="token punctuation">)</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">id</span><span class="token operator">:</span> <span class="token string">'sales'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">dataGroupId</span><span class="token operator">:</span> subData<span class="token punctuation">.</span>dataGroupId<span class="token punctuation">,</span>
+        <span class="token literal-property property">data</span><span class="token operator">:</span> subData<span class="token punctuation">.</span>data<span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span><span class="token parameter">item</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
+          <span class="token keyword">return</span> item<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
+        <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">universalTransition</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+          <span class="token literal-property property">enabled</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">divideShape</span><span class="token operator">:</span> <span class="token string">'clone'</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">graphic</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'text'</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">left</span><span class="token operator">:</span> <span class="token number">50</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">top</span><span class="token operator">:</span> <span class="token number">20</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">style</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+            <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'Back'</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">fontSize</span><span class="token operator">:</span> <span class="token number">18</span>
+          <span class="token punctuation">}</span><span class="token punctuation">,</span>
+          <span class="token function-variable function">onclick</span><span class="token operator">:</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+            myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span>option<span class="token punctuation">,</span> <span class="token boolean">true</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+          <span class="token punctuation">}</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>With <code>groupId</code>, we can also implement richer aggregation and drill-down animations.</p> <p>Aggregation of data.</p> <p><img src alt data-src="images/5-2-0/group-transition.gif"></p> <p>Drilling down of a single series into two series:</p> <p><img src alt data-src="images/5-2-0/group-transition-2.gif"></p> <p>Universal transition take the ability to express the relationships and evolution of data to a new level, giving wings to your visualization creation inspiration.</p> <p>At this point, we know you're already eager to try it out. But don't worry, there are even more new features in 5.2.0 that are worth checking out.</p> <h2 id="color-palette-picking-strategy" tabindex="-1">Color palette picking strategy</h2> <p>In the above universal transition example, you may have noticed that we use a <code>colorBy</code> configuration that was not available in the previous version. This configuration is also a new feature we added in this version to configure different granularity of color palette color picking for the series. This configuration currently supports two strategies.</p> <ul><li><code>'series'</code> assigns the colors in the palette by series, so that all data in the same series are in the same color.</li> <li><code>'data'</code> assigns colors in the palette according to data items, with each data item using a different color.</li></ul> <p>Previously, we fixed this strategy for each type of series, for example, the bar chart was fixed with <code>'series'</code> and the pie chart was fixed with <code>'data'</code>.</p> <p>And now with this new feature, we can assign a different color to each data item in the bar chart.</p> <div class="md-live layout-lr"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    type: 'category',
+    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
+  },
+  yAxis: {
+    type: 'value'
+  },
+  series: [
+    {
+      data: [120, 200, 150, 80, 70, 110, 130],
+      type: 'bar',
+      colorBy: 'data'
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'category'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'Mon'</span><span class="token punctuation">,</span> <span class="token string">'Tue'</span><span class="token punctuation">,</span> <span class="token string">'Wed'</span><span class="token punctuation">,</span> <span class="token string">'Thu'</span><span class="token punctuation">,</span> <span class="token string">'Fri'</span><span class="token punctuation">,</span> <span class="token string">'Sat'</span><span class="token punctuation">,</span> <span class="token string">'Sun'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'value'</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">120</span><span class="token punctuation">,</span> <span class="token number">200</span><span class="token punctuation">,</span> <span class="token number">150</span><span class="token punctuation">,</span> <span class="token number">80</span><span class="token punctuation">,</span> <span class="token number">70</span><span class="token punctuation">,</span> <span class="token number">110</span><span class="token punctuation">,</span> <span class="token number">130</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">colorBy</span><span class="token operator">:</span> <span class="token string">'data'</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>Or use one color uniformly in the pie chart.</p> <div class="md-live layout-lr"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  series: {
+    type: 'pie',
+    colorBy: 'series',
+    radius: [0, '50%'],
+    itemStyle: {
+      borderColor: '#fff',
+      borderWidth: 1
+    },
+    data: [
+      {
+        value: 335,
+        name: 'Direct Visit'
+      },
+      {
+        value: 234,
+        name: 'Union Ad'
+      },
+      {
+        value: 1548,
+        name: 'Search Engine'
+      }
+    ]
+  }
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'pie'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">colorBy</span><span class="token operator">:</span> <span class="token string">'series'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">radius</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token string">'50%'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">itemStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">borderColor</span><span class="token operator">:</span> <span class="token string">'#fff'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">borderWidth</span><span class="token operator">:</span> <span class="token number">1</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token punctuation">{</span>
+        <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">335</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Direct Visit'</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token punctuation">{</span>
+        <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">234</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Union Ad'</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token punctuation">{</span>
+        <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">1548</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Search Engine'</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">]</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>This configuration allows us to avoid the trouble of finding palette colors and setting them one by one, and may provide convenience in specific scenarios. We will further enhance this configuration later to provide more strategies.</p> <h2 id="labels-for-polar-bar-charts" tabindex="-1">Labels for polar bar charts</h2> <p>In this version we have implemented labels for bar charts on polar coordinates and support rich label positioning configurations. The following is a progress chart with labels displayed at the start points.</p> <div class="md-live layout-lr"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  angleAxis: {
+    show: false,
+    max: 10
+  },
+  radiusAxis: {
+    show: false,
+    type: 'category',
+    data: ['AAA', 'BBB', 'CCC', 'DDD']
+  },
+  polar: {},
+  series: [
+    {
+      type: 'bar',
+      data: [3, 4, 5, 6],
+      colorBy: 'data',
+      roundCap: true,
+      label: {
+        show: true,
+        // Try changing it to 'insideStart'
+        position: 'start',
+        formatter: '{b}'
+      },
+      coordinateSystem: 'polar'
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">angleAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">max</span><span class="token operator">:</span> <span class="token number">10</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">radiusAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'category'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'AAA'</span><span class="token punctuation">,</span> <span class="token string">'BBB'</span><span class="token punctuation">,</span> <span class="token string">'CCC'</span><span class="token punctuation">,</span> <span class="token string">'DDD'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">polar</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">6</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">colorBy</span><span class="token operator">:</span> <span class="token string">'data'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">roundCap</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+        <span class="token comment">// Try changing it to 'insideStart'</span>
+        <span class="token literal-property property">position</span><span class="token operator">:</span> <span class="token string">'start'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">formatter</span><span class="token operator">:</span> <span class="token string">'{b}'</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">coordinateSystem</span><span class="token operator">:</span> <span class="token string">'polar'</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>More configurations for label positions.</p> <p><img src alt data-src="images/5-2-0/polar-bar-label.jpg"></p> <p>This flexible label position configuration item greatly enriches the expressiveness of the polar bar chart, allowing the text to clearly match the corresponding data.</p> <h2 id="pie-chart-style-for-empty-data" tabindex="-1">Pie chart style for empty data</h2> <p>In the previous version, if there was no data in the pie chart, the screen might be completely blank. Because there was no visual element, users may wonder if there was a bug.</p> <p>To solve this problem, in this version we will default to display a gray placeholder circle when there is no data to prevent the screen from being completely blank. We can configure the style of this placeholder circle with <code>emptyCircleStyle</code>.</p> <div class="md-live layout-lr"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  series: [
+    {
+      type: 'pie',
+      data: [],
+      // showEmptyCircle: false,
+      emptyCircleStyle: {
+        // change the style to empty circle
+        color: 'transparent',
+        borderColor: '#ddd',
+        borderWidth: 1
+      }
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'pie'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token comment">// showEmptyCircle: false,</span>
+      <span class="token literal-property property">emptyCircleStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token comment">// change the style to empty circle</span>
+        <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'transparent'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">borderColor</span><span class="token operator">:</span> <span class="token string">'#ddd'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">borderWidth</span><span class="token operator">:</span> <span class="token number">1</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>If you don't want to show this gray circle, you can also set <code>showEmptyCircle: false</code> to turn it off.</p> <h2 id="performance-enhancements-for-high-dimensional-data" tabindex="-1">Performance enhancements for high-dimensional data</h2> <p>We have introduced <a href="https://echarts.apache.org/option.html#dataset">dataset</a> since 4.0 to manage chart data. However, in some extreme scenarios with particularly high-dimensional (>100) data, we may encounter some dramatic performance degradation, such as the following scenario of visualizing a thousand-dimensional data through a thousand series (<a href="https://github.com/apache/echarts/issues/11907">#11907</a>), which may even may lead to getting stuck.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">const</span> indices <span class="token operator">=</span> Array<span class="token punctuation">.</span><span class="token function">from</span><span class="token punctuation">(</span><span class="token function">Array</span><span class="token punctuation">(</span><span class="token number">1000</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token parameter">_<span class="token punctuation">,</span> i</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
+  <span class="token keyword">return</span> <span class="token template-string"><span class="token template-punctuation string">`</span><span class="token string">index</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>i<span class="token interpolation-punctuation punctuation">}</span></span><span class="token template-punctuation string">`</span></span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token keyword">const</span> option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'category'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">dataset</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token comment">// dimension: ['date', . . indices],</span>
+    <span class="token literal-property property">source</span><span class="token operator">:</span> Array<span class="token punctuation">.</span><span class="token function">from</span><span class="token punctuation">(</span><span class="token function">Array</span><span class="token punctuation">(</span><span class="token number">10</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token parameter">_<span class="token punctuation">,</span> i</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
+      <span class="token keyword">return</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">date</span><span class="token operator">:</span> i<span class="token punctuation">,</span>
+        <span class="token operator">...</span> <span class="token punctuation">.</span>indices<span class="token punctuation">.</span><span class="token function">reduce</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token parameter">item<span class="token punctuation">,</span> next</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
+          item<span class="token punctuation">[</span>next<span class="token punctuation">]</span> <span class="token operator">=</span> Math<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">*</span> <span class="token number">100</span><span class="token punctuation">;</span>
+          <span class="token keyword">return</span> item<span class="token punctuation">;</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">)</span>
+      <span class="token punctuation">}</span><span class="token punctuation">;</span>
+    <span class="token punctuation">}</span><span class="token punctuation">)</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> indices<span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span><span class="token parameter">index</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
+    <span class="token keyword">return</span> <span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span><span class="token punctuation">,</span> <span class="token literal-property property">name</span><span class="token operator">:</span> index <span class="token punctuation">}</span><span class="token punctuation">;</span>
+  <span class="token punctuation">}</span><span class="token punctuation">)</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>The reason for this performance problem is that we process the high-dimensional dataset at the bottom of each series as needed and save a copy of the processed data and the meta information about the dimensions of the data. This meant that the <code>1000 x 1000</code> dimensions had to be processed and saved in the example, which put a huge pressure on memory and garbage collection, resulting in a dramatic performance drop for high dimensions.</p> <p>In the new version we have optimized this problem so that all series share the dataset storage as much as possible (whether or not they do depends on how the series uses the data).
+This optimization ensure that memory does not explode as the dataset dimensions and series grow, significantly improving initialization performance in this extreme scenario. The rendering time for the example just described has also been reduced to an acceptable 300 ms or less.</p> <p>It is not just this high-dimensional scenario that benefits from this optimization. When using a dataset with large amount of data, multiple series only process the data once because of data sharing, so it can also bring significant performance gains.</p> <h2 id="type-optimization-for-custom-series" tabindex="-1">Type optimization for custom series</h2> <p>Custom series provide a very flexible way to create series graphs. Compared to other series, the learning curve for custom series can be a bit steep. Therefore, in this release, we have further optimized the type of the core method <code>renderItem</code> in the custom series by making more precise inferences about the types of the parameters and return values of <code>renderItem</code>, so that it is possible to infer which properties of the elements can be set based on the type returned:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code>series <span class="token operator">=</span> <span class="token punctuation">{</span>
+  type<span class="token operator">:</span> <span class="token string">'custom'</span><span class="token punctuation">,</span>
+  <span class="token function">renderItem</span><span class="token punctuation">(</span>params<span class="token punctuation">)</span> <span class="token punctuation">{</span>
+    <span class="token keyword">return</span> <span class="token punctuation">{</span>
+      type<span class="token operator">:</span> <span class="token string">'group'</span><span class="token punctuation">,</span>
+      <span class="token comment">// The group type uses children to store children of other types</span>
+      children<span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">{</span>
+          type<span class="token operator">:</span> <span class="token string">'circle'</span><span class="token punctuation">,</span>
+          <span class="token comment">// circle has the following configurable shape attributes</span>
+          shape<span class="token operator">:</span> <span class="token punctuation">{</span> r<span class="token operator">:</span> <span class="token number">10</span><span class="token punctuation">,</span> cx<span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span> cy<span class="token operator">:</span> <span class="token number">0</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+          <span class="token comment">// Configurable styles</span>
+          style<span class="token operator">:</span> <span class="token punctuation">{</span> fill<span class="token operator">:</span> <span class="token string">'red'</span> <span class="token punctuation">}</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span>
+          type<span class="token operator">:</span> <span class="token string">'rect'</span><span class="token punctuation">,</span>
+          <span class="token comment">// rect has the following configurable shape properties</span>
+          shape<span class="token operator">:</span> <span class="token punctuation">{</span> x<span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span> y<span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span> width<span class="token operator">:</span> <span class="token number">100</span><span class="token punctuation">,</span> height<span class="token operator">:</span> <span class="token number">100</span> <span class="token punctuation">}</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span>
+          type<span class="token operator">:</span> <span class="token string">'path'</span><span class="token punctuation">,</span>
+          <span class="token comment">// Custom path shapes</span>
+          shape<span class="token operator">:</span> <span class="token punctuation">{</span> d<span class="token operator">:</span> <span class="token string">'...'</span> <span class="token punctuation">}</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">;</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="summary" tabindex="-1">Summary</h2> <p>If you're interested in some of the features and optimizations in 5.2.0, you may want to update to the latest version of Apache ECharts and try it out for yourself.</p> <p>If you're interested in what's next for Apache ECharts, you can also follow our development plans at <a href="https://github.com/apache/echarts/milestones">GitHub Milestone</a>. Feel free to join us as a contributor (learn more at <a href="https://github.com/apache/echarts/wiki">Wiki</a>).</p> <h2 id="full-changelog" tabindex="-1">Full Changelog</h2> <p>View the <a href="https://echarts.apache.org//changelog.html#v5-2-0">Changelog</a></p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">Contributors</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/en/basics/release-note/5-2-0.md" title="Edit this Document" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">Edit this page on GitHub</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a><a href="https://github.com/Ovilia" target="_blank" class="post-contributor has-avatar"><img alt="Ovilia" src="https://echarts.apache.org/en/images/people/羡辙.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>Ovilia</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(e,t,i,a,o,g,n,r,s,d,l,I,C,c,h,A,p,m,b,u,w,f,B,y,G,v,Z,X,H,R,W,J,F,K,Y,S,k,V,N,L,x,z,T,D,U,O,M,E,Q,j,P,_,q,$,ee,te,ie,ae,oe,ge,ne,re,se){return{layout:"default",data:[{html:'<h1 id="what\'s-new-in-apache-echarts-5.2.0" tabindex="-1">What\'s New in Apache ECharts 5.2.0</h1>\n<h2 id="universal-transition" tabindex="-1">Universal Transition</h2>\n<p>Natural and smooth transition animations have been an important feature in Apache ECharts. By avoiding abrupt changes from data update, it not only improves the visual effect, but also provides the possibility to express the association and evolution of data. Therefore, in 5.2.0, we have further enhanced this animation capability. Next, we will see how this <strong>Universal Transition</strong> adds expressiveness and narrative power to the chart.</p>\n<p>In previous versions, transition animations had certain limitations: they could only be used for the position, size of the same shape, and they could only work on the same type of series. For example, the following example reflects the change in data percent through the change in sector shape in a pie chart.</p>\n<md-live lang="js" code="\'ZnVuY3Rpb24gbWFrZVJhbmRvbURhdGEoKSB7CiAgcmV0dXJuIFsKICAgIHsKICAgICAgdmFsdWU6IE1hdGgucmFuZG9tKCksCiAgICAgIG5hbWU6ICdBJwogICAgfSwKICAgIHsKICAgICAgdmFsdWU6IE1hdGgucmFuZG9tKCksCiAgICAgIG5hbWU6ICdCJwogICAgfSwKICAgIHsKICAgICAgdmFsdWU6IE1hdGgucmFuZG9tKCksCiAgICAgIG5hbWU6ICdDJwogICAgfQogIF07Cn0Kb3B0aW9uID0gewogIHNlcmllczogWwogICAgewogICAgICB0eXBlOiAncGllJywKICAgICAgcmFkaXVzOiBbMCwgJzUwJSddLAogICAgICBkYXRhOiBtYWtlUmFuZG9tRGF0YSgpCiAgICB9CiAgXQp9OwoKc2V0SW50ZXJ2YWwoKCkgPT4gewogIG15Q2hhcnQuc2V0T3B0aW9uKHsKICAgIHNlcmllczogewogICAgICBkYXRhOiBtYWtlUmFuZG9tRGF0YSgpCiAgICB9CiAgfSk7Cn0sIDIwMDApOw\'" v-bind="{layout: \'lr\'}" />\n<p>And starting with 5.2.0, we introduced universal transition, a more powerful animation feature. With that, transitions are no longer limited to between series of the same type. Now, we can use this cross-series morphing to animate between any type of series and any type of shapes.</p>\n<p>How cool would this be? Let\'s have a look!</p>\n<h3 id="morphing-transition-across-series" tabindex="-1">Morphing transition across series</h3>\n<p>With <code>universalTransition: true</code> set to enable universion transition feature, switching from pie charts to bar charts, or from bar charts to scatter charts, or even between more complex charts like Sunburst and Treemap, can be morphed naturally.</p>\n<p>As follows, switching between a pie chart and a bar chart.</p>\n<md-live lang="js" code="\'Y29uc3QgZGF0YXNldCA9IHsKICBkaW1lbnNpb25zOiBbJ25hbWUnLCAnc2NvcmUnXSwKICBzb3VyY2U6IFsKICAgIFsnSGFubmFoIEtyYXVzZScsIDMxNF0sCiAgICBbJ1poYW8gUWlhbicsIDM1MV0sCiAgICBbJ0phc21pbiBLcmF1c2UgJywgMjg3XSwKICAgIFsnTGkgTGVpJywgMjE5XSwKICAgIFsnS2FybGUgTmV1bWFubicsIDI1M10sCiAgICBbJ01pYSBOZXVtYW5uJywgMTY1XSwKICAgIFsnQsO2aG0gRnVjaHMnLCAzMThdLAogICAgWydIYW4gTWVpbWVpJywgMzY2XQogIF0KfTsKY29uc3QgcGllT3B0aW9uID0gewogIGRhdGFzZXQ6IFtkYXRhc2V0XSwKICBzZXJpZXM6IFsKICAgIHsKICAgICAgdHlwZTogJ3BpZScsCiAgICAgIC8vIGFzc29jaWF0ZSB0aGUgc2VyaWVzIHRvIGJlIGFuaW1hdGVkIGJ5IGlkCiAgICAgIGlkOiAnU2NvcmUnLAogICAgICByYWRpdXM6IFswLCAnNTAlJ10sCiAgICAgIHVuaXZlcnNhbFRyYW5zaXRpb246IHRydWUsCiAgICAgIGFuaW1hdGlvbkR1cmF0aW9uVXBkYXRlOiAxMDAwCiAgICB9CiAgXQp9Owpjb25zdCBiYXJPcHRpb24gPSB7CiAgZGF0YXNldDogW2RhdGFzZXRdLAogIHhBeGlzOiB7CiAgICB0eXBlOiAnY2F0ZWdvcnknCiAgfSwKICB5QXhpczoge30sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIHR5cGU6ICdiYXInLAogICAgICAvLyBhc3NvY2lhdGUgdGhlIHNlcmllcyB0byBiZSBhbmltYXRlZCBieSBpZAogICAgICBpZDogJ1Njb3JlJywKICAgICAgLy8gRWFjaCBkYXRhIHdpbGwgaGF2ZSBhIGRpZmZlcmVudCBjb2xvcgogICAgICBjb2xvckJ5OiAnZGF0YScsCiAgICAgIGVuY29kZTogeyB4OiAnbmFtZScsIHk6ICdzY29yZScgfSwKICAgICAgdW5pdmVyc2FsVHJhbnNpdGlvbjogdHJ1ZSwKICAgICAgYW5pbWF0aW9uRHVyYXRpb25VcGRhdGU6IDEwMDAKICAgIH0KICBdCn07CgpvcHRpb24gPSBiYXJPcHRpb247CgpzZXRJbnRlcnZhbCgoKSA9PiB7CiAgb3B0aW9uID0gb3B0aW9uID09PSBwaWVPcHRpb24gPyBiYXJPcHRpb24gOiBwaWVPcHRpb247CiAgLy8gVXNlIHRoZSBub3RNZXJnZSBmb3JtIHRvIHJlbW92ZSB0aGUgYXhlcwogIG15Q2hhcnQuc2V0T3B0aW9uKG9wdGlvbiwgdHJ1ZSk7Cn0sIDIwMDApOw\'" v-bind="{layout: \'bt\'}" />\n<p>More transitions between common charts.</p>\n<p><img src="" alt="" data-src="images/5-2-0/universal-transition.gif"></p>\n<p>Such transitions are no longer limited to just the basic line, bar, and pie charts, but also between bars and maps:</p>\n<p><img src="" alt="" data-src="images/5-2-0/universal-transition-2.gif"></p>\n<p>or between Sunburst and Treemap, or even between very flexible custom series can be transitions.</p>\n<p><img src="" alt="" data-src="images/5-2-0/universal-transition-3.gif"></p>\n<blockquote>\n<p>Note that you need to configure the series ids to ensure that there is a one-to-one correspondence between the series that need to be animated for the transition.</p>\n</blockquote>\n<blockquote>\n<p>Minimal bundle needs to import this feature manually.</p>\n<pre><code class="language-ts">import { UniversalTransition } from \'echarts/features\';\necharts.use([UniversalTransition]);\n</code></pre>\n</blockquote>\n<h3 id="data-split-and-merge-animations" tabindex="-1">Data split and merge animations</h3>\n<p>In addition to the common update of data values, sometimes we also encounter data aggregation, drill-down and other updates after interactions, when we can not directly apply one-to-one transitions, but need to use more animation effects like splitting and merging to express the transformation of data.</p>\n<p>In order to be able to express the possible many-to-many connections between data, in 5.2.0 we introduced a new concept <code>groupId</code>. We can set the group to the whole series via <a href="https://echarts.apache.org/option.html#series-bar.dataGroupId">series.dataGroupId</a>, or more fine-grained by <a href="https://echarts.apache.org/option.html#series-bar.dataGroupId">series.data.groupId</a> to set the group to which each data belongs. It\'s even easier if you use a <code>dataset</code> to manage the data, you can use <code>encode.itemGroupId</code> to specify a dimension encoded as <code>groupId</code>.</p>\n<p>For example, if we want to implement a drill-down animation for a bar chart, we can set the entire series of data after the drill-down to the same <code>groupId</code>, which then corresponds to the data before the drill-down</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBkYXRhOiBbJ0FuaW1hbHMnLCAnRnJ1aXRzJywgJ0NhcnMnXQogIH0sCiAgeUF4aXM6IHt9LAogIGRhdGFHcm91cElkOiAnJywKICBhbmltYXRpb25EdXJhdGlvblVwZGF0ZTogNTAwLAogIHNlcmllczogewogICAgdHlwZTogJ2JhcicsCiAgICBpZDogJ3NhbGVzJywKICAgIGRhdGE6IFsKICAgICAgewogICAgICAgIHZhbHVlOiA1LAogICAgICAgIGdyb3VwSWQ6ICdhbmltYWxzJwogICAgICB9LAogICAgICB7CiAgICAgICAgdmFsdWU6IDIsCiAgICAgICAgZ3JvdXBJZDogJ2ZydWl0cycKICAgICAgfSwKICAgICAgewogICAgICAgIHZhbHVlOiA0LAogICAgICAgIGdyb3VwSWQ6ICdjYXJzJwogICAgICB9CiAgICBdLAogICAgdW5pdmVyc2FsVHJhbnNpdGlvbjogewogICAgICBlbmFibGVkOiB0cnVlLAogICAgICBkaXZpZGVTaGFwZTogJ2Nsb25lJwogICAgfQogIH0KfTsKCmNvbnN0IGRyaWxsZG93bkRhdGEgPSBbCiAgewogICAgZGF0YUdyb3VwSWQ6ICdhbmltYWxzJywKICAgIGRhdGE6IFsKICAgICAgWydDYXRzJywgNF0sCiAgICAgIFsnRG9ncycsIDJdLAogICAgICBbJ0Nvd3MnLCAxXSwKICAgICAgWydTaGVlcCcsIDJdLAogICAgICBbJ1BpZ3MnLCAxXSwKICAgICAgWydDb3dzJywgMV0sCiAgICAgIFsnU2hlZXAnLCAyXSwKICAgICAgWydQaWdzJywgMV0KICAgIF0KICB9LAogIHsKICAgIGRhdGFHcm91cElkOiAnZnJ1aXRzJywKICAgIGRhdGE6IFsKICAgICAgWydBcHBsZXMnLCA0XSwKICAgICAgWydPcmFuZ2VzJywgMl0sCiAgICAgIFsnT3JhbmdlcycsIDJdCiAgICBdCiAgfSwKICB7CiAgICBkYXRhR3JvdXBJZDogJ2NhcnMnLAogICAgZGF0YTogWwogICAgICBbJ1RveW90YScsIDRdLAogICAgICBbJ09wZWwnLCAyXSwKICAgICAgWydWb2xrc3dhZ2VuJywgMl0sCiAgICAgIFsnVm9sa3N3YWdlbicsIDJdCiAgICBdCiAgfQpdOwoKbXlDaGFydC5vbignY2xpY2snLCBldmVudCA9PiB7CiAgaWYgKGV2ZW50LmRhdGEpIHsKICAgIGNvbnN0IHN1YkRhdGEgPSBkcmlsbGRvd25EYXRhLmZpbmQoZGF0YSA9PiB7CiAgICAgIHJldHVybiBkYXRhLmRhdGFHcm91cElkID09PSBldmVudC5kYXRhLmdyb3VwSWQ7CiAgICB9KTsKICAgIGlmICghc3ViRGF0YSkgewogICAgICByZXR1cm47CiAgICB9CiAgICBteUNoYXJ0LnNldE9wdGlvbih7CiAgICAgIHhBeGlzOiB7CiAgICAgICAgZGF0YTogc3ViRGF0YS5kYXRhLm1hcChpdGVtID0-IHsKICAgICAgICAgIHJldHVybiBpdGVtWzBdOwogICAgICAgIH0pCiAgICAgIH0sCiAgICAgIHNlcmllczogewogICAgICAgIHR5cGU6ICdiYXInLAogICAgICAgIGlkOiAnc2FsZXMnLAogICAgICAgIGRhdGFHcm91cElkOiBzdWJEYXRhLmRhdGFHcm91cElkLAogICAgICAgIGRhdGE6IHN1YkRhdGEuZGF0YS5tYXAoaXRlbSA9PiB7CiAgICAgICAgICByZXR1cm4gaXRlbVsxXTsKICAgICAgICB9KSwKICAgICAgICB1bml2ZXJzYWxUcmFuc2l0aW9uOiB7CiAgICAgICAgICBlbmFibGVkOiB0cnVlLAogICAgICAgICAgZGl2aWRlU2hhcGU6ICdjbG9uZScKICAgICAgICB9CiAgICAgIH0sCiAgICAgIGdyYXBoaWM6IFsKICAgICAgICB7CiAgICAgICAgICB0eXBlOiAndGV4dCcsCiAgICAgICAgICBsZWZ0OiA1MCwKICAgICAgICAgIHRvcDogMjAsCiAgICAgICAgICBzdHlsZTogewogICAgICAgICAgICB0ZXh0OiAnQmFjaycsCiAgICAgICAgICAgIGZvbnRTaXplOiAxOAogICAgICAgICAgfSwKICAgICAgICAgIG9uY2xpY2s6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBteUNoYXJ0LnNldE9wdGlvbihvcHRpb24sIHRydWUpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXQogICAgfSk7CiAgfQp9KTs\'" v-bind="{layout: \'lr\'}" />\n<p>With <code>groupId</code>, we can also implement richer aggregation and drill-down animations.</p>\n<p>Aggregation of data.</p>\n<p><img src="" alt="" data-src="images/5-2-0/group-transition.gif"></p>\n<p>Drilling down of a single series into two series:</p>\n<p><img src="" alt="" data-src="images/5-2-0/group-transition-2.gif"></p>\n<p>Universal transition take the ability to express the relationships and evolution of data to a new level, giving wings to your visualization creation inspiration.</p>\n<p>At this point, we know you\'re already eager to try it out. But don\'t worry, there are even more new features in 5.2.0 that are worth checking out.</p>\n<h2 id="color-palette-picking-strategy" tabindex="-1">Color palette picking strategy</h2>\n<p>In the above universal transition example, you may have noticed that we use a <code>colorBy</code> configuration that was not available in the previous version. This configuration is also a new feature we added in this version to configure different granularity of color palette color picking for the series. This configuration currently supports two strategies.</p>\n<ul>\n<li><code>\'series\'</code> assigns the colors in the palette by series, so that all data in the same series are in the same color.</li>\n<li><code>\'data\'</code> assigns colors in the palette according to data items, with each data item using a different color.</li>\n</ul>\n<p>Previously, we fixed this strategy for each type of series, for example, the bar chart was fixed with <code>\'series\'</code> and the pie chart was fixed with <code>\'data\'</code>.</p>\n<p>And now with this new feature, we can assign a different color to each data item in the bar chart.</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICB0eXBlOiAnY2F0ZWdvcnknLAogICAgZGF0YTogWydNb24nLCAnVHVlJywgJ1dlZCcsICdUaHUnLCAnRnJpJywgJ1NhdCcsICdTdW4nXQogIH0sCiAgeUF4aXM6IHsKICAgIHR5cGU6ICd2YWx1ZScKICB9LAogIHNlcmllczogWwogICAgewogICAgICBkYXRhOiBbMTIwLCAyMDAsIDE1MCwgODAsIDcwLCAxMTAsIDEzMF0sCiAgICAgIHR5cGU6ICdiYXInLAogICAgICBjb2xvckJ5OiAnZGF0YScKICAgIH0KICBdCn07\'" v-bind="{layout: \'lr\'}" />\n<p>Or use one color uniformly in the pie chart.</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHNlcmllczogewogICAgdHlwZTogJ3BpZScsCiAgICBjb2xvckJ5OiAnc2VyaWVzJywKICAgIHJhZGl1czogWzAsICc1MCUnXSwKICAgIGl0ZW1TdHlsZTogewogICAgICBib3JkZXJDb2xvcjogJyNmZmYnLAogICAgICBib3JkZXJXaWR0aDogMQogICAgfSwKICAgIGRhdGE6IFsKICAgICAgewogICAgICAgIHZhbHVlOiAzMzUsCiAgICAgICAgbmFtZTogJ0RpcmVjdCBWaXNpdCcKICAgICAgfSwKICAgICAgewogICAgICAgIHZhbHVlOiAyMzQsCiAgICAgICAgbmFtZTogJ1VuaW9uIEFkJwogICAgICB9LAogICAgICB7CiAgICAgICAgdmFsdWU6IDE1NDgsCiAgICAgICAgbmFtZTogJ1NlYXJjaCBFbmdpbmUnCiAgICAgIH0KICAgIF0KICB9Cn07\'" v-bind="{layout: \'lr\'}" />\n<p>This configuration allows us to avoid the trouble of finding palette colors and setting them one by one, and may provide convenience in specific scenarios. We will further enhance this configuration later to provide more strategies.</p>\n<h2 id="labels-for-polar-bar-charts" tabindex="-1">Labels for polar bar charts</h2>\n<p>In this version we have implemented labels for bar charts on polar coordinates and support rich label positioning configurations. The following is a progress chart with labels displayed at the start points.</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIGFuZ2xlQXhpczogewogICAgc2hvdzogZmFsc2UsCiAgICBtYXg6IDEwCiAgfSwKICByYWRpdXNBeGlzOiB7CiAgICBzaG93OiBmYWxzZSwKICAgIHR5cGU6ICdjYXRlZ29yeScsCiAgICBkYXRhOiBbJ0FBQScsICdCQkInLCAnQ0NDJywgJ0RERCddCiAgfSwKICBwb2xhcjoge30sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIHR5cGU6ICdiYXInLAogICAgICBkYXRhOiBbMywgNCwgNSwgNl0sCiAgICAgIGNvbG9yQnk6ICdkYXRhJywKICAgICAgcm91bmRDYXA6IHRydWUsCiAgICAgIGxhYmVsOiB7CiAgICAgICAgc2hvdzogdHJ1ZSwKICAgICAgICAvLyBUcnkgY2hhbmdpbmcgaXQgdG8gJ2luc2lkZVN0YXJ0JwogICAgICAgIHBvc2l0aW9uOiAnc3RhcnQnLAogICAgICAgIGZvcm1hdHRlcjogJ3tifScKICAgICAgfSwKICAgICAgY29vcmRpbmF0ZVN5c3RlbTogJ3BvbGFyJwogICAgfQogIF0KfTs\'" v-bind="{layout: \'lr\'}" />\n<p>More configurations for label positions.</p>\n<p><img src="" alt="" data-src="images/5-2-0/polar-bar-label.jpg"></p>\n<p>This flexible label position configuration item greatly enriches the expressiveness of the polar bar chart, allowing the text to clearly match the corresponding data.</p>\n<h2 id="pie-chart-style-for-empty-data" tabindex="-1">Pie chart style for empty data</h2>\n<p>In the previous version, if there was no data in the pie chart, the screen might be completely blank. Because there was no visual element, users may wonder if there was a bug.</p>\n<p>To solve this problem, in this version we will default to display a gray placeholder circle when there is no data to prevent the screen from being completely blank. We can configure the style of this placeholder circle with <code>emptyCircleStyle</code>.</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHNlcmllczogWwogICAgewogICAgICB0eXBlOiAncGllJywKICAgICAgZGF0YTogW10sCiAgICAgIC8vIHNob3dFbXB0eUNpcmNsZTogZmFsc2UsCiAgICAgIGVtcHR5Q2lyY2xlU3R5bGU6IHsKICAgICAgICAvLyBjaGFuZ2UgdGhlIHN0eWxlIHRvIGVtcHR5IGNpcmNsZQogICAgICAgIGNvbG9yOiAndHJhbnNwYXJlbnQnLAogICAgICAgIGJvcmRlckNvbG9yOiAnI2RkZCcsCiAgICAgICAgYm9yZGVyV2lkdGg6IDEKICAgICAgfQogICAgfQogIF0KfTs\'" v-bind="{layout: \'lr\'}" />\n<p>If you don\'t want to show this gray circle, you can also set <code>showEmptyCircle: false</code> to turn it off.</p>\n<h2 id="performance-enhancements-for-high-dimensional-data" tabindex="-1">Performance enhancements for high-dimensional data</h2>\n<p>We have introduced <a href="https://echarts.apache.org/option.html#dataset">dataset</a> since 4.0 to manage chart data. However, in some extreme scenarios with particularly high-dimensional (&gt;100) data, we may encounter some dramatic performance degradation, such as the following scenario of visualizing a thousand-dimensional data through a thousand series (<a href="https://github.com/apache/echarts/issues/11907">#11907</a>), which may even may lead to getting stuck.</p>\n<md-code-block lang="js" code="\'Y29uc3QgaW5kaWNlcyA9IEFycmF5LmZyb20oQXJyYXkoMTAwMCksIChfLCBpKSA9PiB7CiAgcmV0dXJuIGBpbmRleCR7aX1gOwp9KTsKY29uc3Qgb3B0aW9uID0gewogIHhBeGlzOiB7IHR5cGU6ICdjYXRlZ29yeScgfSwKICB5QXhpczoge30sCiAgZGF0YXNldDogewogICAgLy8gZGltZW5zaW9uOiBbJ2RhdGUnLCAuIC4gaW5kaWNlc10sCiAgICBzb3VyY2U6IEFycmF5LmZyb20oQXJyYXkoMTApLCAoXywgaSkgPT4gewogICAgICByZXR1cm4gewogICAgICAgIGRhdGU6IGksCiAgICAgICAgLi4uIC5pbmRpY2VzLnJlZHVjZSgoaXRlbSwgbmV4dCkgPT4gewogICAgICAgICAgaXRlbVtuZXh0XSA9IE1hdGgucmFuZG9tKCkgKiAxMDA7CiAgICAgICAgICByZXR1cm4gaXRlbTsKICAgICAgICB9LCB7fSkKICAgICAgfTsKICAgIH0pCiAgfSwKICBzZXJpZXM6IGluZGljZXMubWFwKGluZGV4ID0-IHsKICAgIHJldHVybiB7IHR5cGU6ICdsaW5lJywgbmFtZTogaW5kZXggfTsKICB9KQp9Ow\'" line-highlights="\'\'" />\n<p>The reason for this performance problem is that we process the high-dimensional dataset at the bottom of each series as needed and save a copy of the processed data and the meta information about the dimensions of the data. This meant that the <code>1000 x 1000</code> dimensions had to be processed and saved in the example, which put a huge pressure on memory and garbage collection, resulting in a dramatic performance drop for high dimensions.</p>\n<p>In the new version we have optimized this problem so that all series share the dataset storage as much as possible (whether or not they do depends on how the series uses the data).\nThis optimization ensure that memory does not explode as the dataset dimensions and series grow, significantly improving initialization performance in this extreme scenario. The rendering time for the example just described has also been reduced to an acceptable 300 ms or less.</p>\n<p>It is not just this high-dimensional scenario that benefits from this optimization. When using a dataset with large amount of data, multiple series only process the data once because of data sharing, so it can also bring significant performance gains.</p>\n<h2 id="type-optimization-for-custom-series" tabindex="-1">Type optimization for custom series</h2>\n<p>Custom series provide a very flexible way to create series graphs. Compared to other series, the learning curve for custom series can be a bit steep. Therefore, in this release, we have further optimized the type of the core method <code>renderItem</code> in the custom series by making more precise inferences about the types of the parameters and return values of <code>renderItem</code>, so that it is possible to infer which properties of the elements can be set based on the type returned:</p>\n<md-code-block lang="ts" code="\'c2VyaWVzID0gewogIHR5cGU6ICdjdXN0b20nLAogIHJlbmRlckl0ZW0ocGFyYW1zKSB7CiAgICByZXR1cm4gewogICAgICB0eXBlOiAnZ3JvdXAnLAogICAgICAvLyBUaGUgZ3JvdXAgdHlwZSB1c2VzIGNoaWxkcmVuIHRvIHN0b3JlIGNoaWxkcmVuIG9mIG90aGVyIHR5cGVzCiAgICAgIGNoaWxkcmVuOiBbCiAgICAgICAgewogICAgICAgICAgdHlwZTogJ2NpcmNsZScsCiAgICAgICAgICAvLyBjaXJjbGUgaGFzIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhYmxlIHNoYXBlIGF0dHJpYnV0ZXMKICAgICAgICAgIHNoYXBlOiB7IHI6IDEwLCBjeDogMCwgY3k6IDAgfSwKICAgICAgICAgIC8vIENvbmZpZ3VyYWJsZSBzdHlsZXMKICAgICAgICAgIHN0eWxlOiB7IGZpbGw6ICdyZWQnIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgIHR5cGU6ICdyZWN0JywKICAgICAgICAgIC8vIHJlY3QgaGFzIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhYmxlIHNoYXBlIHByb3BlcnRpZXMKICAgICAgICAgIHNoYXBlOiB7IHg6IDAsIHk6IDAsIHdpZHRoOiAxMDAsIGhlaWdodDogMTAwIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgIHR5cGU6ICdwYXRoJywKICAgICAgICAgIC8vIEN1c3RvbSBwYXRoIHNoYXBlcwogICAgICAgICAgc2hhcGU6IHsgZDogJy4uLicgfQogICAgICAgIH0KICAgICAgXQogICAgfTsKICB9Cn07\'" line-highlights="\'\'" />\n<h2 id="summary" tabindex="-1">Summary</h2>\n<p>If you\'re interested in some of the features and optimizations in 5.2.0, you may want to update to the latest version of Apache ECharts and try it out for yourself.</p>\n<p>If you\'re interested in what\'s next for Apache ECharts, you can also follow our development plans at <a href="https://github.com/apache/echarts/milestones">GitHub Milestone</a>. Feel free to join us as a contributor (learn more at <a href="https://github.com/apache/echarts/wiki">Wiki</a>).</p>\n<h2 id="full-changelog" tabindex="-1">Full Changelog</h2>\n<p>View the <a href="https://echarts.apache.org//changelog.html#v5-2-0">Changelog</a></p>\n',postPath:"en/basics/release-note/5-2-0",title:"5.2 - What's New - Basics"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:a},{title:"入门篇",dir:o,children:[{title:"获取 ECharts",dir:g},{title:"在项目中引入 ECharts",dir:n},{title:"资源列表",dir:r,draft:e},{title:"寻求帮助",dir:s},{title:"版本特性",dir:d,children:[{title:"ECharts 6 特性介绍",dir:l},{title:"v5 升级 v6 指南",dir:I},{title:"5.0",dir:C},{title:"v4 升级 v5 指南",dir:c},{title:5.2,dir:h},{title:5.3,dir:A},{title:5.4,dir:p},{title:5.5,dir:m},{title:5.6,dir:b}]}]},{title:"概念篇",dir:u,children:[{title:"图表容器及大小",dir:w},{title:"配置项",dir:f,draft:e},{title:"系列",dir:B,draft:e},{title:"样式",dir:y},{title:"数据集",dir:G},{title:"数据转换",dir:v},{title:"坐标系",dir:Z,draft:e},{title:"坐标轴",dir:X},{title:"视觉映射",dir:i},{title:"图例",dir:H},{title:"事件与行为",dir:R}]},{title:"应用篇",dir:W,children:[{title:"常用图表类型",dir:J,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:F},{title:"堆叠柱状图",dir:K},{title:"动态排序柱状图",dir:Y},{title:"极坐标系柱状图",dir:S,draft:e},{title:"阶梯瀑布图",dir:k},{title:"视觉映射的柱状图",dir:i,draft:e}]},{title:"折线图",dir:V,children:[{title:"基础折线图",dir:N},{title:"堆叠折线图",dir:L},{title:"区域面积图",dir:x},{title:"平滑曲线图",dir:z},{title:"阶梯线图",dir:T}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:D},{title:"圆环图",dir:U},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:O,children:[{title:"基础散点图",dir:M}]}]},{title:"常用组件",dir:E,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:Q}]}]},{title:"移动端优化",dir:t,draft:e},{title:"跨平台方案",dir:j,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:P},{title:"数据下钻",dir:_,draft:e}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:q}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:ee}]},{title:"交互",dir:te,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:ie,draft:e},{title:"智能指针吸附",dir:ae}]}]},{title:"最佳实践",dir:oe,children:[{title:"移动端优化",dir:t,draft:e},{title:ge,dir:ne},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:re}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:se}]}],en:[{title:"Get Started",dir:a},{title:"Basics",dir:o,children:[{title:"Download ECharts",dir:g},{title:"Import ECharts",dir:n},{title:"Resources",dir:r,draft:e},{title:"Get Help",dir:s},{title:"What's New",dir:d,children:[{title:"ECharts 6 Features",dir:l},{title:"Migration from v5 to v6",dir:I},{title:"5.0",dir:C},{title:"Migration from v4 to v5",dir:c},{title:5.2,dir:h},{title:5.3,dir:A},{title:5.4,dir:p},{title:5.5,dir:m},{title:5.6,dir:b}]}]},{title:"Concepts",dir:u,children:[{title:"Chart Container",dir:w},{title:"Chart Option",dir:f,draft:e},{title:"Series",dir:B,draft:e},{title:"Style",dir:y},{title:"Dataset",dir:G},{title:"Data Transform",dir:v},{title:"Coordinate",dir:Z,draft:e},{title:"Axis",dir:X},{title:"Visual Mapping",dir:i},{title:"Legend",dir:H},{title:"Event and Action",dir:R}]},{title:"How To Guides",dir:W,children:[{title:"Common Charts",dir:J,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:F},{title:"Stacked Bar",dir:K},{title:"Bar Racing",dir:Y},{title:"Bar Polar",dir:S,draft:e},{title:"Waterfall",dir:k}]},{title:"Line",dir:V,children:[{title:"Basic Line",dir:N},{title:"Stacked Line",dir:L},{title:"Area Chart",dir:x},{title:"Smoothed Line",dir:z},{title:"Step Line",dir:T}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:D},{title:"Ring Style",dir:U},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:O,children:[{title:"Basic Scatter",dir:M}]}]},{title:"Common Components",dir:E,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:Q}]}]},{title:"Mobile",dir:t,draft:e},{title:"Cross Platform",dir:j,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:P},{title:"Drilldown",dir:_,draft:e}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:q}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:ee}]},{title:"Interaction",dir:te,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:ie,draft:e},{title:"Intelligent Pointer Snapping",dir:ae}]}]},{title:"Best Practices",dir:oe,children:[{title:"Mobile Optimization",dir:t,draft:e},{title:ge,dir:ne},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:re}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:se}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:e,routePath:"/en/basics/release-note/5-2-0",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/en/basics/release-note/5-3-0/index.html b/docs/en/basics/release-note/5-3-0/index.html
new file mode 100644
index 0000000..21bc637
--- /dev/null
+++ b/docs/en/basics/release-note/5-3-0/index.html
@@ -0,0 +1,849 @@
+<!doctype html>
+<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>5.3 - What's New - Basics - Handbook - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="en"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/en/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/en/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/en/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/en/index.html" class="navbar-brand"><img src="https://echarts.apache.org/en/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/en/index.html">Home</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Docs<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/feature.html">Features</a></li><li><a href="https://echarts.apache.org/handbook/en/get-started/">Handbook</a></li><li><a href="https://echarts.apache.org/en/api.html">API</a></li><li><a href="https://echarts.apache.org/en/option.html">Chart Configuration</a></li><li><a href="https://echarts.apache.org/en/changelog.html">Changelog</a></li><li><a href="https://echarts.apache.org/en/faq.html">FAQ</a></li><li><a href="https://echarts.apache.org/handbook/en/basics/release-note/v6-upgrade-guide">V6 Upgrade Guide</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Download<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/download.html">Download</a></li><li><a href="https://echarts.apache.org/en/download-theme.html">Download Themes</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">Download Custom Series<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/download-extension.html">Download Extensions</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/en/index.html">Examples</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Resources<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/spreadsheet.html">Spread Sheet Tool</a></li><li><a href="https://echarts.apache.org/en/theme-builder.html">Theme Builder</a></li><li><a href="https://echarts.apache.org/en/cheat-sheet.html">Cheat Sheet</a></li><li><a href="https://echarts.apache.org/en/resources.html">More Resources</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/events.html">Events</a></li><li><a href="https://echarts.apache.org/en/committers.html">Committers</a></li><li><a href="https://echarts.apache.org/en/maillist.html">Mailing List</a></li><li><a href="https://echarts.apache.org/en/contributing.html">How to Contribute</a></li><li><a href="https://echarts.apache.org/en/dependencies.html">Dependencies</a></li><li><a href="https://echarts.apache.org/en/coding-standard.html">Code Standard</a></li><li><a href="https://github.com/apache/echarts" target="_blank">Source Code (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/security.html">Security</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">License<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">Events<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("zh")'>中文</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/en/get-started" class="nav-link"><span class="title">Get Started</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Basics</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/basics/download" class="nav-link"><span class="title">Download ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/import" class="nav-link"><span class="title">Import ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/basics/help" class="nav-link"><span class="title">Get Help</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">What's New</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 Features</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">Migration from v5 to v6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">Migration from v4 to v5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-3-0" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Concepts</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/concepts/chart-size" class="nav-link"><span class="title">Chart Container</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/style" class="nav-link"><span class="title">Style</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/dataset" class="nav-link"><span class="title">Dataset</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/data-transform" class="nav-link"><span class="title">Data Transform</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/axis" class="nav-link"><span class="title">Axis</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/visual-map" class="nav-link"><span class="title">Visual Mapping</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/legend" class="nav-link"><span class="title">Legend</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/event" class="nav-link"><span class="title">Event and Action</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">How To Guides</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">Common Charts</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Bar</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">Basic Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">Stacked Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">Bar Racing</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">Waterfall</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Line</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">Basic Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">Stacked Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/area-line" class="nav-link"><span class="title">Area Chart</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">Smoothed Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/step-line" class="nav-link"><span class="title">Step Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Pie</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">Basic Pie</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">Ring Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/rose" class="nav-link"><span class="title">Rose Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Scatter</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">Basic Scatter</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Common Components</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Geo</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG Base Map</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">Cross Platform</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/cross-platform/server" class="nav-link"><span class="title">Server Side Rendering</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Data</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/data/dynamic-data" class="nav-link"><span class="title">Dynamic Data</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Label</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/label/rich-text" class="nav-link"><span class="title">Rich Text</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Animation</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/animation/transition" class="nav-link"><span class="title">Data Transition</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Interaction</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/drag" class="nav-link"><span class="title">Drag</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">Intelligent Pointer Snapping</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Best Practices</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/en/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/aria" class="nav-link"><span class="title">Aria</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/security" class="nav-link"><span class="title">Security Guidelines</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Edit Handbook</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/meta/edit-guide" class="nav-link"><span class="title">Edit Guide</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="apache-echarts-5.3.0-features" tabindex="-1">Apache ECharts 5.3.0 Features</h1> <p>Apache ECharts 5.3.0 includes significant enhancements to animation expressiveness, rendering performance, and server-side rendering. It also adds long-awaited features from the community, such as automatic alignment of multi-axis ticks, tooltip value formatting, and map projection.</p> <h2 id="keyframe-animations" tabindex="-1">Keyframe Animations</h2> <p>Previously, ECharts animations were focused on transition animations for creating, updating, and removing elements, which often only had a start state and an end state. In order to express more complex animations, we introduced new keyframe animations for custom series and graphics components in 5.3.0.</p> <p>Here is a simple effect of a breathing animation implemented via keyframe animation</p> <div class="md-live layout-lr"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  graphic: {
+    type: 'circle',
+    shape: { r: 100 },
+    left: 'center',
+    top: 'center',
+    keyframeAnimation: [
+      {
+        duration: 3000,
+        loop: true,
+        keyframes: [
+          {
+            percent: 0.5,
+            easing: 'sinusoidalInOut',
+            scaleX: 0.1,
+            scaleY: 0.1
+          },
+          {
+            percent: 1,
+            easing: 'sinusoidalInOut',
+            scaleX: 1,
+            scaleY: 1
+          }
+        ]
+      }
+    ]
+  }
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">graphic</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'circle'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">shape</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">r</span><span class="token operator">:</span> <span class="token number">100</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">left</span><span class="token operator">:</span> <span class="token string">'center'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">top</span><span class="token operator">:</span> <span class="token string">'center'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">keyframeAnimation</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token punctuation">{</span>
+        <span class="token literal-property property">duration</span><span class="token operator">:</span> <span class="token number">3000</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">loop</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">keyframes</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+          <span class="token punctuation">{</span>
+            <span class="token literal-property property">percent</span><span class="token operator">:</span> <span class="token number">0.5</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">easing</span><span class="token operator">:</span> <span class="token string">'sinusoidalInOut'</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">scaleX</span><span class="token operator">:</span> <span class="token number">0.1</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">scaleY</span><span class="token operator">:</span> <span class="token number">0.1</span>
+          <span class="token punctuation">}</span><span class="token punctuation">,</span>
+          <span class="token punctuation">{</span>
+            <span class="token literal-property property">percent</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">easing</span><span class="token operator">:</span> <span class="token string">'sinusoidalInOut'</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">scaleX</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">scaleY</span><span class="token operator">:</span> <span class="token number">1</span>
+          <span class="token punctuation">}</span>
+        <span class="token punctuation">]</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">]</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>In keyframe animation you can configure the animation duration, delay, easing, whether to loop or not, the position, easing, and graphic properties of each keyframe. You can also set multiple keyframe animations for each element at the same time with different configurations. The flexible configuration allows us to achieve very complex animation effects, and here are a few scenarios where keyframe animation can be applied.</p> <h3 id="custom-loading-animations" tabindex="-1">Custom Loading Animations</h3> <p>ECharts has a built-in loading animation by default, which can be displayed by calling <code>showLoading</code>. More loading animation effects have been frequently asked in the community. Now with keyframe animations, we can use the <a href="https://echarts.apache.org/option.html#graphic">graphic</a> component with keyframe animations to achieve any loading animation effect we want.</p> <p>Here is an example of the text stroke animation.</p> <div class="md-live layout-lr"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  graphic: {
+    elements: [
+      {
+        type: 'text',
+        left: 'center',
+        top: 'center',
+        style: {
+          text: 'Apache ECharts',
+          fontSize: 40,
+          fontWeight: 'bold',
+          lineDash: [0, 200],
+          lineDashOffset: 0,
+          fill: 'transparent',
+          stroke: '#000',
+          lineWidth: 1
+        },
+        keyframeAnimation: {
+          duration: 3000,
+          loop: true,
+          keyframes: [
+            {
+              percent: 0.7,
+              style: {
+                fill: 'transparent',
+                lineDashOffset: 200,
+                lineDash: [200, 0]
+              }
+            },
+            {
+              // Stop for a while.
+              percent: 0.8,
+              style: {
+                fill: 'transparent'
+              }
+            },
+            {
+              percent: 1,
+              style: {
+                fill: 'black'
+              }
+            }
+          ]
+        }
+      }
+    ]
+  }
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">graphic</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">elements</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token punctuation">{</span>
+        <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'text'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">left</span><span class="token operator">:</span> <span class="token string">'center'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">top</span><span class="token operator">:</span> <span class="token string">'center'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">style</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+          <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'Apache ECharts'</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">fontSize</span><span class="token operator">:</span> <span class="token number">40</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">fontWeight</span><span class="token operator">:</span> <span class="token string">'bold'</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">lineDash</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">200</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">lineDashOffset</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">fill</span><span class="token operator">:</span> <span class="token string">'transparent'</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">stroke</span><span class="token operator">:</span> <span class="token string">'#000'</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">lineWidth</span><span class="token operator">:</span> <span class="token number">1</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">keyframeAnimation</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+          <span class="token literal-property property">duration</span><span class="token operator">:</span> <span class="token number">3000</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">loop</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">keyframes</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+            <span class="token punctuation">{</span>
+              <span class="token literal-property property">percent</span><span class="token operator">:</span> <span class="token number">0.7</span><span class="token punctuation">,</span>
+              <span class="token literal-property property">style</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+                <span class="token literal-property property">fill</span><span class="token operator">:</span> <span class="token string">'transparent'</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">lineDashOffset</span><span class="token operator">:</span> <span class="token number">200</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">lineDash</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">200</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">]</span>
+              <span class="token punctuation">}</span>
+            <span class="token punctuation">}</span><span class="token punctuation">,</span>
+            <span class="token punctuation">{</span>
+              <span class="token comment">// Stop for a while.</span>
+              <span class="token literal-property property">percent</span><span class="token operator">:</span> <span class="token number">0.8</span><span class="token punctuation">,</span>
+              <span class="token literal-property property">style</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+                <span class="token literal-property property">fill</span><span class="token operator">:</span> <span class="token string">'transparent'</span>
+              <span class="token punctuation">}</span>
+            <span class="token punctuation">}</span><span class="token punctuation">,</span>
+            <span class="token punctuation">{</span>
+              <span class="token literal-property property">percent</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+              <span class="token literal-property property">style</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+                <span class="token literal-property property">fill</span><span class="token operator">:</span> <span class="token string">'black'</span>
+              <span class="token punctuation">}</span>
+            <span class="token punctuation">}</span>
+          <span class="token punctuation">]</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">]</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>Or animate columns.</p> <div class="md-live layout-lr"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">const columns = [];
+for (let i = 0; i &lt; 7; i++) {
+  columns.push({
+    type: 'rect',
+    x: i * 20,
+    shape: {
+      x: 0,
+      y: -40,
+      width: 10,
+      height: 80
+    },
+    style: {
+      fill: '#5470c6'
+    },
+    keyframeAnimation: {
+      duration: 1000,
+      delay: i * 200,
+      loop: true,
+      keyframes: [
+        {
+          percent: 0.5,
+          scaleY: 0.1,
+          easing: 'cubicIn'
+        },
+        {
+          percent: 1,
+          scaleY: 1,
+          easing: 'cubicOut'
+        }
+      ]
+    }
+  });
+}
+option = {
+  graphic: {
+    elements: [
+      {
+        type: 'group',
+        left: 'center',
+        top: 'center',
+        children: columns
+      }
+    ]
+  }
+};</textarea><pre data-testid="preview" class="prism-editor__editor"><span class="token keyword">const</span> columns <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
+<span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">let</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator">&lt;</span> <span class="token number">7</span><span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  columns<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'rect'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">x</span><span class="token operator">:</span> i <span class="token operator">*</span> <span class="token number">20</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">shape</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">y</span><span class="token operator">:</span> <span class="token operator">-</span><span class="token number">40</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">width</span><span class="token operator">:</span> <span class="token number">10</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">height</span><span class="token operator">:</span> <span class="token number">80</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">style</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">fill</span><span class="token operator">:</span> <span class="token string">'#5470c6'</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">keyframeAnimation</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">duration</span><span class="token operator">:</span> <span class="token number">1000</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">delay</span><span class="token operator">:</span> i <span class="token operator">*</span> <span class="token number">200</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">loop</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">keyframes</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">percent</span><span class="token operator">:</span> <span class="token number">0.5</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">scaleY</span><span class="token operator">:</span> <span class="token number">0.1</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">easing</span><span class="token operator">:</span> <span class="token string">'cubicIn'</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">percent</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">scaleY</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">easing</span><span class="token operator">:</span> <span class="token string">'cubicOut'</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span>
+option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">graphic</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">elements</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token punctuation">{</span>
+        <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'group'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">left</span><span class="token operator">:</span> <span class="token string">'center'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">top</span><span class="token operator">:</span> <span class="token string">'center'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">children</span><span class="token operator">:</span> columns
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">]</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <h3 id="extending-richer-animation-effects-in-the-chart" tabindex="-1">Extending Richer Animation Effects in the Chart</h3> <p>Scatter charts with animation effects have long been a feature of ECharts. Developers can use the <a href="https://echarts.apache.org/option.html#series-effectScatter">effectScatter</a> series to implement dynamic scatter charts with ripple effects, which make charts more interesting and also serve to highlight the user. As with loading animations, developers often ask for more animation effects. Now we can achieve more complex effects by using keyframe animations in our <a href="https://echarts.apache.org/option.html#series-custom">custom</a> series.</p> <p>For example, the following example animates the pins drawn by the custom series on the SVG map with a jumping effect, along with a ripple animation.</p> <div class="md-live layout-lr"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" readonly class="prism-editor__textarea">fetch(
+  'https://echarts.apache.org/examples/data/asset/geo/Map_of_Iceland.svg'
+)
+  .then(response => response.text())
+  .then(svg => {
+    echarts.registerMap('iceland_svg', { svg: svg });
+    option = {
+      geo: {
+        map: 'iceland_svg',
+        left: 0,
+        right: 0
+      },
+      series: {
+        type: 'custom',
+        coordinateSystem: 'geo',
+        geoIndex: 0,
+        zlevel: 1,
+        data: [
+          [488, 459, 100],
+          [770, 757, 30],
+          [1180, 743, 80],
+          [894, 1188, 61],
+          [1372, 477, 70],
+          [1378, 935, 81]
+        ],
+        renderItem(params, api) {
+          const coord = api.coord([
+            api.value(0, params.dataIndex),
+            api.value(1, params.dataIndex)
+          ]);
+
+          const circles = [];
+          for (let i = 0; i &lt; 5; i++) {
+            circles.push({
+              type: 'circle',
+              shape: {
+                cx: 0,
+                cy: 0,
+                r: 30
+              },
+              style: {
+                stroke: 'red',
+                fill: 'none',
+                lineWidth: 2
+              },
+              // Ripple animation
+              keyframeAnimation: {
+                duration: 4000,
+                loop: true,
+                delay: (-i / 4) * 4000,
+                keyframes: [
+                  {
+                    percent: 0,
+                    scaleX: 0,
+                    scaleY: 0,
+                    style: {
+                      opacity: 1
+                    }
+                  },
+                  {
+                    percent: 1,
+                    scaleX: 1,
+                    scaleY: 0.4,
+                    style: {
+                      opacity: 0
+                    }
+                  }
+                ]
+              }
+            });
+          }
+          return {
+            type: 'group',
+            x: coord[0],
+            y: coord[1],
+            children: [
+              ...circles,
+              {
+                type: 'path',
+                shape: {
+                  d:
+                    'M16 0c-5.523 0-10 4.477-10 10 0 10 10 22 10 22s10-12 10-22c0-5.523-4.477-10-10-10zM16 16c-3.314 0-6-2.686-6-6s2.686-6 6-6 6 2.686 6 6-2.686 6-6 6z',
+                  x: -10,
+                  y: -35,
+                  width: 20,
+                  height: 40
+                },
+                style: {
+                  fill: 'red'
+                },
+                // Jump animation.
+                keyframeAnimation: {
+                  duration: 1000,
+                  loop: true,
+                  delay: Math.random() * 1000,
+                  keyframes: [
+                    {
+                      y: -10,
+                      percent: 0.5,
+                      easing: 'cubicOut'
+                    },
+                    {
+                      y: 0,
+                      percent: 1,
+                      easing: 'bounceOut'
+                    }
+                  ]
+                }
+              }
+            ]
+          };
+        }
+      }
+    };
+
+    myChart.setOption(option);
+  });</textarea><pre data-testid="preview" class="prism-editor__editor"><span class="token function">fetch</span><span class="token punctuation">(</span>
+  <span class="token string">'https://echarts.apache.org/examples/data/asset/geo/Map_of_Iceland.svg'</span>
+<span class="token punctuation">)</span>
+  <span class="token punctuation">.</span><span class="token function">then</span><span class="token punctuation">(</span><span class="token parameter">response</span> <span class="token operator">=></span> response<span class="token punctuation">.</span><span class="token function">text</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
+  <span class="token punctuation">.</span><span class="token function">then</span><span class="token punctuation">(</span><span class="token parameter">svg</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
+    echarts<span class="token punctuation">.</span><span class="token function">registerMap</span><span class="token punctuation">(</span><span class="token string">'iceland_svg'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token literal-property property">svg</span><span class="token operator">:</span> svg <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+    option <span class="token operator">=</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">geo</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">map</span><span class="token operator">:</span> <span class="token string">'iceland_svg'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">left</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">right</span><span class="token operator">:</span> <span class="token number">0</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'custom'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">coordinateSystem</span><span class="token operator">:</span> <span class="token string">'geo'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">geoIndex</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">zlevel</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+          <span class="token punctuation">[</span><span class="token number">488</span><span class="token punctuation">,</span> <span class="token number">459</span><span class="token punctuation">,</span> <span class="token number">100</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+          <span class="token punctuation">[</span><span class="token number">770</span><span class="token punctuation">,</span> <span class="token number">757</span><span class="token punctuation">,</span> <span class="token number">30</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+          <span class="token punctuation">[</span><span class="token number">1180</span><span class="token punctuation">,</span> <span class="token number">743</span><span class="token punctuation">,</span> <span class="token number">80</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+          <span class="token punctuation">[</span><span class="token number">894</span><span class="token punctuation">,</span> <span class="token number">1188</span><span class="token punctuation">,</span> <span class="token number">61</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+          <span class="token punctuation">[</span><span class="token number">1372</span><span class="token punctuation">,</span> <span class="token number">477</span><span class="token punctuation">,</span> <span class="token number">70</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+          <span class="token punctuation">[</span><span class="token number">1378</span><span class="token punctuation">,</span> <span class="token number">935</span><span class="token punctuation">,</span> <span class="token number">81</span><span class="token punctuation">]</span>
+        <span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token function">renderItem</span><span class="token punctuation">(</span><span class="token parameter">params<span class="token punctuation">,</span> api</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+          <span class="token keyword">const</span> coord <span class="token operator">=</span> api<span class="token punctuation">.</span><span class="token function">coord</span><span class="token punctuation">(</span><span class="token punctuation">[</span>
+            api<span class="token punctuation">.</span><span class="token function">value</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span> params<span class="token punctuation">.</span>dataIndex<span class="token punctuation">)</span><span class="token punctuation">,</span>
+            api<span class="token punctuation">.</span><span class="token function">value</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span> params<span class="token punctuation">.</span>dataIndex<span class="token punctuation">)</span>
+          <span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+          <span class="token keyword">const</span> circles <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
+          <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">let</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator">&lt;</span> <span class="token number">5</span><span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+            circles<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+              <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'circle'</span><span class="token punctuation">,</span>
+              <span class="token literal-property property">shape</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+                <span class="token literal-property property">cx</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">cy</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">r</span><span class="token operator">:</span> <span class="token number">30</span>
+              <span class="token punctuation">}</span><span class="token punctuation">,</span>
+              <span class="token literal-property property">style</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+                <span class="token literal-property property">stroke</span><span class="token operator">:</span> <span class="token string">'red'</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">fill</span><span class="token operator">:</span> <span class="token string">'none'</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">lineWidth</span><span class="token operator">:</span> <span class="token number">2</span>
+              <span class="token punctuation">}</span><span class="token punctuation">,</span>
+              <span class="token comment">// Ripple animation</span>
+              <span class="token literal-property property">keyframeAnimation</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+                <span class="token literal-property property">duration</span><span class="token operator">:</span> <span class="token number">4000</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">loop</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">delay</span><span class="token operator">:</span> <span class="token punctuation">(</span><span class="token operator">-</span>i <span class="token operator">/</span> <span class="token number">4</span><span class="token punctuation">)</span> <span class="token operator">*</span> <span class="token number">4000</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">keyframes</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+                  <span class="token punctuation">{</span>
+                    <span class="token literal-property property">percent</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+                    <span class="token literal-property property">scaleX</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+                    <span class="token literal-property property">scaleY</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+                    <span class="token literal-property property">style</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+                      <span class="token literal-property property">opacity</span><span class="token operator">:</span> <span class="token number">1</span>
+                    <span class="token punctuation">}</span>
+                  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+                  <span class="token punctuation">{</span>
+                    <span class="token literal-property property">percent</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+                    <span class="token literal-property property">scaleX</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+                    <span class="token literal-property property">scaleY</span><span class="token operator">:</span> <span class="token number">0.4</span><span class="token punctuation">,</span>
+                    <span class="token literal-property property">style</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+                      <span class="token literal-property property">opacity</span><span class="token operator">:</span> <span class="token number">0</span>
+                    <span class="token punctuation">}</span>
+                  <span class="token punctuation">}</span>
+                <span class="token punctuation">]</span>
+              <span class="token punctuation">}</span>
+            <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+          <span class="token punctuation">}</span>
+          <span class="token keyword">return</span> <span class="token punctuation">{</span>
+            <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'group'</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">x</span><span class="token operator">:</span> coord<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">y</span><span class="token operator">:</span> coord<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">children</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+              <span class="token operator">...</span>circles<span class="token punctuation">,</span>
+              <span class="token punctuation">{</span>
+                <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'path'</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">shape</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+                  <span class="token literal-property property">d</span><span class="token operator">:</span>
+                    <span class="token string">'M16 0c-5.523 0-10 4.477-10 10 0 10 10 22 10 22s10-12 10-22c0-5.523-4.477-10-10-10zM16 16c-3.314 0-6-2.686-6-6s2.686-6 6-6 6 2.686 6 6-2.686 6-6 6z'</span><span class="token punctuation">,</span>
+                  <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token operator">-</span><span class="token number">10</span><span class="token punctuation">,</span>
+                  <span class="token literal-property property">y</span><span class="token operator">:</span> <span class="token operator">-</span><span class="token number">35</span><span class="token punctuation">,</span>
+                  <span class="token literal-property property">width</span><span class="token operator">:</span> <span class="token number">20</span><span class="token punctuation">,</span>
+                  <span class="token literal-property property">height</span><span class="token operator">:</span> <span class="token number">40</span>
+                <span class="token punctuation">}</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">style</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+                  <span class="token literal-property property">fill</span><span class="token operator">:</span> <span class="token string">'red'</span>
+                <span class="token punctuation">}</span><span class="token punctuation">,</span>
+                <span class="token comment">// Jump animation.</span>
+                <span class="token literal-property property">keyframeAnimation</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+                  <span class="token literal-property property">duration</span><span class="token operator">:</span> <span class="token number">1000</span><span class="token punctuation">,</span>
+                  <span class="token literal-property property">loop</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+                  <span class="token literal-property property">delay</span><span class="token operator">:</span> Math<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">*</span> <span class="token number">1000</span><span class="token punctuation">,</span>
+                  <span class="token literal-property property">keyframes</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+                    <span class="token punctuation">{</span>
+                      <span class="token literal-property property">y</span><span class="token operator">:</span> <span class="token operator">-</span><span class="token number">10</span><span class="token punctuation">,</span>
+                      <span class="token literal-property property">percent</span><span class="token operator">:</span> <span class="token number">0.5</span><span class="token punctuation">,</span>
+                      <span class="token literal-property property">easing</span><span class="token operator">:</span> <span class="token string">'cubicOut'</span>
+                    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+                    <span class="token punctuation">{</span>
+                      <span class="token literal-property property">y</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+                      <span class="token literal-property property">percent</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+                      <span class="token literal-property property">easing</span><span class="token operator">:</span> <span class="token string">'bounceOut'</span>
+                    <span class="token punctuation">}</span>
+                  <span class="token punctuation">]</span>
+                <span class="token punctuation">}</span>
+              <span class="token punctuation">}</span>
+            <span class="token punctuation">]</span>
+          <span class="token punctuation">}</span><span class="token punctuation">;</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span><span class="token punctuation">;</span>
+
+    myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span>option<span class="token punctuation">)</span><span class="token punctuation">;</span>
+  <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <h3 id="loading-lottie-animations" tabindex="-1">Loading Lottie animations</h3> <p>In order to fully exploit the power of new keyframe animations, Yi Shen from the ECharts team wrote a <a href="https://github.com/pissang/lottie-parser">Lottie animation parsing library</a> that can parse Lottie animation files into the ECharts graphics format for rendering. Combined with Lottie's expressive power we can introduce more amazing animations to our projects.</p> <h2 id="graphical-component-transition-animations" tabindex="-1">Graphical component transition animations</h2> <p>We have provided more flexible transition animation configurations for elements returned in the custom series in 5.0. The <code>transition</code>, <code>enterFrom</code>, and <code>leaveTo</code> configuration items allow you to configure which properties of each element will have transition animations and how they will be animated when the graphic is created and removed. Here is an example.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">function</span> <span class="token function">renderItem</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  <span class="token comment">//...</span>
+  <span class="token keyword">return</span> <span class="token punctuation">{</span>
+    <span class="token comment">//...</span>
+    <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token number">100</span><span class="token punctuation">,</span>
+    <span class="token comment">// 'style', 'x', 'y' will be animated</span>
+    <span class="token literal-property property">transition</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'style'</span><span class="token punctuation">,</span> <span class="token string">'x'</span><span class="token punctuation">,</span> <span class="token string">'y'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">enterFrom</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">style</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token comment">// Fade in</span>
+        <span class="token literal-property property">opacity</span><span class="token operator">:</span> <span class="token number">0</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token comment">// Fly in from the left</span>
+      <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token number">0</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">leaveTo</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token comment">// Fade out</span>
+      <span class="token literal-property property">opacity</span><span class="token operator">:</span> <span class="token number">0</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token comment">// Fly out to the right</span>
+    <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token number">200</span>
+  <span class="token punctuation">}</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>In 5.3.0 we extended the configuration of these transition animations to the graphic component, with made additional enhancements.</p> <p>If you don't want to write out each property to be animated, you can now directly configure <code>transition: 'all'</code> to animate all properties.</p> <p>We also added <code>enterAnimation</code>, <code>updateAnimation</code>, and <code>leaveAnimation</code> to configure the <code>duration</code>, <code>delay</code>, and <code>easing</code> of the entry, update, and exit animations for each graphic, respectively. Gradient colors now also support animations.</p> <h2 id="new-svg-renderer" tabindex="-1">New SVG renderer</h2> <p>In 5.3.0 we refactored our SVG renderer, which delivers 2x ~ 10x performance improvements, and even tens of times in some special scenes.</p> <p>Previously, we updated the SVG renderer directly from the render queue to the DOM, but since zrender's graphics properties were not one-to-one with the DOM, we had to implement very complex diff logic in the middle, which was error-prone and did not provide the best performance in some scenarios. In this version, we reconstruct the full rendering to VDOM first, and then patch the VDOM to DOM to finish the rendering. Full rendering avoids potential bugs caused by complex diff logic, and the one-to-one correspondence between VDOM and DOM ensures that updates are minimal when patching, resulting in a huge performance boost.</p> <p><a href="https://echarts.apache.org/examples/zh/editor.html?c=geo-svg-scatter-simple&renderer=svg">This example</a> gives you an intuitive impression of the performance improvement. The new version is much smoother than the previous version when dragging the chart in SVG mode.</p> <table><thead><tr><th style="text-align:center">5.2.2 (Before)</th> <th style="text-align:center">5.3.0 (After)</th></tr></thead> <tbody><tr><td style="text-align:center"><img src alt="before" data-src="images/5-3-0/svg-before.gif"></td> <td style="text-align:center"><img src alt="after" data-src="images/5-3-0/svg-after.gif"></td></tr></tbody></table> <p>In addition to the performance improvement, we can do more things with the rendered VDOM, such as server-side rendering, which will be described below.</p> <h2 id="server-side-rendering-with-zero-dependencies" tabindex="-1">Server-side Rendering with Zero Dependencies</h2> <p>In previous versions, ECharts could also implement server-side rendering, but it had to rely on <a href="https://github.com/Automattic/node-canvas">node-canvas</a>, or <a href="https://github.com/jsdom/jsdom">JSDOM</a> if you were using SVG mode to simulate the DOM environment. These dependencies not only bring additional size and usage requirements, but also affect performance.</p> <p>This new SVG renderer allows us to get the string from the intermediate rendered VDOM, bringing completely zero-dependency server-side rendering and outputting a more refined SVG string integrated CSS animation.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code><span class="token keyword">const</span> echarts <span class="token operator">=</span> <span class="token keyword">require</span><span class="token punctuation">(</span><span class="token string">'echarts'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+<span class="token comment">// In SSR mode the first parameter does not need to be passed in as a DOM object</span>
+<span class="token keyword">const</span> chart <span class="token operator">=</span> echarts<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span><span class="token keyword">null</span><span class="token punctuation">,</span> <span class="token keyword">null</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
+  renderer<span class="token operator">:</span> <span class="token string">'svg'</span><span class="token punctuation">,</span> <span class="token comment">// must use SVG mode</span>
+  ssr<span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span> <span class="token comment">// enable SSR</span>
+  width<span class="token operator">:</span> <span class="token number">400</span><span class="token punctuation">,</span> <span class="token comment">// need to specify height and width</span>
+  height<span class="token operator">:</span> <span class="token number">300</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+<span class="token comment">// setOption as normal</span>
+chart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+  xAxis<span class="token operator">:</span> <span class="token punctuation">{</span>
+    type<span class="token operator">:</span> <span class="token string">'category'</span><span class="token punctuation">,</span>
+    data<span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'Mon'</span><span class="token punctuation">,</span> <span class="token string">'Tue'</span><span class="token punctuation">,</span> <span class="token string">'Wed'</span><span class="token punctuation">,</span> <span class="token string">'Thu'</span><span class="token punctuation">,</span> <span class="token string">'Fri'</span><span class="token punctuation">,</span> <span class="token string">'Sat'</span><span class="token punctuation">,</span> <span class="token string">'Sun'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  yAxis<span class="token operator">:</span> <span class="token punctuation">{</span>
+    type<span class="token operator">:</span> <span class="token string">'value'</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  series<span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      data<span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">120</span><span class="token punctuation">,</span> <span class="token number">200</span><span class="token punctuation">,</span> <span class="token number">150</span><span class="token punctuation">,</span> <span class="token number">80</span><span class="token punctuation">,</span> <span class="token number">70</span><span class="token punctuation">,</span> <span class="token number">110</span><span class="token punctuation">,</span> <span class="token number">130</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      type<span class="token operator">:</span> <span class="token string">'bar'</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+<span class="token comment">// Output string</span>
+<span class="token keyword">const</span> svgStr <span class="token operator">=</span> chart<span class="token punctuation">.</span><span class="token function">renderToSVGString</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="customizing-map-projections" tabindex="-1">Customizing Map Projections</h2> <p>Maps have always been a very widely used component in ECharts. Typically a map component uses GeoJSON formatted data with latitude and longitude stored. ECharts then calculates the appropriate display area and maps the latitude and longitude linearly to that area. This is the simplest way to project a map. However, the simple linear projection does not work for complex map scenarios, such as using <a href="https://en.wikipedia.org/wiki/Albers_projection">Albers</a> projection to solve the distortion problem in linear projection, or having the Pacific in the middle of the world map, etc.</p> <p>So in 5.3.0 we introduced extending map projection. It tells ECharts how to project coordinates and how to calculate latitude and longitude from the projected coordinates via the <code>project</code> and <code>unproject</code> methods. The following is a simple example of using the Mercator projection.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code>series <span class="token operator">=</span> <span class="token punctuation">{</span>
+  type<span class="token operator">:</span> <span class="token string">'map'</span><span class="token punctuation">,</span>
+  projection<span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token function-variable function">project</span><span class="token operator">:</span> point <span class="token operator">=></span> <span class="token punctuation">[</span>
+      <span class="token punctuation">(</span>point<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token operator">/</span> <span class="token number">180</span><span class="token punctuation">)</span> <span class="token operator">*</span> Math<span class="token punctuation">.</span><span class="token constant">PI</span><span class="token punctuation">,</span>
+      <span class="token operator">-</span>Math<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>Math<span class="token punctuation">.</span><span class="token function">tan</span><span class="token punctuation">(</span><span class="token punctuation">(</span>Math<span class="token punctuation">.</span><span class="token constant">PI</span> <span class="token operator">/</span> <span class="token number">2</span> <span class="token operator">+</span> <span class="token punctuation">(</span>point<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span> <span class="token operator">/</span> <span class="token number">180</span><span class="token punctuation">)</span> <span class="token operator">*</span> Math<span class="token punctuation">.</span><span class="token constant">PI</span><span class="token punctuation">)</span> <span class="token operator">/</span> <span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
+    <span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token function-variable function">unproject</span><span class="token operator">:</span> point <span class="token operator">=></span> <span class="token punctuation">[</span>
+      <span class="token punctuation">(</span>point<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token operator">*</span> <span class="token number">180</span><span class="token punctuation">)</span> <span class="token operator">/</span> Math<span class="token punctuation">.</span><span class="token constant">PI</span><span class="token punctuation">,</span>
+      <span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token number">2</span> <span class="token operator">*</span> <span class="token number">180</span><span class="token punctuation">)</span> <span class="token operator">/</span> Math<span class="token punctuation">.</span><span class="token constant">PI</span><span class="token punctuation">)</span> <span class="token operator">*</span> Math<span class="token punctuation">.</span><span class="token function">atan</span><span class="token punctuation">(</span>Math<span class="token punctuation">.</span><span class="token function">exp</span><span class="token punctuation">(</span>point<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token number">90</span>
+    <span class="token punctuation">]</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>In addition to implementing our own projection formula, we can also use projections implementations provided by third-party libraries such as <a href="https://github.com/d3/d3-geo">d3-geo</a>.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code><span class="token keyword">const</span> projection <span class="token operator">=</span> d3<span class="token punctuation">.</span><span class="token function">geoConicEqualArea</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token comment">// ...</span>
+series <span class="token operator">=</span> <span class="token punctuation">{</span>
+  type<span class="token operator">:</span> <span class="token string">'map'</span><span class="token punctuation">,</span>
+  projection<span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token function-variable function">project</span><span class="token operator">:</span> point <span class="token operator">=></span> <span class="token function">projection</span><span class="token punctuation">(</span>point<span class="token punctuation">)</span><span class="token punctuation">,</span>
+    <span class="token function-variable function">unproject</span><span class="token operator">:</span> point <span class="token operator">=></span> projection<span class="token punctuation">.</span><span class="token function">invert</span><span class="token punctuation">(</span>point<span class="token punctuation">)</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>In conjunction with the new global transition animation feature added in 5.2, we can animate the transition between different projection effects: !</p> <p><img src alt="map-projection-animation" data-src="images/5-3-0/map-projection.gif"></p> <p>In addition to the map projection, we have made the following two enhancements to the map in this release.</p> <ul><li>Provided <code>'LineString'</code> and <code>'MultiLineString'</code> support for GeoJSON data.</li> <li>Changed the calculation of the default label position from the center of the bounding box to the centroid of the largest area for more accurate results.</li></ul> <h2 id="ticks-alignment-of-multiple-axes" tabindex="-1">Ticks Alignment of Multiple Axes</h2> <p>Ticks alignment of multiple axes is a long-standing requirement in the community, and we can see many articles in the community on how to implement axis alignment in ECharts, which is usually troublesome and limited.</p> <p>In 5.3.0, we finally introduced the feature of aligning ticks on the <code>'value'</code> and <code>'log'</code> axes. You can configure <code>alignTicks: true</code> in the axis that needs to be aligned. The axis will then adjust its own ticks according to the first axis's ticks, enabling automatic alignment.</p> <div class="md-live layout-bt"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  tooltip: {
+    trigger: 'axis'
+  },
+  legend: {},
+  xAxis: [
+    {
+      type: 'category',
+      data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
+      axisPointer: {
+        type: 'shadow'
+      }
+    }
+  ],
+  yAxis: [
+    {
+      type: 'value',
+      name: 'Precipitation',
+      alignTicks: true,
+      axisLabel: {
+        formatter: '{value} ml'
+      }
+    },
+    {
+      type: 'value',
+      name: 'Temperature',
+      axisLabel: {
+        formatter: '{value} °C'
+      }
+    }
+  ],
+  series: [
+    {
+      name: 'Evaporation',
+      type: 'bar',
+      // prettier-ignore
+      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: 'Precipitation',
+      type: 'bar',
+      // prettier-ignore
+      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: 'Temperature',
+      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]
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">tooltip</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">trigger</span><span class="token operator">:</span> <span class="token string">'axis'</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">legend</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'category'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'Mon'</span><span class="token punctuation">,</span> <span class="token string">'Tue'</span><span class="token punctuation">,</span> <span class="token string">'Wed'</span><span class="token punctuation">,</span> <span class="token string">'Thu'</span><span class="token punctuation">,</span> <span class="token string">'Fri'</span><span class="token punctuation">,</span> <span class="token string">'Sat'</span><span class="token punctuation">,</span> <span class="token string">'Sun'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">axisPointer</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'shadow'</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'value'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Precipitation'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">alignTicks</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">axisLabel</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">formatter</span><span class="token operator">:</span> <span class="token string">'{value} ml'</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'value'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Temperature'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">axisLabel</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">formatter</span><span class="token operator">:</span> <span class="token string">'{value} °C'</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Evaporation'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token comment">// prettier-ignore</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">2.0</span><span class="token punctuation">,</span> <span class="token number">4.9</span><span class="token punctuation">,</span> <span class="token number">7.0</span><span class="token punctuation">,</span> <span class="token number">23.2</span><span class="token punctuation">,</span> <span class="token number">25.6</span><span class="token punctuation">,</span> <span class="token number">76.7</span><span class="token punctuation">,</span> <span class="token number">135.6</span><span class="token punctuation">,</span> <span class="token number">162.2</span><span class="token punctuation">,</span> <span class="token number">32.6</span><span class="token punctuation">,</span> <span class="token number">20.0</span><span class="token punctuation">,</span> <span class="token number">6.4</span><span class="token punctuation">,</span> <span class="token number">3.3</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Precipitation'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token comment">// prettier-ignore</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">2.6</span><span class="token punctuation">,</span> <span class="token number">5.9</span><span class="token punctuation">,</span> <span class="token number">9.0</span><span class="token punctuation">,</span> <span class="token number">26.4</span><span class="token punctuation">,</span> <span class="token number">28.7</span><span class="token punctuation">,</span> <span class="token number">70.7</span><span class="token punctuation">,</span> <span class="token number">175.6</span><span class="token punctuation">,</span> <span class="token number">182.2</span><span class="token punctuation">,</span> <span class="token number">48.7</span><span class="token punctuation">,</span> <span class="token number">18.8</span><span class="token punctuation">,</span> <span class="token number">6.0</span><span class="token punctuation">,</span> <span class="token number">2.3</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Temperature'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">yAxisIndex</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">2.0</span><span class="token punctuation">,</span> <span class="token number">2.2</span><span class="token punctuation">,</span> <span class="token number">3.3</span><span class="token punctuation">,</span> <span class="token number">4.5</span><span class="token punctuation">,</span> <span class="token number">6.3</span><span class="token punctuation">,</span> <span class="token number">10.2</span><span class="token punctuation">,</span> <span class="token number">20.3</span><span class="token punctuation">,</span> <span class="token number">23.4</span><span class="token punctuation">,</span> <span class="token number">23.0</span><span class="token punctuation">,</span> <span class="token number">16.5</span><span class="token punctuation">,</span> <span class="token number">12.0</span><span class="token punctuation">,</span> <span class="token number">6.2</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <h2 id="disable-emphasis-and-select-state" tabindex="-1">Disable Emphasis and Select State</h2> <p>The <code>emphasis</code> state in ECharts provides feedback to the user when the mouse is over an element, but in a chart with a large number of elements, the highlighting animation can cause performance issues. In particular, highlighting triggered by <a href="https://echarts.apache.org/option.html#tooltip">tooltip</a> or <a href="https://echarts.apache.org/option.html#tooltip">legend</a> component linkage can highlight multiple elements at the same time.</p> <p>Therefore, in this release we have added <code>emphasis.disabled</code> configuration. If you don't need the highlighting feedback and you are concerned about the interactivity, you can disable the <code>emphasis</code> state with this option.</p> <p>For the <code>select</code> state, we have also added <code>select.disabled</code>. This option can be used to configure some of the data to be unselectable.</p> <h2 id="support-for-selecting-entire-series" tabindex="-1">Support for Selecting Entire Series</h2> <p>As of 5.3.0 we support configuring <code>selectedMode</code> to <code>'series'</code> to enable selection of all data in a series.</p> <h2 id="formatting-of-values-in-tooltip" tabindex="-1">Formatting of Values in Tooltip</h2> <p>Tooltips can be used to display more detailed information about the data item when the user hovers it. ECharts also provides a <code>formatter</code> callback function to give developers more flexibility to customize the content of the tooltip.</p> <p>However, we found that most of the time, developers only needed to format the value part of the tooltip, such as fixed precision, prefixed with <code>$</code>, etc. Previously, in order to format the number, developers had to rewrite the entire content of the tooltip with <code>formatter</code>. Especially after 5.0, ECharts hint boxes have become more complex and beautiful, so rewriting them becomes costly and difficult to achieve the default results.</p> <p>So in this version, we have added a <code>valueFormatter</code> configuration to the tooltip for formatting the value part.</p> <p>As in the axis alignment example, we can add the °C and ml suffixes to the value part of the tooltip.</p> <div class="md-live layout-bt"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  tooltip: {
+    trigger: 'axis'
+  },
+  legend: {},
+  xAxis: [
+    {
+      type: 'category',
+      data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
+      axisPointer: {
+        type: 'shadow'
+      }
+    }
+  ],
+  yAxis: [
+    {
+      type: 'value',
+      name: 'Precipitation',
+      alignTicks: true,
+      axisLabel: {
+        formatter: '{value} ml'
+      }
+    },
+    {
+      type: 'value',
+      name: 'Temperature',
+      axisLabel: {
+        formatter: '{value} °C'
+      }
+    }
+  ],
+  series: [
+    {
+      name: 'Evaporation',
+      type: 'bar',
+      tooltip: {
+        valueFormatter: value => value + ' ml'
+      },
+      // prettier-ignore
+      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: 'Precipitation',
+      type: 'bar',
+      tooltip: {
+        valueFormatter: value => value + ' ml'
+      },
+      // prettier-ignore
+      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: 'Temperature',
+      type: 'line',
+      yAxisIndex: 1,
+      tooltip: {
+        valueFormatter: value => value + ' °C'
+      },
+      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]
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">tooltip</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">trigger</span><span class="token operator">:</span> <span class="token string">'axis'</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">legend</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'category'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'Mon'</span><span class="token punctuation">,</span> <span class="token string">'Tue'</span><span class="token punctuation">,</span> <span class="token string">'Wed'</span><span class="token punctuation">,</span> <span class="token string">'Thu'</span><span class="token punctuation">,</span> <span class="token string">'Fri'</span><span class="token punctuation">,</span> <span class="token string">'Sat'</span><span class="token punctuation">,</span> <span class="token string">'Sun'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">axisPointer</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'shadow'</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'value'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Precipitation'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">alignTicks</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">axisLabel</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">formatter</span><span class="token operator">:</span> <span class="token string">'{value} ml'</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'value'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Temperature'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">axisLabel</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">formatter</span><span class="token operator">:</span> <span class="token string">'{value} °C'</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Evaporation'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">tooltip</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token function-variable function">valueFormatter</span><span class="token operator">:</span> <span class="token parameter">value</span> <span class="token operator">=></span> value <span class="token operator">+</span> <span class="token string">' ml'</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token comment">// prettier-ignore</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">2.0</span><span class="token punctuation">,</span> <span class="token number">4.9</span><span class="token punctuation">,</span> <span class="token number">7.0</span><span class="token punctuation">,</span> <span class="token number">23.2</span><span class="token punctuation">,</span> <span class="token number">25.6</span><span class="token punctuation">,</span> <span class="token number">76.7</span><span class="token punctuation">,</span> <span class="token number">135.6</span><span class="token punctuation">,</span> <span class="token number">162.2</span><span class="token punctuation">,</span> <span class="token number">32.6</span><span class="token punctuation">,</span> <span class="token number">20.0</span><span class="token punctuation">,</span> <span class="token number">6.4</span><span class="token punctuation">,</span> <span class="token number">3.3</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Precipitation'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">tooltip</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token function-variable function">valueFormatter</span><span class="token operator">:</span> <span class="token parameter">value</span> <span class="token operator">=></span> value <span class="token operator">+</span> <span class="token string">' ml'</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token comment">// prettier-ignore</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">2.6</span><span class="token punctuation">,</span> <span class="token number">5.9</span><span class="token punctuation">,</span> <span class="token number">9.0</span><span class="token punctuation">,</span> <span class="token number">26.4</span><span class="token punctuation">,</span> <span class="token number">28.7</span><span class="token punctuation">,</span> <span class="token number">70.7</span><span class="token punctuation">,</span> <span class="token number">175.6</span><span class="token punctuation">,</span> <span class="token number">182.2</span><span class="token punctuation">,</span> <span class="token number">48.7</span><span class="token punctuation">,</span> <span class="token number">18.8</span><span class="token punctuation">,</span> <span class="token number">6.0</span><span class="token punctuation">,</span> <span class="token number">2.3</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Temperature'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">yAxisIndex</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">tooltip</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token function-variable function">valueFormatter</span><span class="token operator">:</span> <span class="token parameter">value</span> <span class="token operator">=></span> value <span class="token operator">+</span> <span class="token string">' °C'</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">2.0</span><span class="token punctuation">,</span> <span class="token number">2.2</span><span class="token punctuation">,</span> <span class="token number">3.3</span><span class="token punctuation">,</span> <span class="token number">4.5</span><span class="token punctuation">,</span> <span class="token number">6.3</span><span class="token punctuation">,</span> <span class="token number">10.2</span><span class="token punctuation">,</span> <span class="token number">20.3</span><span class="token punctuation">,</span> <span class="token number">23.4</span><span class="token punctuation">,</span> <span class="token number">23.0</span><span class="token punctuation">,</span> <span class="token number">16.5</span><span class="token punctuation">,</span> <span class="token number">12.0</span><span class="token punctuation">,</span> <span class="token number">6.2</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>Each series can configure its own <code>valueFormatter</code> according to its own value format.</p> <h2 id="more-flexible-sector-corner-radius" tabindex="-1">More Flexible Sector Corner Radius</h2> <p>In 5.0 we have added rounded corners configuration for sectors, which can make pie charts, sunburst charts more interesting. Previously, we only supported the inner and outer radius separately, this time we go a step further and support the four corners of the sector to be configured with different corner radius to bring more flexible display.</p> <div class="md-live layout-lr"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  tooltip: {
+    trigger: 'item'
+  },
+  legend: {
+    top: '5%',
+    left: 'center'
+  },
+  series: [
+    {
+      name: 'Access From',
+      type: 'pie',
+      radius: ['30%', '70%'],
+      roseType: 'angle',
+      itemStyle: {
+        borderRadius: [20, 5, 5, 10],
+        borderColor: '#fff',
+        borderWidth: 2
+      },
+      label: {
+        show: false
+      },
+      data: [
+        { value: 800, name: 'Search Engine' },
+        { value: 735, name: 'Direct' },
+        { value: 580, name: 'Email' },
+        { value: 484, name: 'Union Ads' },
+        { value: 400, name: 'Video Ads' }
+      ]
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">tooltip</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">trigger</span><span class="token operator">:</span> <span class="token string">'item'</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">legend</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">top</span><span class="token operator">:</span> <span class="token string">'5%'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">left</span><span class="token operator">:</span> <span class="token string">'center'</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Access From'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'pie'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">radius</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'30%'</span><span class="token punctuation">,</span> <span class="token string">'70%'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">roseType</span><span class="token operator">:</span> <span class="token string">'angle'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">itemStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">borderRadius</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">20</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">borderColor</span><span class="token operator">:</span> <span class="token string">'#fff'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">borderWidth</span><span class="token operator">:</span> <span class="token number">2</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">false</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">{</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">800</span><span class="token punctuation">,</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Search Engine'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">735</span><span class="token punctuation">,</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Direct'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">580</span><span class="token punctuation">,</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Email'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">484</span><span class="token punctuation">,</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Union Ads'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">400</span><span class="token punctuation">,</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Video Ads'</span> <span class="token punctuation">}</span>
+      <span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <h2 id="complex-label-optimization-for-pie-charts" tabindex="-1">Complex Label Optimization for Pie charts</h2> <p>Pie charts have always been one of the most complex charts on the label display in ECharts. We have been optimizing the layout and display of the pie chart labels for a long time.</p> <p>This time, we have done a deep optimization for pie chart labels that use text wrapping, background colors, rich text, and other complex layouts. In the adaptive width, container overflow, guide line calculation than before there are better results:</p> <table><thead><tr><th style="text-align:center">5.2.2 (Before)</th> <th style="text-align:center">5.3.0 (After)</th></tr></thead> <tbody><tr><td style="text-align:center"><img src alt="before" data-src="images/5-3-0/pie-label-before.png"></td> <td style="text-align:center"><img src alt="after" data-src="images/5-3-0/pie-label-after.png"></td></tr> <tr><td style="text-align:center"><img src alt="before" data-src="images/5-3-0/pie-label-before2.png"></td> <td style="text-align:center"><img src alt="after" data-src="images/5-3-0/pie-label-after2.png"></td></tr></tbody></table> <h2 id="bar-chart-large-mode-optimization" tabindex="-1">bar chart large mode optimization</h2> <p>In the cases of a large amount of data (> 2k), we support bar charts to speed up rendering and improve interactive performance by turning on <a href="https://echarts.apache.org/option.html#series-bar.large">large</a> mode. But previously the layout of bar charts in <a href="https://echarts.apache.org/option.html#series-bar.large">large</a> mode was simple and did not support the layout after stacking multiple series. In 5.3.0, we have optimized the layout of <a href="https://echarts.apache.org/option.html#series-bar.large">large</a> mode to be consistent with the normal mode. We can optimize the performance of the bar chart in more scenarios by turning on <a href="https://echarts.apache.org/option.html#series-bar.large">large</a>.</p> <p>In addition, the optimized bar chart layout also fixes the bug of incorrect stacking on non-linear axes like logarithmic axes.</p> <h2 id="breaking-changes" tabindex="-1">Breaking Changes</h2> <h3 id="registermap-and-getmap-methods-need-to-be-used-only-after-the-map-chart-is-imported" tabindex="-1">registerMap and getMap methods need to be used only after the map chart is imported</h3> <p>To reduce the size of the minimum bundle, we removed the map data management methods <code>getMap</code> and <code>registerMap</code> from the core module.</p> <p>If you are <a href="https://echarts.apache.org/handbook/en/basics/import/#importing-required-charts-and-components-to-have-minimal-bundle">only importing necessary charts and components</a>, you need to ensure that you have imported <code>GeoComponent</code> or <code>MapChart</code> before you can register map data with <code>registerMap</code>.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code><span class="token keyword">import</span> <span class="token operator">*</span> <span class="token keyword">as</span> echarts <span class="token keyword">from</span> <span class="token string">'echarts/core'</span><span class="token punctuation">;</span>
+<span class="token keyword">import</span> <span class="token punctuation">{</span> MapChart <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'echarts/charts'</span><span class="token punctuation">;</span>
+
+echarts<span class="token punctuation">.</span><span class="token function">use</span><span class="token punctuation">(</span><span class="token punctuation">[</span>MapChart<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+<span class="token comment">// You must import the MapChart with the `use` method before you can register the map with registerMap</span>
+echarts<span class="token punctuation">.</span><span class="token function">registerMap</span><span class="token punctuation">(</span><span class="token string">'world'</span><span class="token punctuation">,</span> worldJSON<span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>If you are using <code>import * as echarts from 'echarts'</code> to import the whole package, this change will not affect you in any way.</p> <h3 id="removing-the-default-bolding-emphasis-effect-in-the-line-chart" tabindex="-1">Removing the default bolding emphasis effect in the line chart</h3> <p>We introduced the default bolding emphasis effect for line charts in 5.0, but the community feedback was that this didn't looks well in many scenarios. So in this version we changed this effect from on by default to off by default. You can enable it by:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code>series <span class="token operator">=</span> <span class="token punctuation">{</span>
+  type<span class="token operator">:</span> <span class="token string">'line'</span><span class="token punctuation">,</span>
+  <span class="token comment">//...</span>
+  emphasis<span class="token operator">:</span> <span class="token punctuation">{</span>
+    lineStyle<span class="token operator">:</span> <span class="token punctuation">{</span>
+      width<span class="token operator">:</span> <span class="token string">'bolder'</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="full-changelog" tabindex="-1">Full Changelog</h2> <p>View the <a href="https://echarts.apache.org//changelog.html#v5-3-0">Changelog</a></p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">Contributors</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/en/basics/release-note/5-3-0.md" title="Edit this Document" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">Edit this page on GitHub</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/Ovilia" target="_blank" class="post-contributor has-avatar"><img alt="Ovilia" src="https://echarts.apache.org/en/images/people/羡辙.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>Ovilia</span></a><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a><a href="https://github.com/plainheart" target="_blank" class="post-contributor has-avatar"><img alt="plainheart" src="https://echarts.apache.org/en/images/people/plainheart.jpg" loading="lazy" decoding="async" fetchpriority="low"> <span>plainheart</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(e,g,t,i,I,C,o,a,A,n,r,d,s,l,c,h,p,m,b,w,u,f,y,B,G,v,Z,W,H,L,M,K,V,J,x,Y,N,X,D,S,R,F,O,k,j,z,T,U,Q,E,P,q,_,$,ee,ge,te,ie,Ie,Ce,oe,ae,Ae){return{layout:"default",data:[{html:'<h1 id="apache-echarts-5.3.0-features" tabindex="-1">Apache ECharts 5.3.0 Features</h1>\n<p>Apache ECharts 5.3.0 includes significant enhancements to animation expressiveness, rendering performance, and server-side rendering. It also adds long-awaited features from the community, such as automatic alignment of multi-axis ticks, tooltip value formatting, and map projection.</p>\n<h2 id="keyframe-animations" tabindex="-1">Keyframe Animations</h2>\n<p>Previously, ECharts animations were focused on transition animations for creating, updating, and removing elements, which often only had a start state and an end state. In order to express more complex animations, we introduced new keyframe animations for custom series and graphics components in 5.3.0.</p>\n<p>Here is a simple effect of a breathing animation implemented via keyframe animation</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIGdyYXBoaWM6IHsKICAgIHR5cGU6ICdjaXJjbGUnLAogICAgc2hhcGU6IHsgcjogMTAwIH0sCiAgICBsZWZ0OiAnY2VudGVyJywKICAgIHRvcDogJ2NlbnRlcicsCiAgICBrZXlmcmFtZUFuaW1hdGlvbjogWwogICAgICB7CiAgICAgICAgZHVyYXRpb246IDMwMDAsCiAgICAgICAgbG9vcDogdHJ1ZSwKICAgICAgICBrZXlmcmFtZXM6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgcGVyY2VudDogMC41LAogICAgICAgICAgICBlYXNpbmc6ICdzaW51c29pZGFsSW5PdXQnLAogICAgICAgICAgICBzY2FsZVg6IDAuMSwKICAgICAgICAgICAgc2NhbGVZOiAwLjEKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgIHBlcmNlbnQ6IDEsCiAgICAgICAgICAgIGVhc2luZzogJ3NpbnVzb2lkYWxJbk91dCcsCiAgICAgICAgICAgIHNjYWxlWDogMSwKICAgICAgICAgICAgc2NhbGVZOiAxCiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9CiAgICBdCiAgfQp9Ow\'" v-bind="{layout: \'lr\', height:300}" />\n<p>In keyframe animation you can configure the animation duration, delay, easing, whether to loop or not, the position, easing, and graphic properties of each keyframe. You can also set multiple keyframe animations for each element at the same time with different configurations. The flexible configuration allows us to achieve very complex animation effects, and here are a few scenarios where keyframe animation can be applied.</p>\n<h3 id="custom-loading-animations" tabindex="-1">Custom Loading Animations</h3>\n<p>ECharts has a built-in loading animation by default, which can be displayed by calling <code>showLoading</code>. More loading animation effects have been frequently asked in the community. Now with keyframe animations, we can use the <a href="https://echarts.apache.org/option.html#graphic">graphic</a> component with keyframe animations to achieve any loading animation effect we want.</p>\n<p>Here is an example of the text stroke animation.</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIGdyYXBoaWM6IHsKICAgIGVsZW1lbnRzOiBbCiAgICAgIHsKICAgICAgICB0eXBlOiAndGV4dCcsCiAgICAgICAgbGVmdDogJ2NlbnRlcicsCiAgICAgICAgdG9wOiAnY2VudGVyJywKICAgICAgICBzdHlsZTogewogICAgICAgICAgdGV4dDogJ0FwYWNoZSBFQ2hhcnRzJywKICAgICAgICAgIGZvbnRTaXplOiA0MCwKICAgICAgICAgIGZvbnRXZWlnaHQ6ICdib2xkJywKICAgICAgICAgIGxpbmVEYXNoOiBbMCwgMjAwXSwKICAgICAgICAgIGxpbmVEYXNoT2Zmc2V0OiAwLAogICAgICAgICAgZmlsbDogJ3RyYW5zcGFyZW50JywKICAgICAgICAgIHN0cm9rZTogJyMwMDAnLAogICAgICAgICAgbGluZVdpZHRoOiAxCiAgICAgICAgfSwKICAgICAgICBrZXlmcmFtZUFuaW1hdGlvbjogewogICAgICAgICAgZHVyYXRpb246IDMwMDAsCiAgICAgICAgICBsb29wOiB0cnVlLAogICAgICAgICAga2V5ZnJhbWVzOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBwZXJjZW50OiAwLjcsCiAgICAgICAgICAgICAgc3R5bGU6IHsKICAgICAgICAgICAgICAgIGZpbGw6ICd0cmFuc3BhcmVudCcsCiAgICAgICAgICAgICAgICBsaW5lRGFzaE9mZnNldDogMjAwLAogICAgICAgICAgICAgICAgbGluZURhc2g6IFsyMDAsIDBdCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgLy8gU3RvcCBmb3IgYSB3aGlsZS4KICAgICAgICAgICAgICBwZXJjZW50OiAwLjgsCiAgICAgICAgICAgICAgc3R5bGU6IHsKICAgICAgICAgICAgICAgIGZpbGw6ICd0cmFuc3BhcmVudCcKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBwZXJjZW50OiAxLAogICAgICAgICAgICAgIHN0eWxlOiB7CiAgICAgICAgICAgICAgICBmaWxsOiAnYmxhY2snCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICBdCiAgICAgICAgfQogICAgICB9CiAgICBdCiAgfQp9Ow\'" v-bind="{layout: \'lr\', height:300}" />\n<p>Or animate columns.</p>\n<md-live lang="js" code="\'Y29uc3QgY29sdW1ucyA9IFtdOwpmb3IgKGxldCBpID0gMDsgaSA8IDc7IGkrKykgewogIGNvbHVtbnMucHVzaCh7CiAgICB0eXBlOiAncmVjdCcsCiAgICB4OiBpICogMjAsCiAgICBzaGFwZTogewogICAgICB4OiAwLAogICAgICB5OiAtNDAsCiAgICAgIHdpZHRoOiAxMCwKICAgICAgaGVpZ2h0OiA4MAogICAgfSwKICAgIHN0eWxlOiB7CiAgICAgIGZpbGw6ICcjNTQ3MGM2JwogICAgfSwKICAgIGtleWZyYW1lQW5pbWF0aW9uOiB7CiAgICAgIGR1cmF0aW9uOiAxMDAwLAogICAgICBkZWxheTogaSAqIDIwMCwKICAgICAgbG9vcDogdHJ1ZSwKICAgICAga2V5ZnJhbWVzOiBbCiAgICAgICAgewogICAgICAgICAgcGVyY2VudDogMC41LAogICAgICAgICAgc2NhbGVZOiAwLjEsCiAgICAgICAgICBlYXNpbmc6ICdjdWJpY0luJwogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgcGVyY2VudDogMSwKICAgICAgICAgIHNjYWxlWTogMSwKICAgICAgICAgIGVhc2luZzogJ2N1YmljT3V0JwogICAgICAgIH0KICAgICAgXQogICAgfQogIH0pOwp9Cm9wdGlvbiA9IHsKICBncmFwaGljOiB7CiAgICBlbGVtZW50czogWwogICAgICB7CiAgICAgICAgdHlwZTogJ2dyb3VwJywKICAgICAgICBsZWZ0OiAnY2VudGVyJywKICAgICAgICB0b3A6ICdjZW50ZXInLAogICAgICAgIGNoaWxkcmVuOiBjb2x1bW5zCiAgICAgIH0KICAgIF0KICB9Cn07\'" v-bind="{layout: \'lr\', height:300}" />\n<h3 id="extending-richer-animation-effects-in-the-chart" tabindex="-1">Extending Richer Animation Effects in the Chart</h3>\n<p>Scatter charts with animation effects have long been a feature of ECharts. Developers can use the <a href="https://echarts.apache.org/option.html#series-effectScatter">effectScatter</a> series to implement dynamic scatter charts with ripple effects, which make charts more interesting and also serve to highlight the user. As with loading animations, developers often ask for more animation effects. Now we can achieve more complex effects by using keyframe animations in our <a href="https://echarts.apache.org/option.html#series-custom">custom</a> series.</p>\n<p>For example, the following example animates the pins drawn by the custom series on the SVG map with a jumping effect, along with a ripple animation.</p>\n\x3c!-- <md-example src="geo-svg-custom-effect" width="100%" height="500" /> --\x3e\n<md-live lang="js" code="\'ZmV0Y2goCiAgJ2h0dHBzOi8vZWNoYXJ0cy5hcGFjaGUub3JnL2V4YW1wbGVzL2RhdGEvYXNzZXQvZ2VvL01hcF9vZl9JY2VsYW5kLnN2ZycKKQogIC50aGVuKHJlc3BvbnNlID0-IHJlc3BvbnNlLnRleHQoKSkKICAudGhlbihzdmcgPT4gewogICAgZWNoYXJ0cy5yZWdpc3Rlck1hcCgnaWNlbGFuZF9zdmcnLCB7IHN2Zzogc3ZnIH0pOwogICAgb3B0aW9uID0gewogICAgICBnZW86IHsKICAgICAgICBtYXA6ICdpY2VsYW5kX3N2ZycsCiAgICAgICAgbGVmdDogMCwKICAgICAgICByaWdodDogMAogICAgICB9LAogICAgICBzZXJpZXM6IHsKICAgICAgICB0eXBlOiAnY3VzdG9tJywKICAgICAgICBjb29yZGluYXRlU3lzdGVtOiAnZ2VvJywKICAgICAgICBnZW9JbmRleDogMCwKICAgICAgICB6bGV2ZWw6IDEsCiAgICAgICAgZGF0YTogWwogICAgICAgICAgWzQ4OCwgNDU5LCAxMDBdLAogICAgICAgICAgWzc3MCwgNzU3LCAzMF0sCiAgICAgICAgICBbMTE4MCwgNzQzLCA4MF0sCiAgICAgICAgICBbODk0LCAxMTg4LCA2MV0sCiAgICAgICAgICBbMTM3MiwgNDc3LCA3MF0sCiAgICAgICAgICBbMTM3OCwgOTM1LCA4MV0KICAgICAgICBdLAogICAgICAgIHJlbmRlckl0ZW0ocGFyYW1zLCBhcGkpIHsKICAgICAgICAgIGNvbnN0IGNvb3JkID0gYXBpLmNvb3JkKFsKICAgICAgICAgICAgYXBpLnZhbHVlKDAsIHBhcmFtcy5kYXRhSW5kZXgpLAogICAgICAgICAgICBhcGkudmFsdWUoMSwgcGFyYW1zLmRhdGFJbmRleCkKICAgICAgICAgIF0pOwoKICAgICAgICAgIGNvbnN0IGNpcmNsZXMgPSBbXTsKICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTsgaSsrKSB7CiAgICAgICAgICAgIGNpcmNsZXMucHVzaCh7CiAgICAgICAgICAgICAgdHlwZTogJ2NpcmNsZScsCiAgICAgICAgICAgICAgc2hhcGU6IHsKICAgICAgICAgICAgICAgIGN4OiAwLAogICAgICAgICAgICAgICAgY3k6IDAsCiAgICAgICAgICAgICAgICByOiAzMAogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgc3R5bGU6IHsKICAgICAgICAgICAgICAgIHN0cm9rZTogJ3JlZCcsCiAgICAgICAgICAgICAgICBmaWxsOiAnbm9uZScsCiAgICAgICAgICAgICAgICBsaW5lV2lkdGg6IDIKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgIC8vIFJpcHBsZSBhbmltYXRpb24KICAgICAgICAgICAgICBrZXlmcmFtZUFuaW1hdGlvbjogewogICAgICAgICAgICAgICAgZHVyYXRpb246IDQwMDAsCiAgICAgICAgICAgICAgICBsb29wOiB0cnVlLAogICAgICAgICAgICAgICAgZGVsYXk6ICgtaSAvIDQpICogNDAwMCwKICAgICAgICAgICAgICAgIGtleWZyYW1lczogWwogICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgcGVyY2VudDogMCwKICAgICAgICAgICAgICAgICAgICBzY2FsZVg6IDAsCiAgICAgICAgICAgICAgICAgICAgc2NhbGVZOiAwLAogICAgICAgICAgICAgICAgICAgIHN0eWxlOiB7CiAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAxCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgcGVyY2VudDogMSwKICAgICAgICAgICAgICAgICAgICBzY2FsZVg6IDEsCiAgICAgICAgICAgICAgICAgICAgc2NhbGVZOiAwLjQsCiAgICAgICAgICAgICAgICAgICAgc3R5bGU6IHsKICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgdHlwZTogJ2dyb3VwJywKICAgICAgICAgICAgeDogY29vcmRbMF0sCiAgICAgICAgICAgIHk6IGNvb3JkWzFdLAogICAgICAgICAgICBjaGlsZHJlbjogWwogICAgICAgICAgICAgIC4uLmNpcmNsZXMsCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdHlwZTogJ3BhdGgnLAogICAgICAgICAgICAgICAgc2hhcGU6IHsKICAgICAgICAgICAgICAgICAgZDoKICAgICAgICAgICAgICAgICAgICAnTTE2IDBjLTUuNTIzIDAtMTAgNC40NzctMTAgMTAgMCAxMCAxMCAyMiAxMCAyMnMxMC0xMiAxMC0yMmMwLTUuNTIzLTQuNDc3LTEwLTEwLTEwek0xNiAxNmMtMy4zMTQgMC02LTIuNjg2LTYtNnMyLjY4Ni02IDYtNiA2IDIuNjg2IDYgNi0yLjY4NiA2LTYgNnonLAogICAgICAgICAgICAgICAgICB4OiAtMTAsCiAgICAgICAgICAgICAgICAgIHk6IC0zNSwKICAgICAgICAgICAgICAgICAgd2lkdGg6IDIwLAogICAgICAgICAgICAgICAgICBoZWlnaHQ6IDQwCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgc3R5bGU6IHsKICAgICAgICAgICAgICAgICAgZmlsbDogJ3JlZCcKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAvLyBKdW1wIGFuaW1hdGlvbi4KICAgICAgICAgICAgICAgIGtleWZyYW1lQW5pbWF0aW9uOiB7CiAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiAxMDAwLAogICAgICAgICAgICAgICAgICBsb29wOiB0cnVlLAogICAgICAgICAgICAgICAgICBkZWxheTogTWF0aC5yYW5kb20oKSAqIDEwMDAsCiAgICAgICAgICAgICAgICAgIGtleWZyYW1lczogWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgIHk6IC0xMCwKICAgICAgICAgICAgICAgICAgICAgIHBlcmNlbnQ6IDAuNSwKICAgICAgICAgICAgICAgICAgICAgIGVhc2luZzogJ2N1YmljT3V0JwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgeTogMCwKICAgICAgICAgICAgICAgICAgICAgIHBlcmNlbnQ6IDEsCiAgICAgICAgICAgICAgICAgICAgICBlYXNpbmc6ICdib3VuY2VPdXQnCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICBdCiAgICAgICAgICB9OwogICAgICAgIH0KICAgICAgfQogICAgfTsKCiAgICBteUNoYXJ0LnNldE9wdGlvbihvcHRpb24pOwogIH0pOw\'" v-bind="{layout: \'lr\', readOnly: true }" />\n<h3 id="loading-lottie-animations" tabindex="-1">Loading Lottie animations</h3>\n<p>In order to fully exploit the power of new keyframe animations, Yi Shen from the ECharts team wrote a <a href="https://github.com/pissang/lottie-parser">Lottie animation parsing library</a> that can parse Lottie animation files into the ECharts graphics format for rendering. Combined with Lottie\'s expressive power we can introduce more amazing animations to our projects.</p>\n<h2 id="graphical-component-transition-animations" tabindex="-1">Graphical component transition animations</h2>\n<p>We have provided more flexible transition animation configurations for elements returned in the custom series in 5.0. The <code>transition</code>, <code>enterFrom</code>, and <code>leaveTo</code> configuration items allow you to configure which properties of each element will have transition animations and how they will be animated when the graphic is created and removed. Here is an example.</p>\n<md-code-block lang="js" code="\'ZnVuY3Rpb24gcmVuZGVySXRlbSgpIHsKICAvLy4uLgogIHJldHVybiB7CiAgICAvLy4uLgogICAgeDogMTAwLAogICAgLy8gJ3N0eWxlJywgJ3gnLCAneScgd2lsbCBiZSBhbmltYXRlZAogICAgdHJhbnNpdGlvbjogWydzdHlsZScsICd4JywgJ3knXSwKICAgIGVudGVyRnJvbTogewogICAgICBzdHlsZTogewogICAgICAgIC8vIEZhZGUgaW4KICAgICAgICBvcGFjaXR5OiAwCiAgICAgIH0sCiAgICAgIC8vIEZseSBpbiBmcm9tIHRoZSBsZWZ0CiAgICAgIHg6IDAKICAgIH0sCiAgICBsZWF2ZVRvOiB7CiAgICAgIC8vIEZhZGUgb3V0CiAgICAgIG9wYWNpdHk6IDAKICAgIH0sCiAgICAvLyBGbHkgb3V0IHRvIHRoZSByaWdodAogICAgeDogMjAwCiAgfTsKfQ\'" line-highlights="\'\'" />\n<p>In 5.3.0 we extended the configuration of these transition animations to the graphic component, with made additional enhancements.</p>\n<p>If you don\'t want to write out each property to be animated, you can now directly configure <code>transition: \'all\'</code> to animate all properties.</p>\n<p>We also added <code>enterAnimation</code>, <code>updateAnimation</code>, and <code>leaveAnimation</code> to configure the <code>duration</code>, <code>delay</code>, and <code>easing</code> of the entry, update, and exit animations for each graphic, respectively. Gradient colors now also support animations.</p>\n<h2 id="new-svg-renderer" tabindex="-1">New SVG renderer</h2>\n<p>In 5.3.0 we refactored our SVG renderer, which delivers 2x ~ 10x performance improvements, and even tens of times in some special scenes.</p>\n<p>Previously, we updated the SVG renderer directly from the render queue to the DOM, but since zrender\'s graphics properties were not one-to-one with the DOM, we had to implement very complex diff logic in the middle, which was error-prone and did not provide the best performance in some scenarios. In this version, we reconstruct the full rendering to VDOM first, and then patch the VDOM to DOM to finish the rendering. Full rendering avoids potential bugs caused by complex diff logic, and the one-to-one correspondence between VDOM and DOM ensures that updates are minimal when patching, resulting in a huge performance boost.</p>\n<p><a href="https://echarts.apache.org/examples/zh/editor.html?c=geo-svg-scatter-simple&amp;renderer=svg">This example</a> gives you an intuitive impression of the performance improvement. The new version is much smoother than the previous version when dragging the chart in SVG mode.</p>\n<table>\n<thead>\n<tr>\n<th style="text-align:center">5.2.2 (Before)</th>\n<th style="text-align:center">5.3.0 (After)</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td style="text-align:center"><img src="" alt="before" data-src="images/5-3-0/svg-before.gif"></td>\n<td style="text-align:center"><img src="" alt="after" data-src="images/5-3-0/svg-after.gif"></td>\n</tr>\n</tbody>\n</table>\n<p>In addition to the performance improvement, we can do more things with the rendered VDOM, such as server-side rendering, which will be described below.</p>\n<h2 id="server-side-rendering-with-zero-dependencies" tabindex="-1">Server-side Rendering with Zero Dependencies</h2>\n<p>In previous versions, ECharts could also implement server-side rendering, but it had to rely on <a href="https://github.com/Automattic/node-canvas">node-canvas</a>, or <a href="https://github.com/jsdom/jsdom">JSDOM</a> if you were using SVG mode to simulate the DOM environment. These dependencies not only bring additional size and usage requirements, but also affect performance.</p>\n<p>This new SVG renderer allows us to get the string from the intermediate rendered VDOM, bringing completely zero-dependency server-side rendering and outputting a more refined SVG string integrated CSS animation.</p>\n<md-code-block lang="ts" code="\'Y29uc3QgZWNoYXJ0cyA9IHJlcXVpcmUoJ2VjaGFydHMnKTsKCi8vIEluIFNTUiBtb2RlIHRoZSBmaXJzdCBwYXJhbWV0ZXIgZG9lcyBub3QgbmVlZCB0byBiZSBwYXNzZWQgaW4gYXMgYSBET00gb2JqZWN0CmNvbnN0IGNoYXJ0ID0gZWNoYXJ0cy5pbml0KG51bGwsIG51bGwsIHsKICByZW5kZXJlcjogJ3N2ZycsIC8vIG11c3QgdXNlIFNWRyBtb2RlCiAgc3NyOiB0cnVlLCAvLyBlbmFibGUgU1NSCiAgd2lkdGg6IDQwMCwgLy8gbmVlZCB0byBzcGVjaWZ5IGhlaWdodCBhbmQgd2lkdGgKICBoZWlnaHQ6IDMwMAp9KTsKCi8vIHNldE9wdGlvbiBhcyBub3JtYWwKY2hhcnQuc2V0T3B0aW9uKHsKICB4QXhpczogewogICAgdHlwZTogJ2NhdGVnb3J5JywKICAgIGRhdGE6IFsnTW9uJywgJ1R1ZScsICdXZWQnLCAnVGh1JywgJ0ZyaScsICdTYXQnLCAnU3VuJ10KICB9LAogIHlBeGlzOiB7CiAgICB0eXBlOiAndmFsdWUnCiAgfSwKICBzZXJpZXM6IFsKICAgIHsKICAgICAgZGF0YTogWzEyMCwgMjAwLCAxNTAsIDgwLCA3MCwgMTEwLCAxMzBdLAogICAgICB0eXBlOiAnYmFyJwogICAgfQogIF0KfSk7CgovLyBPdXRwdXQgc3RyaW5nCmNvbnN0IHN2Z1N0ciA9IGNoYXJ0LnJlbmRlclRvU1ZHU3RyaW5nKCk7\'" line-highlights="\'\'" />\n<h2 id="customizing-map-projections" tabindex="-1">Customizing Map Projections</h2>\n<p>Maps have always been a very widely used component in ECharts. Typically a map component uses GeoJSON formatted data with latitude and longitude stored. ECharts then calculates the appropriate display area and maps the latitude and longitude linearly to that area. This is the simplest way to project a map. However, the simple linear projection does not work for complex map scenarios, such as using <a href="https://en.wikipedia.org/wiki/Albers_projection">Albers</a> projection to solve the distortion problem in linear projection, or having the Pacific in the middle of the world map, etc.</p>\n<p>So in 5.3.0 we introduced extending map projection. It tells ECharts how to project coordinates and how to calculate latitude and longitude from the projected coordinates via the <code>project</code> and <code>unproject</code> methods. The following is a simple example of using the Mercator projection.</p>\n<md-code-block lang="ts" code="\'c2VyaWVzID0gewogIHR5cGU6ICdtYXAnLAogIHByb2plY3Rpb246IHsKICAgIHByb2plY3Q6IHBvaW50ID0-IFsKICAgICAgKHBvaW50WzBdIC8gMTgwKSAqIE1hdGguUEksCiAgICAgIC1NYXRoLmxvZyhNYXRoLnRhbigoTWF0aC5QSSAvIDIgKyAocG9pbnRbMV0gLyAxODApICogTWF0aC5QSSkgLyAyKSkKICAgIF0sCiAgICB1bnByb2plY3Q6IHBvaW50ID0-IFsKICAgICAgKHBvaW50WzBdICogMTgwKSAvIE1hdGguUEksCiAgICAgICgoMiAqIDE4MCkgLyBNYXRoLlBJKSAqIE1hdGguYXRhbihNYXRoLmV4cChwb2ludFsxXSkpIC0gOTAKICAgIF0KICB9Cn07\'" line-highlights="\'\'" />\n<p>In addition to implementing our own projection formula, we can also use projections implementations provided by third-party libraries such as <a href="https://github.com/d3/d3-geo">d3-geo</a>.</p>\n<md-code-block lang="ts" code="\'Y29uc3QgcHJvamVjdGlvbiA9IGQzLmdlb0NvbmljRXF1YWxBcmVhKCk7Ci8vIC4uLgpzZXJpZXMgPSB7CiAgdHlwZTogJ21hcCcsCiAgcHJvamVjdGlvbjogewogICAgcHJvamVjdDogcG9pbnQgPT4gcHJvamVjdGlvbihwb2ludCksCiAgICB1bnByb2plY3Q6IHBvaW50ID0-IHByb2plY3Rpb24uaW52ZXJ0KHBvaW50KQogIH0KfTs\'" line-highlights="\'\'" />\n<p>In conjunction with the new global transition animation feature added in 5.2, we can animate the transition between different projection effects: !</p>\n<p><img src="" alt="map-projection-animation" data-src="images/5-3-0/map-projection.gif"></p>\n<p>In addition to the map projection, we have made the following two enhancements to the map in this release.</p>\n<ul>\n<li>Provided <code>\'LineString\'</code> and <code>\'MultiLineString\'</code> support for GeoJSON data.</li>\n<li>Changed the calculation of the default label position from the center of the bounding box to the centroid of the largest area for more accurate results.</li>\n</ul>\n<h2 id="ticks-alignment-of-multiple-axes" tabindex="-1">Ticks Alignment of Multiple Axes</h2>\n<p>Ticks alignment of multiple axes is a long-standing requirement in the community, and we can see many articles in the community on how to implement axis alignment in ECharts, which is usually troublesome and limited.</p>\n<p>In 5.3.0, we finally introduced the feature of aligning ticks on the <code>\'value\'</code> and <code>\'log\'</code> axes. You can configure <code>alignTicks: true</code> in the axis that needs to be aligned. The axis will then adjust its own ticks according to the first axis\'s ticks, enabling automatic alignment.</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHRvb2x0aXA6IHsKICAgIHRyaWdnZXI6ICdheGlzJwogIH0sCiAgbGVnZW5kOiB7fSwKICB4QXhpczogWwogICAgewogICAgICB0eXBlOiAnY2F0ZWdvcnknLAogICAgICBkYXRhOiBbJ01vbicsICdUdWUnLCAnV2VkJywgJ1RodScsICdGcmknLCAnU2F0JywgJ1N1biddLAogICAgICBheGlzUG9pbnRlcjogewogICAgICAgIHR5cGU6ICdzaGFkb3cnCiAgICAgIH0KICAgIH0KICBdLAogIHlBeGlzOiBbCiAgICB7CiAgICAgIHR5cGU6ICd2YWx1ZScsCiAgICAgIG5hbWU6ICdQcmVjaXBpdGF0aW9uJywKICAgICAgYWxpZ25UaWNrczogdHJ1ZSwKICAgICAgYXhpc0xhYmVsOiB7CiAgICAgICAgZm9ybWF0dGVyOiAne3ZhbHVlfSBtbCcKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgdHlwZTogJ3ZhbHVlJywKICAgICAgbmFtZTogJ1RlbXBlcmF0dXJlJywKICAgICAgYXhpc0xhYmVsOiB7CiAgICAgICAgZm9ybWF0dGVyOiAne3ZhbHVlfSDCsEMnCiAgICAgIH0KICAgIH0KICBdLAogIHNlcmllczogWwogICAgewogICAgICBuYW1lOiAnRXZhcG9yYXRpb24nLAogICAgICB0eXBlOiAnYmFyJywKICAgICAgLy8gcHJldHRpZXItaWdub3JlCiAgICAgIGRhdGE6IFsyLjAsIDQuOSwgNy4wLCAyMy4yLCAyNS42LCA3Ni43LCAxMzUuNiwgMTYyLjIsIDMyLjYsIDIwLjAsIDYuNCwgMy4zXQogICAgfSwKICAgIHsKICAgICAgbmFtZTogJ1ByZWNpcGl0YXRpb24nLAogICAgICB0eXBlOiAnYmFyJywKICAgICAgLy8gcHJldHRpZXItaWdub3JlCiAgICAgIGRhdGE6IFsyLjYsIDUuOSwgOS4wLCAyNi40LCAyOC43LCA3MC43LCAxNzUuNiwgMTgyLjIsIDQ4LjcsIDE4LjgsIDYuMCwgMi4zXQogICAgfSwKICAgIHsKICAgICAgbmFtZTogJ1RlbXBlcmF0dXJlJywKICAgICAgdHlwZTogJ2xpbmUnLAogICAgICB5QXhpc0luZGV4OiAxLAogICAgICBkYXRhOiBbMi4wLCAyLjIsIDMuMywgNC41LCA2LjMsIDEwLjIsIDIwLjMsIDIzLjQsIDIzLjAsIDE2LjUsIDEyLjAsIDYuMl0KICAgIH0KICBdCn07\'" v-bind="{ layout: \'bt\' }" />\n<h2 id="disable-emphasis-and-select-state" tabindex="-1">Disable Emphasis and Select State</h2>\n<p>The <code>emphasis</code> state in ECharts provides feedback to the user when the mouse is over an element, but in a chart with a large number of elements, the highlighting animation can cause performance issues. In particular, highlighting triggered by <a href="https://echarts.apache.org/option.html#tooltip">tooltip</a> or <a href="https://echarts.apache.org/option.html#tooltip">legend</a> component linkage can highlight multiple elements at the same time.</p>\n<p>Therefore, in this release we have added <code>emphasis.disabled</code> configuration. If you don\'t need the highlighting feedback and you are concerned about the interactivity, you can disable the <code>emphasis</code> state with this option.</p>\n<p>For the <code>select</code> state, we have also added <code>select.disabled</code>. This option can be used to configure some of the data to be unselectable.</p>\n<h2 id="support-for-selecting-entire-series" tabindex="-1">Support for Selecting Entire Series</h2>\n<p>As of 5.3.0 we support configuring <code>selectedMode</code> to <code>\'series\'</code> to enable selection of all data in a series.</p>\n<h2 id="formatting-of-values-in-tooltip" tabindex="-1">Formatting of Values in Tooltip</h2>\n<p>Tooltips can be used to display more detailed information about the data item when the user hovers it. ECharts also provides a <code>formatter</code> callback function to give developers more flexibility to customize the content of the tooltip.</p>\n<p>However, we found that most of the time, developers only needed to format the value part of the tooltip, such as fixed precision, prefixed with <code>$</code>, etc. Previously, in order to format the number, developers had to rewrite the entire content of the tooltip with <code>formatter</code>. Especially after 5.0, ECharts hint boxes have become more complex and beautiful, so rewriting them becomes costly and difficult to achieve the default results.</p>\n<p>So in this version, we have added a <code>valueFormatter</code> configuration to the tooltip for formatting the value part.</p>\n<p>As in the axis alignment example, we can add the °C and ml suffixes to the value part of the tooltip.</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHRvb2x0aXA6IHsKICAgIHRyaWdnZXI6ICdheGlzJwogIH0sCiAgbGVnZW5kOiB7fSwKICB4QXhpczogWwogICAgewogICAgICB0eXBlOiAnY2F0ZWdvcnknLAogICAgICBkYXRhOiBbJ01vbicsICdUdWUnLCAnV2VkJywgJ1RodScsICdGcmknLCAnU2F0JywgJ1N1biddLAogICAgICBheGlzUG9pbnRlcjogewogICAgICAgIHR5cGU6ICdzaGFkb3cnCiAgICAgIH0KICAgIH0KICBdLAogIHlBeGlzOiBbCiAgICB7CiAgICAgIHR5cGU6ICd2YWx1ZScsCiAgICAgIG5hbWU6ICdQcmVjaXBpdGF0aW9uJywKICAgICAgYWxpZ25UaWNrczogdHJ1ZSwKICAgICAgYXhpc0xhYmVsOiB7CiAgICAgICAgZm9ybWF0dGVyOiAne3ZhbHVlfSBtbCcKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgdHlwZTogJ3ZhbHVlJywKICAgICAgbmFtZTogJ1RlbXBlcmF0dXJlJywKICAgICAgYXhpc0xhYmVsOiB7CiAgICAgICAgZm9ybWF0dGVyOiAne3ZhbHVlfSDCsEMnCiAgICAgIH0KICAgIH0KICBdLAogIHNlcmllczogWwogICAgewogICAgICBuYW1lOiAnRXZhcG9yYXRpb24nLAogICAgICB0eXBlOiAnYmFyJywKICAgICAgdG9vbHRpcDogewogICAgICAgIHZhbHVlRm9ybWF0dGVyOiB2YWx1ZSA9PiB2YWx1ZSArICcgbWwnCiAgICAgIH0sCiAgICAgIC8vIHByZXR0aWVyLWlnbm9yZQogICAgICBkYXRhOiBbMi4wLCA0LjksIDcuMCwgMjMuMiwgMjUuNiwgNzYuNywgMTM1LjYsIDE2Mi4yLCAzMi42LCAyMC4wLCA2LjQsIDMuM10KICAgIH0sCiAgICB7CiAgICAgIG5hbWU6ICdQcmVjaXBpdGF0aW9uJywKICAgICAgdHlwZTogJ2JhcicsCiAgICAgIHRvb2x0aXA6IHsKICAgICAgICB2YWx1ZUZvcm1hdHRlcjogdmFsdWUgPT4gdmFsdWUgKyAnIG1sJwogICAgICB9LAogICAgICAvLyBwcmV0dGllci1pZ25vcmUKICAgICAgZGF0YTogWzIuNiwgNS45LCA5LjAsIDI2LjQsIDI4LjcsIDcwLjcsIDE3NS42LCAxODIuMiwgNDguNywgMTguOCwgNi4wLCAyLjNdCiAgICB9LAogICAgewogICAgICBuYW1lOiAnVGVtcGVyYXR1cmUnLAogICAgICB0eXBlOiAnbGluZScsCiAgICAgIHlBeGlzSW5kZXg6IDEsCiAgICAgIHRvb2x0aXA6IHsKICAgICAgICB2YWx1ZUZvcm1hdHRlcjogdmFsdWUgPT4gdmFsdWUgKyAnIMKwQycKICAgICAgfSwKICAgICAgZGF0YTogWzIuMCwgMi4yLCAzLjMsIDQuNSwgNi4zLCAxMC4yLCAyMC4zLCAyMy40LCAyMy4wLCAxNi41LCAxMi4wLCA2LjJdCiAgICB9CiAgXQp9Ow\'" v-bind="{ layout: \'bt\' }" />\n<p>Each series can configure its own <code>valueFormatter</code> according to its own value format.</p>\n<h2 id="more-flexible-sector-corner-radius" tabindex="-1">More Flexible Sector Corner Radius</h2>\n<p>In 5.0 we have added rounded corners configuration for sectors, which can make pie charts, sunburst charts more interesting. Previously, we only supported the inner and outer radius separately, this time we go a step further and support the four corners of the sector to be configured with different corner radius to bring more flexible display.</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHRvb2x0aXA6IHsKICAgIHRyaWdnZXI6ICdpdGVtJwogIH0sCiAgbGVnZW5kOiB7CiAgICB0b3A6ICc1JScsCiAgICBsZWZ0OiAnY2VudGVyJwogIH0sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIG5hbWU6ICdBY2Nlc3MgRnJvbScsCiAgICAgIHR5cGU6ICdwaWUnLAogICAgICByYWRpdXM6IFsnMzAlJywgJzcwJSddLAogICAgICByb3NlVHlwZTogJ2FuZ2xlJywKICAgICAgaXRlbVN0eWxlOiB7CiAgICAgICAgYm9yZGVyUmFkaXVzOiBbMjAsIDUsIDUsIDEwXSwKICAgICAgICBib3JkZXJDb2xvcjogJyNmZmYnLAogICAgICAgIGJvcmRlcldpZHRoOiAyCiAgICAgIH0sCiAgICAgIGxhYmVsOiB7CiAgICAgICAgc2hvdzogZmFsc2UKICAgICAgfSwKICAgICAgZGF0YTogWwogICAgICAgIHsgdmFsdWU6IDgwMCwgbmFtZTogJ1NlYXJjaCBFbmdpbmUnIH0sCiAgICAgICAgeyB2YWx1ZTogNzM1LCBuYW1lOiAnRGlyZWN0JyB9LAogICAgICAgIHsgdmFsdWU6IDU4MCwgbmFtZTogJ0VtYWlsJyB9LAogICAgICAgIHsgdmFsdWU6IDQ4NCwgbmFtZTogJ1VuaW9uIEFkcycgfSwKICAgICAgICB7IHZhbHVlOiA0MDAsIG5hbWU6ICdWaWRlbyBBZHMnIH0KICAgICAgXQogICAgfQogIF0KfTs\'" v-bind="{ layout: \'lr\', height: 400 }" />\n<h2 id="complex-label-optimization-for-pie-charts" tabindex="-1">Complex Label Optimization for Pie charts</h2>\n<p>Pie charts have always been one of the most complex charts on the label display in ECharts. We have been optimizing the layout and display of the pie chart labels for a long time.</p>\n<p>This time, we have done a deep optimization for pie chart labels that use text wrapping, background colors, rich text, and other complex layouts. In the adaptive width, container overflow, guide line calculation than before there are better results:</p>\n<table>\n<thead>\n<tr>\n<th style="text-align:center">5.2.2 (Before)</th>\n<th style="text-align:center">5.3.0 (After)</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td style="text-align:center"><img src="" alt="before" data-src="images/5-3-0/pie-label-before.png"></td>\n<td style="text-align:center"><img src="" alt="after" data-src="images/5-3-0/pie-label-after.png"></td>\n</tr>\n<tr>\n<td style="text-align:center"><img src="" alt="before" data-src="images/5-3-0/pie-label-before2.png"></td>\n<td style="text-align:center"><img src="" alt="after" data-src="images/5-3-0/pie-label-after2.png"></td>\n</tr>\n</tbody>\n</table>\n<h2 id="bar-chart-large-mode-optimization" tabindex="-1">bar chart large mode optimization</h2>\n<p>In the cases of a large amount of data (&gt; 2k), we support bar charts to speed up rendering and improve interactive performance by turning on <a href="https://echarts.apache.org/option.html#series-bar.large">large</a> mode. But previously the layout of bar charts in <a href="https://echarts.apache.org/option.html#series-bar.large">large</a> mode was simple and did not support the layout after stacking multiple series. In 5.3.0, we have optimized the layout of <a href="https://echarts.apache.org/option.html#series-bar.large">large</a> mode to be consistent with the normal mode. We can optimize the performance of the bar chart in more scenarios by turning on <a href="https://echarts.apache.org/option.html#series-bar.large">large</a>.</p>\n<p>In addition, the optimized bar chart layout also fixes the bug of incorrect stacking on non-linear axes like logarithmic axes.</p>\n<h2 id="breaking-changes" tabindex="-1">Breaking Changes</h2>\n<h3 id="registermap-and-getmap-methods-need-to-be-used-only-after-the-map-chart-is-imported" tabindex="-1">registerMap and getMap methods need to be used only after the map chart is imported</h3>\n<p>To reduce the size of the minimum bundle, we removed the map data management methods <code>getMap</code> and <code>registerMap</code> from the core module.</p>\n<p>If you are <a href="https://echarts.apache.org/handbook/en/basics/import/#importing-required-charts-and-components-to-have-minimal-bundle">only importing necessary charts and components</a>, you need to ensure that you have imported <code>GeoComponent</code> or <code>MapChart</code> before you can register map data with <code>registerMap</code>.</p>\n<md-code-block lang="ts" code="\'aW1wb3J0ICogYXMgZWNoYXJ0cyBmcm9tICdlY2hhcnRzL2NvcmUnOwppbXBvcnQgeyBNYXBDaGFydCB9IGZyb20gJ2VjaGFydHMvY2hhcnRzJzsKCmVjaGFydHMudXNlKFtNYXBDaGFydF0pOwoKLy8gWW91IG11c3QgaW1wb3J0IHRoZSBNYXBDaGFydCB3aXRoIHRoZSBgdXNlYCBtZXRob2QgYmVmb3JlIHlvdSBjYW4gcmVnaXN0ZXIgdGhlIG1hcCB3aXRoIHJlZ2lzdGVyTWFwCmVjaGFydHMucmVnaXN0ZXJNYXAoJ3dvcmxkJywgd29ybGRKU09OKTs\'" line-highlights="\'\'" />\n<p>If you are using <code>import * as echarts from \'echarts\'</code> to import the whole package, this change will not affect you in any way.</p>\n<h3 id="removing-the-default-bolding-emphasis-effect-in-the-line-chart" tabindex="-1">Removing the default bolding emphasis effect in the line chart</h3>\n<p>We introduced the default bolding emphasis effect for line charts in 5.0, but the community feedback was that this didn\'t looks well in many scenarios. So in this version we changed this effect from on by default to off by default. You can enable it by:</p>\n<md-code-block lang="ts" code="\'c2VyaWVzID0gewogIHR5cGU6ICdsaW5lJywKICAvLy4uLgogIGVtcGhhc2lzOiB7CiAgICBsaW5lU3R5bGU6IHsKICAgICAgd2lkdGg6ICdib2xkZXInCiAgICB9CiAgfQp9Ow\'" line-highlights="\'\'" />\n<h2 id="full-changelog" tabindex="-1">Full Changelog</h2>\n<p>View the <a href="https://echarts.apache.org//changelog.html#v5-3-0">Changelog</a></p>\n',postPath:"en/basics/release-note/5-3-0",title:"5.3 - What's New - Basics"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:i},{title:"入门篇",dir:I,children:[{title:"获取 ECharts",dir:C},{title:"在项目中引入 ECharts",dir:o},{title:"资源列表",dir:a,draft:e},{title:"寻求帮助",dir:A},{title:"版本特性",dir:n,children:[{title:"ECharts 6 特性介绍",dir:r},{title:"v5 升级 v6 指南",dir:d},{title:"5.0",dir:s},{title:"v4 升级 v5 指南",dir:l},{title:5.2,dir:c},{title:5.3,dir:h},{title:5.4,dir:p},{title:5.5,dir:m},{title:5.6,dir:b}]}]},{title:"概念篇",dir:w,children:[{title:"图表容器及大小",dir:u},{title:"配置项",dir:f,draft:e},{title:"系列",dir:y,draft:e},{title:"样式",dir:B},{title:"数据集",dir:G},{title:"数据转换",dir:v},{title:"坐标系",dir:Z,draft:e},{title:"坐标轴",dir:W},{title:"视觉映射",dir:t},{title:"图例",dir:H},{title:"事件与行为",dir:L}]},{title:"应用篇",dir:M,children:[{title:"常用图表类型",dir:K,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:V},{title:"堆叠柱状图",dir:J},{title:"动态排序柱状图",dir:x},{title:"极坐标系柱状图",dir:Y,draft:e},{title:"阶梯瀑布图",dir:N},{title:"视觉映射的柱状图",dir:t,draft:e}]},{title:"折线图",dir:X,children:[{title:"基础折线图",dir:D},{title:"堆叠折线图",dir:S},{title:"区域面积图",dir:R},{title:"平滑曲线图",dir:F},{title:"阶梯线图",dir:O}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:k},{title:"圆环图",dir:j},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:z,children:[{title:"基础散点图",dir:T}]}]},{title:"常用组件",dir:U,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:Q}]}]},{title:"移动端优化",dir:g,draft:e},{title:"跨平台方案",dir:E,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:P},{title:"数据下钻",dir:q,draft:e}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:_}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:ee}]},{title:"交互",dir:ge,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:te,draft:e},{title:"智能指针吸附",dir:ie}]}]},{title:"最佳实践",dir:Ie,children:[{title:"移动端优化",dir:g,draft:e},{title:Ce,dir:oe},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:ae}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:Ae}]}],en:[{title:"Get Started",dir:i},{title:"Basics",dir:I,children:[{title:"Download ECharts",dir:C},{title:"Import ECharts",dir:o},{title:"Resources",dir:a,draft:e},{title:"Get Help",dir:A},{title:"What's New",dir:n,children:[{title:"ECharts 6 Features",dir:r},{title:"Migration from v5 to v6",dir:d},{title:"5.0",dir:s},{title:"Migration from v4 to v5",dir:l},{title:5.2,dir:c},{title:5.3,dir:h},{title:5.4,dir:p},{title:5.5,dir:m},{title:5.6,dir:b}]}]},{title:"Concepts",dir:w,children:[{title:"Chart Container",dir:u},{title:"Chart Option",dir:f,draft:e},{title:"Series",dir:y,draft:e},{title:"Style",dir:B},{title:"Dataset",dir:G},{title:"Data Transform",dir:v},{title:"Coordinate",dir:Z,draft:e},{title:"Axis",dir:W},{title:"Visual Mapping",dir:t},{title:"Legend",dir:H},{title:"Event and Action",dir:L}]},{title:"How To Guides",dir:M,children:[{title:"Common Charts",dir:K,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:V},{title:"Stacked Bar",dir:J},{title:"Bar Racing",dir:x},{title:"Bar Polar",dir:Y,draft:e},{title:"Waterfall",dir:N}]},{title:"Line",dir:X,children:[{title:"Basic Line",dir:D},{title:"Stacked Line",dir:S},{title:"Area Chart",dir:R},{title:"Smoothed Line",dir:F},{title:"Step Line",dir:O}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:k},{title:"Ring Style",dir:j},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:z,children:[{title:"Basic Scatter",dir:T}]}]},{title:"Common Components",dir:U,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:Q}]}]},{title:"Mobile",dir:g,draft:e},{title:"Cross Platform",dir:E,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:P},{title:"Drilldown",dir:q,draft:e}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:_}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:ee}]},{title:"Interaction",dir:ge,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:te,draft:e},{title:"Intelligent Pointer Snapping",dir:ie}]}]},{title:"Best Practices",dir:Ie,children:[{title:"Mobile Optimization",dir:g,draft:e},{title:Ce,dir:oe},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:ae}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:Ae}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:e,routePath:"/en/basics/release-note/5-3-0",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/en/basics/release-note/5-4-0/index.html b/docs/en/basics/release-note/5-4-0/index.html
new file mode 100644
index 0000000..6276564
--- /dev/null
+++ b/docs/en/basics/release-note/5-4-0/index.html
@@ -0,0 +1,13 @@
+<!doctype html>
+<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>5.4 - What's New - Basics - Handbook - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="en"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/en/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/en/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/en/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/en/index.html" class="navbar-brand"><img src="https://echarts.apache.org/en/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/en/index.html">Home</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Docs<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/feature.html">Features</a></li><li><a href="https://echarts.apache.org/handbook/en/get-started/">Handbook</a></li><li><a href="https://echarts.apache.org/en/api.html">API</a></li><li><a href="https://echarts.apache.org/en/option.html">Chart Configuration</a></li><li><a href="https://echarts.apache.org/en/changelog.html">Changelog</a></li><li><a href="https://echarts.apache.org/en/faq.html">FAQ</a></li><li><a href="https://echarts.apache.org/handbook/en/basics/release-note/v6-upgrade-guide">V6 Upgrade Guide</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Download<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/download.html">Download</a></li><li><a href="https://echarts.apache.org/en/download-theme.html">Download Themes</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">Download Custom Series<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/download-extension.html">Download Extensions</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/en/index.html">Examples</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Resources<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/spreadsheet.html">Spread Sheet Tool</a></li><li><a href="https://echarts.apache.org/en/theme-builder.html">Theme Builder</a></li><li><a href="https://echarts.apache.org/en/cheat-sheet.html">Cheat Sheet</a></li><li><a href="https://echarts.apache.org/en/resources.html">More Resources</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/events.html">Events</a></li><li><a href="https://echarts.apache.org/en/committers.html">Committers</a></li><li><a href="https://echarts.apache.org/en/maillist.html">Mailing List</a></li><li><a href="https://echarts.apache.org/en/contributing.html">How to Contribute</a></li><li><a href="https://echarts.apache.org/en/dependencies.html">Dependencies</a></li><li><a href="https://echarts.apache.org/en/coding-standard.html">Code Standard</a></li><li><a href="https://github.com/apache/echarts" target="_blank">Source Code (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/security.html">Security</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">License<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">Events<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("zh")'>中文</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/en/get-started" class="nav-link"><span class="title">Get Started</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Basics</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/basics/download" class="nav-link"><span class="title">Download ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/import" class="nav-link"><span class="title">Import ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/basics/help" class="nav-link"><span class="title">Get Help</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">What's New</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 Features</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">Migration from v5 to v6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">Migration from v4 to v5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-4-0" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Concepts</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/concepts/chart-size" class="nav-link"><span class="title">Chart Container</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/style" class="nav-link"><span class="title">Style</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/dataset" class="nav-link"><span class="title">Dataset</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/data-transform" class="nav-link"><span class="title">Data Transform</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/axis" class="nav-link"><span class="title">Axis</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/visual-map" class="nav-link"><span class="title">Visual Mapping</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/legend" class="nav-link"><span class="title">Legend</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/event" class="nav-link"><span class="title">Event and Action</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">How To Guides</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">Common Charts</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Bar</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">Basic Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">Stacked Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">Bar Racing</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">Waterfall</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Line</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">Basic Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">Stacked Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/area-line" class="nav-link"><span class="title">Area Chart</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">Smoothed Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/step-line" class="nav-link"><span class="title">Step Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Pie</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">Basic Pie</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">Ring Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/rose" class="nav-link"><span class="title">Rose Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Scatter</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">Basic Scatter</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Common Components</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Geo</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG Base Map</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">Cross Platform</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/cross-platform/server" class="nav-link"><span class="title">Server Side Rendering</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Data</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/data/dynamic-data" class="nav-link"><span class="title">Dynamic Data</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Label</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/label/rich-text" class="nav-link"><span class="title">Rich Text</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Animation</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/animation/transition" class="nav-link"><span class="title">Data Transition</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Interaction</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/drag" class="nav-link"><span class="title">Drag</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">Intelligent Pointer Snapping</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Best Practices</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/en/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/aria" class="nav-link"><span class="title">Aria</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/security" class="nav-link"><span class="title">Security Guidelines</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Edit Handbook</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/meta/edit-guide" class="nav-link"><span class="title">Edit Guide</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="apache-echarts-5.4.0-features" tabindex="-1">Apache ECharts 5.4.0 Features</h1> <h2 id="intelligent-pointer-snapping" tabindex="-1">Intelligent Pointer Snapping</h2> <p>Some interactive elements may be relatively small in charts, so sometimes it is difficult for users to click and do other operations accurately, especially on the mobile. Therefore, in Apache ECharts 5.4.0, we introduced the concept of "intelligent pointer snapping".</p> <p>See <a href="en/how-to/interaction/coarse-pointer">intelligent pointer snapping</a> for details.</p> <h2 id="using-pie-charts-in-more-coordinate-systems" tabindex="-1">Using Pie charts in more coordinate systems</h2> <p>A very powerful feature of Apache ECharts is the combination of various chart types, coordinate systems, and components. In this version, we have added the coordinate systems option for pie charts.</p> <p>Thus, pie charts can appear in the Cartesian coordinate systems,</p> <p><img src alt data-src="images/5-4-0/pie-grid.png"></p> <p>calendar coordinate systems,</p> <p><img src alt data-src="images/5-4-0/pie-calendar.png"></p> <p>geographical coordinate systems,</p> <p><img src alt data-src="images/5-4-0/pie-geo.png"></p> <p>and even with the Baidu Map and Gaode Map extension.</p> <p><img src alt data-src="images/5-4-0/pie-bmap.png"></p> <p><img src alt data-src="images/5-4-0/pie-amap.png"></p> <p>This greatly extends the flexibility of pie charts, allowing developers to create more combinations of chart effects using Apache ECharts.</p> <h2 id="ukrainian-translation" tabindex="-1">Ukrainian Translation</h2> <p>In this release, we added the support of the Ukrainian language. <strong>Now Apache ECharts supports 17 languages!</strong></p> <blockquote><p>If you need to use a language other than English or Chinese, you need to call <code>echarts.registerLocale</code> to initialize the chart before initializing it, and then pass <code>opts.locale</code> to modify the chart language during <code>init</code>.</p></blockquote> <h2 id="gauge-label-rotation" tabindex="-1">Gauge Label Rotation</h2> <p>In this version, we support text rotation of the Gauge series.</p> <iframe width="100%" height="400" src=""></iframe> <p><code>axisLabel.rotate</code> can be set to <code>'tangential' | 'radial' | number</code>. If it is of type <code>number</code>, it indicates the rotation angle of the label from -90 degrees to 90 degrees, with positive values being counterclockwise. In addition to this, it can also be the strings <code>'radial'</code> for radial rotation and <code>'tangential'</code> for tangential rotation.</p> <h2 id="full-changelog" tabindex="-1">Full Changelog</h2> <p>View the <a href="https://echarts.apache.org//changelog.html#v5-4-0">Changelog</a></p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">Contributors</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/en/basics/release-note/5-4-0.md" title="Edit this Document" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">Edit this page on GitHub</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/Ovilia" target="_blank" class="post-contributor has-avatar"><img alt="Ovilia" src="https://echarts.apache.org/en/images/people/羡辙.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>Ovilia</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,e,i,r,a,d,l,n,o,s,c,h,p,g,m,u,f,b,v,y,C,w,x,S,P,k,B,E,G,A,L,I,R,D,M,T,V,_,z,U,q,N,F,H,W,O,$,X,j,J,K,Q,Y,Z,tt,et,it,rt,at,dt,lt,nt,ot){return{layout:"default",data:[{html:'<h1 id="apache-echarts-5.4.0-features" tabindex="-1">Apache ECharts 5.4.0 Features</h1>\n<h2 id="intelligent-pointer-snapping" tabindex="-1">Intelligent Pointer Snapping</h2>\n<p>Some interactive elements may be relatively small in charts, so sometimes it is difficult for users to click and do other operations accurately, especially on the mobile. Therefore, in Apache ECharts 5.4.0, we introduced the concept of &quot;intelligent pointer snapping&quot;.</p>\n<p>See <a href="en/how-to/interaction/coarse-pointer">intelligent pointer snapping</a> for details.</p>\n<h2 id="using-pie-charts-in-more-coordinate-systems" tabindex="-1">Using Pie charts in more coordinate systems</h2>\n<p>A very powerful feature of Apache ECharts is the combination of various chart types, coordinate systems, and components. In this version, we have added the coordinate systems option for pie charts.</p>\n<p>Thus, pie charts can appear in the Cartesian coordinate systems,</p>\n<p><img src="" alt="" data-src="images/5-4-0/pie-grid.png"></p>\n<p>calendar coordinate systems,</p>\n<p><img src="" alt="" data-src="images/5-4-0/pie-calendar.png"></p>\n<p>geographical coordinate systems,</p>\n<p><img src="" alt="" data-src="images/5-4-0/pie-geo.png"></p>\n<p>and even with the Baidu Map and Gaode Map extension.</p>\n<p><img src="" alt="" data-src="images/5-4-0/pie-bmap.png"></p>\n<p><img src="" alt="" data-src="images/5-4-0/pie-amap.png"></p>\n<p>This greatly extends the flexibility of pie charts, allowing developers to create more combinations of chart effects using Apache ECharts.</p>\n<h2 id="ukrainian-translation" tabindex="-1">Ukrainian Translation</h2>\n<p>In this release, we added the support of the Ukrainian language. <strong>Now Apache ECharts supports 17 languages!</strong></p>\n<blockquote>\n<p>If you need to use a language other than English or Chinese, you need to call <code>echarts.registerLocale</code> to initialize the chart before initializing it, and then pass <code>opts.locale</code> to modify the chart language during <code>init</code>.</p>\n</blockquote>\n<h2 id="gauge-label-rotation" tabindex="-1">Gauge Label Rotation</h2>\n<p>In this version, we support text rotation of the Gauge series.</p>\n<md-example src="gauge-grade" width="100%" height="400" />\n<p><code>axisLabel.rotate</code> can be set to <code>\'tangential\' | \'radial\' | number</code>. If it is of type <code>number</code>, it indicates the rotation angle of the label from -90 degrees to 90 degrees, with positive values being counterclockwise. In addition to this, it can also be the strings <code>\'radial\'</code> for radial rotation and <code>\'tangential\'</code> for tangential rotation.</p>\n<h2 id="full-changelog" tabindex="-1">Full Changelog</h2>\n<p>View the <a href="https://echarts.apache.org//changelog.html#v5-4-0">Changelog</a></p>\n',postPath:"en/basics/release-note/5-4-0",title:"5.4 - What's New - Basics"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:r},{title:"入门篇",dir:a,children:[{title:"获取 ECharts",dir:d},{title:"在项目中引入 ECharts",dir:l},{title:"资源列表",dir:n,draft:t},{title:"寻求帮助",dir:o},{title:"版本特性",dir:s,children:[{title:"ECharts 6 特性介绍",dir:c},{title:"v5 升级 v6 指南",dir:h},{title:"5.0",dir:p},{title:"v4 升级 v5 指南",dir:g},{title:5.2,dir:m},{title:5.3,dir:u},{title:5.4,dir:f},{title:5.5,dir:b},{title:5.6,dir:v}]}]},{title:"概念篇",dir:y,children:[{title:"图表容器及大小",dir:C},{title:"配置项",dir:w,draft:t},{title:"系列",dir:x,draft:t},{title:"样式",dir:S},{title:"数据集",dir:P},{title:"数据转换",dir:k},{title:"坐标系",dir:B,draft:t},{title:"坐标轴",dir:E},{title:"视觉映射",dir:i},{title:"图例",dir:G},{title:"事件与行为",dir:A}]},{title:"应用篇",dir:L,children:[{title:"常用图表类型",dir:I,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:R},{title:"堆叠柱状图",dir:D},{title:"动态排序柱状图",dir:M},{title:"极坐标系柱状图",dir:T,draft:t},{title:"阶梯瀑布图",dir:V},{title:"视觉映射的柱状图",dir:i,draft:t}]},{title:"折线图",dir:_,children:[{title:"基础折线图",dir:z},{title:"堆叠折线图",dir:U},{title:"区域面积图",dir:q},{title:"平滑曲线图",dir:N},{title:"阶梯线图",dir:F}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:H},{title:"圆环图",dir:W},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:O,children:[{title:"基础散点图",dir:$}]}]},{title:"常用组件",dir:X,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:j}]}]},{title:"移动端优化",dir:e,draft:t},{title:"跨平台方案",dir:J,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:K},{title:"数据下钻",dir:Q,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:Y}]},{title:"动画",dir:Z,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:et,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:it,draft:t},{title:"智能指针吸附",dir:rt}]}]},{title:"最佳实践",dir:at,children:[{title:"移动端优化",dir:e,draft:t},{title:dt,dir:lt},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:nt}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:ot}]}],en:[{title:"Get Started",dir:r},{title:"Basics",dir:a,children:[{title:"Download ECharts",dir:d},{title:"Import ECharts",dir:l},{title:"Resources",dir:n,draft:t},{title:"Get Help",dir:o},{title:"What's New",dir:s,children:[{title:"ECharts 6 Features",dir:c},{title:"Migration from v5 to v6",dir:h},{title:"5.0",dir:p},{title:"Migration from v4 to v5",dir:g},{title:5.2,dir:m},{title:5.3,dir:u},{title:5.4,dir:f},{title:5.5,dir:b},{title:5.6,dir:v}]}]},{title:"Concepts",dir:y,children:[{title:"Chart Container",dir:C},{title:"Chart Option",dir:w,draft:t},{title:"Series",dir:x,draft:t},{title:"Style",dir:S},{title:"Dataset",dir:P},{title:"Data Transform",dir:k},{title:"Coordinate",dir:B,draft:t},{title:"Axis",dir:E},{title:"Visual Mapping",dir:i},{title:"Legend",dir:G},{title:"Event and Action",dir:A}]},{title:"How To Guides",dir:L,children:[{title:"Common Charts",dir:I,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:R},{title:"Stacked Bar",dir:D},{title:"Bar Racing",dir:M},{title:"Bar Polar",dir:T,draft:t},{title:"Waterfall",dir:V}]},{title:"Line",dir:_,children:[{title:"Basic Line",dir:z},{title:"Stacked Line",dir:U},{title:"Area Chart",dir:q},{title:"Smoothed Line",dir:N},{title:"Step Line",dir:F}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:H},{title:"Ring Style",dir:W},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:O,children:[{title:"Basic Scatter",dir:$}]}]},{title:"Common Components",dir:X,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:j}]}]},{title:"Mobile",dir:e,draft:t},{title:"Cross Platform",dir:J,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:K},{title:"Drilldown",dir:Q,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:Y}]},{title:"Animation",dir:Z,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:et,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:it,draft:t},{title:"Intelligent Pointer Snapping",dir:rt}]}]},{title:"Best Practices",dir:at,children:[{title:"Mobile Optimization",dir:e,draft:t},{title:dt,dir:lt},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:nt}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:ot}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/en/basics/release-note/5-4-0",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/en/basics/release-note/5-5-0/index.html b/docs/en/basics/release-note/5-5-0/index.html
new file mode 100644
index 0000000..1c21347
--- /dev/null
+++ b/docs/en/basics/release-note/5-5-0/index.html
@@ -0,0 +1,80 @@
+<!doctype html>
+<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>5.5 - What's New - Basics - Handbook - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="en"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/en/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/en/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/en/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/en/index.html" class="navbar-brand"><img src="https://echarts.apache.org/en/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/en/index.html">Home</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Docs<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/feature.html">Features</a></li><li><a href="https://echarts.apache.org/handbook/en/get-started/">Handbook</a></li><li><a href="https://echarts.apache.org/en/api.html">API</a></li><li><a href="https://echarts.apache.org/en/option.html">Chart Configuration</a></li><li><a href="https://echarts.apache.org/en/changelog.html">Changelog</a></li><li><a href="https://echarts.apache.org/en/faq.html">FAQ</a></li><li><a href="https://echarts.apache.org/handbook/en/basics/release-note/v6-upgrade-guide">V6 Upgrade Guide</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Download<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/download.html">Download</a></li><li><a href="https://echarts.apache.org/en/download-theme.html">Download Themes</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">Download Custom Series<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/download-extension.html">Download Extensions</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/en/index.html">Examples</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Resources<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/spreadsheet.html">Spread Sheet Tool</a></li><li><a href="https://echarts.apache.org/en/theme-builder.html">Theme Builder</a></li><li><a href="https://echarts.apache.org/en/cheat-sheet.html">Cheat Sheet</a></li><li><a href="https://echarts.apache.org/en/resources.html">More Resources</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/events.html">Events</a></li><li><a href="https://echarts.apache.org/en/committers.html">Committers</a></li><li><a href="https://echarts.apache.org/en/maillist.html">Mailing List</a></li><li><a href="https://echarts.apache.org/en/contributing.html">How to Contribute</a></li><li><a href="https://echarts.apache.org/en/dependencies.html">Dependencies</a></li><li><a href="https://echarts.apache.org/en/coding-standard.html">Code Standard</a></li><li><a href="https://github.com/apache/echarts" target="_blank">Source Code (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/security.html">Security</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">License<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">Events<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("zh")'>中文</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/en/get-started" class="nav-link"><span class="title">Get Started</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Basics</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/basics/download" class="nav-link"><span class="title">Download ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/import" class="nav-link"><span class="title">Import ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/basics/help" class="nav-link"><span class="title">Get Help</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">What's New</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 Features</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">Migration from v5 to v6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">Migration from v4 to v5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-5-0" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Concepts</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/concepts/chart-size" class="nav-link"><span class="title">Chart Container</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/style" class="nav-link"><span class="title">Style</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/dataset" class="nav-link"><span class="title">Dataset</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/data-transform" class="nav-link"><span class="title">Data Transform</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/axis" class="nav-link"><span class="title">Axis</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/visual-map" class="nav-link"><span class="title">Visual Mapping</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/legend" class="nav-link"><span class="title">Legend</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/event" class="nav-link"><span class="title">Event and Action</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">How To Guides</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">Common Charts</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Bar</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">Basic Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">Stacked Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">Bar Racing</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">Waterfall</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Line</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">Basic Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">Stacked Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/area-line" class="nav-link"><span class="title">Area Chart</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">Smoothed Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/step-line" class="nav-link"><span class="title">Step Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Pie</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">Basic Pie</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">Ring Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/rose" class="nav-link"><span class="title">Rose Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Scatter</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">Basic Scatter</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Common Components</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Geo</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG Base Map</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">Cross Platform</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/cross-platform/server" class="nav-link"><span class="title">Server Side Rendering</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Data</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/data/dynamic-data" class="nav-link"><span class="title">Dynamic Data</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Label</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/label/rich-text" class="nav-link"><span class="title">Rich Text</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Animation</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/animation/transition" class="nav-link"><span class="title">Data Transition</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Interaction</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/drag" class="nav-link"><span class="title">Drag</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">Intelligent Pointer Snapping</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Best Practices</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/en/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/aria" class="nav-link"><span class="title">Aria</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/security" class="nav-link"><span class="title">Security Guidelines</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Edit Handbook</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/meta/edit-guide" class="nav-link"><span class="title">Edit Guide</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="apache-echarts-5.5.0-features" tabindex="-1">Apache ECharts 5.5.0 Features</h1> <h2 id="enhanced-esm-support" tabindex="-1">Enhanced ESM Support</h2> <p>This feature is a significant change to the default ESM package, specifically designed for developer testing and Node.js usage in module customization scenarios.</p> <p>Previously, ECharts only exported <code>*.esm</code> files in npm (in the lib directory of the npm package). While this worked well in bundlers, it didn’t perform as well in the Node.js runtime and some Node.js-based testing frameworks like vitest and jest.</p> <p>With this new feature, we’ve made several changes to improve this:</p> <ul><li>Added <code>"type": "module"</code> to package.json</li> <li>Added <code>"exports": {...}"</code> to package.json</li> <li>Added some <code>package.json</code> files to the sub-directory, which only contain <code>"type": "commonjs"</code>.</li></ul> <p>These changes mean that files like <code>echarts/core.js</code> can now be resolved as ESM in environments like pure Node.js, vitest, jest, and create-react-app.</p> <p>We’ve also ensured that this new feature is compatible with a variety of environments, including runtime (node/vitest/jest(create-react-app)/ssr/…) and bundlers (webpack/rollup/vite/esbuild/…).</p> <p>We’re excited about this new feature and believe it will significantly improve the developer experience.</p> <h2 id="server-side-rendering-%EF%BC%8B-lightweight-client-runtime" tabindex="-1">Server-Side Rendering + Lightweight Client Runtime</h2> <p>Apache ECharts is powerful, but correspondingly, it has a large package size. We have made various efforts to improve this in previous versions. Developers can use TreeShaking to load parts of the code as needed, reducing the amount of code loaded. Starting from Apache ECharts version 5.3, we support a server-side SVG string rendering solution with zero dependencies, and support the initial animation of charts. In this way, using the result of server-side rendering as the first screen rendering can greatly reduce the first screen loading time.</p> <p>Although server-side rendering is an effective solution to reduce the package size, if some interactions need to be implemented on the client side, it is still necessary to load echarts.js, which may increase the loading time. For some scenarios that require faster page loading, this may not be an ideal choice.</p> <p>In version 5.5.0, we added a lightweight runtime for the client side, so the client does not need to load the full ECharts to implement some interactions. In this way, we can render charts on the server side, and then load the lightweight runtime on the client side to implement some common interactions. This means that only 4KB of lightweight runtime (1KB after gzip) is needed to implement charts with initial animations and some commonly used interaction forms. This improvement will greatly increase the page loading speed, especially for the mobile experience.</p> <p><img src alt data-src="images/5-5-0/ssr-example.png"></p> <p>Take this pie chart with a title as an example, if the client only packages the pie chart and title components, it needs 135KB after gzip; if it follows the server-side rendering solution, the rendering result SVG is 1 KB after gzip, and the client runtime is 1KB after gzip, only 1.5% of the former volume. In terms of interaction, the latter can also achieve initial animation, highlighting after the mouse moves to the chart element, and get click events, which can meet most of the common interaction needs.</p> <p>If you need to use this solution, the server-side code remains the same, but you need to make sure that the ECharts version is above 5.5.0.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code><span class="token comment">// Server-side code</span>
+<span class="token keyword">const</span> echarts <span class="token operator">=</span> <span class="token keyword">require</span><span class="token punctuation">(</span><span class="token string">'echarts'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+<span class="token comment">// In SSR mode the first container parameter is not required</span>
+<span class="token keyword">let</span> chart <span class="token operator">=</span> echarts<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span><span class="token keyword">null</span><span class="token punctuation">,</span> <span class="token keyword">null</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
+  renderer<span class="token operator">:</span> <span class="token string">'svg'</span><span class="token punctuation">,</span> <span class="token comment">// must use SVG rendering mode</span>
+  ssr<span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span> <span class="token comment">// enable SSR</span>
+  width<span class="token operator">:</span> <span class="token number">400</span><span class="token punctuation">,</span> <span class="token comment">// need to specify height and width</span>
+  height<span class="token operator">:</span> <span class="token number">300</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+<span class="token comment">// use setOption as normal</span>
+chart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+  <span class="token comment">//...</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+<span class="token comment">// Output a string</span>
+<span class="token keyword">const</span> svgStr <span class="token operator">=</span> chart<span class="token punctuation">.</span><span class="token function">renderToSVGString</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+<span class="token comment">// Dispose it to release memory</span>
+chart<span class="token punctuation">.</span><span class="token function">dispose</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+chart <span class="token operator">=</span> <span class="token keyword">null</span><span class="token punctuation">;</span>
+
+<span class="token comment">// Response to the browser (using Express.js as example):</span>
+res<span class="token punctuation">.</span><span class="token function">writeHead</span><span class="token punctuation">(</span><span class="token number">200</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
+  <span class="token string-property property">'Content-Type'</span><span class="token operator">:</span> <span class="token string">'application/xml'</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+res<span class="token punctuation">.</span><span class="token function">write</span><span class="token punctuation">(</span>svgStr<span class="token punctuation">)</span><span class="token punctuation">;</span>
+res<span class="token punctuation">.</span><span class="token function">end</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>The client adds the obtained SVG string to the container and binds the lightweight runtime:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-html line-numbers"><code><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>chart-container<span class="token punctuation">"</span></span> <span class="token special-attr"><span class="token attr-name">style</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token value css language-css"><span class="token property">width</span><span class="token punctuation">:</span>800px<span class="token punctuation">;</span><span class="token property">height</span><span class="token punctuation">:</span>600px</span><span class="token punctuation">"</span></span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">></span></span>
+
+<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://cdn.jsdelivr.net/npm/echarts/ssr/client/dist/index.min.js<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">></span></span>
+<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span><span class="token punctuation">></span></span>
+const ssrClient = window['echarts-ssr-client'];
+
+const isSeriesShown = {
+  a: true,
+  b: true
+};
+
+function updateChart(svgStr) {
+  const container = document.getElementById('chart-container');
+  container.innerHTML = svgStr;
+
+  // Use lightweight runtime to give the chart interactive capabilities
+  ssrClient.hydrate(container, {
+    on: {
+      click: (params) => {
+        if (params.ssrType === 'legend') {
+          // Click the legend element, request the server for secondary rendering
+          isSeriesShown[params.seriesName] = !isSeriesShown[params.seriesName];
+          fetch('...?series=' + JSON.stringify(isSeriesShown))
+            .then(res => res.text())
+            .then(svgStr => {
+              updateChart(svgStr);
+            });
+        }
+      }
+    }
+  });
+}
+
+// Get the SVG string rendered by the server through AJAX request
+fetch('...')
+  .then(res => res.text())
+  .then(svgStr => {
+    updateChart(svgStr);
+  });
+<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">></span></span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>The lightweight client runtime must be used in conjunction with the server-side rendering results in SVG format, supporting the following interactions:</p> <ul><li>Initial animation of the chart (implementation principle: the SVG rendered by the server has CSS animation)</li> <li>Highlight style (implementation principle: the SVG rendered by the server has CSS animation)</li> <li>Dynamically change data (implementation principle: the lightweight runtime requests the server for secondary rendering)</li> <li>Click the legend to toggle whether the series is displayed (implementation principle: the lightweight runtime requests the server for secondary rendering)</li></ul> <p>As you can see, this can satisfy most interactive scenario needs. If more complex interactions are needed, the client needs to load <code>echarts.js</code> to implement complete functionality. For a complete introduction, please refer to <a href="en/how-to/cross-platform/server">Server-side Rendering ECharts Charts</a>.</p> <h2 id="data-drilldown-supports-transition-animation" tabindex="-1">Data Drilldown Supports Transition Animation</h2> <p>In version 5.5.0, we added the <code>childGroupId</code> configuration item, which can realize the transition animation function of data drilldown.</p> <p>In previous versions, we already support using <code>groupId</code> to represent the group to which the current data belongs. The newly added <code>childGroupId</code> can be used to express the group of the current data itself, forming a `parent-child-grandchild` relationship chain after being used in conjunction with <code>groupId</code>. When the user clicks on the data element in the chart, the chart will display the drilled down data in the form of transition animation.</p> <iframe width="100%" height="400" src=""></iframe> <p>Developers only need to specify <code>groupId</code> and <code>childGroupId</code>, and ECharts will automatically handle the hierarchical relationship and realize the transition animation.</p> <h2 id="pie-chart-supports-gaps-between-sectors" tabindex="-1">Pie Chart Supports Gaps Between Sectors</h2> <p>By setting gaps between the sectors of the pie chart, the data blocks of the pie chart can be clearer and form unique visual effects. See (<a href="https://echarts.apache.org/option.html#series-pie.padAngle">series-pie.padAngle</a>).</p> <iframe width="100%" height="400" src=""></iframe> <h2 id="pie-chart-and-polar-coordinate-system-support-end-angle" tabindex="-1">Pie Chart and Polar Coordinate System Support End Angle</h2> <p>The end angle configuration item allows us to make incomplete pie charts such as semi-circles. See (<a href="https://echarts.apache.org/option.html#series-pie.endAngle">series-pie.endAngle</a>).</p> <iframe width="100%" height="400" src=""></iframe> <p>The polar coordinate system also supports the end angle, which can create more diverse polar coordinate charts. See (<a href="https://echarts.apache.org/option.html#angleAxis.endAngle">angleAxis.endAngle</a>).</p> <iframe width="100%" height="400" src=""></iframe> <h2 id="added-min-max-sampling-method" tabindex="-1">Added <code>min-max</code> Sampling Method</h2> <p>The ECharts <a href="https://echarts.apache.org/option.html#series-line.sampling">sampling</a> configuration item allows for setting the downsampling strategy for line charts when the amount of data is far greater than the number of pixels, which can effectively optimize the drawing efficiency of the chart. In version 5.5.0, we added the <code>min-max</code> sampling method, which can display the extremes of the data more accurately while retaining the overall trend of the data.</p> <h2 id="added-two-languages--arabic-and-dutch" tabindex="-1">Added Two Languages: Arabic and Dutch</h2> <p>In version 5.5.0, we added support for two languages, Arabic (AR) and Dutch (NL). Developers can register new language packs through the <a href="https://echarts.apache.org/api.html#echarts.registerLocale">echarts.registerLocale</a> method.</p> <h2 id="tooltip-supports-specifying-container" tabindex="-1">Tooltip Supports Specifying Container</h2> <p>In previous versions, the Tooltip could only be inserted into the chart container or <code>document.body</code>. Now, you can specify the container through <a href="https://echarts.apache.org/option.html#tooltip.appendTo">tooltip.appendTo</a>, so you can control the position of the tooltip more flexibly.</p> <h2 id="alignment-mode-of-maximum-and-minimum-labels-on-axis" tabindex="-1">Alignment Mode of Maximum and Minimum Labels on Axis</h2> <p>In version 5.5.0, we added <a href="https://echarts.apache.org/option.html#xAxis.axisLabel.alignMinLabel">axisLabel.alignMinLabel</a> and <a href="https://echarts.apache.org/option.html#xAxis.axisLabel.alignMaxLabel">axisLabel.alignMaxLabel</a> configuration items, which can control the alignment mode of the maximum and minimum labels on the axis. If the drawing area of the chart is relatively large and you don't want the axis label to overflow, you can align the maximum and minimum labels to the right and left, respectively.</p> <h2 id="pictorial-bar-chart-supports-clipping" tabindex="-1">Pictorial Bar Chart Supports Clipping</h2> <p>The pictorial bar chart may exceed the drawing area. If you want to avoid this, you can clip it through the <a href="https://echarts.apache.org/option.html#series-pictorialBar.clip">series-pictorialBar.clip</a> configuration item.</p> <h2 id="added-dataindex-parameter-for-tooltip-valueformatter" tabindex="-1">Added <code>dataIndex</code> Parameter For Tooltip <code>valueFormatter</code></h2> <p><code>valueFormatter</code> can be used to customize the value part of the tooltip content, and now an <code>dataIndex</code> parameter has been added, which can be used to obtain the index of the current data.</p> <h2 id="full-changelog" tabindex="-1">Full Changelog</h2> <p>View the <a href="https://echarts.apache.org/changelog.html#v5-5-0">Changelog</a></p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">Contributors</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/en/basics/release-note/5-5-0.md" title="Edit this Document" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">Edit this page on GitHub</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/Ovilia" target="_blank" class="post-contributor has-avatar"><img alt="Ovilia" src="https://echarts.apache.org/en/images/people/羡辙.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>Ovilia</span></a><a href="https://github.com/plainheart" target="_blank" class="post-contributor has-avatar"><img alt="plainheart" src="https://echarts.apache.org/en/images/people/plainheart.jpg" loading="lazy" decoding="async" fetchpriority="low"> <span>plainheart</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(e,t,i,a,r,n,d,o,l,s,h,c,p,g,m,u,f,b,I,C,w,y,v,A,G,x,B,Z,V,S,N,W,k,H,X,z,T,L,R,K,Y,J,j,P,D,E,M,F,Q,U,q,O,_,$,ee,te,ie,ae,re,ne,de,oe,le){return{layout:"default",data:[{html:'<h1 id="apache-echarts-5.5.0-features" tabindex="-1">Apache ECharts 5.5.0 Features</h1>\n<h2 id="enhanced-esm-support" tabindex="-1">Enhanced ESM Support</h2>\n<p>This feature is a significant change to the default ESM package, specifically designed for developer testing and Node.js usage in module customization scenarios.</p>\n<p>Previously, ECharts only exported <code>*.esm</code> files in npm (in the lib directory of the npm package). While this worked well in bundlers, it didn’t perform as well in the Node.js runtime and some Node.js-based testing frameworks like vitest and jest.</p>\n<p>With this new feature, we’ve made several changes to improve this:</p>\n<ul>\n<li>Added <code>&quot;type&quot;: &quot;module&quot;</code> to package.json</li>\n<li>Added <code>&quot;exports&quot;: {...}&quot;</code> to package.json</li>\n<li>Added some <code>package.json</code> files to the sub-directory, which only contain <code>&quot;type&quot;: &quot;commonjs&quot;</code>.</li>\n</ul>\n<p>These changes mean that files like <code>echarts/core.js</code> can now be resolved as ESM in environments like pure Node.js, vitest, jest, and create-react-app.</p>\n<p>We’ve also ensured that this new feature is compatible with a variety of environments, including runtime (node/vitest/jest(create-react-app)/ssr/…) and bundlers (webpack/rollup/vite/esbuild/…).</p>\n<p>We’re excited about this new feature and believe it will significantly improve the developer experience.</p>\n<h2 id="server-side-rendering-%EF%BC%8B-lightweight-client-runtime" tabindex="-1">Server-Side Rendering + Lightweight Client Runtime</h2>\n<p>Apache ECharts is powerful, but correspondingly, it has a large package size. We have made various efforts to improve this in previous versions. Developers can use TreeShaking to load parts of the code as needed, reducing the amount of code loaded. Starting from Apache ECharts version 5.3, we support a server-side SVG string rendering solution with zero dependencies, and support the initial animation of charts. In this way, using the result of server-side rendering as the first screen rendering can greatly reduce the first screen loading time.</p>\n<p>Although server-side rendering is an effective solution to reduce the package size, if some interactions need to be implemented on the client side, it is still necessary to load echarts.js, which may increase the loading time. For some scenarios that require faster page loading, this may not be an ideal choice.</p>\n<p>In version 5.5.0, we added a lightweight runtime for the client side, so the client does not need to load the full ECharts to implement some interactions. In this way, we can render charts on the server side, and then load the lightweight runtime on the client side to implement some common interactions. This means that only 4KB of lightweight runtime (1KB after gzip) is needed to implement charts with initial animations and some commonly used interaction forms. This improvement will greatly increase the page loading speed, especially for the mobile experience.</p>\n<p><img src="" alt="" data-src="images/5-5-0/ssr-example.png"></p>\n<p>Take this pie chart with a title as an example, if the client only packages the pie chart and title components, it needs 135KB after gzip; if it follows the server-side rendering solution, the rendering result SVG is 1 KB after gzip, and the client runtime is 1KB after gzip, only 1.5% of the former volume. In terms of interaction, the latter can also achieve initial animation, highlighting after the mouse moves to the chart element, and get click events, which can meet most of the common interaction needs.</p>\n<p>If you need to use this solution, the server-side code remains the same, but you need to make sure that the ECharts version is above 5.5.0.</p>\n<md-code-block lang="ts" code="\'Ly8gU2VydmVyLXNpZGUgY29kZQpjb25zdCBlY2hhcnRzID0gcmVxdWlyZSgnZWNoYXJ0cycpOwoKLy8gSW4gU1NSIG1vZGUgdGhlIGZpcnN0IGNvbnRhaW5lciBwYXJhbWV0ZXIgaXMgbm90IHJlcXVpcmVkCmxldCBjaGFydCA9IGVjaGFydHMuaW5pdChudWxsLCBudWxsLCB7CiAgcmVuZGVyZXI6ICdzdmcnLCAvLyBtdXN0IHVzZSBTVkcgcmVuZGVyaW5nIG1vZGUKICBzc3I6IHRydWUsIC8vIGVuYWJsZSBTU1IKICB3aWR0aDogNDAwLCAvLyBuZWVkIHRvIHNwZWNpZnkgaGVpZ2h0IGFuZCB3aWR0aAogIGhlaWdodDogMzAwCn0pOwoKLy8gdXNlIHNldE9wdGlvbiBhcyBub3JtYWwKY2hhcnQuc2V0T3B0aW9uKHsKICAvLy4uLgp9KTsKCi8vIE91dHB1dCBhIHN0cmluZwpjb25zdCBzdmdTdHIgPSBjaGFydC5yZW5kZXJUb1NWR1N0cmluZygpOwoKLy8gRGlzcG9zZSBpdCB0byByZWxlYXNlIG1lbW9yeQpjaGFydC5kaXNwb3NlKCk7CmNoYXJ0ID0gbnVsbDsKCi8vIFJlc3BvbnNlIHRvIHRoZSBicm93c2VyICh1c2luZyBFeHByZXNzLmpzIGFzIGV4YW1wbGUpOgpyZXMud3JpdGVIZWFkKDIwMCwgewogICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veG1sJwp9KTsKcmVzLndyaXRlKHN2Z1N0cik7CnJlcy5lbmQoKTs\'" line-highlights="\'\'" />\n<p>The client adds the obtained SVG string to the container and binds the lightweight runtime:</p>\n<md-code-block lang="html" code="\'PGRpdiBpZD0iY2hhcnQtY29udGFpbmVyIiBzdHlsZT0id2lkdGg6ODAwcHg7aGVpZ2h0OjYwMHB4Ij48L2Rpdj4KCjxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2VjaGFydHMvc3NyL2NsaWVudC9kaXN0L2luZGV4Lm1pbi5qcyI-PC9zY3JpcHQ-CjxzY3JpcHQ-CmNvbnN0IHNzckNsaWVudCA9IHdpbmRvd1snZWNoYXJ0cy1zc3ItY2xpZW50J107Cgpjb25zdCBpc1Nlcmllc1Nob3duID0gewogIGE6IHRydWUsCiAgYjogdHJ1ZQp9OwoKZnVuY3Rpb24gdXBkYXRlQ2hhcnQoc3ZnU3RyKSB7CiAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoYXJ0LWNvbnRhaW5lcicpOwogIGNvbnRhaW5lci5pbm5lckhUTUwgPSBzdmdTdHI7CgogIC8vIFVzZSBsaWdodHdlaWdodCBydW50aW1lIHRvIGdpdmUgdGhlIGNoYXJ0IGludGVyYWN0aXZlIGNhcGFiaWxpdGllcwogIHNzckNsaWVudC5oeWRyYXRlKGNvbnRhaW5lciwgewogICAgb246IHsKICAgICAgY2xpY2s6IChwYXJhbXMpID0-IHsKICAgICAgICBpZiAocGFyYW1zLnNzclR5cGUgPT09ICdsZWdlbmQnKSB7CiAgICAgICAgICAvLyBDbGljayB0aGUgbGVnZW5kIGVsZW1lbnQsIHJlcXVlc3QgdGhlIHNlcnZlciBmb3Igc2Vjb25kYXJ5IHJlbmRlcmluZwogICAgICAgICAgaXNTZXJpZXNTaG93bltwYXJhbXMuc2VyaWVzTmFtZV0gPSAhaXNTZXJpZXNTaG93bltwYXJhbXMuc2VyaWVzTmFtZV07CiAgICAgICAgICBmZXRjaCgnLi4uP3Nlcmllcz0nICsgSlNPTi5zdHJpbmdpZnkoaXNTZXJpZXNTaG93bikpCiAgICAgICAgICAgIC50aGVuKHJlcyA9PiByZXMudGV4dCgpKQogICAgICAgICAgICAudGhlbihzdmdTdHIgPT4gewogICAgICAgICAgICAgIHVwZGF0ZUNoYXJ0KHN2Z1N0cik7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH0pOwp9CgovLyBHZXQgdGhlIFNWRyBzdHJpbmcgcmVuZGVyZWQgYnkgdGhlIHNlcnZlciB0aHJvdWdoIEFKQVggcmVxdWVzdApmZXRjaCgnLi4uJykKICAudGhlbihyZXMgPT4gcmVzLnRleHQoKSkKICAudGhlbihzdmdTdHIgPT4gewogICAgdXBkYXRlQ2hhcnQoc3ZnU3RyKTsKICB9KTsKPC9zY3JpcHQ-\'" line-highlights="\'\'" />\n<p>The lightweight client runtime must be used in conjunction with the server-side rendering results in SVG format, supporting the following interactions:</p>\n<ul>\n<li>Initial animation of the chart (implementation principle: the SVG rendered by the server has CSS animation)</li>\n<li>Highlight style (implementation principle: the SVG rendered by the server has CSS animation)</li>\n<li>Dynamically change data (implementation principle: the lightweight runtime requests the server for secondary rendering)</li>\n<li>Click the legend to toggle whether the series is displayed (implementation principle: the lightweight runtime requests the server for secondary rendering)</li>\n</ul>\n<p>As you can see, this can satisfy most interactive scenario needs. If more complex interactions are needed, the client needs to load <code>echarts.js</code> to implement complete functionality. For a complete introduction, please refer to <a href="en/how-to/cross-platform/server">Server-side Rendering ECharts Charts</a>.</p>\n<h2 id="data-drilldown-supports-transition-animation" tabindex="-1">Data Drilldown Supports Transition Animation</h2>\n<p>In version 5.5.0, we added the <code>childGroupId</code> configuration item, which can realize the transition animation function of data drilldown.</p>\n<p>In previous versions, we already support using <code>groupId</code> to represent the group to which the current data belongs. The newly added <code>childGroupId</code> can be used to express the group of the current data itself, forming a `parent-child-grandchild` relationship chain after being used in conjunction with <code>groupId</code>. When the user clicks on the data element in the chart, the chart will display the drilled down data in the form of transition animation.</p>\n<md-example src="bar-multi-drilldown" width="100%" height="400" />\n<p>Developers only need to specify <code>groupId</code> and <code>childGroupId</code>, and ECharts will automatically handle the hierarchical relationship and realize the transition animation.</p>\n<h2 id="pie-chart-supports-gaps-between-sectors" tabindex="-1">Pie Chart Supports Gaps Between Sectors</h2>\n<p>By setting gaps between the sectors of the pie chart, the data blocks of the pie chart can be clearer and form unique visual effects. See (<a href="https://echarts.apache.org/option.html#series-pie.padAngle">series-pie.padAngle</a>).</p>\n<md-example src="pie-padAngle" width="100%" height="400" />\n<h2 id="pie-chart-and-polar-coordinate-system-support-end-angle" tabindex="-1">Pie Chart and Polar Coordinate System Support End Angle</h2>\n<p>The end angle configuration item allows us to make incomplete pie charts such as semi-circles. See (<a href="https://echarts.apache.org/option.html#series-pie.endAngle">series-pie.endAngle</a>).</p>\n<md-example src="pie-half-donut" width="100%" height="400" />\n<p>The polar coordinate system also supports the end angle, which can create more diverse polar coordinate charts. See (<a href="https://echarts.apache.org/option.html#angleAxis.endAngle">angleAxis.endAngle</a>).</p>\n<md-example src="polar-endAngle" width="100%" height="400" />\n<h2 id="added-min-max-sampling-method" tabindex="-1">Added <code>min-max</code> Sampling Method</h2>\n<p>The ECharts <a href="https://echarts.apache.org/option.html#series-line.sampling">sampling</a> configuration item allows for setting the downsampling strategy for line charts when the amount of data is far greater than the number of pixels, which can effectively optimize the drawing efficiency of the chart. In version 5.5.0, we added the <code>min-max</code> sampling method, which can display the extremes of the data more accurately while retaining the overall trend of the data.</p>\n<h2 id="added-two-languages--arabic-and-dutch" tabindex="-1">Added Two Languages: Arabic and Dutch</h2>\n<p>In version 5.5.0, we added support for two languages, Arabic (AR) and Dutch (NL). Developers can register new language packs through the <a href="https://echarts.apache.org/api.html#echarts.registerLocale">echarts.registerLocale</a> method.</p>\n<h2 id="tooltip-supports-specifying-container" tabindex="-1">Tooltip Supports Specifying Container</h2>\n<p>In previous versions, the Tooltip could only be inserted into the chart container or <code>document.body</code>. Now, you can specify the container through <a href="https://echarts.apache.org/option.html#tooltip.appendTo">tooltip.appendTo</a>, so you can control the position of the tooltip more flexibly.</p>\n<h2 id="alignment-mode-of-maximum-and-minimum-labels-on-axis" tabindex="-1">Alignment Mode of Maximum and Minimum Labels on Axis</h2>\n<p>In version 5.5.0, we added <a href="https://echarts.apache.org/option.html#xAxis.axisLabel.alignMinLabel">axisLabel.alignMinLabel</a> and <a href="https://echarts.apache.org/option.html#xAxis.axisLabel.alignMaxLabel">axisLabel.alignMaxLabel</a> configuration items, which can control the alignment mode of the maximum and minimum labels on the axis. If the drawing area of the chart is relatively large and you don\'t want the axis label to overflow, you can align the maximum and minimum labels to the right and left, respectively.</p>\n<h2 id="pictorial-bar-chart-supports-clipping" tabindex="-1">Pictorial Bar Chart Supports Clipping</h2>\n<p>The pictorial bar chart may exceed the drawing area. If you want to avoid this, you can clip it through the <a href="https://echarts.apache.org/option.html#series-pictorialBar.clip">series-pictorialBar.clip</a> configuration item.</p>\n<h2 id="added-dataindex-parameter-for-tooltip-valueformatter" tabindex="-1">Added <code>dataIndex</code> Parameter For Tooltip <code>valueFormatter</code></h2>\n<p><code>valueFormatter</code> can be used to customize the value part of the tooltip content, and now an <code>dataIndex</code> parameter has been added, which can be used to obtain the index of the current data.</p>\n<h2 id="full-changelog" tabindex="-1">Full Changelog</h2>\n<p>View the <a href="https://echarts.apache.org/changelog.html#v5-5-0">Changelog</a></p>\n',postPath:"en/basics/release-note/5-5-0",title:"5.5 - What's New - Basics"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:a},{title:"入门篇",dir:r,children:[{title:"获取 ECharts",dir:n},{title:"在项目中引入 ECharts",dir:d},{title:"资源列表",dir:o,draft:e},{title:"寻求帮助",dir:l},{title:"版本特性",dir:s,children:[{title:"ECharts 6 特性介绍",dir:h},{title:"v5 升级 v6 指南",dir:c},{title:"5.0",dir:p},{title:"v4 升级 v5 指南",dir:g},{title:5.2,dir:m},{title:5.3,dir:u},{title:5.4,dir:f},{title:5.5,dir:b},{title:5.6,dir:I}]}]},{title:"概念篇",dir:C,children:[{title:"图表容器及大小",dir:w},{title:"配置项",dir:y,draft:e},{title:"系列",dir:v,draft:e},{title:"样式",dir:A},{title:"数据集",dir:G},{title:"数据转换",dir:x},{title:"坐标系",dir:B,draft:e},{title:"坐标轴",dir:Z},{title:"视觉映射",dir:i},{title:"图例",dir:V},{title:"事件与行为",dir:S}]},{title:"应用篇",dir:N,children:[{title:"常用图表类型",dir:W,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:k},{title:"堆叠柱状图",dir:H},{title:"动态排序柱状图",dir:X},{title:"极坐标系柱状图",dir:z,draft:e},{title:"阶梯瀑布图",dir:T},{title:"视觉映射的柱状图",dir:i,draft:e}]},{title:"折线图",dir:L,children:[{title:"基础折线图",dir:R},{title:"堆叠折线图",dir:K},{title:"区域面积图",dir:Y},{title:"平滑曲线图",dir:J},{title:"阶梯线图",dir:j}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:P},{title:"圆环图",dir:D},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:E,children:[{title:"基础散点图",dir:M}]}]},{title:"常用组件",dir:F,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:Q}]}]},{title:"移动端优化",dir:t,draft:e},{title:"跨平台方案",dir:U,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:q},{title:"数据下钻",dir:O,draft:e}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:_}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:ee}]},{title:"交互",dir:te,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:ie,draft:e},{title:"智能指针吸附",dir:ae}]}]},{title:"最佳实践",dir:re,children:[{title:"移动端优化",dir:t,draft:e},{title:ne,dir:de},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:oe}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:le}]}],en:[{title:"Get Started",dir:a},{title:"Basics",dir:r,children:[{title:"Download ECharts",dir:n},{title:"Import ECharts",dir:d},{title:"Resources",dir:o,draft:e},{title:"Get Help",dir:l},{title:"What's New",dir:s,children:[{title:"ECharts 6 Features",dir:h},{title:"Migration from v5 to v6",dir:c},{title:"5.0",dir:p},{title:"Migration from v4 to v5",dir:g},{title:5.2,dir:m},{title:5.3,dir:u},{title:5.4,dir:f},{title:5.5,dir:b},{title:5.6,dir:I}]}]},{title:"Concepts",dir:C,children:[{title:"Chart Container",dir:w},{title:"Chart Option",dir:y,draft:e},{title:"Series",dir:v,draft:e},{title:"Style",dir:A},{title:"Dataset",dir:G},{title:"Data Transform",dir:x},{title:"Coordinate",dir:B,draft:e},{title:"Axis",dir:Z},{title:"Visual Mapping",dir:i},{title:"Legend",dir:V},{title:"Event and Action",dir:S}]},{title:"How To Guides",dir:N,children:[{title:"Common Charts",dir:W,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:k},{title:"Stacked Bar",dir:H},{title:"Bar Racing",dir:X},{title:"Bar Polar",dir:z,draft:e},{title:"Waterfall",dir:T}]},{title:"Line",dir:L,children:[{title:"Basic Line",dir:R},{title:"Stacked Line",dir:K},{title:"Area Chart",dir:Y},{title:"Smoothed Line",dir:J},{title:"Step Line",dir:j}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:P},{title:"Ring Style",dir:D},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:E,children:[{title:"Basic Scatter",dir:M}]}]},{title:"Common Components",dir:F,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:Q}]}]},{title:"Mobile",dir:t,draft:e},{title:"Cross Platform",dir:U,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:q},{title:"Drilldown",dir:O,draft:e}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:_}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:ee}]},{title:"Interaction",dir:te,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:ie,draft:e},{title:"Intelligent Pointer Snapping",dir:ae}]}]},{title:"Best Practices",dir:re,children:[{title:"Mobile Optimization",dir:t,draft:e},{title:ne,dir:de},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:oe}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:le}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:e,routePath:"/en/basics/release-note/5-5-0",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/en/basics/release-note/5-6-0/index.html b/docs/en/basics/release-note/5-6-0/index.html
new file mode 100644
index 0000000..db1c3f1
--- /dev/null
+++ b/docs/en/basics/release-note/5-6-0/index.html
@@ -0,0 +1,44 @@
+<!doctype html>
+<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>5.6 - What's New - Basics - Handbook - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="en"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/en/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/en/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/en/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/en/index.html" class="navbar-brand"><img src="https://echarts.apache.org/en/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/en/index.html">Home</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Docs<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/feature.html">Features</a></li><li><a href="https://echarts.apache.org/handbook/en/get-started/">Handbook</a></li><li><a href="https://echarts.apache.org/en/api.html">API</a></li><li><a href="https://echarts.apache.org/en/option.html">Chart Configuration</a></li><li><a href="https://echarts.apache.org/en/changelog.html">Changelog</a></li><li><a href="https://echarts.apache.org/en/faq.html">FAQ</a></li><li><a href="https://echarts.apache.org/handbook/en/basics/release-note/v6-upgrade-guide">V6 Upgrade Guide</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Download<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/download.html">Download</a></li><li><a href="https://echarts.apache.org/en/download-theme.html">Download Themes</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">Download Custom Series<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/download-extension.html">Download Extensions</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/en/index.html">Examples</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Resources<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/spreadsheet.html">Spread Sheet Tool</a></li><li><a href="https://echarts.apache.org/en/theme-builder.html">Theme Builder</a></li><li><a href="https://echarts.apache.org/en/cheat-sheet.html">Cheat Sheet</a></li><li><a href="https://echarts.apache.org/en/resources.html">More Resources</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/events.html">Events</a></li><li><a href="https://echarts.apache.org/en/committers.html">Committers</a></li><li><a href="https://echarts.apache.org/en/maillist.html">Mailing List</a></li><li><a href="https://echarts.apache.org/en/contributing.html">How to Contribute</a></li><li><a href="https://echarts.apache.org/en/dependencies.html">Dependencies</a></li><li><a href="https://echarts.apache.org/en/coding-standard.html">Code Standard</a></li><li><a href="https://github.com/apache/echarts" target="_blank">Source Code (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/security.html">Security</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">License<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">Events<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("zh")'>中文</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/en/get-started" class="nav-link"><span class="title">Get Started</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Basics</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/basics/download" class="nav-link"><span class="title">Download ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/import" class="nav-link"><span class="title">Import ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/basics/help" class="nav-link"><span class="title">Get Help</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">What's New</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 Features</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">Migration from v5 to v6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">Migration from v4 to v5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-6-0" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Concepts</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/concepts/chart-size" class="nav-link"><span class="title">Chart Container</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/style" class="nav-link"><span class="title">Style</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/dataset" class="nav-link"><span class="title">Dataset</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/data-transform" class="nav-link"><span class="title">Data Transform</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/axis" class="nav-link"><span class="title">Axis</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/visual-map" class="nav-link"><span class="title">Visual Mapping</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/legend" class="nav-link"><span class="title">Legend</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/event" class="nav-link"><span class="title">Event and Action</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">How To Guides</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">Common Charts</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Bar</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">Basic Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">Stacked Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">Bar Racing</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">Waterfall</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Line</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">Basic Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">Stacked Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/area-line" class="nav-link"><span class="title">Area Chart</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">Smoothed Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/step-line" class="nav-link"><span class="title">Step Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Pie</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">Basic Pie</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">Ring Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/rose" class="nav-link"><span class="title">Rose Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Scatter</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">Basic Scatter</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Common Components</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Geo</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG Base Map</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">Cross Platform</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/cross-platform/server" class="nav-link"><span class="title">Server Side Rendering</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Data</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/data/dynamic-data" class="nav-link"><span class="title">Dynamic Data</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Label</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/label/rich-text" class="nav-link"><span class="title">Rich Text</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Animation</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/animation/transition" class="nav-link"><span class="title">Data Transition</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Interaction</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/drag" class="nav-link"><span class="title">Drag</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">Intelligent Pointer Snapping</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Best Practices</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/en/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/aria" class="nav-link"><span class="title">Aria</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/security" class="nav-link"><span class="title">Security Guidelines</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Edit Handbook</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/meta/edit-guide" class="nav-link"><span class="title">Edit Guide</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="apache-echarts-5.6.0-features" tabindex="-1">Apache ECharts 5.6.0 Features</h1> <h2 id="define-region-styles-in-original-geojson-data" tabindex="-1">Define Region Styles in Original GeoJSON Data</h2> <p>ECharts maps use GeoJSON format to define data. In theory, following the principle of "separation of data and style", GeoJSON should only define data while styles should be defined in ECharts. However, in some cases, styles themselves are a form of data expression (for example: using dashed lines to represent disputed borders - here the "dashed line" is a style but actually expresses a data concept, so defining styles in GeoJSON is reasonable).</p> <p>In ECharts 5.6.0, we support defining region styles in the original GeoJSON data by specifying <code>features[].properties.echartsStyle</code>. This is consistent with the <a href="https://echarts.apache.org/option.html#series-map.data">data</a> option, which supports configuring <code>itemStyle</code>, <code>label</code>, <code>tooltip</code> etc. Example:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code>geoJSON<span class="token punctuation">.</span>features<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">.</span>properties<span class="token punctuation">.</span>echartsStyle <span class="token operator">=</span> <span class="token punctuation">{</span>
+    itemStyle<span class="token operator">:</span> <span class="token punctuation">{</span>
+        areaColor<span class="token operator">:</span> <span class="token string">'green'</span>
+    <span class="token punctuation">}</span>
+<span class="token punctuation">}</span>
+
+geoJSON<span class="token punctuation">.</span>features<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">.</span>properties<span class="token punctuation">.</span>echartsStyle <span class="token operator">=</span> <span class="token punctuation">{</span>
+    selected<span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+    label<span class="token operator">:</span> <span class="token punctuation">{</span>
+        formatter<span class="token operator">:</span> <span class="token string">'Default Selected:\n{b}'</span>
+    <span class="token punctuation">}</span>
+<span class="token punctuation">}</span>
+
+geoJSON<span class="token punctuation">.</span>features<span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">.</span>properties<span class="token punctuation">.</span>echartsStyle <span class="token operator">=</span> <span class="token punctuation">{</span>
+    itemStyle<span class="token operator">:</span> <span class="token punctuation">{</span>
+        borderType<span class="token operator">:</span> <span class="token string">'dotted'</span><span class="token punctuation">,</span>
+        borderColor<span class="token operator">:</span> <span class="token string">'blue'</span>
+    <span class="token punctuation">}</span>
+<span class="token punctuation">}</span>
+
+geoJSON<span class="token punctuation">.</span>features<span class="token punctuation">[</span><span class="token number">11</span><span class="token punctuation">]</span><span class="token punctuation">.</span>properties<span class="token punctuation">.</span>echartsStyle <span class="token operator">=</span> <span class="token punctuation">{</span>
+    itemStyle<span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token comment">// This region will be overridden as `cyan` by the data item option</span>
+        areaColor<span class="token operator">:</span> <span class="token string">'black'</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    tooltip<span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token function-variable function">formatter</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span>params<span class="token punctuation">)</span> <span class="token punctuation">{</span>
+            <span class="token keyword">return</span> <span class="token string">'This is a custom tooltip from GeoJSON: '</span> <span class="token operator">+</span> params<span class="token punctuation">.</span>name<span class="token punctuation">;</span>
+        <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+<span class="token punctuation">}</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="axis-labels-support-tooltips" tabindex="-1">Axis Labels Support Tooltips</h2> <p>In some cases, axis labels are too long or we want to display more information on axis labels. In ECharts 5.6.0, we support adding tooltips to axis labels. The configuration is consistent with the <code>tooltip</code> option, please refer to <a href="https://echarts.apache.org/option.html#xAxis.tooltip">axis.tooltip documentation</a> for details.</p> <p><img src alt data-src="images/5-6-0/axis-tooltip.png"></p> <h2 id="sunburst-chart-supports-focusing-all-descendants-and-ancestors" tabindex="-1">Sunburst Chart Supports Focusing All Descendants and Ancestors</h2> <p>In previous versions of sunburst charts, <a href="https://echarts.apache.org/option.html#series-sunburst.emphasis.focus">emphasis.focus</a> supported the following values:</p> <ul><li><code>'none'</code> Do not fade out other data, it's by default.</li> <li><code>'self'</code> Only focus (not fade out) the element of the currently highlighted data.</li> <li><code>'series'</code> Focus on all elements of the series which the currently highlighted data belongs to.</li> <li><code>'ancestor'</code> Focus on all ancestor nodes.
+'descendant' Focus on all descendants nodes.</li></ul> <p>In ECharts 5.6.0, we added <code>'relative'</code>, which focuses on all descendants and ancestor nodes.</p> <p><img src alt data-src="images/5-6-0/sunburst-emphasis-relative.png"></p> <h2 id="added-support-for-two-new-languages" tabindex="-1">Added Support for Two New Languages</h2> <p>In this version, support for Swedish and Persian languages has been added. With this, ECharts now supports 22 languages.</p> <h2 id="line-chart-performance-optimization" tabindex="-1">Line Chart Performance Optimization</h2> <p>In this version, we optimized the rendering performance of line charts, solving the problem of memory growth with time.</p> <h2 id="complete-changelog" tabindex="-1">Complete Changelog</h2> <p>View the <a href="https://echarts.apache.org/changelog.html#v5-6-0">changelog</a></p> <p>The next major version, Apache ECharts 6.0.0, is currently being actively developed and is expected to be released in the first quarter of 2025. Stay tuned for more updates.</p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">Contributors</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/en/basics/release-note/5-6-0.md" title="Edit this Document" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">Edit this page on GitHub</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/Ovilia" target="_blank" class="post-contributor has-avatar"><img alt="Ovilia" src="https://echarts.apache.org/en/images/people/羡辙.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>Ovilia</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,e,i,r,a,d,l,o,n,s,c,h,p,g,u,m,f,b,C,I,v,y,w,A,G,S,x,B,Z,W,V,J,R,X,N,P,E,H,D,F,T,L,k,z,O,U,Y,M,K,j,Q,_,q,$,tt,et,it,rt,at,dt,lt,ot,nt){return{layout:"default",data:[{html:'<h1 id="apache-echarts-5.6.0-features" tabindex="-1">Apache ECharts 5.6.0 Features</h1>\n<h2 id="define-region-styles-in-original-geojson-data" tabindex="-1">Define Region Styles in Original GeoJSON Data</h2>\n<p>ECharts maps use GeoJSON format to define data. In theory, following the principle of &quot;separation of data and style&quot;, GeoJSON should only define data while styles should be defined in ECharts. However, in some cases, styles themselves are a form of data expression (for example: using dashed lines to represent disputed borders - here the &quot;dashed line&quot; is a style but actually expresses a data concept, so defining styles in GeoJSON is reasonable).</p>\n<p>In ECharts 5.6.0, we support defining region styles in the original GeoJSON data by specifying <code>features[].properties.echartsStyle</code>. This is consistent with the <a href="https://echarts.apache.org/option.html#series-map.data">data</a> option, which supports configuring <code>itemStyle</code>, <code>label</code>, <code>tooltip</code> etc. Example:</p>\n<md-code-block lang="ts" code="\'Z2VvSlNPTi5mZWF0dXJlc1swXS5wcm9wZXJ0aWVzLmVjaGFydHNTdHlsZSA9IHsKICAgIGl0ZW1TdHlsZTogewogICAgICAgIGFyZWFDb2xvcjogJ2dyZWVuJwogICAgfQp9CgpnZW9KU09OLmZlYXR1cmVzWzFdLnByb3BlcnRpZXMuZWNoYXJ0c1N0eWxlID0gewogICAgc2VsZWN0ZWQ6IHRydWUsCiAgICBsYWJlbDogewogICAgICAgIGZvcm1hdHRlcjogJ0RlZmF1bHQgU2VsZWN0ZWQ6XG57Yn0nCiAgICB9Cn0KCmdlb0pTT04uZmVhdHVyZXNbMl0ucHJvcGVydGllcy5lY2hhcnRzU3R5bGUgPSB7CiAgICBpdGVtU3R5bGU6IHsKICAgICAgICBib3JkZXJUeXBlOiAnZG90dGVkJywKICAgICAgICBib3JkZXJDb2xvcjogJ2JsdWUnCiAgICB9Cn0KCmdlb0pTT04uZmVhdHVyZXNbMTFdLnByb3BlcnRpZXMuZWNoYXJ0c1N0eWxlID0gewogICAgaXRlbVN0eWxlOiB7CiAgICAgICAgLy8gVGhpcyByZWdpb24gd2lsbCBiZSBvdmVycmlkZGVuIGFzIGBjeWFuYCBieSB0aGUgZGF0YSBpdGVtIG9wdGlvbgogICAgICAgIGFyZWFDb2xvcjogJ2JsYWNrJwogICAgfSwKICAgIHRvb2x0aXA6IHsKICAgICAgICBmb3JtYXR0ZXI6IGZ1bmN0aW9uIChwYXJhbXMpIHsKICAgICAgICAgICAgcmV0dXJuICdUaGlzIGlzIGEgY3VzdG9tIHRvb2x0aXAgZnJvbSBHZW9KU09OOiAnICsgcGFyYW1zLm5hbWU7CiAgICAgICAgfQogICAgfQp9\'" line-highlights="\'\'" />\n<h2 id="axis-labels-support-tooltips" tabindex="-1">Axis Labels Support Tooltips</h2>\n<p>In some cases, axis labels are too long or we want to display more information on axis labels. In ECharts 5.6.0, we support adding tooltips to axis labels. The configuration is consistent with the <code>tooltip</code> option, please refer to <a href="https://echarts.apache.org/option.html#xAxis.tooltip">axis.tooltip documentation</a> for details.</p>\n<p><img src="" alt="" data-src="images/5-6-0/axis-tooltip.png"></p>\n<h2 id="sunburst-chart-supports-focusing-all-descendants-and-ancestors" tabindex="-1">Sunburst Chart Supports Focusing All Descendants and Ancestors</h2>\n<p>In previous versions of sunburst charts, <a href="https://echarts.apache.org/option.html#series-sunburst.emphasis.focus">emphasis.focus</a> supported the following values:</p>\n<ul>\n<li><code>\'none\'</code> Do not fade out other data, it\'s by default.</li>\n<li><code>\'self\'</code> Only focus (not fade out) the element of the currently highlighted data.</li>\n<li><code>\'series\'</code> Focus on all elements of the series which the currently highlighted data belongs to.</li>\n<li><code>\'ancestor\'</code> Focus on all ancestor nodes.\n\'descendant\' Focus on all descendants nodes.</li>\n</ul>\n<p>In ECharts 5.6.0, we added <code>\'relative\'</code>, which focuses on all descendants and ancestor nodes.</p>\n<p><img src="" alt="" data-src="images/5-6-0/sunburst-emphasis-relative.png"></p>\n<h2 id="added-support-for-two-new-languages" tabindex="-1">Added Support for Two New Languages</h2>\n<p>In this version, support for Swedish and Persian languages has been added. With this, ECharts now supports 22 languages.</p>\n<h2 id="line-chart-performance-optimization" tabindex="-1">Line Chart Performance Optimization</h2>\n<p>In this version, we optimized the rendering performance of line charts, solving the problem of memory growth with time.</p>\n<h2 id="complete-changelog" tabindex="-1">Complete Changelog</h2>\n<p>View the <a href="https://echarts.apache.org/changelog.html#v5-6-0">changelog</a></p>\n<p>The next major version, Apache ECharts 6.0.0, is currently being actively developed and is expected to be released in the first quarter of 2025. Stay tuned for more updates.</p>\n',postPath:"en/basics/release-note/5-6-0",title:"5.6 - What's New - Basics"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:r},{title:"入门篇",dir:a,children:[{title:"获取 ECharts",dir:d},{title:"在项目中引入 ECharts",dir:l},{title:"资源列表",dir:o,draft:t},{title:"寻求帮助",dir:n},{title:"版本特性",dir:s,children:[{title:"ECharts 6 特性介绍",dir:c},{title:"v5 升级 v6 指南",dir:h},{title:"5.0",dir:p},{title:"v4 升级 v5 指南",dir:g},{title:5.2,dir:u},{title:5.3,dir:m},{title:5.4,dir:f},{title:5.5,dir:b},{title:5.6,dir:C}]}]},{title:"概念篇",dir:I,children:[{title:"图表容器及大小",dir:v},{title:"配置项",dir:y,draft:t},{title:"系列",dir:w,draft:t},{title:"样式",dir:A},{title:"数据集",dir:G},{title:"数据转换",dir:S},{title:"坐标系",dir:x,draft:t},{title:"坐标轴",dir:B},{title:"视觉映射",dir:i},{title:"图例",dir:Z},{title:"事件与行为",dir:W}]},{title:"应用篇",dir:V,children:[{title:"常用图表类型",dir:J,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:R},{title:"堆叠柱状图",dir:X},{title:"动态排序柱状图",dir:N},{title:"极坐标系柱状图",dir:P,draft:t},{title:"阶梯瀑布图",dir:E},{title:"视觉映射的柱状图",dir:i,draft:t}]},{title:"折线图",dir:H,children:[{title:"基础折线图",dir:D},{title:"堆叠折线图",dir:F},{title:"区域面积图",dir:T},{title:"平滑曲线图",dir:L},{title:"阶梯线图",dir:k}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:z},{title:"圆环图",dir:O},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:U,children:[{title:"基础散点图",dir:Y}]}]},{title:"常用组件",dir:M,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:K}]}]},{title:"移动端优化",dir:e,draft:t},{title:"跨平台方案",dir:j,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:Q},{title:"数据下钻",dir:_,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:q}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:et,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:it,draft:t},{title:"智能指针吸附",dir:rt}]}]},{title:"最佳实践",dir:at,children:[{title:"移动端优化",dir:e,draft:t},{title:dt,dir:lt},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:ot}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:nt}]}],en:[{title:"Get Started",dir:r},{title:"Basics",dir:a,children:[{title:"Download ECharts",dir:d},{title:"Import ECharts",dir:l},{title:"Resources",dir:o,draft:t},{title:"Get Help",dir:n},{title:"What's New",dir:s,children:[{title:"ECharts 6 Features",dir:c},{title:"Migration from v5 to v6",dir:h},{title:"5.0",dir:p},{title:"Migration from v4 to v5",dir:g},{title:5.2,dir:u},{title:5.3,dir:m},{title:5.4,dir:f},{title:5.5,dir:b},{title:5.6,dir:C}]}]},{title:"Concepts",dir:I,children:[{title:"Chart Container",dir:v},{title:"Chart Option",dir:y,draft:t},{title:"Series",dir:w,draft:t},{title:"Style",dir:A},{title:"Dataset",dir:G},{title:"Data Transform",dir:S},{title:"Coordinate",dir:x,draft:t},{title:"Axis",dir:B},{title:"Visual Mapping",dir:i},{title:"Legend",dir:Z},{title:"Event and Action",dir:W}]},{title:"How To Guides",dir:V,children:[{title:"Common Charts",dir:J,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:R},{title:"Stacked Bar",dir:X},{title:"Bar Racing",dir:N},{title:"Bar Polar",dir:P,draft:t},{title:"Waterfall",dir:E}]},{title:"Line",dir:H,children:[{title:"Basic Line",dir:D},{title:"Stacked Line",dir:F},{title:"Area Chart",dir:T},{title:"Smoothed Line",dir:L},{title:"Step Line",dir:k}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:z},{title:"Ring Style",dir:O},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:U,children:[{title:"Basic Scatter",dir:Y}]}]},{title:"Common Components",dir:M,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:K}]}]},{title:"Mobile",dir:e,draft:t},{title:"Cross Platform",dir:j,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:Q},{title:"Drilldown",dir:_,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:q}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:et,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:it,draft:t},{title:"Intelligent Pointer Snapping",dir:rt}]}]},{title:"Best Practices",dir:at,children:[{title:"Mobile Optimization",dir:e,draft:t},{title:dt,dir:lt},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:ot}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:nt}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/en/basics/release-note/5-6-0",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/en/basics/release-note/v5-feature/index.html b/docs/en/basics/release-note/v5-feature/index.html
new file mode 100644
index 0000000..8ecfaca
--- /dev/null
+++ b/docs/en/basics/release-note/v5-feature/index.html
@@ -0,0 +1,17 @@
+<!doctype html>
+<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>5.0 - What's New - Basics - Handbook - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="en"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/en/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/en/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/en/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/en/index.html" class="navbar-brand"><img src="https://echarts.apache.org/en/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/en/index.html">Home</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Docs<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/feature.html">Features</a></li><li><a href="https://echarts.apache.org/handbook/en/get-started/">Handbook</a></li><li><a href="https://echarts.apache.org/en/api.html">API</a></li><li><a href="https://echarts.apache.org/en/option.html">Chart Configuration</a></li><li><a href="https://echarts.apache.org/en/changelog.html">Changelog</a></li><li><a href="https://echarts.apache.org/en/faq.html">FAQ</a></li><li><a href="https://echarts.apache.org/handbook/en/basics/release-note/v6-upgrade-guide">V6 Upgrade Guide</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Download<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/download.html">Download</a></li><li><a href="https://echarts.apache.org/en/download-theme.html">Download Themes</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">Download Custom Series<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/download-extension.html">Download Extensions</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/en/index.html">Examples</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Resources<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/spreadsheet.html">Spread Sheet Tool</a></li><li><a href="https://echarts.apache.org/en/theme-builder.html">Theme Builder</a></li><li><a href="https://echarts.apache.org/en/cheat-sheet.html">Cheat Sheet</a></li><li><a href="https://echarts.apache.org/en/resources.html">More Resources</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/events.html">Events</a></li><li><a href="https://echarts.apache.org/en/committers.html">Committers</a></li><li><a href="https://echarts.apache.org/en/maillist.html">Mailing List</a></li><li><a href="https://echarts.apache.org/en/contributing.html">How to Contribute</a></li><li><a href="https://echarts.apache.org/en/dependencies.html">Dependencies</a></li><li><a href="https://echarts.apache.org/en/coding-standard.html">Code Standard</a></li><li><a href="https://github.com/apache/echarts" target="_blank">Source Code (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/security.html">Security</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">License<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">Events<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("zh")'>中文</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/en/get-started" class="nav-link"><span class="title">Get Started</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Basics</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/basics/download" class="nav-link"><span class="title">Download ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/import" class="nav-link"><span class="title">Import ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/basics/help" class="nav-link"><span class="title">Get Help</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">What's New</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 Features</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">Migration from v5 to v6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-feature" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">Migration from v4 to v5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Concepts</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/concepts/chart-size" class="nav-link"><span class="title">Chart Container</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/style" class="nav-link"><span class="title">Style</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/dataset" class="nav-link"><span class="title">Dataset</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/data-transform" class="nav-link"><span class="title">Data Transform</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/axis" class="nav-link"><span class="title">Axis</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/visual-map" class="nav-link"><span class="title">Visual Mapping</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/legend" class="nav-link"><span class="title">Legend</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/event" class="nav-link"><span class="title">Event and Action</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">How To Guides</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">Common Charts</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Bar</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">Basic Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">Stacked Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">Bar Racing</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">Waterfall</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Line</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">Basic Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">Stacked Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/area-line" class="nav-link"><span class="title">Area Chart</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">Smoothed Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/step-line" class="nav-link"><span class="title">Step Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Pie</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">Basic Pie</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">Ring Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/rose" class="nav-link"><span class="title">Rose Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Scatter</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">Basic Scatter</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Common Components</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Geo</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG Base Map</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">Cross Platform</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/cross-platform/server" class="nav-link"><span class="title">Server Side Rendering</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Data</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/data/dynamic-data" class="nav-link"><span class="title">Dynamic Data</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Label</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/label/rich-text" class="nav-link"><span class="title">Rich Text</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Animation</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/animation/transition" class="nav-link"><span class="title">Data Transition</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Interaction</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/drag" class="nav-link"><span class="title">Drag</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">Intelligent Pointer Snapping</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Best Practices</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/en/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/aria" class="nav-link"><span class="title">Aria</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/security" class="nav-link"><span class="title">Security Guidelines</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Edit Handbook</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/meta/edit-guide" class="nav-link"><span class="title">Edit Guide</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="new-features-in-echarts-5" tabindex="-1">New features in ECharts 5</h1> <p>Data visualization has come a long way in the last few years. Developers no longer expect visualization products to be simple chart creation tools, but have more advanced needs in terms of interaction, performance, data processing, and more.</p> <p>Apache ECharts has always been committed to making it easier for developers to create flexible and rich visualizations. In the latest release of Apache ECharts 5, we have focused on enhancing the storytelling of charts, allowing developers to tell the story behind the data in a simpler way.</p> <img data-src="images/feature-v5/echarts-5-en.png" width="800px"> <p>"The core of Apache ECharts 5 is "Show, do not tell", which is a comprehensive upgrade of five topics and 15 features around the stroy telling of visualizations, allowing charts to better tell the story behind the data. It helps developers to create visualizations that meet the needs of various scenarios more easily.</p> <h2 id="storytelling" tabindex="-1">Storytelling</h2> <p>The importance of animation to human cognition cannot be overstated. In our previous work, we used initialization animations and transition animations to help users understand the connection between data transformations, making the appearance of charts and transformations seem less rigid. This time, we have even enhanced our animation capabilities, even more significantly. We hope to further exploit the role of animation to help users' cognition, and help them understand the story behind the chart more easily with the dynamic stroy function of the chart.</p> <h4 id="bar%2Fline-racing" tabindex="-1">Bar/Line Racing</h4> <p>Apache ECharts 5 adds support for dynamically sorted bar-racing and dynamically sorted line-racing charts to help developers easily create time-series charts that show changes in data over time and tell the evolution of data.</p> <iframe width="700" height="400" src=""></iframe> <iframe width="700" height="400" src=""></iframe> <p>The dynamic sorting chart shows the derivation of different categories in the ranking over time. The developer can enable this effect in ECharts with a few simple configuration code.</p> <h4 id="custom-series-animation" tabindex="-1">Custom Series Animation</h4> <p>In addition to dynamic sorting charts, Apache ECharts 5 provides even richer and more powerful animations in the custom series, supporting interpolation animations for label value text, transition animations for morph, combine, separate, and other effects of graphics.</p> <p>Imagine what amazing visualizations you can create with these dynamic effects!</p> <h2 id="visual-design" tabindex="-1">Visual Design</h2> <p>The role of visual design is not only to make the chart look better, but more importantly, a design that conforms to the principles of visualization can help users understand more quickly what the chart is trying to say and eliminate as much misunderstanding as possible from poor design.</p> <h4 id="overall-design" tabindex="-1">Overall Design</h4> <p>We have found that a large percentage of developers use the default theme style for ECharts, so it is important to have an elegant default theme design. In Apache ECharts 5, we redesigned the default theme style, optimizing it for different charts and components. For example, we took into account factors such as differentiation between colors, contrast with background colors, and harmony with adjacent colors, and ensured that people with color blindness could clearly distinguish data.</p> <img data-src="images/feature-v5/theme-color.png" width="400px"> <p>Let's look at the new version of the light and dark theme styles using the most commonly used bar chart as an example.</p> <img data-src="images/feature-v5/new-theme-light.png" width="500px"> <img data-src="images/feature-v5/new-theme-dark.png" width="500px"> <p>For the line chart, there is an intuitive style change that the axis line and axis tick of the y axis (<code>value</code> axis) are hidden by default. Look at the following image, the left one is the default style of the line chart in <code>v4</code> and the right one is the new style in <code>v5</code>. In fact, we already can figure out the values just by the split lines, so we hope to hide unnecessary elements to deliver the chart message in a clearer way.</p> <img data-src="images/feature-v5/yAxis-default-style-change.webp" width="500px"> <p>For the data area zoom, timeline and other interactive components, we also designed a new style and provide a better interactive experience:</p> <img data-src="images/feature-v5/dataZoom.png" width="500px"> <img data-src="images/feature-v5/timeline.png" width="500px"> <h4 id="label" tabindex="-1">Label</h4> <p>Labels are one of the core elements of a chart, and clear and unambiguous labels help users to have a more accurate understanding of the data. Apache ECharts 5 provides a variety of new labeling features that allow dense labels to be clearly displayed and accurately represented.</p> <p>Apache ECharts 5 can be enabled to automatically hide overlapping labels through a configuration item. For labels that exceed the display area, you can choose to automatically truncate or line break them. Dense pie chart labels now have a more aesthetically pleasing automatic layout.</p> <p>These features can help avoid text that is too dense and affects readability. And, no additional code needs to be written by the developer for them to take effect by default, greatly simplifying the development cost for developers.</p> <p>We also provide several configuration options to allow developers to actively control the layout strategy of tabs, such as tab dragging, overall display at the edge of the canvas, connecting with guide lines and graphical elements, and still linking to highlight the associated relationships.</p> <p>The new label feature allows you to have very clear label presentation even in a confined space mobile:</p> <img data-src="images/feature-v5/pie-label.png" width="400px"> <h4 id="time-axis" tabindex="-1">Time Axis</h4> <p>Apache ECharts 5 brings a time axis suitable for expressing timestamp scales. The default design of the time axis highlights important information more prominently and provides more flexible customization capabilities, allowing developers to tailor the time axis's label content to different needs.</p> <p>First of all, the time axis is no longer split absolutely evenly as before, but instead selects more meaningful points like year, month, day, and whole point to display, and can show different levels of scales at the same time. The <code>formatter</code> of labels supports templates for time (e.g. <code>{yyyy}-{MM}-{dd}</code>), and different <code>formatter</code> can be specified for labels with different time granularity, which can be combined with rich text labels to create eye-catching and diverse time effects.</p> <p>The display of the time scale at different dataZoom granularities.</p> <img data-src="images/feature-v5/time-axis.png" width="600px"> <img data-src="images/feature-v5/time-axis-2.png" width="600px"> <h4 id="tooltip" tabindex="-1">Tooltip</h4> <p>Tooltip is one of the most commonly used visualization components to help users interactively understand the details of data. In Apache ECharts 5, we have optimized the style of the tooltip, making the default display of the tooltip elegant and clear by adjusting the font style, color, arrow pointing to the graph, border color following the graph color, and other features. The rendering logic of rich text has been improved to ensure that the display is consistent with the HTML way, allowing users to choose different technical solutions to achieve the same effect in different scenarios.</p> <img data-src="images/feature-v5/new-tooltip.png" width="400px"> <img data-src="images/feature-v5/new-tooltip-2.png" width="400px"> <p>In addition to this, we have also added the ability to sort the list in the tip box by value size or category order this time.</p> <h4 id="gauge" tabindex="-1">Gauge</h4> <p>We have seen a lot of cool gauge charts created by community users, but the way they are configured is often complex and tricky. Therefore, we have upgraded the gauge to support image or vector path drawing pointers, anchor configurations, progress bars, rounded corner effects, and more.</p> <p>Different styles of gauge pointers.</p> <img data-src="images/feature-v5/gauge-pointer.png" width="600px"> <p>These upgrades not only allow developers to achieve cool effects with simpler configuration items, but also bring richer customization capabilities.</p> <iframe width="600" height="600" src=""></iframe> <h4 id="round-corner" tabindex="-1">Round Corner</h4> <p>Apache ECharts 5 supports round corner for pie charts, sunburst charts, and treemap charts. Don't underestimate the simplicity of the rounded corners configuration, but combine them with other effects to create a more personalized visualization.</p> <iframe width="400" height="400" src=""></iframe> <h2 id="interactivity" tabindex="-1">Interactivity</h2> <p>The interactivity of the visualization helps users explore the work and deepen their understanding of the main idea of the diagram.</p> <h4 id="multi-state" tabindex="-1">Multi-State</h4> <p>In ECharts 4, there were two interactive states, <code>emphasis</code> and <code>normal</code>, graph will enter the <code>emphasis</code> state when the mouse hovered to distinguish the data.</p> <p>This time in Apache ECharts 5, we have added a new effect of <strong>blur</strong> other non-related elements to the original mouse hover highlighting, so that the target data can be focused.</p> <p>For example, in this <a href="https://echarts.apache.org/examples/en/editor.html?c=bar-y-category-stack">bar chart</a> example, when the mouse hovers over a series, other non-related series will fade out, thus highlighting more clearly the comparison of data in the focused series. of data in the comparison. On diagrams with more complex data structures such as relationship, tree, sunburst, sankey, etc., it is also possible to see the connections between data by fading out non-related elements. Also, colors, shadows, and other styles that can be set in <code>emphasis</code> can now be set in <code>blur</code>.</p> <p>In addition, we've added <strong>click to select</strong> to all series, an interaction that was previously only available in a few series such as pie charts and maps, allowing developers to set it to single or multiple selection mode, and to listen to the <code>selectchanged</code> event to get all the selected shapes for further processing. As with <code>emphasis</code> and <code>blur</code>, the selection style can also be configured in <code>select</code>.</p> <h4 id="performance-improvements" tabindex="-1">Performance improvements</h4> <h5 id="dirty-rectangle-rendering" tabindex="-1">Dirty Rectangle Rendering</h5> <p>Apache ECharts 5 has new support for dirty rectangle rendering to address performance bottlenecks in large scenes with only local changes. When using the Canvas renderer, the dirty rectangle rendering technique detects and updates only the parts of the view that have changed, rather than any changes causing a complete redraw of the canvas. This can help improve rendering frame rates in some special scenarios, such as scenes where the mouse frequently triggers some graphical highlighting many times. In the past for such scenes, additional Canvas layers were used to optimize performance, but this approach is not universal for all scenes and does not work well for complex styles. Dirty Rectangle rendering does a good job of satisfying both performance and display correctness.</p> <p>A visual demonstration of a dirty rectangle, with the red boxed area redrawn for the frame.</p> <img data-src="images/feature-v5/dirty-rect.gif" width="500px"> <p>You can see the effect by enable dirty rectangle optimization on the new example page.</p> <h5 id="line-chart-performance-optimization-for-real-time-time-series-data" tabindex="-1">Line Chart Performance Optimization for Real-Time Time-Series Data</h5> <p>In addition, the performance of line graphs with large amounts of data has also seen a significant performance improvement. We often encounter the need for high-performance plotting of large amounts of real-time time-series data, which will be updated every hundreds or tens of milliseconds.</p> <p>Apache ECharts 5 deeply optimizes CPU consumption, memory usage, and initialization time in these scenarios, enabling real-time updates (less than 30ms per update) for millions of data, and even rendering within 1s for ten millions of data, with low memory usage and smooth tooltip interactions.</p> <h2 id="development-experience" tabindex="-1">Development Experience</h2> <p>We want such a powerful visualization tool to be used by more developers in a simpler way, so the developer experience is also a very important aspect for us.</p> <h4 id="datasets" tabindex="-1">Datasets</h4> <p>ECharts 5 enhances the data transformation capabilities of datasets, allowing developers to implement common data processing such as filtering, sorting, aggregating, histogram, simple clustering, regression, etc. in a simple way. Developers can use these functions in a uniform and declarative way, and can easily implement common data operations.</p> <h4 id="internationalization" tabindex="-1">Internationalization</h4> <p>The original internationalization implementation of ECharts takes the form of different distribution files packaged according to different language parameters. In this way, the dynamic language and main code are bound together, and the only way to switch languages when using ECharts is to reload different language versions of ECharts distributions.</p> <p>Therefore, starting with Apache ECharts 5, the dynamic language is separated from the main code. To switch languages, you only need to load the corresponding language, use the <code>registerLocale</code> function to mount the language object in a similar way to mount the theme, and then reinitialize it to complete the language switch.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token comment">// import the lang object and set when init</span>
+echarts<span class="token punctuation">.</span><span class="token function">registerLocale</span><span class="token punctuation">(</span><span class="token string">'DE'</span><span class="token punctuation">,</span> lang<span class="token punctuation">)</span><span class="token punctuation">;</span>
+echarts<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span>DomElement<span class="token punctuation">,</span> <span class="token keyword">null</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">locale</span><span class="token operator">:</span> <span class="token string">'DE'</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h4 id="typescript-refactoring" tabindex="-1">TypeScript Refactoring</h4> <p>In order to continue to refactor and develop new features more safely and efficiently, we started the development of Apache ECharts 5 by rewriting the code using TypeScript. The strong typing brought by TypeScript gave us the confidence to refactor the code drastically to achieve more exciting features during the development of ECharts 5.</p> <p>For developers, we can also generate better and more code-compliant <code>DTS</code> type description files directly from TypeScript code. Until now, ECharts type description files have been maintained by community developers and published to <a href="https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/echarts">DefinitelyTyped</a>, which is a lot of work, so thanks for your contribution.</p> <p>In addition, if a developer's component is introduced on-demand, we provide a <code>ComposeOption</code> type method that can combine a configuration item type that contains only the introduced components, which can bring stricter type checking and help you detect unintroduced component types in advance.</p> <h2 id="accessibility" tabindex="-1">Accessibility</h2> <p>Apache ECharts has always taken accessibility design seriously, and we want to make the information conveyed by charts equally to be accessed. We also want to make this possible for chart developers at a very low development cost, thus making developers more willing to support the accessibility.</p> <p>In the last major release, we supported automatic intelligent generation of chart descriptions based on different chart types and data, making it very easy for developers to support DOM description information for charts. In ECharts 5, we have also made more accessibility improvements to help people with visual impairments better understand the chart content.</p> <h4 id="theme-colors" tabindex="-1">Theme Colors</h4> <p>We took accessibility into account when designing the new default theme, and we repeatedly tested the brightness and color values of the colors to help accessibility users clearly identify the chart data.</p> <p>Moreover, for developers with further accessibility needs, we also provide special high-contrast themes to further differentiate the data with higher contrast colors.</p> <h4 id="decal-patterns" tabindex="-1">Decal Patterns</h4> <p>ECharts 5 also provides a new feature of decals to help users further differentiate data by using patterns to assist with color representation.</p> <iframe width="600" height="350" src=""></iframe> <p>In addition, decal patterns can also help in some other scenarios, such as: helping to better distinguish data in printed materials like newspapers and books that have only a single color or very few colors; using graphical elements to facilitate a more intuitive understanding of the data by the user.</p> <iframe width="600" height="350" src=""></iframe> <h2 id="summary" tabindex="-1">Summary</h2> <p>In addition to the features described above, Apache ECharts has been improved in a very large number of details to help developers more easily create charts that good by default, are flexible in configuration, and tell the story behind the data with charts.</p> <p>Thank you to all the developers who have used ECharts, and even participated in community contributions, for making Apache ECharts 5 possible. We'll be working on future developments with even more enthusiasm, and we'll see you all in 6 with even more enthusiasm!</p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">Contributors</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/en/basics/release-note/v5-feature.md" title="Edit this Document" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">Edit this page on GitHub</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a><a href="https://github.com/plainheart" target="_blank" class="post-contributor has-avatar"><img alt="plainheart" src="https://echarts.apache.org/en/images/people/plainheart.jpg" loading="lazy" decoding="async" fetchpriority="low"> <span>plainheart</span></a><a href="https://github.com/timonla" target="_blank" class="post-contributor"><!----> <span>timonla</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(e,t,i,a,r,n,o,s,d,l,h,c,p,m,g,u,f,y,b,v,w,x,C,k,T,E,z,A,S,I,D,R,P,W,L,B,G,M,V,F,j,O,q,H,Y,Z,_,J,N,U,K,Q,X,$,ee,te,ie,ae,re,ne,oe,se,de){return{layout:"default",data:[{html:'<h1 id="new-features-in-echarts-5" tabindex="-1">New features in ECharts 5</h1>\n<p>Data visualization has come a long way in the last few years. Developers no longer expect visualization products to be simple chart creation tools, but have more advanced needs in terms of interaction, performance, data processing, and more.</p>\n<p>Apache ECharts has always been committed to making it easier for developers to create flexible and rich visualizations. In the latest release of Apache ECharts 5, we have focused on enhancing the storytelling of charts, allowing developers to tell the story behind the data in a simpler way.</p>\n<img data-src="images/feature-v5/echarts-5-en.png" width="800px" />\n<p>&quot;The core of Apache ECharts 5 is &quot;Show, do not tell&quot;, which is a comprehensive upgrade of five topics and 15 features around the stroy telling of visualizations, allowing charts to better tell the story behind the data. It helps developers to create visualizations that meet the needs of various scenarios more easily.</p>\n<h2 id="storytelling" tabindex="-1">Storytelling</h2>\n<p>The importance of animation to human cognition cannot be overstated. In our previous work, we used initialization animations and transition animations to help users understand the connection between data transformations, making the appearance of charts and transformations seem less rigid. This time, we have even enhanced our animation capabilities, even more significantly. We hope to further exploit the role of animation to help users\' cognition, and help them understand the story behind the chart more easily with the dynamic stroy function of the chart.</p>\n<h4 id="bar%2Fline-racing" tabindex="-1">Bar/Line Racing</h4>\n<p>Apache ECharts 5 adds support for dynamically sorted bar-racing and dynamically sorted line-racing charts to help developers easily create time-series charts that show changes in data over time and tell the evolution of data.</p>\n<md-example src="bar-race-country" width="700" height="400" />\n<md-example src="line-race" width="700" height="400" />\n<p>The dynamic sorting chart shows the derivation of different categories in the ranking over time. The developer can enable this effect in ECharts with a few simple configuration code.</p>\n<h4 id="custom-series-animation" tabindex="-1">Custom Series Animation</h4>\n<p>In addition to dynamic sorting charts, Apache ECharts 5 provides even richer and more powerful animations in the custom series, supporting interpolation animations for label value text, transition animations for morph, combine, separate, and other effects of graphics.</p>\n<p>Imagine what amazing visualizations you can create with these dynamic effects!</p>\n<h2 id="visual-design" tabindex="-1">Visual Design</h2>\n<p>The role of visual design is not only to make the chart look better, but more importantly, a design that conforms to the principles of visualization can help users understand more quickly what the chart is trying to say and eliminate as much misunderstanding as possible from poor design.</p>\n<h4 id="overall-design" tabindex="-1">Overall Design</h4>\n<p>We have found that a large percentage of developers use the default theme style for ECharts, so it is important to have an elegant default theme design. In Apache ECharts 5, we redesigned the default theme style, optimizing it for different charts and components. For example, we took into account factors such as differentiation between colors, contrast with background colors, and harmony with adjacent colors, and ensured that people with color blindness could clearly distinguish data.</p>\n<img data-src="images/feature-v5/theme-color.png" width="400px" />\n<p>Let\'s look at the new version of the light and dark theme styles using the most commonly used bar chart as an example.</p>\n<img data-src="images/feature-v5/new-theme-light.png" width="500px" />\n<img data-src="images/feature-v5/new-theme-dark.png" width="500px" />\n<p>For the line chart, there is an intuitive style change that the axis line and axis tick of the y axis (<code>value</code> axis) are hidden by default. Look at the following image, the left one is the default style of the line chart in <code>v4</code> and the right one is the new style in <code>v5</code>. In fact, we already can figure out the values just by the split lines, so we hope to hide unnecessary elements to deliver the chart message in a clearer way.</p>\n<img data-src="images/feature-v5/yAxis-default-style-change.webp" width="500px" />\n<p>For the data area zoom, timeline and other interactive components, we also designed a new style and provide a better interactive experience:</p>\n<img data-src="images/feature-v5/dataZoom.png" width="500px" />\n<img data-src="images/feature-v5/timeline.png" width="500px" />\n<h4 id="label" tabindex="-1">Label</h4>\n<p>Labels are one of the core elements of a chart, and clear and unambiguous labels help users to have a more accurate understanding of the data. Apache ECharts 5 provides a variety of new labeling features that allow dense labels to be clearly displayed and accurately represented.</p>\n<p>Apache ECharts 5 can be enabled to automatically hide overlapping labels through a configuration item. For labels that exceed the display area, you can choose to automatically truncate or line break them. Dense pie chart labels now have a more aesthetically pleasing automatic layout.</p>\n<p>These features can help avoid text that is too dense and affects readability. And, no additional code needs to be written by the developer for them to take effect by default, greatly simplifying the development cost for developers.</p>\n<p>We also provide several configuration options to allow developers to actively control the layout strategy of tabs, such as tab dragging, overall display at the edge of the canvas, connecting with guide lines and graphical elements, and still linking to highlight the associated relationships.</p>\n<p>The new label feature allows you to have very clear label presentation even in a confined space mobile:</p>\n<img data-src="images/feature-v5/pie-label.png" width="400px" />\n<h4 id="time-axis" tabindex="-1">Time Axis</h4>\n<p>Apache ECharts 5 brings a time axis suitable for expressing timestamp scales. The default design of the time axis highlights important information more prominently and provides more flexible customization capabilities, allowing developers to tailor the time axis\'s label content to different needs.</p>\n<p>First of all, the time axis is no longer split absolutely evenly as before, but instead selects more meaningful points like year, month, day, and whole point to display, and can show different levels of scales at the same time. The <code>formatter</code> of labels supports templates for time (e.g. <code>{yyyy}-{MM}-{dd}</code>), and different <code>formatter</code> can be specified for labels with different time granularity, which can be combined with rich text labels to create eye-catching and diverse time effects.</p>\n<p>The display of the time scale at different dataZoom granularities.</p>\n<img data-src="images/feature-v5/time-axis.png" width="600px" />\n<img data-src="images/feature-v5/time-axis-2.png" width="600px" />\n<h4 id="tooltip" tabindex="-1">Tooltip</h4>\n<p>Tooltip is one of the most commonly used visualization components to help users interactively understand the details of data. In Apache ECharts 5, we have optimized the style of the tooltip, making the default display of the tooltip elegant and clear by adjusting the font style, color, arrow pointing to the graph, border color following the graph color, and other features. The rendering logic of rich text has been improved to ensure that the display is consistent with the HTML way, allowing users to choose different technical solutions to achieve the same effect in different scenarios.</p>\n<img data-src="images/feature-v5/new-tooltip.png" width="400px" />\n<img data-src="images/feature-v5/new-tooltip-2.png" width="400px" />\n<p>In addition to this, we have also added the ability to sort the list in the tip box by value size or category order this time.</p>\n<h4 id="gauge" tabindex="-1">Gauge</h4>\n<p>We have seen a lot of cool gauge charts created by community users, but the way they are configured is often complex and tricky. Therefore, we have upgraded the gauge to support image or vector path drawing pointers, anchor configurations, progress bars, rounded corner effects, and more.</p>\n<p>Different styles of gauge pointers.</p>\n<img data-src="images/feature-v5/gauge-pointer.png" width="600px" />\n<p>These upgrades not only allow developers to achieve cool effects with simpler configuration items, but also bring richer customization capabilities.</p>\n<md-example src="gauge-clock" width="600" height="600" />\n<h4 id="round-corner" tabindex="-1">Round Corner</h4>\n<p>Apache ECharts 5 supports round corner for pie charts, sunburst charts, and treemap charts. Don\'t underestimate the simplicity of the rounded corners configuration, but combine them with other effects to create a more personalized visualization.</p>\n<md-example src="sunburst-borderRadius" width="400" height="400" />\n<h2 id="interactivity" tabindex="-1">Interactivity</h2>\n<p>The interactivity of the visualization helps users explore the work and deepen their understanding of the main idea of the diagram.</p>\n<h4 id="multi-state" tabindex="-1">Multi-State</h4>\n<p>In ECharts 4, there were two interactive states, <code>emphasis</code> and <code>normal</code>, graph will enter the <code>emphasis</code> state when the mouse hovered to distinguish the data.</p>\n<p>This time in Apache ECharts 5, we have added a new effect of <strong>blur</strong> other non-related elements to the original mouse hover highlighting, so that the target data can be focused.</p>\n<p>For example, in this <a href="https://echarts.apache.org/examples/en/editor.html?c=bar-y-category-stack">bar chart</a> example, when the mouse hovers over a series, other non-related series will fade out, thus highlighting more clearly the comparison of data in the focused series. of data in the comparison. On diagrams with more complex data structures such as relationship, tree, sunburst, sankey, etc., it is also possible to see the connections between data by fading out non-related elements. Also, colors, shadows, and other styles that can be set in <code>emphasis</code> can now be set in <code>blur</code>.</p>\n<p>In addition, we\'ve added <strong>click to select</strong> to all series, an interaction that was previously only available in a few series such as pie charts and maps, allowing developers to set it to single or multiple selection mode, and to listen to the <code>selectchanged</code> event to get all the selected shapes for further processing. As with <code>emphasis</code> and <code>blur</code>, the selection style can also be configured in <code>select</code>.</p>\n<h4 id="performance-improvements" tabindex="-1">Performance improvements</h4>\n<h5 id="dirty-rectangle-rendering" tabindex="-1">Dirty Rectangle Rendering</h5>\n<p>Apache ECharts 5 has new support for dirty rectangle rendering to address performance bottlenecks in large scenes with only local changes. When using the Canvas renderer, the dirty rectangle rendering technique detects and updates only the parts of the view that have changed, rather than any changes causing a complete redraw of the canvas. This can help improve rendering frame rates in some special scenarios, such as scenes where the mouse frequently triggers some graphical highlighting many times. In the past for such scenes, additional Canvas layers were used to optimize performance, but this approach is not universal for all scenes and does not work well for complex styles. Dirty Rectangle rendering does a good job of satisfying both performance and display correctness.</p>\n<p>A visual demonstration of a dirty rectangle, with the red boxed area redrawn for the frame.</p>\n<img data-src="images/feature-v5/dirty-rect.gif" width="500px" />\n<p>You can see the effect by enable dirty rectangle optimization on the new example page.</p>\n<h5 id="line-chart-performance-optimization-for-real-time-time-series-data" tabindex="-1">Line Chart Performance Optimization for Real-Time Time-Series Data</h5>\n<p>In addition, the performance of line graphs with large amounts of data has also seen a significant performance improvement. We often encounter the need for high-performance plotting of large amounts of real-time time-series data, which will be updated every hundreds or tens of milliseconds.</p>\n<p>Apache ECharts 5 deeply optimizes CPU consumption, memory usage, and initialization time in these scenarios, enabling real-time updates (less than 30ms per update) for millions of data, and even rendering within 1s for ten millions of data, with low memory usage and smooth tooltip interactions.</p>\n<h2 id="development-experience" tabindex="-1">Development Experience</h2>\n<p>We want such a powerful visualization tool to be used by more developers in a simpler way, so the developer experience is also a very important aspect for us.</p>\n<h4 id="datasets" tabindex="-1">Datasets</h4>\n<p>ECharts 5 enhances the data transformation capabilities of datasets, allowing developers to implement common data processing such as filtering, sorting, aggregating, histogram, simple clustering, regression, etc. in a simple way. Developers can use these functions in a uniform and declarative way, and can easily implement common data operations.</p>\n<h4 id="internationalization" tabindex="-1">Internationalization</h4>\n<p>The original internationalization implementation of ECharts takes the form of different distribution files packaged according to different language parameters. In this way, the dynamic language and main code are bound together, and the only way to switch languages when using ECharts is to reload different language versions of ECharts distributions.</p>\n<p>Therefore, starting with Apache ECharts 5, the dynamic language is separated from the main code. To switch languages, you only need to load the corresponding language, use the <code>registerLocale</code> function to mount the language object in a similar way to mount the theme, and then reinitialize it to complete the language switch.</p>\n<md-code-block lang="js" code="\'Ly8gaW1wb3J0IHRoZSBsYW5nIG9iamVjdCBhbmQgc2V0IHdoZW4gaW5pdAplY2hhcnRzLnJlZ2lzdGVyTG9jYWxlKCdERScsIGxhbmcpOwplY2hhcnRzLmluaXQoRG9tRWxlbWVudCwgbnVsbCwgewogIGxvY2FsZTogJ0RFJwp9KTs\'" line-highlights="\'\'" />\n<h4 id="typescript-refactoring" tabindex="-1">TypeScript Refactoring</h4>\n<p>In order to continue to refactor and develop new features more safely and efficiently, we started the development of Apache ECharts 5 by rewriting the code using TypeScript. The strong typing brought by TypeScript gave us the confidence to refactor the code drastically to achieve more exciting features during the development of ECharts 5.</p>\n<p>For developers, we can also generate better and more code-compliant <code>DTS</code> type description files directly from TypeScript code. Until now, ECharts type description files have been maintained by community developers and published to <a href="https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/echarts">DefinitelyTyped</a>, which is a lot of work, so thanks for your contribution.</p>\n<p>In addition, if a developer\'s component is introduced on-demand, we provide a <code>ComposeOption</code> type method that can combine a configuration item type that contains only the introduced components, which can bring stricter type checking and help you detect unintroduced component types in advance.</p>\n<h2 id="accessibility" tabindex="-1">Accessibility</h2>\n<p>Apache ECharts has always taken accessibility design seriously, and we want to make the information conveyed by charts equally to be accessed. We also want to make this possible for chart developers at a very low development cost, thus making developers more willing to support the accessibility.</p>\n<p>In the last major release, we supported automatic intelligent generation of chart descriptions based on different chart types and data, making it very easy for developers to support DOM description information for charts. In ECharts 5, we have also made more accessibility improvements to help people with visual impairments better understand the chart content.</p>\n<h4 id="theme-colors" tabindex="-1">Theme Colors</h4>\n<p>We took accessibility into account when designing the new default theme, and we repeatedly tested the brightness and color values of the colors to help accessibility users clearly identify the chart data.</p>\n<p>Moreover, for developers with further accessibility needs, we also provide special high-contrast themes to further differentiate the data with higher contrast colors.</p>\n<h4 id="decal-patterns" tabindex="-1">Decal Patterns</h4>\n<p>ECharts 5 also provides a new feature of decals to help users further differentiate data by using patterns to assist with color representation.</p>\n<md-example src="doc-example/aria-decal-simple" width="600" height="350" />\n<p>In addition, decal patterns can also help in some other scenarios, such as: helping to better distinguish data in printed materials like newspapers and books that have only a single color or very few colors; using graphical elements to facilitate a more intuitive understanding of the data by the user.</p>\n<md-example src="doc-example/aria-decal-newspaper" width="600" height="350" />\n<h2 id="summary" tabindex="-1">Summary</h2>\n<p>In addition to the features described above, Apache ECharts has been improved in a very large number of details to help developers more easily create charts that good by default, are flexible in configuration, and tell the story behind the data with charts.</p>\n<p>Thank you to all the developers who have used ECharts, and even participated in community contributions, for making Apache ECharts 5 possible. We\'ll be working on future developments with even more enthusiasm, and we\'ll see you all in 6 with even more enthusiasm!</p>\n',postPath:"en/basics/release-note/v5-feature",title:"5.0 - What's New - Basics"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:a},{title:"入门篇",dir:r,children:[{title:"获取 ECharts",dir:n},{title:"在项目中引入 ECharts",dir:o},{title:"资源列表",dir:s,draft:e},{title:"寻求帮助",dir:d},{title:"版本特性",dir:l,children:[{title:"ECharts 6 特性介绍",dir:h},{title:"v5 升级 v6 指南",dir:c},{title:"5.0",dir:p},{title:"v4 升级 v5 指南",dir:m},{title:5.2,dir:g},{title:5.3,dir:u},{title:5.4,dir:f},{title:5.5,dir:y},{title:5.6,dir:b}]}]},{title:"概念篇",dir:v,children:[{title:"图表容器及大小",dir:w},{title:"配置项",dir:x,draft:e},{title:"系列",dir:C,draft:e},{title:"样式",dir:k},{title:"数据集",dir:T},{title:"数据转换",dir:E},{title:"坐标系",dir:z,draft:e},{title:"坐标轴",dir:A},{title:"视觉映射",dir:i},{title:"图例",dir:S},{title:"事件与行为",dir:I}]},{title:"应用篇",dir:D,children:[{title:"常用图表类型",dir:R,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:P},{title:"堆叠柱状图",dir:W},{title:"动态排序柱状图",dir:L},{title:"极坐标系柱状图",dir:B,draft:e},{title:"阶梯瀑布图",dir:G},{title:"视觉映射的柱状图",dir:i,draft:e}]},{title:"折线图",dir:M,children:[{title:"基础折线图",dir:V},{title:"堆叠折线图",dir:F},{title:"区域面积图",dir:j},{title:"平滑曲线图",dir:O},{title:"阶梯线图",dir:q}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:H},{title:"圆环图",dir:Y},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:Z,children:[{title:"基础散点图",dir:_}]}]},{title:"常用组件",dir:J,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:N}]}]},{title:"移动端优化",dir:t,draft:e},{title:"跨平台方案",dir:U,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:K},{title:"数据下钻",dir:Q,draft:e}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:X}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:ee}]},{title:"交互",dir:te,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:ie,draft:e},{title:"智能指针吸附",dir:ae}]}]},{title:"最佳实践",dir:re,children:[{title:"移动端优化",dir:t,draft:e},{title:ne,dir:oe},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:se}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:de}]}],en:[{title:"Get Started",dir:a},{title:"Basics",dir:r,children:[{title:"Download ECharts",dir:n},{title:"Import ECharts",dir:o},{title:"Resources",dir:s,draft:e},{title:"Get Help",dir:d},{title:"What's New",dir:l,children:[{title:"ECharts 6 Features",dir:h},{title:"Migration from v5 to v6",dir:c},{title:"5.0",dir:p},{title:"Migration from v4 to v5",dir:m},{title:5.2,dir:g},{title:5.3,dir:u},{title:5.4,dir:f},{title:5.5,dir:y},{title:5.6,dir:b}]}]},{title:"Concepts",dir:v,children:[{title:"Chart Container",dir:w},{title:"Chart Option",dir:x,draft:e},{title:"Series",dir:C,draft:e},{title:"Style",dir:k},{title:"Dataset",dir:T},{title:"Data Transform",dir:E},{title:"Coordinate",dir:z,draft:e},{title:"Axis",dir:A},{title:"Visual Mapping",dir:i},{title:"Legend",dir:S},{title:"Event and Action",dir:I}]},{title:"How To Guides",dir:D,children:[{title:"Common Charts",dir:R,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:P},{title:"Stacked Bar",dir:W},{title:"Bar Racing",dir:L},{title:"Bar Polar",dir:B,draft:e},{title:"Waterfall",dir:G}]},{title:"Line",dir:M,children:[{title:"Basic Line",dir:V},{title:"Stacked Line",dir:F},{title:"Area Chart",dir:j},{title:"Smoothed Line",dir:O},{title:"Step Line",dir:q}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:H},{title:"Ring Style",dir:Y},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:Z,children:[{title:"Basic Scatter",dir:_}]}]},{title:"Common Components",dir:J,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:N}]}]},{title:"Mobile",dir:t,draft:e},{title:"Cross Platform",dir:U,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:K},{title:"Drilldown",dir:Q,draft:e}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:X}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:ee}]},{title:"Interaction",dir:te,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:ie,draft:e},{title:"Intelligent Pointer Snapping",dir:ae}]}]},{title:"Best Practices",dir:re,children:[{title:"Mobile Optimization",dir:t,draft:e},{title:ne,dir:oe},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:se}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:de}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:e,routePath:"/en/basics/release-note/v5-feature",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/en/basics/release-note/v5-upgrade-guide/index.html b/docs/en/basics/release-note/v5-upgrade-guide/index.html
new file mode 100644
index 0000000..2fc561a
--- /dev/null
+++ b/docs/en/basics/release-note/v5-upgrade-guide/index.html
@@ -0,0 +1,95 @@
+<!doctype html>
+<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Migration from v4 to v5 - What's New - Basics - Handbook - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="en"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/en/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/en/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/en/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/en/index.html" class="navbar-brand"><img src="https://echarts.apache.org/en/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/en/index.html">Home</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Docs<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/feature.html">Features</a></li><li><a href="https://echarts.apache.org/handbook/en/get-started/">Handbook</a></li><li><a href="https://echarts.apache.org/en/api.html">API</a></li><li><a href="https://echarts.apache.org/en/option.html">Chart Configuration</a></li><li><a href="https://echarts.apache.org/en/changelog.html">Changelog</a></li><li><a href="https://echarts.apache.org/en/faq.html">FAQ</a></li><li><a href="https://echarts.apache.org/handbook/en/basics/release-note/v6-upgrade-guide">V6 Upgrade Guide</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Download<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/download.html">Download</a></li><li><a href="https://echarts.apache.org/en/download-theme.html">Download Themes</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">Download Custom Series<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/download-extension.html">Download Extensions</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/en/index.html">Examples</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Resources<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/spreadsheet.html">Spread Sheet Tool</a></li><li><a href="https://echarts.apache.org/en/theme-builder.html">Theme Builder</a></li><li><a href="https://echarts.apache.org/en/cheat-sheet.html">Cheat Sheet</a></li><li><a href="https://echarts.apache.org/en/resources.html">More Resources</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/events.html">Events</a></li><li><a href="https://echarts.apache.org/en/committers.html">Committers</a></li><li><a href="https://echarts.apache.org/en/maillist.html">Mailing List</a></li><li><a href="https://echarts.apache.org/en/contributing.html">How to Contribute</a></li><li><a href="https://echarts.apache.org/en/dependencies.html">Dependencies</a></li><li><a href="https://echarts.apache.org/en/coding-standard.html">Code Standard</a></li><li><a href="https://github.com/apache/echarts" target="_blank">Source Code (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/security.html">Security</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">License<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">Events<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("zh")'>中文</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/en/get-started" class="nav-link"><span class="title">Get Started</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Basics</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/basics/download" class="nav-link"><span class="title">Download ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/import" class="nav-link"><span class="title">Import ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/basics/help" class="nav-link"><span class="title">Get Help</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">What's New</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 Features</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">Migration from v5 to v6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-upgrade-guide" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">Migration from v4 to v5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Concepts</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/concepts/chart-size" class="nav-link"><span class="title">Chart Container</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/style" class="nav-link"><span class="title">Style</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/dataset" class="nav-link"><span class="title">Dataset</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/data-transform" class="nav-link"><span class="title">Data Transform</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/axis" class="nav-link"><span class="title">Axis</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/visual-map" class="nav-link"><span class="title">Visual Mapping</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/legend" class="nav-link"><span class="title">Legend</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/event" class="nav-link"><span class="title">Event and Action</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">How To Guides</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">Common Charts</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Bar</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">Basic Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">Stacked Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">Bar Racing</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">Waterfall</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Line</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">Basic Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">Stacked Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/area-line" class="nav-link"><span class="title">Area Chart</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">Smoothed Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/step-line" class="nav-link"><span class="title">Step Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Pie</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">Basic Pie</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">Ring Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/rose" class="nav-link"><span class="title">Rose Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Scatter</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">Basic Scatter</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Common Components</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Geo</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG Base Map</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">Cross Platform</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/cross-platform/server" class="nav-link"><span class="title">Server Side Rendering</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Data</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/data/dynamic-data" class="nav-link"><span class="title">Dynamic Data</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Label</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/label/rich-text" class="nav-link"><span class="title">Rich Text</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Animation</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/animation/transition" class="nav-link"><span class="title">Data Transition</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Interaction</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/drag" class="nav-link"><span class="title">Drag</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">Intelligent Pointer Snapping</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Best Practices</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/en/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/aria" class="nav-link"><span class="title">Aria</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/security" class="nav-link"><span class="title">Security Guidelines</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Edit Handbook</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/meta/edit-guide" class="nav-link"><span class="title">Edit Guide</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="apache-echarts-5-upgrade-guide" tabindex="-1">Apache ECharts 5 Upgrade Guide</h1> <p>This guide is for those who want to upgrade from echarts 4.x (hereafter <code>v4</code>) to echarts 5.x (hereafter <code>v5</code>). You can find out what new features <code>v5</code> brings that are worth upgrading in <a href="en/basics/release-note/v5-feature">New Features in ECharts 5</a>. In most cases, developers won't need to do anything extra for this upgrade, as echarts has always tried to keep the API as stable and backward-compatible as possible. However, <code>v5</code> still brings some breaking changes that require special attention. In addition, in some cases, <code>v5</code> provides a better API to replace the previous one, and these superseded APIs will no longer be recommended (though we have tried to be as compatible as possible with these changes). We'll try to explain these changes in detail in this document.</p> <h2 id="breaking-changes" tabindex="-1">Breaking Changes</h2> <h3 id="default-theme" tabindex="-1">Default Theme</h3> <p>First of all, the default theme has been changed. <code>v5</code> has made a lot of changes and optimizations on the theme design. If you still want to keep the colors of the old version, you can manually declare the colors as follows.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>chart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+  <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token string">'#c23531'</span><span class="token punctuation">,</span>
+    <span class="token string">'#2f4554'</span><span class="token punctuation">,</span>
+    <span class="token string">'#61a0a8'</span><span class="token punctuation">,</span>
+    <span class="token string">'#d48265'</span><span class="token punctuation">,</span>
+    <span class="token string">'#91c7ae'</span><span class="token punctuation">,</span>
+    <span class="token string">'#749f83'</span><span class="token punctuation">,</span>
+    <span class="token string">'#ca8622'</span><span class="token punctuation">,</span>
+    <span class="token string">'#bda29a'</span><span class="token punctuation">,</span>
+    <span class="token string">'#6e7074'</span><span class="token punctuation">,</span>
+    <span class="token string">'#546570'</span><span class="token punctuation">,</span>
+    <span class="token string">'#c4ccd3'</span>
+  <span class="token punctuation">]</span>
+  <span class="token comment">// ...</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>Or, to make a simple <code>v4</code> theme.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">var</span> themeEC4 <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token string">'#c23531'</span><span class="token punctuation">,</span>
+    <span class="token string">'#2f4554'</span><span class="token punctuation">,</span>
+    <span class="token string">'#61a0a8'</span><span class="token punctuation">,</span>
+    <span class="token string">'#d48265'</span><span class="token punctuation">,</span>
+    <span class="token string">'#91c7ae'</span><span class="token punctuation">,</span>
+    <span class="token string">'#749f83'</span><span class="token punctuation">,</span>
+    <span class="token string">'#ca8622'</span><span class="token punctuation">,</span>
+    <span class="token string">'#bda29a'</span><span class="token punctuation">,</span>
+    <span class="token string">'#6e7074'</span><span class="token punctuation">,</span>
+    <span class="token string">'#546570'</span><span class="token punctuation">,</span>
+    <span class="token string">'#c4ccd3'</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span>
+<span class="token keyword">var</span> chart <span class="token operator">=</span> echarts<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span>dom<span class="token punctuation">,</span> themeEC4<span class="token punctuation">)</span><span class="token punctuation">;</span>
+chart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token comment">/* ... */</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h3 id="importing-echarts" tabindex="-1">Importing ECharts</h3> <h4 id="removing-support-for-default-exports" tabindex="-1">Removing Support for Default Exports</h4> <p>Since <code>v5</code>, echarts only provides <code>named exports</code>.</p> <p>So if you are importing <code>echarts</code> like this:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">import</span> echarts <span class="token keyword">from</span> <span class="token string">'echarts'</span><span class="token punctuation">;</span>
+<span class="token comment">// Or import core module</span>
+<span class="token keyword">import</span> echarts <span class="token keyword">from</span> <span class="token string">'echarts/lib/echarts'</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>It will throw error in <code>v5</code>. You need to change the code as follows to import the entire module.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">import</span> <span class="token operator">*</span> <span class="token keyword">as</span> echarts <span class="token keyword">from</span> <span class="token string">'echarts'</span><span class="token punctuation">;</span>
+<span class="token comment">// Or</span>
+<span class="token keyword">import</span> <span class="token operator">*</span> <span class="token keyword">as</span> echarts <span class="token keyword">from</span> <span class="token string">'echarts/lib/echarts'</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h4 id="tree-shaking-api" tabindex="-1">Tree-shaking API</h4> <p>In 5.0.1, we introduced the new <a href="en/basics/import">tree-shaking API</a></p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">import</span> <span class="token operator">*</span> <span class="token keyword">as</span> echarts <span class="token keyword">from</span> <span class="token string">'echarts/core'</span><span class="token punctuation">;</span>
+<span class="token keyword">import</span> <span class="token punctuation">{</span> BarChart <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'echarts/charts'</span><span class="token punctuation">;</span>
+<span class="token keyword">import</span> <span class="token punctuation">{</span> GridComponent <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'echarts/components'</span><span class="token punctuation">;</span>
+<span class="token comment">// Note that the Canvas renderer is no longer included by default and needs to be imported explictly, or import the SVGRenderer if you need to use the SVG rendering mode</span>
+<span class="token keyword">import</span> <span class="token punctuation">{</span> CanvasRenderer <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'echarts/renderers'</span><span class="token punctuation">;</span>
+
+echarts<span class="token punctuation">.</span><span class="token function">use</span><span class="token punctuation">(</span><span class="token punctuation">[</span>BarChart<span class="token punctuation">,</span> GridComponent<span class="token punctuation">,</span> CanvasRenderer<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>To make it easier for you to know which modules you need to import based on your option, our new example page adds a new feature to generate the three-shakable code, you can check the <code>Full Code</code> tab on the example page to see the modules you need to introduce and the related code.</p> <p>In most cases, we recommend using the new tree-shaking interface whenever possible, as it maximizes the power of the packaging tool tree-shaking and effectively resolves namespace conflicts and prevents the exposure of internal structures. If you are still using the CommonJS method of writing modules, the previous approach is still supported:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">const</span> echarts <span class="token operator">=</span> <span class="token function">require</span><span class="token punctuation">(</span><span class="token string">'echarts/lib/echarts'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token function">require</span><span class="token punctuation">(</span><span class="token string">'echarts/lib/chart/bar'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token function">require</span><span class="token punctuation">(</span><span class="token string">'echarts/lib/component/grid'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>Second, because our source code has been rewritten using TypeScript, <code>v5</code> will no longer support importing files from <code>echarts/src</code>. You need to change it to import from <code>echarts/lib</code>.</p> <h4 id="dependency-changes" tabindex="-1">Dependency Changes</h4> <blockquote><p>Note: This section is only for developers who use tree-shaking interfaces to ensure a minimal bundle size, not for those who imports the whole package.</p></blockquote> <p>In order to keep the size of the bundle small enough, we remove some dependencies that would have been imported by default. For example, as mentioned above, when using the new on-demand interface, <code>CanvasRenderer</code> is no longer included by default, which ensures that unneeded Canvas rendering code is not imported when only SVG rendering mode is used, and in addition, the following dependencies are adjusted.</p> <ul><li>The right-angle coordinate system component is no longer introduced by default when using line charts and bar charts, so the following introduction method was used before</li></ul> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">const</span> echarts <span class="token operator">=</span> <span class="token function">require</span><span class="token punctuation">(</span><span class="token string">'echarts/lib/echarts'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token function">require</span><span class="token punctuation">(</span><span class="token string">'echarts/lib/chart/bar'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token function">require</span><span class="token punctuation">(</span><span class="token string">'echarts/lib/chart/line'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>Need to introduce the <code>grid</code> component separately again</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token function">require</span><span class="token punctuation">(</span><span class="token string">'echarts/lib/component/grid'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>Reference issues: <a href="https://github.com/apache/echarts/issues/14080">#14080</a>, <a href="https://github.com/apache/echarts/issues/13764">#13764</a></p> <ul><li><code>aria</code> components are no longer imported by default. You need import it manually if necessary.</li></ul> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">import</span> <span class="token punctuation">{</span> AriaComponent <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'echarts/components'</span><span class="token punctuation">;</span>
+echarts<span class="token punctuation">.</span><span class="token function">use</span><span class="token punctuation">(</span>AriaComponent<span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>Or</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token function">require</span><span class="token punctuation">(</span><span class="token string">'echarts/lib/component/aria'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h3 id="built-in-geojson-removed" tabindex="-1">Built-in GeoJSON Removed</h3> <p><code>v5</code> removes the built-in geoJSON (previously in the <code>echarts/map</code> folder). These geoJSON files were always sourced from third parties. If users still need them, they can go get them from the old version, or find more appropriate data and register it with ECharts via the registerMap interface.</p> <h3 id="browser-compatibility" tabindex="-1">Browser Compatibility</h3> <p>IE8 is no longer supported by <code>v5</code>. We no longer maintain and upgrade the previous <a href="https://github.com/ecomfe/zrender/tree/4.3.2/src/vml">VML renderer</a> for IE8 compatibility. If developers have a strong need for a VML renderer, they are welcome to submit a pull request to upgrade the VML renderer or maintain a separate third-party VML renderer, as we support registration of standalone renderers starting with <code>v5.0.1</code>.</p> <h3 id="configuration-item-adjustment" tabindex="-1">Configuration Item Adjustment</h3> <h4 id="axis-line-and-axis-tick-of-y-axis-(value-axis)-are-hidden-by-default" tabindex="-1">Axis-Line and Axis-Tick of Y-Axis (Value Axis) Are Hidden by Default</h4> <p>The axis line and axis ticks of the Y axis (<code>value</code> axis) has been hidden by default since <code>v5</code>. If you prefer the previous style, you will need to explicitly configure as follows,</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'value'</span><span class="token punctuation">,</span>
+  <span class="token comment">// explicitly set `axisLine.show` & `axisTick.show` as `true`</span>
+  <span class="token literal-property property">axisLine</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">true</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">axisTick</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">true</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h4 id="visual-style-settings-priority-changes" tabindex="-1">Visual Style Settings Priority Changes</h4> <p>The priority of the visuals between <a href="https://echarts.apache.org/option.html#visualMap">visualMap component</a> and <a href="https://echarts.apache.org/option.html#series-scatter.itemStyle">itemStyle</a> | <a href="https://echarts.apache.org/option.html#series-scatter.lineStyle">lineStyle</a> | <a href="https://echarts.apache.org/option.html#series-scatter.areaStyle">areaStyle</a> are reversed since <code>v5</code>.</p> <p>That is, previously in <code>v4</code>, the visuals (i.e., color, symbol, symbolSize, ...) that generated by <a href="https://echarts.apache.org/option.html#visualMap">visualMap component</a> has the highest priority, which will overwrite the same visuals settings in <a href="https://echarts.apache.org/option.html#series-scatter.itemStyle">itemStyle</a> | <a href="https://echarts.apache.org/option.html#series-scatter.lineStyle">lineStyle</a> | <a href="https://echarts.apache.org/option.html#series-scatter.areaStyle">areaStyle</a>. That brought troubles when needing to specify specific style to some certain data items while using <a href="https://echarts.apache.org/option.html#visualMap">visualMap component</a>. Since <code>v5</code>, the visuals specified in <a href="https://echarts.apache.org/option.html#series-scatter.itemStyle">itemStyle</a> | <a href="https://echarts.apache.org/option.html#series-scatter.lineStyle">lineStyle</a> | <a href="https://echarts.apache.org/option.html#series-scatter.areaStyle">areaStyle</a> has the highest priority.</p> <p>In most cases, users will probably not notice this change when migrating from <code>v4</code> to <code>v5</code>. But users can still check that if <a href="https://echarts.apache.org/option.html#visualMap">visualMap component</a> and <a href="https://echarts.apache.org/option.html#series-scatter.itemStyle">itemStyle</a> | <a href="https://echarts.apache.org/option.html#series-scatter.lineStyle">lineStyle</a> | <a href="https://echarts.apache.org/option.html#series-scatter.areaStyle">areaStyle</a> are both specified.</p> <h4 id="padding-for-rich-text" tabindex="-1"><code>padding</code> for Rich Text</h4> <p><code>v5</code> adjusts the <a href="https://echarts.apache.org/option.html#series-scatter.label.rich.%3Cstyle_name%3E.padding">rich.?.padding</a> to make it more compliant with CSS specifications. In <code>v4</code>, for example <code>rich. .padding: [11, 22, 33, 44]</code> means that <code>padding-top</code> is <code>33</code> and <code>padding-bottom</code> is <code>11</code>. The position of the top and bottom is adjusted in <code>v5</code>, <code>rich. .padding: [11, 22, 33, 44]</code> means that <code>padding-top</code> is <code>11</code> and <code>padding-bottom</code> is <code>33</code>.</p> <p>If the user is using <a href="https://echarts.apache.org/option.html#series-scatter.label.rich.%3Cstyle_name%3E.padding">rich.?.padding</a>, this order needs to be adjusted.</p> <h2 id="extensions" tabindex="-1">Extensions</h2> <p>These extensions need to be upgraded to new version to support echarts <code>v5</code>:</p> <ul><li><a href="https://github.com/ecomfe/echarts-gl">echarts-gl</a></li> <li><a href="https://github.com/ecomfe/echarts-wordcloud">echarts-wordcloud</a></li> <li><a href="https://github.com/ecomfe/echarts-liquidfill">echarts-liquidfill</a></li></ul> <h2 id="deprecated-apis" tabindex="-1">Deprecated APIs</h2> <p>Some of the API and echarts options are deprecated since <code>v5</code>, but are still backward compatible. Users can <strong>keep using these deprecated API</strong>, with only some warning will be printed to console in dev mode. But if users have spare time, it is recommended to upgraded to new API for the consideration of long term maintenance.</p> <p>The deprecated API and their corresponding new API are listed as follows:</p> <ul><li>Transform related props of a graphic element are changed:
+<ul><li>Changes:
+<ul><li><code>position: [number, number]</code> are changed to <code>x: number</code>/<code>y: number</code>.</li> <li><code>scale: [number, number]</code> are changed to <code>scaleX: number</code>/<code>scaleY: number</code>.</li> <li><code>origin: [number, number]</code> are changed to <code>originX: number</code>/<code>originY: number</code>.</li></ul></li> <li>The <code>position</code>, <code>scale</code> and <code>origin</code> are still supported but deprecated.</li> <li>It effects these places:
+<ul><li>In the <code>graphic</code> components: the declarations of each element.</li> <li>In <code>custom series</code>: the declarations of each element in the return of <code>renderItem</code>.</li> <li>Directly use zrender graphic elements.</li></ul></li></ul></li> <li>Text related props on graphic elements are changed:
+<ul><li>Changes:
+<ul><li>The declaration of attached text (or say, rect text) are changed.
+<ul><li>Prop <code>style.text</code> are deprecated in elements except <code>Text</code>. Instead, Prop set <code>textContent</code> and <code>textConfig</code> are provided to support more powerful capabilities.</li> <li>These related props at the left part below are deprecated. Use the right part below instead.
+<ul><li>textPosition => textConfig.position</li> <li>textOffset => textConfig.offset</li> <li>textRotation => textConfig.rotation</li> <li>textDistance => textConfig.distance</li></ul></li></ul></li> <li>The props at the left part below are deprecated in <code>style</code> and <code>style.rich.?</code>. Use the props at the right part below instead.
+<ul><li>textFill => fill</li> <li>textStroke => stroke</li> <li>textFont => font</li> <li>textStrokeWidth => lineWidth</li> <li>textAlign => align</li> <li>textVerticalAlign => verticalAlign</li> <li>textLineHeight => lineHeight</li> <li>textWidth => width</li> <li>textHeight => hight</li> <li>textBackgroundColor => backgroundColor</li> <li>textPadding => padding</li> <li>textBorderColor => borderColor</li> <li>textBorderWidth => borderWidth</li> <li>textBorderRadius => borderRadius</li> <li>textBoxShadowColor => shadowColor</li> <li>textBoxShadowBlur => shadowBlur</li> <li>textBoxShadowOffsetX => shadowOffsetX</li> <li>textBoxShadowOffsetY => shadowOffsetY</li></ul></li> <li>Note: these props are not changed:
+<ul><li>textShadowColor</li> <li>textShadowBlur</li> <li>textShadowOffsetX</li> <li>textShadowOffsetY</li></ul></li></ul></li> <li>It effects these places:
+<ul><li>In the <code>graphic</code> components: the declarations of each element. [compat, but not accurately the same in some complicated cases.]</li> <li>In <code>custom series</code>: the declarations of each element in the return of <code>renderItem</code>. [compat, but not accurately the same in some complicated cases].</li> <li>Directly use zrender API to create graphic elements. [No compat, breaking change].</li></ul></li></ul></li> <li>API on chart instance:
+<ul><li><code>chart.one(...)</code> is deprecated.</li></ul></li> <li><code>label</code>:
+<ul><li>In props <code>color</code>, <code>textBorderColor</code>, <code>backgroundColor</code> and <code>borderColor</code>, the value <code>'auto'</code> is deprecated. Use the value <code>'inherit'</code> instead.</li></ul></li> <li><code>hoverAnimation</code>:
+<ul><li>option <code>series.hoverAnimation</code> is deprecated. Use <code>series.emphasis.scale</code> instead.</li></ul></li> <li><code>line series</code>:
+<ul><li>option <code>series.clipOverflow</code> is deprecated. Use <code>series.clip</code> instead.</li></ul></li> <li><code>custom series</code>:
+<ul><li>In <code>renderItem</code>, the <code>api.style(...)</code> and <code>api.styleEmphasis(...)</code> are deprecated. Because it is not really necessary and hard to ensure backward compatibility. Users can fetch system designated visual by <code>api.visual(...)</code>.</li></ul></li> <li><code>sunburst series</code>:
+<ul><li>Action type <code>sunburstHighlight</code> is deprecated. Use <code>highlight</code> instead.</li> <li>Action type <code>sunburstUnhighlight</code> is deprecated. Use <code>downplay</code> instead.</li> <li>option <code>series.downplay</code> is deprecated. Use <code>series.blur</code> instead.</li> <li>option <code>series.highlightPolicy</code> is deprecated. Use <code>series.emphasis.focus</code> instead.</li></ul></li> <li><code>pie series</code>:
+<ul><li>The action type at the left part below are deprecated. Use the right part instead:
+<ul><li><code>pieToggleSelect</code> => <code>toggleSelect</code></li> <li><code>pieSelect</code> => <code>select</code></li> <li><code>pieUnSelect</code> => <code>unselect</code></li></ul></li> <li>The event type at the left part below are deprecated. Use the right part instead:
+<ul><li><code>pieselectchanged</code> => <code>selectchanged</code></li> <li><code>pieselected</code> => <code>selected</code></li> <li><code>pieunselected</code> => <code>unselected</code></li></ul></li> <li>option <code>series.label.margin</code> is deprecated. Use <code>series.label.edgeDistance</code> instead.</li> <li>option <code>series.clockWise</code> is deprecated. Use <code>series.clockwise</code> instead.</li> <li>option <code>series.hoverOffset</code> is deprecated. Use <code>series.emphasis.scaleSize</code> instead.</li></ul></li> <li><code>map series</code>:
+<ul><li>The action type at the left part below are deprecated. Use the right part instead:
+<ul><li><code>mapToggleSelect</code> => <code>toggleSelect</code></li> <li><code>mapSelect</code> => <code>select</code></li> <li><code>mapUnSelect</code> => <code>unselect</code></li></ul></li> <li>The event type at the left part below are deprecated. Use the right part instead:
+<ul><li><code>mapselectchanged</code> => <code>selectchanged</code></li> <li><code>mapselected</code> => <code>selected</code></li> <li><code>mapunselected</code> => <code>unselected</code></li></ul></li> <li>option <code>series.mapType</code> is deprecated. Use <code>series.map</code> instead.</li> <li>option <code>series.mapLocation</code> is deprecated.</li></ul></li> <li><code>graph series</code>:
+<ul><li>option <code>series.focusNodeAdjacency</code> is deprecated. Use <code>series.emphasis: { focus: 'adjacency'}</code> instead.</li></ul></li> <li><code>gauge series</code>:
+<ul><li>option <code>series.clockWise</code> is deprecated. Use <code>series.clockwise</code> instead.</li> <li>option <code>series.hoverOffset</code> is deprecated. Use <code>series.emphasis.scaleSize</code> instead.</li></ul></li> <li><code>dataZoom component</code>:
+<ul><li>option <code>dataZoom.handleIcon</code> need prefix <code>path://</code> if using SVGPath.</li></ul></li> <li><code>radar</code>:
+<ul><li>option <code>radar.name</code> is deprecated. Use <code>radar.axisName</code> instead.</li> <li>option <code>radar.nameGap</code> is deprecated. Use <code>radar.axisNameGap</code> instead.</li></ul></li> <li>Parse and format:
+<ul><li><code>echarts.format.formatTime</code> is deprecated. Use <code>echarts.time.format</code> instead.</li> <li><code>echarts.number.parseDate</code> is deprecated. Use <code>echarts.time.parse</code> instead.</li> <li><code>echarts.format.getTextRect</code> is deprecated.</li></ul></li></ul></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">Contributors</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/en/basics/release-note/v5-upgrade-guide.md" title="Edit this Document" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">Edit this page on GitHub</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/plainheart" target="_blank" class="post-contributor has-avatar"><img alt="plainheart" src="https://echarts.apache.org/en/images/people/plainheart.jpg" loading="lazy" decoding="async" fetchpriority="low"> <span>plainheart</span></a><a href="https://github.com/Ovilia" target="_blank" class="post-contributor has-avatar"><img alt="Ovilia" src="https://echarts.apache.org/en/images/people/羡辙.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>Ovilia</span></a><a href="https://github.com/fuchunhui" target="_blank" class="post-contributor has-avatar"><img alt="fuchunhui" src="https://echarts.apache.org/en/images/people/付春辉.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>fuchunhui</span></a><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(e,t,i,o,d,a,n,r,l,c,s,h,p,g,u,m,f,b,y,v,I,C,w,x,S,A,k,G,B,W,Y,J,M,N,Z,T,U,V,z,j,H,L,X,R,P,F,E,D,O,Q,K,q,_,$,ee,te,ie,oe,de,ae,ne,re,le){return{layout:"default",data:[{html:'<h1 id="apache-echarts-5-upgrade-guide" tabindex="-1">Apache ECharts 5 Upgrade Guide</h1>\n<p>This guide is for those who want to upgrade from echarts 4.x (hereafter <code>v4</code>) to echarts 5.x (hereafter <code>v5</code>). You can find out what new features <code>v5</code> brings that are worth upgrading in <a href="en/basics/release-note/v5-feature">New Features in ECharts 5</a>. In most cases, developers won\'t need to do anything extra for this upgrade, as echarts has always tried to keep the API as stable and backward-compatible as possible. However, <code>v5</code> still brings some breaking changes that require special attention. In addition, in some cases, <code>v5</code> provides a better API to replace the previous one, and these superseded APIs will no longer be recommended (though we have tried to be as compatible as possible with these changes). We\'ll try to explain these changes in detail in this document.</p>\n<h2 id="breaking-changes" tabindex="-1">Breaking Changes</h2>\n<h3 id="default-theme" tabindex="-1">Default Theme</h3>\n<p>First of all, the default theme has been changed. <code>v5</code> has made a lot of changes and optimizations on the theme design. If you still want to keep the colors of the old version, you can manually declare the colors as follows.</p>\n<md-code-block lang="js" code="\'Y2hhcnQuc2V0T3B0aW9uKHsKICBjb2xvcjogWwogICAgJyNjMjM1MzEnLAogICAgJyMyZjQ1NTQnLAogICAgJyM2MWEwYTgnLAogICAgJyNkNDgyNjUnLAogICAgJyM5MWM3YWUnLAogICAgJyM3NDlmODMnLAogICAgJyNjYTg2MjInLAogICAgJyNiZGEyOWEnLAogICAgJyM2ZTcwNzQnLAogICAgJyM1NDY1NzAnLAogICAgJyNjNGNjZDMnCiAgXQogIC8vIC4uLgp9KTs\'" line-highlights="\'\'" />\n<p>Or, to make a simple <code>v4</code> theme.</p>\n<md-code-block lang="js" code="\'dmFyIHRoZW1lRUM0ID0gewogIGNvbG9yOiBbCiAgICAnI2MyMzUzMScsCiAgICAnIzJmNDU1NCcsCiAgICAnIzYxYTBhOCcsCiAgICAnI2Q0ODI2NScsCiAgICAnIzkxYzdhZScsCiAgICAnIzc0OWY4MycsCiAgICAnI2NhODYyMicsCiAgICAnI2JkYTI5YScsCiAgICAnIzZlNzA3NCcsCiAgICAnIzU0NjU3MCcsCiAgICAnI2M0Y2NkMycKICBdCn07CnZhciBjaGFydCA9IGVjaGFydHMuaW5pdChkb20sIHRoZW1lRUM0KTsKY2hhcnQuc2V0T3B0aW9uKC8qIC4uLiAqLyk7\'" line-highlights="\'\'" />\n<h3 id="importing-echarts" tabindex="-1">Importing ECharts</h3>\n<h4 id="removing-support-for-default-exports" tabindex="-1">Removing Support for Default Exports</h4>\n<p>Since <code>v5</code>, echarts only provides <code>named exports</code>.</p>\n<p>So if you are importing <code>echarts</code> like this:</p>\n<md-code-block lang="js" code="\'aW1wb3J0IGVjaGFydHMgZnJvbSAnZWNoYXJ0cyc7Ci8vIE9yIGltcG9ydCBjb3JlIG1vZHVsZQppbXBvcnQgZWNoYXJ0cyBmcm9tICdlY2hhcnRzL2xpYi9lY2hhcnRzJzs\'" line-highlights="\'\'" />\n<p>It will throw error in <code>v5</code>. You need to change the code as follows to import the entire module.</p>\n<md-code-block lang="js" code="\'aW1wb3J0ICogYXMgZWNoYXJ0cyBmcm9tICdlY2hhcnRzJzsKLy8gT3IKaW1wb3J0ICogYXMgZWNoYXJ0cyBmcm9tICdlY2hhcnRzL2xpYi9lY2hhcnRzJzs\'" line-highlights="\'\'" />\n<h4 id="tree-shaking-api" tabindex="-1">Tree-shaking API</h4>\n<p>In 5.0.1, we introduced the new <a href="en/basics/import">tree-shaking API</a></p>\n<md-code-block lang="js" code="\'aW1wb3J0ICogYXMgZWNoYXJ0cyBmcm9tICdlY2hhcnRzL2NvcmUnOwppbXBvcnQgeyBCYXJDaGFydCB9IGZyb20gJ2VjaGFydHMvY2hhcnRzJzsKaW1wb3J0IHsgR3JpZENvbXBvbmVudCB9IGZyb20gJ2VjaGFydHMvY29tcG9uZW50cyc7Ci8vIE5vdGUgdGhhdCB0aGUgQ2FudmFzIHJlbmRlcmVyIGlzIG5vIGxvbmdlciBpbmNsdWRlZCBieSBkZWZhdWx0IGFuZCBuZWVkcyB0byBiZSBpbXBvcnRlZCBleHBsaWN0bHksIG9yIGltcG9ydCB0aGUgU1ZHUmVuZGVyZXIgaWYgeW91IG5lZWQgdG8gdXNlIHRoZSBTVkcgcmVuZGVyaW5nIG1vZGUKaW1wb3J0IHsgQ2FudmFzUmVuZGVyZXIgfSBmcm9tICdlY2hhcnRzL3JlbmRlcmVycyc7CgplY2hhcnRzLnVzZShbQmFyQ2hhcnQsIEdyaWRDb21wb25lbnQsIENhbnZhc1JlbmRlcmVyXSk7\'" line-highlights="\'\'" />\n<p>To make it easier for you to know which modules you need to import based on your option, our new example page adds a new feature to generate the three-shakable code, you can check the <code>Full Code</code> tab on the example page to see the modules you need to introduce and the related code.</p>\n<p>In most cases, we recommend using the new tree-shaking interface whenever possible, as it maximizes the power of the packaging tool tree-shaking and effectively resolves namespace conflicts and prevents the exposure of internal structures. If you are still using the CommonJS method of writing modules, the previous approach is still supported:</p>\n<md-code-block lang="js" code="\'Y29uc3QgZWNoYXJ0cyA9IHJlcXVpcmUoJ2VjaGFydHMvbGliL2VjaGFydHMnKTsKcmVxdWlyZSgnZWNoYXJ0cy9saWIvY2hhcnQvYmFyJyk7CnJlcXVpcmUoJ2VjaGFydHMvbGliL2NvbXBvbmVudC9ncmlkJyk7\'" line-highlights="\'\'" />\n<p>Second, because our source code has been rewritten using TypeScript, <code>v5</code> will no longer support importing files from <code>echarts/src</code>. You need to change it to import from <code>echarts/lib</code>.</p>\n<h4 id="dependency-changes" tabindex="-1">Dependency Changes</h4>\n<blockquote>\n<p>Note: This section is only for developers who use tree-shaking interfaces to ensure a minimal bundle size, not for those who imports the whole package.</p>\n</blockquote>\n<p>In order to keep the size of the bundle small enough, we remove some dependencies that would have been imported by default. For example, as mentioned above, when using the new on-demand interface, <code>CanvasRenderer</code> is no longer included by default, which ensures that unneeded Canvas rendering code is not imported when only SVG rendering mode is used, and in addition, the following dependencies are adjusted.</p>\n<ul>\n<li>The right-angle coordinate system component is no longer introduced by default when using line charts and bar charts, so the following introduction method was used before</li>\n</ul>\n<md-code-block lang="js" code="\'Y29uc3QgZWNoYXJ0cyA9IHJlcXVpcmUoJ2VjaGFydHMvbGliL2VjaGFydHMnKTsKcmVxdWlyZSgnZWNoYXJ0cy9saWIvY2hhcnQvYmFyJyk7CnJlcXVpcmUoJ2VjaGFydHMvbGliL2NoYXJ0L2xpbmUnKTs\'" line-highlights="\'\'" />\n<p>Need to introduce the <code>grid</code> component separately again</p>\n<md-code-block lang="js" code="\'cmVxdWlyZSgnZWNoYXJ0cy9saWIvY29tcG9uZW50L2dyaWQnKTs\'" line-highlights="\'\'" />\n<p>Reference issues: <a href="https://github.com/apache/echarts/issues/14080">#14080</a>, <a href="https://github.com/apache/echarts/issues/13764">#13764</a></p>\n<ul>\n<li><code>aria</code> components are no longer imported by default. You need import it manually if necessary.</li>\n</ul>\n<md-code-block lang="js" code="\'aW1wb3J0IHsgQXJpYUNvbXBvbmVudCB9IGZyb20gJ2VjaGFydHMvY29tcG9uZW50cyc7CmVjaGFydHMudXNlKEFyaWFDb21wb25lbnQpOw\'" line-highlights="\'\'" />\n<p>Or</p>\n<md-code-block lang="js" code="\'cmVxdWlyZSgnZWNoYXJ0cy9saWIvY29tcG9uZW50L2FyaWEnKTs\'" line-highlights="\'\'" />\n<h3 id="built-in-geojson-removed" tabindex="-1">Built-in GeoJSON Removed</h3>\n<p><code>v5</code> removes the built-in geoJSON (previously in the <code>echarts/map</code> folder). These geoJSON files were always sourced from third parties. If users still need them, they can go get them from the old version, or find more appropriate data and register it with ECharts via the registerMap interface.</p>\n<h3 id="browser-compatibility" tabindex="-1">Browser Compatibility</h3>\n<p>IE8 is no longer supported by <code>v5</code>. We no longer maintain and upgrade the previous <a href="https://github.com/ecomfe/zrender/tree/4.3.2/src/vml">VML renderer</a> for IE8 compatibility. If developers have a strong need for a VML renderer, they are welcome to submit a pull request to upgrade the VML renderer or maintain a separate third-party VML renderer, as we support registration of standalone renderers starting with <code>v5.0.1</code>.</p>\n<h3 id="configuration-item-adjustment" tabindex="-1">Configuration Item Adjustment</h3>\n<h4 id="axis-line-and-axis-tick-of-y-axis-(value-axis)-are-hidden-by-default" tabindex="-1">Axis-Line and Axis-Tick of Y-Axis (Value Axis) Are Hidden by Default</h4>\n<p>The axis line and axis ticks of the Y axis (<code>value</code> axis) has been hidden by default since <code>v5</code>. If you prefer the previous style, you will need to explicitly configure as follows,</p>\n<md-code-block lang="js" code="\'eUF4aXM6IHsKICB0eXBlOiAndmFsdWUnLAogIC8vIGV4cGxpY2l0bHkgc2V0IGBheGlzTGluZS5zaG93YCAmIGBheGlzVGljay5zaG93YCBhcyBgdHJ1ZWAKICBheGlzTGluZTogewogICAgc2hvdzogdHJ1ZQogIH0sCiAgYXhpc1RpY2s6IHsKICAgIHNob3c6IHRydWUKICB9Cn0\'" line-highlights="\'\'" />\n<h4 id="visual-style-settings-priority-changes" tabindex="-1">Visual Style Settings Priority Changes</h4>\n<p>The priority of the visuals between <a href="https://echarts.apache.org/option.html#visualMap">visualMap component</a> and <a href="https://echarts.apache.org/option.html#series-scatter.itemStyle">itemStyle</a> | <a href="https://echarts.apache.org/option.html#series-scatter.lineStyle">lineStyle</a> | <a href="https://echarts.apache.org/option.html#series-scatter.areaStyle">areaStyle</a> are reversed since <code>v5</code>.</p>\n<p>That is, previously in <code>v4</code>, the visuals (i.e., color, symbol, symbolSize, ...) that generated by <a href="https://echarts.apache.org/option.html#visualMap">visualMap component</a> has the highest priority, which will overwrite the same visuals settings in <a href="https://echarts.apache.org/option.html#series-scatter.itemStyle">itemStyle</a> | <a href="https://echarts.apache.org/option.html#series-scatter.lineStyle">lineStyle</a> | <a href="https://echarts.apache.org/option.html#series-scatter.areaStyle">areaStyle</a>. That brought troubles when needing to specify specific style to some certain data items while using <a href="https://echarts.apache.org/option.html#visualMap">visualMap component</a>. Since <code>v5</code>, the visuals specified in <a href="https://echarts.apache.org/option.html#series-scatter.itemStyle">itemStyle</a> | <a href="https://echarts.apache.org/option.html#series-scatter.lineStyle">lineStyle</a> | <a href="https://echarts.apache.org/option.html#series-scatter.areaStyle">areaStyle</a> has the highest priority.</p>\n<p>In most cases, users will probably not notice this change when migrating from <code>v4</code> to <code>v5</code>. But users can still check that if <a href="https://echarts.apache.org/option.html#visualMap">visualMap component</a> and <a href="https://echarts.apache.org/option.html#series-scatter.itemStyle">itemStyle</a> | <a href="https://echarts.apache.org/option.html#series-scatter.lineStyle">lineStyle</a> | <a href="https://echarts.apache.org/option.html#series-scatter.areaStyle">areaStyle</a> are both specified.</p>\n<h4 id="padding-for-rich-text" tabindex="-1"><code>padding</code> for Rich Text</h4>\n<p><code>v5</code> adjusts the <a href="https://echarts.apache.org/option.html#series-scatter.label.rich.%3Cstyle_name%3E.padding">rich.?.padding</a> to make it more compliant with CSS specifications. In <code>v4</code>, for example <code>rich. .padding: [11, 22, 33, 44]</code> means that <code>padding-top</code> is <code>33</code> and <code>padding-bottom</code> is <code>11</code>. The position of the top and bottom is adjusted in <code>v5</code>, <code>rich. .padding: [11, 22, 33, 44]</code> means that <code>padding-top</code> is <code>11</code> and <code>padding-bottom</code> is <code>33</code>.</p>\n<p>If the user is using <a href="https://echarts.apache.org/option.html#series-scatter.label.rich.%3Cstyle_name%3E.padding">rich.?.padding</a>, this order needs to be adjusted.</p>\n<h2 id="extensions" tabindex="-1">Extensions</h2>\n<p>These extensions need to be upgraded to new version to support echarts <code>v5</code>:</p>\n<ul>\n<li><a href="https://github.com/ecomfe/echarts-gl">echarts-gl</a></li>\n<li><a href="https://github.com/ecomfe/echarts-wordcloud">echarts-wordcloud</a></li>\n<li><a href="https://github.com/ecomfe/echarts-liquidfill">echarts-liquidfill</a></li>\n</ul>\n<h2 id="deprecated-apis" tabindex="-1">Deprecated APIs</h2>\n<p>Some of the API and echarts options are deprecated since <code>v5</code>, but are still backward compatible. Users can <strong>keep using these deprecated API</strong>, with only some warning will be printed to console in dev mode. But if users have spare time, it is recommended to upgraded to new API for the consideration of long term maintenance.</p>\n<p>The deprecated API and their corresponding new API are listed as follows:</p>\n<ul>\n<li>Transform related props of a graphic element are changed:\n<ul>\n<li>Changes:\n<ul>\n<li><code>position: [number, number]</code> are changed to <code>x: number</code>/<code>y: number</code>.</li>\n<li><code>scale: [number, number]</code> are changed to <code>scaleX: number</code>/<code>scaleY: number</code>.</li>\n<li><code>origin: [number, number]</code> are changed to <code>originX: number</code>/<code>originY: number</code>.</li>\n</ul>\n</li>\n<li>The <code>position</code>, <code>scale</code> and <code>origin</code> are still supported but deprecated.</li>\n<li>It effects these places:\n<ul>\n<li>In the <code>graphic</code> components: the declarations of each element.</li>\n<li>In <code>custom series</code>: the declarations of each element in the return of <code>renderItem</code>.</li>\n<li>Directly use zrender graphic elements.</li>\n</ul>\n</li>\n</ul>\n</li>\n<li>Text related props on graphic elements are changed:\n<ul>\n<li>Changes:\n<ul>\n<li>The declaration of attached text (or say, rect text) are changed.\n<ul>\n<li>Prop <code>style.text</code> are deprecated in elements except <code>Text</code>. Instead, Prop set <code>textContent</code> and <code>textConfig</code> are provided to support more powerful capabilities.</li>\n<li>These related props at the left part below are deprecated. Use the right part below instead.\n<ul>\n<li>textPosition =&gt; textConfig.position</li>\n<li>textOffset =&gt; textConfig.offset</li>\n<li>textRotation =&gt; textConfig.rotation</li>\n<li>textDistance =&gt; textConfig.distance</li>\n</ul>\n</li>\n</ul>\n</li>\n<li>The props at the left part below are deprecated in <code>style</code> and <code>style.rich.?</code>. Use the props at the right part below instead.\n<ul>\n<li>textFill =&gt; fill</li>\n<li>textStroke =&gt; stroke</li>\n<li>textFont =&gt; font</li>\n<li>textStrokeWidth =&gt; lineWidth</li>\n<li>textAlign =&gt; align</li>\n<li>textVerticalAlign =&gt; verticalAlign</li>\n<li>textLineHeight =&gt; lineHeight</li>\n<li>textWidth =&gt; width</li>\n<li>textHeight =&gt; hight</li>\n<li>textBackgroundColor =&gt; backgroundColor</li>\n<li>textPadding =&gt; padding</li>\n<li>textBorderColor =&gt; borderColor</li>\n<li>textBorderWidth =&gt; borderWidth</li>\n<li>textBorderRadius =&gt; borderRadius</li>\n<li>textBoxShadowColor =&gt; shadowColor</li>\n<li>textBoxShadowBlur =&gt; shadowBlur</li>\n<li>textBoxShadowOffsetX =&gt; shadowOffsetX</li>\n<li>textBoxShadowOffsetY =&gt; shadowOffsetY</li>\n</ul>\n</li>\n<li>Note: these props are not changed:\n<ul>\n<li>textShadowColor</li>\n<li>textShadowBlur</li>\n<li>textShadowOffsetX</li>\n<li>textShadowOffsetY</li>\n</ul>\n</li>\n</ul>\n</li>\n<li>It effects these places:\n<ul>\n<li>In the <code>graphic</code> components: the declarations of each element. [compat, but not accurately the same in some complicated cases.]</li>\n<li>In <code>custom series</code>: the declarations of each element in the return of <code>renderItem</code>. [compat, but not accurately the same in some complicated cases].</li>\n<li>Directly use zrender API to create graphic elements. [No compat, breaking change].</li>\n</ul>\n</li>\n</ul>\n</li>\n<li>API on chart instance:\n<ul>\n<li><code>chart.one(...)</code> is deprecated.</li>\n</ul>\n</li>\n<li><code>label</code>:\n<ul>\n<li>In props <code>color</code>, <code>textBorderColor</code>, <code>backgroundColor</code> and <code>borderColor</code>, the value <code>\'auto\'</code> is deprecated. Use the value <code>\'inherit\'</code> instead.</li>\n</ul>\n</li>\n<li><code>hoverAnimation</code>:\n<ul>\n<li>option <code>series.hoverAnimation</code> is deprecated. Use <code>series.emphasis.scale</code> instead.</li>\n</ul>\n</li>\n<li><code>line series</code>:\n<ul>\n<li>option <code>series.clipOverflow</code> is deprecated. Use <code>series.clip</code> instead.</li>\n</ul>\n</li>\n<li><code>custom series</code>:\n<ul>\n<li>In <code>renderItem</code>, the <code>api.style(...)</code> and <code>api.styleEmphasis(...)</code> are deprecated. Because it is not really necessary and hard to ensure backward compatibility. Users can fetch system designated visual by <code>api.visual(...)</code>.</li>\n</ul>\n</li>\n<li><code>sunburst series</code>:\n<ul>\n<li>Action type <code>sunburstHighlight</code> is deprecated. Use <code>highlight</code> instead.</li>\n<li>Action type <code>sunburstUnhighlight</code> is deprecated. Use <code>downplay</code> instead.</li>\n<li>option <code>series.downplay</code> is deprecated. Use <code>series.blur</code> instead.</li>\n<li>option <code>series.highlightPolicy</code> is deprecated. Use <code>series.emphasis.focus</code> instead.</li>\n</ul>\n</li>\n<li><code>pie series</code>:\n<ul>\n<li>The action type at the left part below are deprecated. Use the right part instead:\n<ul>\n<li><code>pieToggleSelect</code> =&gt; <code>toggleSelect</code></li>\n<li><code>pieSelect</code> =&gt; <code>select</code></li>\n<li><code>pieUnSelect</code> =&gt; <code>unselect</code></li>\n</ul>\n</li>\n<li>The event type at the left part below are deprecated. Use the right part instead:\n<ul>\n<li><code>pieselectchanged</code> =&gt; <code>selectchanged</code></li>\n<li><code>pieselected</code> =&gt; <code>selected</code></li>\n<li><code>pieunselected</code> =&gt; <code>unselected</code></li>\n</ul>\n</li>\n<li>option <code>series.label.margin</code> is deprecated. Use <code>series.label.edgeDistance</code> instead.</li>\n<li>option <code>series.clockWise</code> is deprecated. Use <code>series.clockwise</code> instead.</li>\n<li>option <code>series.hoverOffset</code> is deprecated. Use <code>series.emphasis.scaleSize</code> instead.</li>\n</ul>\n</li>\n<li><code>map series</code>:\n<ul>\n<li>The action type at the left part below are deprecated. Use the right part instead:\n<ul>\n<li><code>mapToggleSelect</code> =&gt; <code>toggleSelect</code></li>\n<li><code>mapSelect</code> =&gt; <code>select</code></li>\n<li><code>mapUnSelect</code> =&gt; <code>unselect</code></li>\n</ul>\n</li>\n<li>The event type at the left part below are deprecated. Use the right part instead:\n<ul>\n<li><code>mapselectchanged</code> =&gt; <code>selectchanged</code></li>\n<li><code>mapselected</code> =&gt; <code>selected</code></li>\n<li><code>mapunselected</code> =&gt; <code>unselected</code></li>\n</ul>\n</li>\n<li>option <code>series.mapType</code> is deprecated. Use <code>series.map</code> instead.</li>\n<li>option <code>series.mapLocation</code> is deprecated.</li>\n</ul>\n</li>\n<li><code>graph series</code>:\n<ul>\n<li>option <code>series.focusNodeAdjacency</code> is deprecated. Use <code>series.emphasis: { focus: \'adjacency\'}</code> instead.</li>\n</ul>\n</li>\n<li><code>gauge series</code>:\n<ul>\n<li>option <code>series.clockWise</code> is deprecated. Use <code>series.clockwise</code> instead.</li>\n<li>option <code>series.hoverOffset</code> is deprecated. Use <code>series.emphasis.scaleSize</code> instead.</li>\n</ul>\n</li>\n<li><code>dataZoom component</code>:\n<ul>\n<li>option <code>dataZoom.handleIcon</code> need prefix <code>path://</code> if using SVGPath.</li>\n</ul>\n</li>\n<li><code>radar</code>:\n<ul>\n<li>option <code>radar.name</code> is deprecated. Use <code>radar.axisName</code> instead.</li>\n<li>option <code>radar.nameGap</code> is deprecated. Use <code>radar.axisNameGap</code> instead.</li>\n</ul>\n</li>\n<li>Parse and format:\n<ul>\n<li><code>echarts.format.formatTime</code> is deprecated. Use <code>echarts.time.format</code> instead.</li>\n<li><code>echarts.number.parseDate</code> is deprecated. Use <code>echarts.time.parse</code> instead.</li>\n<li><code>echarts.format.getTextRect</code> is deprecated.</li>\n</ul>\n</li>\n</ul>\n',postPath:"en/basics/release-note/v5-upgrade-guide",title:"Migration from v4 to v5 - What's New - Basics"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:o},{title:"入门篇",dir:d,children:[{title:"获取 ECharts",dir:a},{title:"在项目中引入 ECharts",dir:n},{title:"资源列表",dir:r,draft:e},{title:"寻求帮助",dir:l},{title:"版本特性",dir:c,children:[{title:"ECharts 6 特性介绍",dir:s},{title:"v5 升级 v6 指南",dir:h},{title:"5.0",dir:p},{title:"v4 升级 v5 指南",dir:g},{title:5.2,dir:u},{title:5.3,dir:m},{title:5.4,dir:f},{title:5.5,dir:b},{title:5.6,dir:y}]}]},{title:"概念篇",dir:v,children:[{title:"图表容器及大小",dir:I},{title:"配置项",dir:C,draft:e},{title:"系列",dir:w,draft:e},{title:"样式",dir:x},{title:"数据集",dir:S},{title:"数据转换",dir:A},{title:"坐标系",dir:k,draft:e},{title:"坐标轴",dir:G},{title:"视觉映射",dir:i},{title:"图例",dir:B},{title:"事件与行为",dir:W}]},{title:"应用篇",dir:Y,children:[{title:"常用图表类型",dir:J,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:M},{title:"堆叠柱状图",dir:N},{title:"动态排序柱状图",dir:Z},{title:"极坐标系柱状图",dir:T,draft:e},{title:"阶梯瀑布图",dir:U},{title:"视觉映射的柱状图",dir:i,draft:e}]},{title:"折线图",dir:V,children:[{title:"基础折线图",dir:z},{title:"堆叠折线图",dir:j},{title:"区域面积图",dir:H},{title:"平滑曲线图",dir:L},{title:"阶梯线图",dir:X}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:R},{title:"圆环图",dir:P},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:F,children:[{title:"基础散点图",dir:E}]}]},{title:"常用组件",dir:D,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:O}]}]},{title:"移动端优化",dir:t,draft:e},{title:"跨平台方案",dir:Q,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:K},{title:"数据下钻",dir:q,draft:e}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:_}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:ee}]},{title:"交互",dir:te,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:ie,draft:e},{title:"智能指针吸附",dir:oe}]}]},{title:"最佳实践",dir:de,children:[{title:"移动端优化",dir:t,draft:e},{title:ae,dir:ne},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:re}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:le}]}],en:[{title:"Get Started",dir:o},{title:"Basics",dir:d,children:[{title:"Download ECharts",dir:a},{title:"Import ECharts",dir:n},{title:"Resources",dir:r,draft:e},{title:"Get Help",dir:l},{title:"What's New",dir:c,children:[{title:"ECharts 6 Features",dir:s},{title:"Migration from v5 to v6",dir:h},{title:"5.0",dir:p},{title:"Migration from v4 to v5",dir:g},{title:5.2,dir:u},{title:5.3,dir:m},{title:5.4,dir:f},{title:5.5,dir:b},{title:5.6,dir:y}]}]},{title:"Concepts",dir:v,children:[{title:"Chart Container",dir:I},{title:"Chart Option",dir:C,draft:e},{title:"Series",dir:w,draft:e},{title:"Style",dir:x},{title:"Dataset",dir:S},{title:"Data Transform",dir:A},{title:"Coordinate",dir:k,draft:e},{title:"Axis",dir:G},{title:"Visual Mapping",dir:i},{title:"Legend",dir:B},{title:"Event and Action",dir:W}]},{title:"How To Guides",dir:Y,children:[{title:"Common Charts",dir:J,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:M},{title:"Stacked Bar",dir:N},{title:"Bar Racing",dir:Z},{title:"Bar Polar",dir:T,draft:e},{title:"Waterfall",dir:U}]},{title:"Line",dir:V,children:[{title:"Basic Line",dir:z},{title:"Stacked Line",dir:j},{title:"Area Chart",dir:H},{title:"Smoothed Line",dir:L},{title:"Step Line",dir:X}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:R},{title:"Ring Style",dir:P},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:F,children:[{title:"Basic Scatter",dir:E}]}]},{title:"Common Components",dir:D,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:O}]}]},{title:"Mobile",dir:t,draft:e},{title:"Cross Platform",dir:Q,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:K},{title:"Drilldown",dir:q,draft:e}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:_}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:ee}]},{title:"Interaction",dir:te,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:ie,draft:e},{title:"Intelligent Pointer Snapping",dir:oe}]}]},{title:"Best Practices",dir:de,children:[{title:"Mobile Optimization",dir:t,draft:e},{title:ae,dir:ne},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:re}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:le}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:e,routePath:"/en/basics/release-note/v5-upgrade-guide",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/en/basics/release-note/v6-feature/index.html b/docs/en/basics/release-note/v6-feature/index.html
new file mode 100644
index 0000000..84be3f9
--- /dev/null
+++ b/docs/en/basics/release-note/v6-feature/index.html
@@ -0,0 +1,22 @@
+<!doctype html>
+<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>ECharts 6 Features - What's New - Basics - Handbook - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="en"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/en/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/en/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/en/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/en/index.html" class="navbar-brand"><img src="https://echarts.apache.org/en/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/en/index.html">Home</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Docs<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/feature.html">Features</a></li><li><a href="https://echarts.apache.org/handbook/en/get-started/">Handbook</a></li><li><a href="https://echarts.apache.org/en/api.html">API</a></li><li><a href="https://echarts.apache.org/en/option.html">Chart Configuration</a></li><li><a href="https://echarts.apache.org/en/changelog.html">Changelog</a></li><li><a href="https://echarts.apache.org/en/faq.html">FAQ</a></li><li><a href="https://echarts.apache.org/handbook/en/basics/release-note/v6-upgrade-guide">V6 Upgrade Guide</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Download<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/download.html">Download</a></li><li><a href="https://echarts.apache.org/en/download-theme.html">Download Themes</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">Download Custom Series<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/download-extension.html">Download Extensions</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/en/index.html">Examples</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Resources<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/spreadsheet.html">Spread Sheet Tool</a></li><li><a href="https://echarts.apache.org/en/theme-builder.html">Theme Builder</a></li><li><a href="https://echarts.apache.org/en/cheat-sheet.html">Cheat Sheet</a></li><li><a href="https://echarts.apache.org/en/resources.html">More Resources</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/events.html">Events</a></li><li><a href="https://echarts.apache.org/en/committers.html">Committers</a></li><li><a href="https://echarts.apache.org/en/maillist.html">Mailing List</a></li><li><a href="https://echarts.apache.org/en/contributing.html">How to Contribute</a></li><li><a href="https://echarts.apache.org/en/dependencies.html">Dependencies</a></li><li><a href="https://echarts.apache.org/en/coding-standard.html">Code Standard</a></li><li><a href="https://github.com/apache/echarts" target="_blank">Source Code (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/security.html">Security</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">License<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">Events<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("zh")'>中文</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/en/get-started" class="nav-link"><span class="title">Get Started</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Basics</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/basics/download" class="nav-link"><span class="title">Download ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/import" class="nav-link"><span class="title">Import ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/basics/help" class="nav-link"><span class="title">Get Help</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">What's New</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-feature" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">ECharts 6 Features</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">Migration from v5 to v6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">Migration from v4 to v5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Concepts</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/concepts/chart-size" class="nav-link"><span class="title">Chart Container</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/style" class="nav-link"><span class="title">Style</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/dataset" class="nav-link"><span class="title">Dataset</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/data-transform" class="nav-link"><span class="title">Data Transform</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/axis" class="nav-link"><span class="title">Axis</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/visual-map" class="nav-link"><span class="title">Visual Mapping</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/legend" class="nav-link"><span class="title">Legend</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/event" class="nav-link"><span class="title">Event and Action</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">How To Guides</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">Common Charts</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Bar</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">Basic Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">Stacked Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">Bar Racing</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">Waterfall</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Line</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">Basic Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">Stacked Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/area-line" class="nav-link"><span class="title">Area Chart</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">Smoothed Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/step-line" class="nav-link"><span class="title">Step Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Pie</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">Basic Pie</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">Ring Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/rose" class="nav-link"><span class="title">Rose Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Scatter</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">Basic Scatter</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Common Components</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Geo</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG Base Map</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">Cross Platform</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/cross-platform/server" class="nav-link"><span class="title">Server Side Rendering</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Data</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/data/dynamic-data" class="nav-link"><span class="title">Dynamic Data</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Label</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/label/rich-text" class="nav-link"><span class="title">Rich Text</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Animation</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/animation/transition" class="nav-link"><span class="title">Data Transition</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Interaction</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/drag" class="nav-link"><span class="title">Drag</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">Intelligent Pointer Snapping</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Best Practices</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/en/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/aria" class="nav-link"><span class="title">Aria</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/security" class="nav-link"><span class="title">Security Guidelines</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Edit Handbook</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/meta/edit-guide" class="nav-link"><span class="title">Edit Guide</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="apache-echarts-6-new-features" tabindex="-1">Apache ECharts 6 New Features</h1> <p>Twelve years ago, ECharts was first released on GitHub, planting the seed for an open-source journey.</p> <p>From a simple charting tool to a visualization powerhouse supporting millions of developers; from a single front-end charting library to a comprehensive technology system covering mobile, large screens, and server-side rendering—over these 12 years, we've witnessed ECharts' continuous technical breakthroughs and have been delighted to see developers worldwide create countless stunning data stories with ECharts.</p> <p>Now, Apache ECharts 6.0 is officially released, bringing 12 major upgrades to take your data visualization to the next level.</p> <h2 id="feature-overview" tabindex="-1">Feature Overview</h2> <p>Twelve years of accumulation, all for more ultimate visual expression. The core strength of Apache ECharts has always come from a deep understanding of developers' real challenges. When defining the direction for 6.0, the question was clear: <strong>How can we make complex data presentation both powerful and elegant?</strong></p> <p>This drove us to evolve deeply around three core dimensions:</p> <ul><li><strong>More professional visual presentation</strong>: From a meticulously crafted default theme to intelligent dark mode switching, ensuring charts have a professional look and seamlessly integrate into modern applications.</li> <li><strong>Expanding the boundaries of data expression</strong>: New chart types and features to handle complex scenarios and enable intuitive expression of deep data.</li> <li><strong>Unleashing freedom of composition</strong>: From the revolutionary matrix coordinate system to reusable custom series and optimized axis labels—empowering developers to freely compose and turn creativity into unconstrained visual works.</li></ul> <p>We have made 12 upgrades across these three core dimensions. These are not just simple feature additions, but a solid foundation for building the next generation of data-driven applications. They all point to one goal: <strong>to make ECharts powerful, reliable, and stable in the background, leaving the stage and spotlight for your creative expression.</strong></p> <p>Below, we introduce these twelve upgrades in detail:</p> <ul><li><strong>More professional visual presentation</strong> <ul><li><strong>1. Brand New Default Theme</strong>: Modern design language for professional data expression</li> <li><strong>2. Dynamic Theme Switching</strong>: Seamless runtime theme switching for multi-theme scenarios</li> <li><strong>3. Dark Mode Support</strong>: Automatically adapts to system dark/light mode for better UX</li></ul></li> <li><strong>Expanding the boundaries of data expression</strong> <ul><li><strong>4. New Chord Chart</strong>: Visualize complex relationships and distributions</li> <li><strong>5. New Beeswarm Chart</strong>: Smartly expand overlapping data points into a honeycomb layout</li> <li><strong>6. New Scatter Jittering</strong>: Add jitter to scatter plots for better readability of dense data</li> <li><strong>7. New Broken Axis</strong>: Easily present data with large magnitude differences</li> <li><strong>8. Enhanced Stock Trading Charts</strong>: Improved label capabilities and more out-of-the-box trading charts</li></ul></li> <li><strong>Unleashing freedom of composition</strong> <ul><li><strong>9. New Matrix Coordinate System</strong>: Freely combine chart types and components like a table</li> <li><strong>10. Enhanced Custom Series</strong>: Support npm publishing and dynamic registration for code reuse</li> <li><strong>11. New Custom Charts</strong>: Violin, contour, stage, bar range, and line range charts</li> <li><strong>12. Axis Label Optimization</strong>: Smarter default axis label layout to prevent overflow and overlap</li></ul></li></ul> <p>With these upgrades, Apache ECharts 6.0 helps users create more charts more flexibly and conveniently, truly achieving "unlimited possibilities in charting"!</p> <h2 id="feature-details" tabindex="-1">Feature Details</h2> <h3 id="1.-brand-new-default-theme" tabindex="-1">1. Brand New Default Theme</h3> <p>During the development of ECharts 6.0, we analyzed real user scenarios and found that over 70% of developers use the default theme. This made us realize: an excellent default theme should not only be aesthetically pleasing but also meet the general needs of various business scenarios.</p> <p>The new theme system uses design tokens to reconstruct colors, spacing, and other design elements, <strong>making different chart types and components more harmonious and consistent</strong>.</p> <img data-src="images/feature-v6/1-default-theme.png" width="600px"> <p>Although the 6.0 theme has significant changes from 5.x, we provide a <a href="https://github.com/apache/echarts/blob/master/theme/v5.js">v5.js</a> theme file for developers who want to use new features but keep the old style for quick migration.</p> <h3 id="2.-dynamic-theme-switching" tabindex="-1">2. Dynamic Theme Switching</h3> <p>In previous versions, changing a chart's theme required disposing of the chart instance and re-initializing, which could negatively impact user experience due to repeated animations. In the new version, we implemented <strong>dynamic theme switching</strong> (see documentation), significantly improving the user experience.</p> <img data-src="images/feature-v6/2-switch-themes.gif" width="600px"> <h3 id="3.-dark-mode-support" tabindex="-1">3. Dark Mode Support</h3> <p>With dynamic theme registration and switching, a typical scenario is <strong>listening to the system's dark mode and dynamically adjusting the chart's theme</strong>.</p> <img data-src="images/feature-v6/3-responsive-themes.gif" width="600px"> <p>This is crucial for business scenarios supporting dark mode, ensuring the application interface matches the system theme and greatly enhancing user experience.</p> <p>Here's how to listen for system dark mode and change the chart theme:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">const</span> darkModeMediaQuery <span class="token operator">=</span> window<span class="token punctuation">.</span><span class="token function">matchMedia</span><span class="token punctuation">(</span><span class="token string">'(prefers-color-scheme: dark)'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token keyword">function</span> <span class="token function">updateDarkMode</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+    <span class="token keyword">const</span> isDarkMode <span class="token operator">=</span> darkModeMediaQuery<span class="token punctuation">.</span>matches<span class="token punctuation">;</span>
+    <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">const</span> chart <span class="token keyword">of</span> charts<span class="token punctuation">)</span> <span class="token punctuation">{</span>
+        chart<span class="token punctuation">.</span><span class="token function">setTheme</span><span class="token punctuation">(</span>isDarkMode <span class="token operator">?</span> <span class="token string">'dark'</span> <span class="token operator">:</span> <span class="token string">'default'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+    <span class="token punctuation">}</span>
+<span class="token punctuation">}</span>
+darkModeMediaQuery<span class="token punctuation">.</span><span class="token function">addEventListener</span><span class="token punctuation">(</span><span class="token string">'change'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
+    <span class="token function">updateDarkMode</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h3 id="4.-new-chord-chart" tabindex="-1">4. New Chord Chart</h3> <p>Chord charts intuitively show flows and weights in complex relationship networks, ideal for scenarios like financial transactions and social networks. ECharts innovatively supports <strong>using gradient colors from source and target nodes for edges, creating unique visual effects</strong>. See <a href="https://echarts.apache.org/option.html#series-chord">series-chord</a>.</p> <img data-src="images/feature-v6/4-chord.gif" width="600px"> <h3 id="5.-new-beeswarm-chart" tabindex="-1">5. New Beeswarm Chart</h3> <p>Traditional scatter plots can become overcrowded on category axes. Beeswarm charts use non-numeric axis offsets to <strong>distribute points without overlap while preserving value axis accuracy</strong>. Set <a href="https://echarts.apache.org/option.html#xAxis.jitter">jitter</a> to a non-zero value and <a href="https://echarts.apache.org/option.html#xAxis.jitterOverlap">jitterOverlap</a> to <code>false</code> to enable beeswarm charts.</p> <img data-src="images/feature-v6/5-beeswarm.png" width="600px"> <h3 id="6.-new-scatter-jittering" tabindex="-1">6. New Scatter Jittering</h3> <p>Scatter jittering adds random offsets to non-data dimensions, <strong>solving the problem of overly dense data points</strong>.</p> <p>Without jittering, it's hard to see the distribution when data is dense:</p> <img data-src="images/feature-v6/6-jittering-off.png" width="600px"> <p>With jittering enabled, the densest range (6-8) becomes clear. Compared to beeswarm, scatter jittering offers better performance.</p> <img data-src="images/feature-v6/6-jittering-on.png" width="600px"> <p>Set <a href="https://echarts.apache.org/option.html#xAxis.jitter">jitter</a> to a non-zero value and <a href="https://echarts.apache.org/option.html#xAxis.jitterOverlap">jitterOverlap</a> to <code>true</code> to enable scatter jittering.</p> <h3 id="7.-new-broken-axis" tabindex="-1">7. New Broken Axis</h3> <p>Broken axis is a visualization technique for showing data with large magnitude differences. In ECharts 6.0, we innovatively implemented a <strong>torn-paper effect for broken axes</strong>, making the meaning more intuitive, and supporting click-to-expand to restore the real data ratio.</p> <img data-src="images/feature-v6/7-break-axis.gif" width="600px"> <h3 id="8.-enhanced-stock-trading-charts" tabindex="-1">8. Enhanced Stock Trading Charts</h3> <p>ECharts 6.0 deeply optimizes for financial trading scenarios, enhancing label positioning relative to coordinate systems to help developers quickly build professional-grade trading analysis tools.</p> <p>Below is a comprehensive stock trading chart using ECharts, combining <strong>time-sharing, MACD, volume, order book, and depth chart</strong>:</p> <img data-src="images/feature-v6/8-stock.png" width="600px"> <p>These examples help developers quickly meet financial trading needs. For example, displaying numbers in the four corners of the chart can be achieved with <a href="https://echarts.apache.org/option.html#series-line.markPoint.data.relativeTo">relativeTo</a>.</p> <h3 id="9.-new-matrix-coordinate-system" tabindex="-1">9. New Matrix Coordinate System</h3> <p>The above example also uses the new matrix coordinate system in ECharts 6.0, which is very powerful. It can be used for covariance matrix charts:</p> <iframe width="600" height="700" src=""></iframe> <p>Periodic table:</p> <iframe width="100%" height="600" src=""></iframe> <p>As a layout, it also allows developers to combine various chart types and components to create flexible and complex visualizations:</p> <iframe width="100%" height="600" src=""></iframe> <h3 id="10.-enhanced-custom-series" tabindex="-1">10. Enhanced Custom Series</h3> <p>Previously, using ECharts custom series meant developers had to write complex <code>renderItem</code> logic from scratch, and code reuse was limited to copy-pasting. Now, ECharts 6.0 brings a standardized, reusable solution:</p> <ul><li><strong>Custom series registration</strong>: Like theme registration, custom series can be dynamically registered and used as easily as built-in series. See <a href="https://echarts.apache.org/option.html#series-custom.renderItem">series-custom.renderItem</a></li> <li><strong>Official custom series project</strong>: The official project at <a href="https://github.com/apache/echarts-custom-series">https://github.com/apache/echarts-custom-series</a> provides multiple custom series, available via npm after the official release</li> <li><strong>Publish your own custom series</strong>: Submit a pull request to the above project or publish to your own repo for code reuse</li></ul> <h3 id="11.-new-custom-charts" tabindex="-1">11. New Custom Charts</h3> <p>This release provides 6 practical custom charts in the custom series project. See <a href="https://github.com/apache/echarts-custom-series">echarts-custom-series</a> for usage and documentation. Including <strong>violin chart</strong>:</p> <img data-src="images/feature-v6/11-violin.png" width="600px"> <p><strong>Contour chart</strong>:</p> <img data-src="images/feature-v6/11-contour.png" width="600px"> <p><strong>Sleep stage chart</strong>:</p> <img data-src="images/feature-v6/11-stage.png" width="600px"> <p><strong>Segmented doughnut chart</strong>:</p> <img data-src="images/feature-v6/11-segmentedDoughnut.png" width="600px"> <p><strong>Bar range chart</strong>:</p> <img data-src="images/feature-v6/11-barRange.png" width="600px"> <p><strong>Line range chart</strong>:</p> <img data-src="images/feature-v6/11-lineRange.png" width="600px"> <p>Unleash your creativity and join us in creating more custom charts!</p> <h3 id="12.-axis-label-optimization" tabindex="-1">12. Axis Label Optimization</h3> <p>In previous versions, axis labels and names in rectangular coordinate systems could easily overflow or overlap when data was long. Users couldn't always predict space needs as data changed. In this version, we've optimized the default strategies to prevent overflow and overlap.</p> <h2 id="upgrade-guide" tabindex="-1">Upgrade Guide</h2> <p>See the full <a href="https://echarts.apache.org/changelog.html#v6-0-0">changelog</a> and <a href="en/basics/release-note/v6-upgrade-guide">upgrade guide</a>.</p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">Contributors</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/en/basics/release-note/v6-feature.md" title="Edit this Document" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">Edit this page on GitHub</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/plainheart" target="_blank" class="post-contributor has-avatar"><img alt="plainheart" src="https://echarts.apache.org/en/images/people/plainheart.jpg" loading="lazy" decoding="async" fetchpriority="low"> <span>plainheart</span></a><a href="https://github.com/Ovilia" target="_blank" class="post-contributor has-avatar"><img alt="Ovilia" src="https://echarts.apache.org/en/images/people/羡辙.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>Ovilia</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(e,t,i,r,a,n,s,o,d,l,h,c,p,g,m,u,f,v,b,w,y,x,C,k,S,G,E,N,A,B,T,j,I,R,V,z,P,F,Z,D,W,L,M,X,O,U,q,J,Y,K,H,_,Q,$,ee,te,ie,re,ae,ne,se,oe,de){return{layout:"default",data:[{html:'<h1 id="apache-echarts-6-new-features" tabindex="-1">Apache ECharts 6 New Features</h1>\n<p>Twelve years ago, ECharts was first released on GitHub, planting the seed for an open-source journey.</p>\n<p>From a simple charting tool to a visualization powerhouse supporting millions of developers; from a single front-end charting library to a comprehensive technology system covering mobile, large screens, and server-side rendering—over these 12 years, we\'ve witnessed ECharts\' continuous technical breakthroughs and have been delighted to see developers worldwide create countless stunning data stories with ECharts.</p>\n<p>Now, Apache ECharts 6.0 is officially released, bringing 12 major upgrades to take your data visualization to the next level.</p>\n<h2 id="feature-overview" tabindex="-1">Feature Overview</h2>\n<p>Twelve years of accumulation, all for more ultimate visual expression. The core strength of Apache ECharts has always come from a deep understanding of developers\' real challenges. When defining the direction for 6.0, the question was clear: <strong>How can we make complex data presentation both powerful and elegant?</strong></p>\n<p>This drove us to evolve deeply around three core dimensions:</p>\n<ul>\n<li><strong>More professional visual presentation</strong>: From a meticulously crafted default theme to intelligent dark mode switching, ensuring charts have a professional look and seamlessly integrate into modern applications.</li>\n<li><strong>Expanding the boundaries of data expression</strong>: New chart types and features to handle complex scenarios and enable intuitive expression of deep data.</li>\n<li><strong>Unleashing freedom of composition</strong>: From the revolutionary matrix coordinate system to reusable custom series and optimized axis labels—empowering developers to freely compose and turn creativity into unconstrained visual works.</li>\n</ul>\n<p>We have made 12 upgrades across these three core dimensions. These are not just simple feature additions, but a solid foundation for building the next generation of data-driven applications. They all point to one goal: <strong>to make ECharts powerful, reliable, and stable in the background, leaving the stage and spotlight for your creative expression.</strong></p>\n<p>Below, we introduce these twelve upgrades in detail:</p>\n<ul>\n<li><strong>More professional visual presentation</strong>\n<ul>\n<li><strong>1. Brand New Default Theme</strong>: Modern design language for professional data expression</li>\n<li><strong>2. Dynamic Theme Switching</strong>: Seamless runtime theme switching for multi-theme scenarios</li>\n<li><strong>3. Dark Mode Support</strong>: Automatically adapts to system dark/light mode for better UX</li>\n</ul>\n</li>\n<li><strong>Expanding the boundaries of data expression</strong>\n<ul>\n<li><strong>4. New Chord Chart</strong>: Visualize complex relationships and distributions</li>\n<li><strong>5. New Beeswarm Chart</strong>: Smartly expand overlapping data points into a honeycomb layout</li>\n<li><strong>6. New Scatter Jittering</strong>: Add jitter to scatter plots for better readability of dense data</li>\n<li><strong>7. New Broken Axis</strong>: Easily present data with large magnitude differences</li>\n<li><strong>8. Enhanced Stock Trading Charts</strong>: Improved label capabilities and more out-of-the-box trading charts</li>\n</ul>\n</li>\n<li><strong>Unleashing freedom of composition</strong>\n<ul>\n<li><strong>9. New Matrix Coordinate System</strong>: Freely combine chart types and components like a table</li>\n<li><strong>10. Enhanced Custom Series</strong>: Support npm publishing and dynamic registration for code reuse</li>\n<li><strong>11. New Custom Charts</strong>: Violin, contour, stage, bar range, and line range charts</li>\n<li><strong>12. Axis Label Optimization</strong>: Smarter default axis label layout to prevent overflow and overlap</li>\n</ul>\n</li>\n</ul>\n<p>With these upgrades, Apache ECharts 6.0 helps users create more charts more flexibly and conveniently, truly achieving &quot;unlimited possibilities in charting&quot;!</p>\n<h2 id="feature-details" tabindex="-1">Feature Details</h2>\n<h3 id="1.-brand-new-default-theme" tabindex="-1">1. Brand New Default Theme</h3>\n<p>During the development of ECharts 6.0, we analyzed real user scenarios and found that over 70% of developers use the default theme. This made us realize: an excellent default theme should not only be aesthetically pleasing but also meet the general needs of various business scenarios.</p>\n<p>The new theme system uses design tokens to reconstruct colors, spacing, and other design elements, <strong>making different chart types and components more harmonious and consistent</strong>.</p>\n<img data-src="images/feature-v6/1-default-theme.png" width="600px" />\n<p>Although the 6.0 theme has significant changes from 5.x, we provide a <a href="https://github.com/apache/echarts/blob/master/theme/v5.js">v5.js</a> theme file for developers who want to use new features but keep the old style for quick migration.</p>\n<h3 id="2.-dynamic-theme-switching" tabindex="-1">2. Dynamic Theme Switching</h3>\n<p>In previous versions, changing a chart\'s theme required disposing of the chart instance and re-initializing, which could negatively impact user experience due to repeated animations. In the new version, we implemented <strong>dynamic theme switching</strong> (see documentation), significantly improving the user experience.</p>\n<img data-src="images/feature-v6/2-switch-themes.gif" width="600px" />\n<h3 id="3.-dark-mode-support" tabindex="-1">3. Dark Mode Support</h3>\n<p>With dynamic theme registration and switching, a typical scenario is <strong>listening to the system\'s dark mode and dynamically adjusting the chart\'s theme</strong>.</p>\n<img data-src="images/feature-v6/3-responsive-themes.gif" width="600px" />\n<p>This is crucial for business scenarios supporting dark mode, ensuring the application interface matches the system theme and greatly enhancing user experience.</p>\n<p>Here\'s how to listen for system dark mode and change the chart theme:</p>\n<md-code-block lang="js" code="\'Y29uc3QgZGFya01vZGVNZWRpYVF1ZXJ5ID0gd2luZG93Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyayknKTsKZnVuY3Rpb24gdXBkYXRlRGFya01vZGUoKSB7CiAgICBjb25zdCBpc0RhcmtNb2RlID0gZGFya01vZGVNZWRpYVF1ZXJ5Lm1hdGNoZXM7CiAgICBmb3IgKGNvbnN0IGNoYXJ0IG9mIGNoYXJ0cykgewogICAgICAgIGNoYXJ0LnNldFRoZW1lKGlzRGFya01vZGUgPyAnZGFyaycgOiAnZGVmYXVsdCcpOwogICAgfQp9CmRhcmtNb2RlTWVkaWFRdWVyeS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAoKSA9PiB7CiAgICB1cGRhdGVEYXJrTW9kZSgpOwp9KTs\'" line-highlights="\'\'" />\n<h3 id="4.-new-chord-chart" tabindex="-1">4. New Chord Chart</h3>\n<p>Chord charts intuitively show flows and weights in complex relationship networks, ideal for scenarios like financial transactions and social networks. ECharts innovatively supports <strong>using gradient colors from source and target nodes for edges, creating unique visual effects</strong>. See <a href="https://echarts.apache.org/option.html#series-chord">series-chord</a>.</p>\n<img data-src="images/feature-v6/4-chord.gif" width="600px" />\n<h3 id="5.-new-beeswarm-chart" tabindex="-1">5. New Beeswarm Chart</h3>\n<p>Traditional scatter plots can become overcrowded on category axes. Beeswarm charts use non-numeric axis offsets to <strong>distribute points without overlap while preserving value axis accuracy</strong>. Set <a href="https://echarts.apache.org/option.html#xAxis.jitter">jitter</a> to a non-zero value and <a href="https://echarts.apache.org/option.html#xAxis.jitterOverlap">jitterOverlap</a> to <code>false</code> to enable beeswarm charts.</p>\n<img data-src="images/feature-v6/5-beeswarm.png" width="600px" />\n<h3 id="6.-new-scatter-jittering" tabindex="-1">6. New Scatter Jittering</h3>\n<p>Scatter jittering adds random offsets to non-data dimensions, <strong>solving the problem of overly dense data points</strong>.</p>\n<p>Without jittering, it\'s hard to see the distribution when data is dense:</p>\n<img data-src="images/feature-v6/6-jittering-off.png" width="600px" />\n<p>With jittering enabled, the densest range (6-8) becomes clear. Compared to beeswarm, scatter jittering offers better performance.</p>\n<img data-src="images/feature-v6/6-jittering-on.png" width="600px" />\n<p>Set <a href="https://echarts.apache.org/option.html#xAxis.jitter">jitter</a> to a non-zero value and <a href="https://echarts.apache.org/option.html#xAxis.jitterOverlap">jitterOverlap</a> to <code>true</code> to enable scatter jittering.</p>\n<h3 id="7.-new-broken-axis" tabindex="-1">7. New Broken Axis</h3>\n<p>Broken axis is a visualization technique for showing data with large magnitude differences. In ECharts 6.0, we innovatively implemented a <strong>torn-paper effect for broken axes</strong>, making the meaning more intuitive, and supporting click-to-expand to restore the real data ratio.</p>\n<img data-src="images/feature-v6/7-break-axis.gif" width="600px" />\n<h3 id="8.-enhanced-stock-trading-charts" tabindex="-1">8. Enhanced Stock Trading Charts</h3>\n<p>ECharts 6.0 deeply optimizes for financial trading scenarios, enhancing label positioning relative to coordinate systems to help developers quickly build professional-grade trading analysis tools.</p>\n<p>Below is a comprehensive stock trading chart using ECharts, combining <strong>time-sharing, MACD, volume, order book, and depth chart</strong>:</p>\n<img data-src="images/feature-v6/8-stock.png" width="600px" />\n<p>These examples help developers quickly meet financial trading needs. For example, displaying numbers in the four corners of the chart can be achieved with <a href="https://echarts.apache.org/option.html#series-line.markPoint.data.relativeTo">relativeTo</a>.</p>\n<h3 id="9.-new-matrix-coordinate-system" tabindex="-1">9. New Matrix Coordinate System</h3>\n<p>The above example also uses the new matrix coordinate system in ECharts 6.0, which is very powerful. It can be used for covariance matrix charts:</p>\n<md-example src="matrix-covariance" width="600" height="700" />\n<p>Periodic table:</p>\n<md-example src="matrix-periodic-table" width="100%" height="600" />\n<p>As a layout, it also allows developers to combine various chart types and components to create flexible and complex visualizations:</p>\n<md-example src="matrix-grid-layout" width="100%" height="600" />\n<h3 id="10.-enhanced-custom-series" tabindex="-1">10. Enhanced Custom Series</h3>\n<p>Previously, using ECharts custom series meant developers had to write complex <code>renderItem</code> logic from scratch, and code reuse was limited to copy-pasting. Now, ECharts 6.0 brings a standardized, reusable solution:</p>\n<ul>\n<li><strong>Custom series registration</strong>: Like theme registration, custom series can be dynamically registered and used as easily as built-in series. See <a href="https://echarts.apache.org/option.html#series-custom.renderItem">series-custom.renderItem</a></li>\n<li><strong>Official custom series project</strong>: The official project at <a href="https://github.com/apache/echarts-custom-series">https://github.com/apache/echarts-custom-series</a> provides multiple custom series, available via npm after the official release</li>\n<li><strong>Publish your own custom series</strong>: Submit a pull request to the above project or publish to your own repo for code reuse</li>\n</ul>\n<h3 id="11.-new-custom-charts" tabindex="-1">11. New Custom Charts</h3>\n<p>This release provides 6 practical custom charts in the custom series project. See <a href="https://github.com/apache/echarts-custom-series">echarts-custom-series</a> for usage and documentation. Including <strong>violin chart</strong>:</p>\n<img data-src="images/feature-v6/11-violin.png" width="600px" />\n<p><strong>Contour chart</strong>:</p>\n<img data-src="images/feature-v6/11-contour.png" width="600px" />\n<p><strong>Sleep stage chart</strong>:</p>\n<img data-src="images/feature-v6/11-stage.png" width="600px" />\n<p><strong>Segmented doughnut chart</strong>:</p>\n<img data-src="images/feature-v6/11-segmentedDoughnut.png" width="600px" />\n<p><strong>Bar range chart</strong>:</p>\n<img data-src="images/feature-v6/11-barRange.png" width="600px" />\n<p><strong>Line range chart</strong>:</p>\n<img data-src="images/feature-v6/11-lineRange.png" width="600px" />\n<p>Unleash your creativity and join us in creating more custom charts!</p>\n<h3 id="12.-axis-label-optimization" tabindex="-1">12. Axis Label Optimization</h3>\n<p>In previous versions, axis labels and names in rectangular coordinate systems could easily overflow or overlap when data was long. Users couldn\'t always predict space needs as data changed. In this version, we\'ve optimized the default strategies to prevent overflow and overlap.</p>\n<h2 id="upgrade-guide" tabindex="-1">Upgrade Guide</h2>\n<p>See the full <a href="https://echarts.apache.org/changelog.html#v6-0-0">changelog</a> and <a href="en/basics/release-note/v6-upgrade-guide">upgrade guide</a>.</p>\n',postPath:"en/basics/release-note/v6-feature",title:"ECharts 6 Features - What's New - Basics"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:r},{title:"入门篇",dir:a,children:[{title:"获取 ECharts",dir:n},{title:"在项目中引入 ECharts",dir:s},{title:"资源列表",dir:o,draft:e},{title:"寻求帮助",dir:d},{title:"版本特性",dir:l,children:[{title:"ECharts 6 特性介绍",dir:h},{title:"v5 升级 v6 指南",dir:c},{title:"5.0",dir:p},{title:"v4 升级 v5 指南",dir:g},{title:5.2,dir:m},{title:5.3,dir:u},{title:5.4,dir:f},{title:5.5,dir:v},{title:5.6,dir:b}]}]},{title:"概念篇",dir:w,children:[{title:"图表容器及大小",dir:y},{title:"配置项",dir:x,draft:e},{title:"系列",dir:C,draft:e},{title:"样式",dir:k},{title:"数据集",dir:S},{title:"数据转换",dir:G},{title:"坐标系",dir:E,draft:e},{title:"坐标轴",dir:N},{title:"视觉映射",dir:i},{title:"图例",dir:A},{title:"事件与行为",dir:B}]},{title:"应用篇",dir:T,children:[{title:"常用图表类型",dir:j,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:I},{title:"堆叠柱状图",dir:R},{title:"动态排序柱状图",dir:V},{title:"极坐标系柱状图",dir:z,draft:e},{title:"阶梯瀑布图",dir:P},{title:"视觉映射的柱状图",dir:i,draft:e}]},{title:"折线图",dir:F,children:[{title:"基础折线图",dir:Z},{title:"堆叠折线图",dir:D},{title:"区域面积图",dir:W},{title:"平滑曲线图",dir:L},{title:"阶梯线图",dir:M}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:X},{title:"圆环图",dir:O},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:U,children:[{title:"基础散点图",dir:q}]}]},{title:"常用组件",dir:J,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:Y}]}]},{title:"移动端优化",dir:t,draft:e},{title:"跨平台方案",dir:K,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:H},{title:"数据下钻",dir:_,draft:e}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:Q}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:ee}]},{title:"交互",dir:te,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:ie,draft:e},{title:"智能指针吸附",dir:re}]}]},{title:"最佳实践",dir:ae,children:[{title:"移动端优化",dir:t,draft:e},{title:ne,dir:se},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:oe}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:de}]}],en:[{title:"Get Started",dir:r},{title:"Basics",dir:a,children:[{title:"Download ECharts",dir:n},{title:"Import ECharts",dir:s},{title:"Resources",dir:o,draft:e},{title:"Get Help",dir:d},{title:"What's New",dir:l,children:[{title:"ECharts 6 Features",dir:h},{title:"Migration from v5 to v6",dir:c},{title:"5.0",dir:p},{title:"Migration from v4 to v5",dir:g},{title:5.2,dir:m},{title:5.3,dir:u},{title:5.4,dir:f},{title:5.5,dir:v},{title:5.6,dir:b}]}]},{title:"Concepts",dir:w,children:[{title:"Chart Container",dir:y},{title:"Chart Option",dir:x,draft:e},{title:"Series",dir:C,draft:e},{title:"Style",dir:k},{title:"Dataset",dir:S},{title:"Data Transform",dir:G},{title:"Coordinate",dir:E,draft:e},{title:"Axis",dir:N},{title:"Visual Mapping",dir:i},{title:"Legend",dir:A},{title:"Event and Action",dir:B}]},{title:"How To Guides",dir:T,children:[{title:"Common Charts",dir:j,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:I},{title:"Stacked Bar",dir:R},{title:"Bar Racing",dir:V},{title:"Bar Polar",dir:z,draft:e},{title:"Waterfall",dir:P}]},{title:"Line",dir:F,children:[{title:"Basic Line",dir:Z},{title:"Stacked Line",dir:D},{title:"Area Chart",dir:W},{title:"Smoothed Line",dir:L},{title:"Step Line",dir:M}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:X},{title:"Ring Style",dir:O},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:U,children:[{title:"Basic Scatter",dir:q}]}]},{title:"Common Components",dir:J,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:Y}]}]},{title:"Mobile",dir:t,draft:e},{title:"Cross Platform",dir:K,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:H},{title:"Drilldown",dir:_,draft:e}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:Q}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:ee}]},{title:"Interaction",dir:te,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:ie,draft:e},{title:"Intelligent Pointer Snapping",dir:re}]}]},{title:"Best Practices",dir:ae,children:[{title:"Mobile Optimization",dir:t,draft:e},{title:ne,dir:se},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:oe}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:de}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:e,routePath:"/en/basics/release-note/v6-feature",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/en/basics/release-note/v6-upgrade-guide/index.html b/docs/en/basics/release-note/v6-upgrade-guide/index.html
new file mode 100644
index 0000000..3e57824
--- /dev/null
+++ b/docs/en/basics/release-note/v6-upgrade-guide/index.html
@@ -0,0 +1,42 @@
+<!doctype html>
+<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Migration from v5 to v6 - What's New - Basics - Handbook - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="en"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/en/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/en/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/en/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/en/index.html" class="navbar-brand"><img src="https://echarts.apache.org/en/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/en/index.html">Home</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Docs<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/feature.html">Features</a></li><li><a href="https://echarts.apache.org/handbook/en/get-started/">Handbook</a></li><li><a href="https://echarts.apache.org/en/api.html">API</a></li><li><a href="https://echarts.apache.org/en/option.html">Chart Configuration</a></li><li><a href="https://echarts.apache.org/en/changelog.html">Changelog</a></li><li><a href="https://echarts.apache.org/en/faq.html">FAQ</a></li><li><a href="https://echarts.apache.org/handbook/en/basics/release-note/v6-upgrade-guide">V6 Upgrade Guide</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Download<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/download.html">Download</a></li><li><a href="https://echarts.apache.org/en/download-theme.html">Download Themes</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">Download Custom Series<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/download-extension.html">Download Extensions</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/en/index.html">Examples</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Resources<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/spreadsheet.html">Spread Sheet Tool</a></li><li><a href="https://echarts.apache.org/en/theme-builder.html">Theme Builder</a></li><li><a href="https://echarts.apache.org/en/cheat-sheet.html">Cheat Sheet</a></li><li><a href="https://echarts.apache.org/en/resources.html">More Resources</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/events.html">Events</a></li><li><a href="https://echarts.apache.org/en/committers.html">Committers</a></li><li><a href="https://echarts.apache.org/en/maillist.html">Mailing List</a></li><li><a href="https://echarts.apache.org/en/contributing.html">How to Contribute</a></li><li><a href="https://echarts.apache.org/en/dependencies.html">Dependencies</a></li><li><a href="https://echarts.apache.org/en/coding-standard.html">Code Standard</a></li><li><a href="https://github.com/apache/echarts" target="_blank">Source Code (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/security.html">Security</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">License<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">Events<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("zh")'>中文</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/en/get-started" class="nav-link"><span class="title">Get Started</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Basics</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/basics/download" class="nav-link"><span class="title">Download ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/import" class="nav-link"><span class="title">Import ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/basics/help" class="nav-link"><span class="title">Get Help</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">What's New</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 Features</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-upgrade-guide" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">Migration from v5 to v6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">Migration from v4 to v5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Concepts</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/concepts/chart-size" class="nav-link"><span class="title">Chart Container</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/style" class="nav-link"><span class="title">Style</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/dataset" class="nav-link"><span class="title">Dataset</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/data-transform" class="nav-link"><span class="title">Data Transform</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/axis" class="nav-link"><span class="title">Axis</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/visual-map" class="nav-link"><span class="title">Visual Mapping</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/legend" class="nav-link"><span class="title">Legend</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/event" class="nav-link"><span class="title">Event and Action</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">How To Guides</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">Common Charts</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Bar</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">Basic Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">Stacked Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">Bar Racing</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">Waterfall</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Line</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">Basic Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">Stacked Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/area-line" class="nav-link"><span class="title">Area Chart</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">Smoothed Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/step-line" class="nav-link"><span class="title">Step Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Pie</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">Basic Pie</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">Ring Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/rose" class="nav-link"><span class="title">Rose Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Scatter</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">Basic Scatter</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Common Components</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Geo</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG Base Map</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">Cross Platform</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/cross-platform/server" class="nav-link"><span class="title">Server Side Rendering</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Data</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/data/dynamic-data" class="nav-link"><span class="title">Dynamic Data</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Label</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/label/rich-text" class="nav-link"><span class="title">Rich Text</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Animation</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/animation/transition" class="nav-link"><span class="title">Data Transition</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Interaction</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/drag" class="nav-link"><span class="title">Drag</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">Intelligent Pointer Snapping</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Best Practices</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/en/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/aria" class="nav-link"><span class="title">Aria</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/security" class="nav-link"><span class="title">Security Guidelines</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Edit Handbook</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/meta/edit-guide" class="nav-link"><span class="title">Edit Guide</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="apache-echarts-6-upgrade-guide" tabindex="-1">Apache ECharts 6 Upgrade Guide</h1> <p>This guide is for users who wish to upgrade from echarts 5.x (hereinafter referred to as <code>v5</code>) to echarts 6.x (hereinafter referred to as <code>v6</code>). You can learn about the new features brought by <code>v6</code> in <a href="en/basics/release-note/v6-feature">ECharts 6 New Features</a>. In most cases, developers do not need to do anything extra for this upgrade, as echarts has always tried to keep the API stable and backward compatible. However, <code>v6</code> does introduce some breaking changes that require special attention. In addition, in some cases, <code>v6</code> provides better APIs to replace previous ones, and these replaced APIs are no longer recommended (of course, we have tried to maintain compatibility for these changes). We will explain these changes in detail in this document.</p> <h2 id="how-to-upgrade" tabindex="-1">How to Upgrade</h2> <p>You can download the latest source code and builds from the <a href="https://echarts.apache.org/download.html">official download page</a>. If you use npm, upgrade with:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-text line-numbers"><code>npm install echarts@6</code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="breaking-changes" tabindex="-1">Breaking Changes</h2> <h3 id="default-theme" tabindex="-1">Default Theme</h3> <p>First, the default theme has changed. <code>v6</code> has made many optimizations in color schemes and theme design for better visual effects. If you want to keep the old version's colors, you can use the <a href="https://github.com/apache/echarts/blob/master/theme/v5.js">echarts/theme/v5.js</a> theme file and initialize the chart as follows:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">import</span> <span class="token string">'echarts/theme/v5'</span><span class="token punctuation">;</span>
+<span class="token keyword">const</span> chart <span class="token operator">=</span> echarts<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span>document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span><span class="token string">'container'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token string">'v5'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>Note that the new styles in <code>v6</code> not only change the theme colors, but also optimize and adjust the default positions and sizes of some components (for example, the default position of the legend is now at the bottom of the canvas). Using <code>echarts/theme/v5.js</code> can restore the previous default positions and sizes of components.</p> <p>If you don't mind other changes but only want to restore the default color palette to that of v5, you can create a theme that only defines the v5 default colors:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">const</span> colorPaletteV5 <span class="token operator">=</span> <span class="token punctuation">[</span>
+    <span class="token string">'#5470c6'</span><span class="token punctuation">,</span>
+    <span class="token string">'#91cc75'</span><span class="token punctuation">,</span>
+    <span class="token string">'#fac858'</span><span class="token punctuation">,</span>
+    <span class="token string">'#ee6666'</span><span class="token punctuation">,</span>
+    <span class="token string">'#73c0de'</span><span class="token punctuation">,</span>
+    <span class="token string">'#3ba272'</span><span class="token punctuation">,</span>
+    <span class="token string">'#fc8452'</span><span class="token punctuation">,</span>
+    <span class="token string">'#9a60b4'</span><span class="token punctuation">,</span>
+    <span class="token string">'#ea7ccc'</span>
+<span class="token punctuation">]</span><span class="token punctuation">;</span>
+echarts<span class="token punctuation">.</span><span class="token function">registerTheme</span><span class="token punctuation">(</span><span class="token string">'myTheme'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token literal-property property">color</span><span class="token operator">:</span> colorPaletteV5 <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token keyword">const</span> chart <span class="token operator">=</span> echarts<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span>document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span><span class="token string">'container'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token string">'myTheme'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>In addition, the <code>echarts/src/theme/light.ts</code> file from v5 has been moved to <code>echarts/theme/rainbow.js</code>.</p> <h3 id="label-position" tabindex="-1">Label Position</h3> <p>In Cartesian coordinate systems (<code>grid</code> component), if axis names (<code>axisName</code>) or labels (<code>axisLabel</code>) previously overflowed the canvas or overlapped, the position of the axes may shift slightly after upgrading, because overflow prevention and axis name/label overlap prevention are now enabled by default. In most cases, these changes are barely noticeable. But if there are unreasonable changes, you can disable the overflow prevention by setting <a href="https://echarts.apache.org/option.html#grid.outerBoundsMode">grid.outerBoundsMode: 'none'</a>, or disable the overlap prevention by setting <a href="https://echarts.apache.org/option.html#xAxis.nameMoveOverlap">xAxis/yAxis.nameMoveOverlap: false</a>.</p> <h3 id="rich-text" tabindex="-1">Rich Text</h3> <p>In v6, the following styles of <a href="https://echarts.apache.org/option.html#series-scatter.label.rich">rich text labels (label.rich / textStyle.rich)</a>: <code>fontStyle</code>, <code>fontWeight</code>, <code>fontSize</code>, <code>fontFamily</code>, <code>textShadowColor</code>, <code>textShadowBlur</code>, <code>textShadowOffsetX</code>, and <code>textShadowOffsetY</code> will inherit from the same-named styles in <a href="https://echarts.apache.org/option.html#series-scatter.label">plain labels (label / textStyle)</a>. To restore the old behavior, you can set <code>richInheritPlainLabel: false</code> at the root level of the ECharts option or in the label/textStyle option.</p> <p>For example:
+</p><div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">richInheritPlainLabel</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span> <span class="token comment">// Usually set here.</span>
+    <span class="token literal-property property">xxx1</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token comment">// Or set here to only control this label.</span>
+        <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+            <span class="token literal-property property">richInheritPlainLabel</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">rich</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token comment">/* ... */</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">xxx2</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">textStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+            <span class="token literal-property property">richInheritPlainLabel</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">rich</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token comment">/* ... */</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+<span class="token punctuation">}</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div><p></p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">Contributors</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/en/basics/release-note/v6-upgrade-guide.md" title="Edit this Document" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">Edit this page on GitHub</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/Ovilia" target="_blank" class="post-contributor has-avatar"><img alt="Ovilia" src="https://echarts.apache.org/en/images/people/羡辙.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>Ovilia</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(e,t,i,r,a,d,l,o,n,s,h,c,g,p,b,f,m,u,C,I,v,A,y,w,x,B,S,W,Y,N,G,R,Z,k,L,P,z,j,V,E,T,J,M,D,H,X,K,Q,O,U,F,_,$,q,ee,te,ie,re,ae,de,le,oe,ne){return{layout:"default",data:[{html:'<h1 id="apache-echarts-6-upgrade-guide" tabindex="-1">Apache ECharts 6 Upgrade Guide</h1>\n<p>This guide is for users who wish to upgrade from echarts 5.x (hereinafter referred to as <code>v5</code>) to echarts 6.x (hereinafter referred to as <code>v6</code>). You can learn about the new features brought by <code>v6</code> in <a href="en/basics/release-note/v6-feature">ECharts 6 New Features</a>. In most cases, developers do not need to do anything extra for this upgrade, as echarts has always tried to keep the API stable and backward compatible. However, <code>v6</code> does introduce some breaking changes that require special attention. In addition, in some cases, <code>v6</code> provides better APIs to replace previous ones, and these replaced APIs are no longer recommended (of course, we have tried to maintain compatibility for these changes). We will explain these changes in detail in this document.</p>\n<h2 id="how-to-upgrade" tabindex="-1">How to Upgrade</h2>\n<p>You can download the latest source code and builds from the <a href="https://echarts.apache.org/download.html">official download page</a>. If you use npm, upgrade with:</p>\n<md-code-block lang="sh" code="\'bnBtIGluc3RhbGwgZWNoYXJ0c0A2\'" line-highlights="\'\'" />\n<h2 id="breaking-changes" tabindex="-1">Breaking Changes</h2>\n<h3 id="default-theme" tabindex="-1">Default Theme</h3>\n<p>First, the default theme has changed. <code>v6</code> has made many optimizations in color schemes and theme design for better visual effects. If you want to keep the old version\'s colors, you can use the <a href="https://github.com/apache/echarts/blob/master/theme/v5.js">echarts/theme/v5.js</a> theme file and initialize the chart as follows:</p>\n<md-code-block lang="js" code="\'aW1wb3J0ICdlY2hhcnRzL3RoZW1lL3Y1JzsKY29uc3QgY2hhcnQgPSBlY2hhcnRzLmluaXQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpLCAndjUnKTs\'" line-highlights="\'\'" />\n<p>Note that the new styles in <code>v6</code> not only change the theme colors, but also optimize and adjust the default positions and sizes of some components (for example, the default position of the legend is now at the bottom of the canvas). Using <code>echarts/theme/v5.js</code> can restore the previous default positions and sizes of components.</p>\n<p>If you don\'t mind other changes but only want to restore the default color palette to that of v5, you can create a theme that only defines the v5 default colors:</p>\n<md-code-block lang="js" code="\'Y29uc3QgY29sb3JQYWxldHRlVjUgPSBbCiAgICAnIzU0NzBjNicsCiAgICAnIzkxY2M3NScsCiAgICAnI2ZhYzg1OCcsCiAgICAnI2VlNjY2NicsCiAgICAnIzczYzBkZScsCiAgICAnIzNiYTI3MicsCiAgICAnI2ZjODQ1MicsCiAgICAnIzlhNjBiNCcsCiAgICAnI2VhN2NjYycKXTsKZWNoYXJ0cy5yZWdpc3RlclRoZW1lKCdteVRoZW1lJywgeyBjb2xvcjogY29sb3JQYWxldHRlVjUgfSk7CmNvbnN0IGNoYXJ0ID0gZWNoYXJ0cy5pbml0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKSwgJ215VGhlbWUnKTs\'" line-highlights="\'\'" />\n<p>In addition, the <code>echarts/src/theme/light.ts</code> file from v5 has been moved to <code>echarts/theme/rainbow.js</code>.</p>\n<h3 id="label-position" tabindex="-1">Label Position</h3>\n<p>In Cartesian coordinate systems (<code>grid</code> component), if axis names (<code>axisName</code>) or labels (<code>axisLabel</code>) previously overflowed the canvas or overlapped, the position of the axes may shift slightly after upgrading, because overflow prevention and axis name/label overlap prevention are now enabled by default. In most cases, these changes are barely noticeable. But if there are unreasonable changes, you can disable the overflow prevention by setting <a href="https://echarts.apache.org/option.html#grid.outerBoundsMode">grid.outerBoundsMode: \'none\'</a>, or disable the overlap prevention by setting <a href="https://echarts.apache.org/option.html#xAxis.nameMoveOverlap">xAxis/yAxis.nameMoveOverlap: false</a>.</p>\n<h3 id="rich-text" tabindex="-1">Rich Text</h3>\n<p>In v6, the following styles of <a href="https://echarts.apache.org/option.html#series-scatter.label.rich">rich text labels (label.rich / textStyle.rich)</a>: <code>fontStyle</code>, <code>fontWeight</code>, <code>fontSize</code>, <code>fontFamily</code>, <code>textShadowColor</code>, <code>textShadowBlur</code>, <code>textShadowOffsetX</code>, and <code>textShadowOffsetY</code> will inherit from the same-named styles in <a href="https://echarts.apache.org/option.html#series-scatter.label">plain labels (label / textStyle)</a>. To restore the old behavior, you can set <code>richInheritPlainLabel: false</code> at the root level of the ECharts option or in the label/textStyle option.</p>\n<p>For example:\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogICAgcmljaEluaGVyaXRQbGFpbkxhYmVsOiBmYWxzZSwgLy8gVXN1YWxseSBzZXQgaGVyZS4KICAgIHh4eDE6IHsKICAgICAgICAvLyBPciBzZXQgaGVyZSB0byBvbmx5IGNvbnRyb2wgdGhpcyBsYWJlbC4KICAgICAgICBsYWJlbDogewogICAgICAgICAgICByaWNoSW5oZXJpdFBsYWluTGFiZWw6IGZhbHNlLAogICAgICAgICAgICByaWNoOiB7LyogLi4uICovfSwKICAgICAgICB9CiAgICB9LAogICAgeHh4MjogewogICAgICAgIHRleHRTdHlsZTogewogICAgICAgICAgICByaWNoSW5oZXJpdFBsYWluTGFiZWw6IGZhbHNlLAogICAgICAgICAgICByaWNoOiB7LyogLi4uICovfSwKICAgICAgICB9CiAgICB9Cn0\'" line-highlights="\'\'" /></p>\n',postPath:"en/basics/release-note/v6-upgrade-guide",title:"Migration from v5 to v6 - What's New - Basics"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:r},{title:"入门篇",dir:a,children:[{title:"获取 ECharts",dir:d},{title:"在项目中引入 ECharts",dir:l},{title:"资源列表",dir:o,draft:e},{title:"寻求帮助",dir:n},{title:"版本特性",dir:s,children:[{title:"ECharts 6 特性介绍",dir:h},{title:"v5 升级 v6 指南",dir:c},{title:"5.0",dir:g},{title:"v4 升级 v5 指南",dir:p},{title:5.2,dir:b},{title:5.3,dir:f},{title:5.4,dir:m},{title:5.5,dir:u},{title:5.6,dir:C}]}]},{title:"概念篇",dir:I,children:[{title:"图表容器及大小",dir:v},{title:"配置项",dir:A,draft:e},{title:"系列",dir:y,draft:e},{title:"样式",dir:w},{title:"数据集",dir:x},{title:"数据转换",dir:B},{title:"坐标系",dir:S,draft:e},{title:"坐标轴",dir:W},{title:"视觉映射",dir:i},{title:"图例",dir:Y},{title:"事件与行为",dir:N}]},{title:"应用篇",dir:G,children:[{title:"常用图表类型",dir:R,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:Z},{title:"堆叠柱状图",dir:k},{title:"动态排序柱状图",dir:L},{title:"极坐标系柱状图",dir:P,draft:e},{title:"阶梯瀑布图",dir:z},{title:"视觉映射的柱状图",dir:i,draft:e}]},{title:"折线图",dir:j,children:[{title:"基础折线图",dir:V},{title:"堆叠折线图",dir:E},{title:"区域面积图",dir:T},{title:"平滑曲线图",dir:J},{title:"阶梯线图",dir:M}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:D},{title:"圆环图",dir:H},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:X,children:[{title:"基础散点图",dir:K}]}]},{title:"常用组件",dir:Q,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:O}]}]},{title:"移动端优化",dir:t,draft:e},{title:"跨平台方案",dir:U,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:F},{title:"数据下钻",dir:_,draft:e}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:$}]},{title:"动画",dir:q,children:[{title:"数据过渡动画",dir:ee}]},{title:"交互",dir:te,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:ie,draft:e},{title:"智能指针吸附",dir:re}]}]},{title:"最佳实践",dir:ae,children:[{title:"移动端优化",dir:t,draft:e},{title:de,dir:le},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:oe}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:ne}]}],en:[{title:"Get Started",dir:r},{title:"Basics",dir:a,children:[{title:"Download ECharts",dir:d},{title:"Import ECharts",dir:l},{title:"Resources",dir:o,draft:e},{title:"Get Help",dir:n},{title:"What's New",dir:s,children:[{title:"ECharts 6 Features",dir:h},{title:"Migration from v5 to v6",dir:c},{title:"5.0",dir:g},{title:"Migration from v4 to v5",dir:p},{title:5.2,dir:b},{title:5.3,dir:f},{title:5.4,dir:m},{title:5.5,dir:u},{title:5.6,dir:C}]}]},{title:"Concepts",dir:I,children:[{title:"Chart Container",dir:v},{title:"Chart Option",dir:A,draft:e},{title:"Series",dir:y,draft:e},{title:"Style",dir:w},{title:"Dataset",dir:x},{title:"Data Transform",dir:B},{title:"Coordinate",dir:S,draft:e},{title:"Axis",dir:W},{title:"Visual Mapping",dir:i},{title:"Legend",dir:Y},{title:"Event and Action",dir:N}]},{title:"How To Guides",dir:G,children:[{title:"Common Charts",dir:R,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:Z},{title:"Stacked Bar",dir:k},{title:"Bar Racing",dir:L},{title:"Bar Polar",dir:P,draft:e},{title:"Waterfall",dir:z}]},{title:"Line",dir:j,children:[{title:"Basic Line",dir:V},{title:"Stacked Line",dir:E},{title:"Area Chart",dir:T},{title:"Smoothed Line",dir:J},{title:"Step Line",dir:M}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:D},{title:"Ring Style",dir:H},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:X,children:[{title:"Basic Scatter",dir:K}]}]},{title:"Common Components",dir:Q,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:O}]}]},{title:"Mobile",dir:t,draft:e},{title:"Cross Platform",dir:U,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:F},{title:"Drilldown",dir:_,draft:e}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:$}]},{title:"Animation",dir:q,children:[{title:"Data Transition",dir:ee}]},{title:"Interaction",dir:te,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:ie,draft:e},{title:"Intelligent Pointer Snapping",dir:re}]}]},{title:"Best Practices",dir:ae,children:[{title:"Mobile Optimization",dir:t,draft:e},{title:de,dir:le},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:oe}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:ne}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:e,routePath:"/en/basics/release-note/v6-upgrade-guide",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/en/best-practices/aria/index.html b/docs/en/best-practices/aria/index.html
new file mode 100644
index 0000000..3613606
--- /dev/null
+++ b/docs/en/best-practices/aria/index.html
@@ -0,0 +1,36 @@
+<!doctype html>
+<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Aria - Best Practices - Handbook - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="en"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/en/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/en/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/en/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/en/index.html" class="navbar-brand"><img src="https://echarts.apache.org/en/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/en/index.html">Home</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Docs<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/feature.html">Features</a></li><li><a href="https://echarts.apache.org/handbook/en/get-started/">Handbook</a></li><li><a href="https://echarts.apache.org/en/api.html">API</a></li><li><a href="https://echarts.apache.org/en/option.html">Chart Configuration</a></li><li><a href="https://echarts.apache.org/en/changelog.html">Changelog</a></li><li><a href="https://echarts.apache.org/en/faq.html">FAQ</a></li><li><a href="https://echarts.apache.org/handbook/en/basics/release-note/v6-upgrade-guide">V6 Upgrade Guide</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Download<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/download.html">Download</a></li><li><a href="https://echarts.apache.org/en/download-theme.html">Download Themes</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">Download Custom Series<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/download-extension.html">Download Extensions</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/en/index.html">Examples</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Resources<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/spreadsheet.html">Spread Sheet Tool</a></li><li><a href="https://echarts.apache.org/en/theme-builder.html">Theme Builder</a></li><li><a href="https://echarts.apache.org/en/cheat-sheet.html">Cheat Sheet</a></li><li><a href="https://echarts.apache.org/en/resources.html">More Resources</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/events.html">Events</a></li><li><a href="https://echarts.apache.org/en/committers.html">Committers</a></li><li><a href="https://echarts.apache.org/en/maillist.html">Mailing List</a></li><li><a href="https://echarts.apache.org/en/contributing.html">How to Contribute</a></li><li><a href="https://echarts.apache.org/en/dependencies.html">Dependencies</a></li><li><a href="https://echarts.apache.org/en/coding-standard.html">Code Standard</a></li><li><a href="https://github.com/apache/echarts" target="_blank">Source Code (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/security.html">Security</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">License<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">Events<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("zh")'>中文</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/en/get-started" class="nav-link"><span class="title">Get Started</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Basics</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/basics/download" class="nav-link"><span class="title">Download ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/import" class="nav-link"><span class="title">Import ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/basics/help" class="nav-link"><span class="title">Get Help</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">What's New</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 Features</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">Migration from v5 to v6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">Migration from v4 to v5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Concepts</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/concepts/chart-size" class="nav-link"><span class="title">Chart Container</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/style" class="nav-link"><span class="title">Style</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/dataset" class="nav-link"><span class="title">Dataset</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/data-transform" class="nav-link"><span class="title">Data Transform</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/axis" class="nav-link"><span class="title">Axis</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/visual-map" class="nav-link"><span class="title">Visual Mapping</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/legend" class="nav-link"><span class="title">Legend</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/event" class="nav-link"><span class="title">Event and Action</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">How To Guides</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">Common Charts</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Bar</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">Basic Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">Stacked Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">Bar Racing</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">Waterfall</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Line</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">Basic Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">Stacked Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/area-line" class="nav-link"><span class="title">Area Chart</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">Smoothed Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/step-line" class="nav-link"><span class="title">Step Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Pie</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">Basic Pie</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">Ring Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/rose" class="nav-link"><span class="title">Rose Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Scatter</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">Basic Scatter</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Common Components</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Geo</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG Base Map</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">Cross Platform</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/cross-platform/server" class="nav-link"><span class="title">Server Side Rendering</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Data</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/data/dynamic-data" class="nav-link"><span class="title">Dynamic Data</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Label</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/label/rich-text" class="nav-link"><span class="title">Rich Text</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Animation</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/animation/transition" class="nav-link"><span class="title">Data Transition</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Interaction</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/drag" class="nav-link"><span class="title">Drag</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">Intelligent Pointer Snapping</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Best Practices</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/en/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/aria" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">Aria</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/security" class="nav-link"><span class="title">Security Guidelines</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Edit Handbook</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/meta/edit-guide" class="nav-link"><span class="title">Edit Guide</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="web-accessibility" tabindex="-1">Web Accessibility</h1> <p><a href="https://www.w3.org/WAI/intro/aria">WAI-ARIA</a>, the Accessible Rich Internet Applications Suite developed by W3C, defines a way to make Web content and Web applications more accessible to people with disabilities.</p> <p>ECharts 4.0 complied with the specification, supports generating a description based on the chart configuration intelligently to allow people with visual disabilities to understand the content of the chart with the help of reading devices. Apache ECharts 5 supports decal patterns that allow chart data to be distinguished by decal patterns in addition to color providing a better experience to those with color-blindness.</p> <p>This accessibility function is turned off by default. It can be turned on by setting the value of <a href="https://echarts.apache.org/option.html#aria.show">aria.show</a> to <code>true</code>.</p> <h2 id="import-ariacomponent" tabindex="-1">Import AriaComponent</h2> <p>Starting with ECharts 5, <code>aria</code> components are no longer imported by default. You must manually import the AriaComponent before using accessibility features:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">import</span> <span class="token punctuation">{</span> AriaComponent <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'echarts/components'</span><span class="token punctuation">;</span>
+echarts<span class="token punctuation">.</span><span class="token function">use</span><span class="token punctuation">(</span>AriaComponent<span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>Or using CommonJS:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token function">require</span><span class="token punctuation">(</span><span class="token string">'echarts/lib/component/aria'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>Without this import, setting <code>aria.show: true</code> will not work properly.</p> <h2 id="chart-labels" tabindex="-1">Chart Labels</h2> <p>After importing the AriaComponent and setting <a href="https://echarts.apache.org/option.html#aria.show">aria.show</a> to <code>true</code>, ECharts will automatically generate a description of the chart according to the title, chart, data, etc. Users can also set description manually through the configuration object.</p> <p>Example configuration object:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">aria</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">true</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">title</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'Referrer of a User'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token string">'center'</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Referrer'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'pie'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">{</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">335</span><span class="token punctuation">,</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Direct Visit'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">310</span><span class="token punctuation">,</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Email Marketing'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">234</span><span class="token punctuation">,</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Union Ad'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">135</span><span class="token punctuation">,</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Video Ad'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">1548</span><span class="token punctuation">,</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Search Engine'</span> <span class="token punctuation">}</span>
+      <span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p><iframe width="100%" height="350" src=""></iframe></p> <p>Enabling aria with add an <code>aria-label</code> attribute on the Chart HTML. Screen readers use this attribute to describe the contect; this chart would have the following description:</p> <pre><code>This is a chart about "Referrer of a User" with type Pie chart named Referrer. The data is as follows: the data of Direct Visit is 335,the data of Mail Marketing is 310,the data of Union Ad is 234,the data of Video Ad is 135,the data of Search Engine is 1548.
+</code></pre> <p>The configurated language will be used to build the description.</p> <h3 id="customizing-title" tabindex="-1">Customizing Title</h3> <p>The aria-label begins with the a general description. There are two templates, <a href="https://echarts.apache.org/option.html#aria.general.withTitle">aria.general.withTitle</a> to be used when <a href="https://echarts.apache.org/option.html#title.text">title.text</a> exists and <a href="https://echarts.apache.org/option.html#aria.general.withoutTitle">aria.general.withoutTitle</a> for when <code>title.text</code> is not defined.</p> <p>In the <code>withTitle</code> template, the string <code>{title}</code> is replace with <a href="https://echarts.apache.org/option.html#title.text">title.text</a>. The template <code>This is a chart named {title}</code> with a title of <code>Referrer of a User</code> would yield <code>This is a chart named Referrer of a User</code>.</p> <h3 id="customizing-description" tabindex="-1">Customizing Description</h3> <p>The description of the series and data are added after the title. For some charts, the default item description cannot show all the information on the chart. In the following scatter chart the description generated by default includes all the items but it is not accessible due to the quantity of items making the list too long to understand.</p> <p>Under this circumstance, the description should be set with the <a href="https://echarts.apache.org/option.html#aria.description">aria.description</a> property.</p> <h3 id="in-depth-customization" tabindex="-1">In-Depth Customization</h3> <p>Every part of the aria-label can include template variables to be replaced by the actual value in the chart. More information on the process of generating a description is available in the API documentation: <a href="https://echarts.apache.org/option.html#aria.label">aria.label</a>.</p> <h2 id="decal-patterns" tabindex="-1">Decal Patterns</h2> <p>In addition, Apache ECharts 5 adds support for decal patterns as a secondary representation of color to further differentiate data. With <code>aria.enabled</code> set to <code>true</code> and <code>aria.decal.show</code> set to <code>true</code>, the default decal style will be applied.</p> <p><iframe width="100%" height="350" src=""></iframe></p> <p>If you need to customize the decal pattern, you can use <a href="https://echarts.apache.org/option.html#aria.decal.decals">aria.decal.decals</a> to configure a flexible decal pattern.</p> <p>Please refer to <a href="https://echarts.apache.org/option.html#aria.decal">ARIA option</a> for more detail.</p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">Contributors</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/en/best-practices/aria.md" title="Edit this Document" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">Edit this page on GitHub</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a><a href="https://github.com/Ovilia" target="_blank" class="post-contributor has-avatar"><img alt="Ovilia" src="https://echarts.apache.org/en/images/people/羡辙.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>Ovilia</span></a><a href="https://github.com/plainheart" target="_blank" class="post-contributor has-avatar"><img alt="plainheart" src="https://echarts.apache.org/en/images/people/plainheart.jpg" loading="lazy" decoding="async" fetchpriority="low"> <span>plainheart</span></a><a href="https://github.com/julien-deramond" target="_blank" class="post-contributor"><!----> <span>julien-deramond</span></a><a href="https://github.com/woodwoerk" target="_blank" class="post-contributor"><!----> <span>woodwoerk</span></a><a href="https://github.com/zachary-svoboda-accesso" target="_blank" class="post-contributor"><!----> <span>zachary-svoboda-accesso</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,e,i,a,r,d,l,o,n,s,c,h,p,g,m,u,b,f,I,C,w,y,A,v,W,x,B,T,E,S,V,Z,G,P,F,H,R,k,D,J,z,U,L,M,X,K,Y,N,j,O,_,Q,q,$,tt,et,it,at,rt,dt,lt,ot,nt){return{layout:"default",data:[{html:'<h1 id="web-accessibility" tabindex="-1">Web Accessibility</h1>\n<p><a href="https://www.w3.org/WAI/intro/aria">WAI-ARIA</a>, the Accessible Rich Internet Applications Suite developed by W3C, defines a way to make Web content and Web applications more accessible to people with disabilities.</p>\n<p>ECharts 4.0 complied with the specification, supports generating a description based on the chart configuration intelligently to allow people with visual disabilities to understand the content of the chart with the help of reading devices. Apache ECharts 5 supports decal patterns that allow chart data to be distinguished by decal patterns in addition to color providing a better experience to those with color-blindness.</p>\n<p>This accessibility function is turned off by default. It can be turned on by setting the value of <a href="https://echarts.apache.org/option.html#aria.show">aria.show</a> to <code>true</code>.</p>\n<h2 id="import-ariacomponent" tabindex="-1">Import AriaComponent</h2>\n<p>Starting with ECharts 5, <code>aria</code> components are no longer imported by default. You must manually import the AriaComponent before using accessibility features:</p>\n<md-code-block lang="js" code="\'aW1wb3J0IHsgQXJpYUNvbXBvbmVudCB9IGZyb20gJ2VjaGFydHMvY29tcG9uZW50cyc7CmVjaGFydHMudXNlKEFyaWFDb21wb25lbnQpOw\'" line-highlights="\'\'" />\n<p>Or using CommonJS:</p>\n<md-code-block lang="js" code="\'cmVxdWlyZSgnZWNoYXJ0cy9saWIvY29tcG9uZW50L2FyaWEnKTs\'" line-highlights="\'\'" />\n<p>Without this import, setting <code>aria.show: true</code> will not work properly.</p>\n<h2 id="chart-labels" tabindex="-1">Chart Labels</h2>\n<p>After importing the AriaComponent and setting <a href="https://echarts.apache.org/option.html#aria.show">aria.show</a> to <code>true</code>, ECharts will automatically generate a description of the chart according to the title, chart, data, etc. Users can also set description manually through the configuration object.</p>\n<p>Example configuration object:</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIGFyaWE6IHsKICAgIHNob3c6IHRydWUKICB9LAogIHRpdGxlOiB7CiAgICB0ZXh0OiAnUmVmZXJyZXIgb2YgYSBVc2VyJywKICAgIHg6ICdjZW50ZXInCiAgfSwKICBzZXJpZXM6IFsKICAgIHsKICAgICAgbmFtZTogJ1JlZmVycmVyJywKICAgICAgdHlwZTogJ3BpZScsCiAgICAgIGRhdGE6IFsKICAgICAgICB7IHZhbHVlOiAzMzUsIG5hbWU6ICdEaXJlY3QgVmlzaXQnIH0sCiAgICAgICAgeyB2YWx1ZTogMzEwLCBuYW1lOiAnRW1haWwgTWFya2V0aW5nJyB9LAogICAgICAgIHsgdmFsdWU6IDIzNCwgbmFtZTogJ1VuaW9uIEFkJyB9LAogICAgICAgIHsgdmFsdWU6IDEzNSwgbmFtZTogJ1ZpZGVvIEFkJyB9LAogICAgICAgIHsgdmFsdWU6IDE1NDgsIG5hbWU6ICdTZWFyY2ggRW5naW5lJyB9CiAgICAgIF0KICAgIH0KICBdCn07\'" line-highlights="\'\'" />\n<p><md-example src="doc-example/aria-pie"></md-example></p>\n<p>Enabling aria with add an <code>aria-label</code> attribute on the Chart HTML. Screen readers use this attribute to describe the contect; this chart would have the following description:</p>\n<pre><code>This is a chart about &quot;Referrer of a User&quot; with type Pie chart named Referrer. The data is as follows: the data of Direct Visit is 335,the data of Mail Marketing is 310,the data of Union Ad is 234,the data of Video Ad is 135,the data of Search Engine is 1548.\n</code></pre>\n<p>The configurated language will be used to build the description.</p>\n<h3 id="customizing-title" tabindex="-1">Customizing Title</h3>\n<p>The aria-label begins with the a general description. There are two templates, <a href="https://echarts.apache.org/option.html#aria.general.withTitle">aria.general.withTitle</a> to be used when <a href="https://echarts.apache.org/option.html#title.text">title.text</a> exists and <a href="https://echarts.apache.org/option.html#aria.general.withoutTitle">aria.general.withoutTitle</a> for when <code>title.text</code> is not defined.</p>\n<p>In the <code>withTitle</code> template, the string <code>{title}</code> is replace with <a href="https://echarts.apache.org/option.html#title.text">title.text</a>. The template <code>This is a chart named {title}</code> with a title of <code>Referrer of a User</code> would yield <code>This is a chart named Referrer of a User</code>.</p>\n<h3 id="customizing-description" tabindex="-1">Customizing Description</h3>\n<p>The description of the series and data are added after the title. For some charts, the default item description cannot show all the information on the chart. In the following scatter chart the description generated by default includes all the items but it is not accessible due to the quantity of items making the list too long to understand.</p>\n<p>Under this circumstance, the description should be set with the <a href="https://echarts.apache.org/option.html#aria.description">aria.description</a> property.</p>\n<h3 id="in-depth-customization" tabindex="-1">In-Depth Customization</h3>\n<p>Every part of the aria-label can include template variables to be replaced by the actual value in the chart. More information on the process of generating a description is available in the API documentation: <a href="https://echarts.apache.org/option.html#aria.label">aria.label</a>.</p>\n<h2 id="decal-patterns" tabindex="-1">Decal Patterns</h2>\n<p>In addition, Apache ECharts 5 adds support for decal patterns as a secondary representation of color to further differentiate data. With <code>aria.enabled</code> set to <code>true</code> and <code>aria.decal.show</code> set to <code>true</code>, the default decal style will be applied.</p>\n<p><md-example src="doc-example/aria-decal-simple"></md-example></p>\n<p>If you need to customize the decal pattern, you can use <a href="https://echarts.apache.org/option.html#aria.decal.decals">aria.decal.decals</a> to configure a flexible decal pattern.</p>\n<p>Please refer to <a href="https://echarts.apache.org/option.html#aria.decal">ARIA option</a> for more detail.</p>\n',postPath:"en/best-practices/aria",title:"Aria - Best Practices"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:a},{title:"入门篇",dir:r,children:[{title:"获取 ECharts",dir:d},{title:"在项目中引入 ECharts",dir:l},{title:"资源列表",dir:o,draft:t},{title:"寻求帮助",dir:n},{title:"版本特性",dir:s,children:[{title:"ECharts 6 特性介绍",dir:c},{title:"v5 升级 v6 指南",dir:h},{title:"5.0",dir:p},{title:"v4 升级 v5 指南",dir:g},{title:5.2,dir:m},{title:5.3,dir:u},{title:5.4,dir:b},{title:5.5,dir:f},{title:5.6,dir:I}]}]},{title:"概念篇",dir:C,children:[{title:"图表容器及大小",dir:w},{title:"配置项",dir:y,draft:t},{title:"系列",dir:A,draft:t},{title:"样式",dir:v},{title:"数据集",dir:W},{title:"数据转换",dir:x},{title:"坐标系",dir:B,draft:t},{title:"坐标轴",dir:T},{title:"视觉映射",dir:i},{title:"图例",dir:E},{title:"事件与行为",dir:S}]},{title:"应用篇",dir:V,children:[{title:"常用图表类型",dir:Z,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:G},{title:"堆叠柱状图",dir:P},{title:"动态排序柱状图",dir:F},{title:"极坐标系柱状图",dir:H,draft:t},{title:"阶梯瀑布图",dir:R},{title:"视觉映射的柱状图",dir:i,draft:t}]},{title:"折线图",dir:k,children:[{title:"基础折线图",dir:D},{title:"堆叠折线图",dir:J},{title:"区域面积图",dir:z},{title:"平滑曲线图",dir:U},{title:"阶梯线图",dir:L}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:M},{title:"圆环图",dir:X},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:K,children:[{title:"基础散点图",dir:Y}]}]},{title:"常用组件",dir:N,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:j}]}]},{title:"移动端优化",dir:e,draft:t},{title:"跨平台方案",dir:O,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:_},{title:"数据下钻",dir:Q,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:q}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:et,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:it,draft:t},{title:"智能指针吸附",dir:at}]}]},{title:"最佳实践",dir:rt,children:[{title:"移动端优化",dir:e,draft:t},{title:dt,dir:lt},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:ot}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:nt}]}],en:[{title:"Get Started",dir:a},{title:"Basics",dir:r,children:[{title:"Download ECharts",dir:d},{title:"Import ECharts",dir:l},{title:"Resources",dir:o,draft:t},{title:"Get Help",dir:n},{title:"What's New",dir:s,children:[{title:"ECharts 6 Features",dir:c},{title:"Migration from v5 to v6",dir:h},{title:"5.0",dir:p},{title:"Migration from v4 to v5",dir:g},{title:5.2,dir:m},{title:5.3,dir:u},{title:5.4,dir:b},{title:5.5,dir:f},{title:5.6,dir:I}]}]},{title:"Concepts",dir:C,children:[{title:"Chart Container",dir:w},{title:"Chart Option",dir:y,draft:t},{title:"Series",dir:A,draft:t},{title:"Style",dir:v},{title:"Dataset",dir:W},{title:"Data Transform",dir:x},{title:"Coordinate",dir:B,draft:t},{title:"Axis",dir:T},{title:"Visual Mapping",dir:i},{title:"Legend",dir:E},{title:"Event and Action",dir:S}]},{title:"How To Guides",dir:V,children:[{title:"Common Charts",dir:Z,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:G},{title:"Stacked Bar",dir:P},{title:"Bar Racing",dir:F},{title:"Bar Polar",dir:H,draft:t},{title:"Waterfall",dir:R}]},{title:"Line",dir:k,children:[{title:"Basic Line",dir:D},{title:"Stacked Line",dir:J},{title:"Area Chart",dir:z},{title:"Smoothed Line",dir:U},{title:"Step Line",dir:L}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:M},{title:"Ring Style",dir:X},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:K,children:[{title:"Basic Scatter",dir:Y}]}]},{title:"Common Components",dir:N,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:j}]}]},{title:"Mobile",dir:e,draft:t},{title:"Cross Platform",dir:O,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:_},{title:"Drilldown",dir:Q,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:q}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:et,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:it,draft:t},{title:"Intelligent Pointer Snapping",dir:at}]}]},{title:"Best Practices",dir:rt,children:[{title:"Mobile Optimization",dir:e,draft:t},{title:dt,dir:lt},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:ot}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:nt}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/en/best-practices/aria",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/en/best-practices/canvas-vs-svg/index.html b/docs/en/best-practices/canvas-vs-svg/index.html
new file mode 100644
index 0000000..e0a92b0
--- /dev/null
+++ b/docs/en/best-practices/canvas-vs-svg/index.html
@@ -0,0 +1,24 @@
+<!doctype html>
+<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Canvas vs. SVG - Best Practices - Handbook - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="en"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/en/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/en/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/en/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/en/index.html" class="navbar-brand"><img src="https://echarts.apache.org/en/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/en/index.html">Home</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Docs<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/feature.html">Features</a></li><li><a href="https://echarts.apache.org/handbook/en/get-started/">Handbook</a></li><li><a href="https://echarts.apache.org/en/api.html">API</a></li><li><a href="https://echarts.apache.org/en/option.html">Chart Configuration</a></li><li><a href="https://echarts.apache.org/en/changelog.html">Changelog</a></li><li><a href="https://echarts.apache.org/en/faq.html">FAQ</a></li><li><a href="https://echarts.apache.org/handbook/en/basics/release-note/v6-upgrade-guide">V6 Upgrade Guide</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Download<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/download.html">Download</a></li><li><a href="https://echarts.apache.org/en/download-theme.html">Download Themes</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">Download Custom Series<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/download-extension.html">Download Extensions</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/en/index.html">Examples</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Resources<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/spreadsheet.html">Spread Sheet Tool</a></li><li><a href="https://echarts.apache.org/en/theme-builder.html">Theme Builder</a></li><li><a href="https://echarts.apache.org/en/cheat-sheet.html">Cheat Sheet</a></li><li><a href="https://echarts.apache.org/en/resources.html">More Resources</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/events.html">Events</a></li><li><a href="https://echarts.apache.org/en/committers.html">Committers</a></li><li><a href="https://echarts.apache.org/en/maillist.html">Mailing List</a></li><li><a href="https://echarts.apache.org/en/contributing.html">How to Contribute</a></li><li><a href="https://echarts.apache.org/en/dependencies.html">Dependencies</a></li><li><a href="https://echarts.apache.org/en/coding-standard.html">Code Standard</a></li><li><a href="https://github.com/apache/echarts" target="_blank">Source Code (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/security.html">Security</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">License<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">Events<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("zh")'>中文</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/en/get-started" class="nav-link"><span class="title">Get Started</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Basics</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/basics/download" class="nav-link"><span class="title">Download ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/import" class="nav-link"><span class="title">Import ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/basics/help" class="nav-link"><span class="title">Get Help</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">What's New</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 Features</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">Migration from v5 to v6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">Migration from v4 to v5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Concepts</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/concepts/chart-size" class="nav-link"><span class="title">Chart Container</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/style" class="nav-link"><span class="title">Style</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/dataset" class="nav-link"><span class="title">Dataset</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/data-transform" class="nav-link"><span class="title">Data Transform</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/axis" class="nav-link"><span class="title">Axis</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/visual-map" class="nav-link"><span class="title">Visual Mapping</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/legend" class="nav-link"><span class="title">Legend</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/event" class="nav-link"><span class="title">Event and Action</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">How To Guides</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">Common Charts</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Bar</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">Basic Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">Stacked Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">Bar Racing</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">Waterfall</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Line</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">Basic Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">Stacked Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/area-line" class="nav-link"><span class="title">Area Chart</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">Smoothed Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/step-line" class="nav-link"><span class="title">Step Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Pie</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">Basic Pie</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">Ring Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/rose" class="nav-link"><span class="title">Rose Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Scatter</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">Basic Scatter</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Common Components</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Geo</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG Base Map</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">Cross Platform</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/cross-platform/server" class="nav-link"><span class="title">Server Side Rendering</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Data</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/data/dynamic-data" class="nav-link"><span class="title">Dynamic Data</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Label</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/label/rich-text" class="nav-link"><span class="title">Rich Text</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Animation</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/animation/transition" class="nav-link"><span class="title">Data Transition</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Interaction</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/drag" class="nav-link"><span class="title">Drag</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">Intelligent Pointer Snapping</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Best Practices</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/en/best-practices/canvas-vs-svg" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/aria" class="nav-link"><span class="title">Aria</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/security" class="nav-link"><span class="title">Security Guidelines</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Edit Handbook</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/meta/edit-guide" class="nav-link"><span class="title">Edit Guide</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="render-with-svg-or-canvas" tabindex="-1">Render with SVG or Canvas</h1> <p>Most browser-side chart libraries use SVG or Canvas as the underlying renderer. Generally, both technologies are interchangeable and have a similar effect. However, the difference may be notable in some specific scenarios and cases. As a result, it's always a hard choice to decide which technology to render charts.</p> <p>Canvas has been used as the renderer of ECharts from the beginning. Since <a href="https://echarts.apache.org/en/changelog.html#v4-0-0">v4.0</a>, ECharts has provided the SVG renderer as an additional option. You can specify the <a href="https://echarts.apache.org/api.html#echarts.init">renderer parameter</a> as <code>'canvas'</code> or <code>'svg'</code> when initializing the chart.</p> <blockquote><p>SVG and Canvas have a significant difference in use. The uniform support for both technologies in ECharts is attributed to the abstraction and implementation of the underlying library <a href="https://github.com/ecomfe/zrender">ZRender</a>.</p></blockquote> <h2 id="how-to-choose-a-renderer" tabindex="-1">How to Choose a Renderer</h2> <p>Generally, Canvas is more suitable for charts with a large number of elements (heat map, large-scale line or scatter plot in geo or parallel coordinates, etc.), and with visual <a href="https://echarts.apache.org/examples/editor.html?c=lines-bmap-effect">effect</a>. However, SVG has an important advantage: It has less memory usage (which is important for mobile devices) and won't be blurry when zooming in.</p> <p>The choice of renderer can be based on a combination of hardware and software environment, data volume and functional requirements.</p> <ul><li>In scenarios where the hardware and software environment is good and the amount of data is not too large, both renderers will work and there is not much need to agonize over them.</li> <li>In scenarios where the environment is poor and performance issues arise that require optimization, experimentation can be used to determine which renderer to use. For example, there are these experiences.
+<ul><li>In situations where many instances of ECharts have to be created and the browser is prone to crashing (probably because the number of Canvas is causing the memory footprint to exceed the phone's capacity), the SVG renderer can be used to make improvements. Roughly speaking, the SVG renderer may work better if the chart is running on a low-end Android, or if we are using specific charts such as the <a href="https://ecomfe.github.io/echarts-liquidfill/example/">LiquidFill chart</a>.</li> <li>For larger amounts of data (>1k is an experience value), canvas renderer is always recommended.</li></ul></li></ul> <p>We strongly welcome <a href="https://github.com/apache/echarts/issues/new">feedback</a> from developers on their experiences and scenarios to help us make better optimizations.</p> <p>Note: Currently, some special effects still relies on Canvas: e.g. <a href="https://echarts.apache.org/option.html#series-lines.effect">trail effect</a>, <a href="https://echarts.apache.org/examples/editor.html?c=heatmap-bmap">heatmap with blending effect</a>, etc.</p> <p>Since <a href="en/basics/release-note/5-3-0/#new-svg-renderer">v5.3.0</a>, the SVG renderer got refactored using the Virtual DOM, the performance got improved by 2-10 times and it can even be dozens of times in some specific scenarios! Refer to <a href="https://github.com/ecomfe/zrender/pull/836">#836</a> for more details.</p> <h2 id="how-to-use-the-renderer" tabindex="-1">How to Use the Renderer</h2> <p>If <code>echarts</code> is fully imported in the following way, it already automatically imported and registered the SVG renderer and the Canvas renderer.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">import</span> <span class="token operator">*</span> <span class="token keyword">as</span> echarts <span class="token keyword">from</span> <span class="token string">'echarts'</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>If you are using <a href="en/basics/import">tree-shakable import</a>, you will need to import the required renderers manually.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">import</span> <span class="token operator">*</span> <span class="token keyword">as</span> echarts <span class="token keyword">from</span> <span class="token string">'echarts/core'</span><span class="token punctuation">;</span>
+<span class="token comment">// You can use only the renderers you need</span>
+<span class="token keyword">import</span> <span class="token punctuation">{</span> SVGRenderer<span class="token punctuation">,</span> CanvasRenderer <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'echarts/renderers'</span><span class="token punctuation">;</span>
+
+echarts<span class="token punctuation">.</span><span class="token function">use</span><span class="token punctuation">(</span><span class="token punctuation">[</span>SVGRenderer<span class="token punctuation">,</span> CanvasRenderer<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>Then you can set the <a href="https://echarts.apache.org/api.html#echarts.init">renderer parameter</a> when initializing the chart.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token comment">// Use the Canvas renderer (default)</span>
+<span class="token keyword">var</span> chart <span class="token operator">=</span> echarts<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span>containerDom<span class="token punctuation">,</span> <span class="token keyword">null</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token literal-property property">renderer</span><span class="token operator">:</span> <span class="token string">'canvas'</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token comment">// Equivalent to</span>
+<span class="token keyword">var</span> chart <span class="token operator">=</span> echarts<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span>containerDom<span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+<span class="token comment">// use the SVG renderer</span>
+<span class="token keyword">var</span> chart <span class="token operator">=</span> echarts<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span>containerDom<span class="token punctuation">,</span> <span class="token keyword">null</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token literal-property property">renderer</span><span class="token operator">:</span> <span class="token string">'svg'</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">Contributors</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/en/best-practices/canvas-vs-svg.md" title="Edit this Document" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">Edit this page on GitHub</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/plainheart" target="_blank" class="post-contributor has-avatar"><img alt="plainheart" src="https://echarts.apache.org/en/images/people/plainheart.jpg" loading="lazy" decoding="async" fetchpriority="low"> <span>plainheart</span></a><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a><a href="https://github.com/mrbrianevans" target="_blank" class="post-contributor"><!----> <span>mrbrianevans</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(e,t,i,r,a,n,d,l,o,s,h,c,p,m,g,f,b,u,v,y,w,C,S,G,Z,V,I,k,W,B,R,X,x,H,J,Y,P,E,M,N,z,L,D,F,j,A,T,O,U,q,K,_,Q,$,ee,te,ie,re,ae,ne,de,le,oe){return{layout:"default",data:[{html:'<h1 id="render-with-svg-or-canvas" tabindex="-1">Render with SVG or Canvas</h1>\n<p>Most browser-side chart libraries use SVG or Canvas as the underlying renderer. Generally, both technologies are interchangeable and have a similar effect. However, the difference may be notable in some specific scenarios and cases. As a result, it\'s always a hard choice to decide which technology to render charts.</p>\n<p>Canvas has been used as the renderer of ECharts from the beginning. Since <a href="https://echarts.apache.org/en/changelog.html#v4-0-0">v4.0</a>, ECharts has provided the SVG renderer as an additional option. You can specify the <a href="https://echarts.apache.org/api.html#echarts.init">renderer parameter</a> as <code>\'canvas\'</code> or <code>\'svg\'</code> when initializing the chart.</p>\n<blockquote>\n<p>SVG and Canvas have a significant difference in use. The uniform support for both technologies in ECharts is attributed to the abstraction and implementation of the underlying library <a href="https://github.com/ecomfe/zrender">ZRender</a>.</p>\n</blockquote>\n<h2 id="how-to-choose-a-renderer" tabindex="-1">How to Choose a Renderer</h2>\n<p>Generally, Canvas is more suitable for charts with a large number of elements (heat map, large-scale line or scatter plot in geo or parallel coordinates, etc.), and with visual <a href="https://echarts.apache.org/examples/editor.html?c=lines-bmap-effect">effect</a>. However, SVG has an important advantage: It has less memory usage (which is important for mobile devices) and won\'t be blurry when zooming in.</p>\n<p>The choice of renderer can be based on a combination of hardware and software environment, data volume and functional requirements.</p>\n<ul>\n<li>In scenarios where the hardware and software environment is good and the amount of data is not too large, both renderers will work and there is not much need to agonize over them.</li>\n<li>In scenarios where the environment is poor and performance issues arise that require optimization, experimentation can be used to determine which renderer to use. For example, there are these experiences.\n<ul>\n<li>In situations where many instances of ECharts have to be created and the browser is prone to crashing (probably because the number of Canvas is causing the memory footprint to exceed the phone\'s capacity), the SVG renderer can be used to make improvements. Roughly speaking, the SVG renderer may work better if the chart is running on a low-end Android, or if we are using specific charts such as the <a href="https://ecomfe.github.io/echarts-liquidfill/example/">LiquidFill chart</a>.</li>\n<li>For larger amounts of data (&gt;1k is an experience value), canvas renderer is always recommended.</li>\n</ul>\n</li>\n</ul>\n<p>We strongly welcome <a href="https://github.com/apache/echarts/issues/new">feedback</a> from developers on their experiences and scenarios to help us make better optimizations.</p>\n<p>Note: Currently, some special effects still relies on Canvas: e.g. <a href="https://echarts.apache.org/option.html#series-lines.effect">trail effect</a>, <a href="https://echarts.apache.org/examples/editor.html?c=heatmap-bmap">heatmap with blending effect</a>, etc.</p>\n<p>Since <a href="en/basics/release-note/5-3-0/#new-svg-renderer">v5.3.0</a>, the SVG renderer got refactored using the Virtual DOM, the performance got improved by 2-10 times and it can even be dozens of times in some specific scenarios! Refer to <a href="https://github.com/ecomfe/zrender/pull/836">#836</a> for more details.</p>\n<h2 id="how-to-use-the-renderer" tabindex="-1">How to Use the Renderer</h2>\n<p>If <code>echarts</code> is fully imported in the following way, it already automatically imported and registered the SVG renderer and the Canvas renderer.</p>\n<md-code-block lang="js" code="\'aW1wb3J0ICogYXMgZWNoYXJ0cyBmcm9tICdlY2hhcnRzJzs\'" line-highlights="\'\'" />\n<p>If you are using <a href="en/basics/import">tree-shakable import</a>, you will need to import the required renderers manually.</p>\n<md-code-block lang="js" code="\'aW1wb3J0ICogYXMgZWNoYXJ0cyBmcm9tICdlY2hhcnRzL2NvcmUnOwovLyBZb3UgY2FuIHVzZSBvbmx5IHRoZSByZW5kZXJlcnMgeW91IG5lZWQKaW1wb3J0IHsgU1ZHUmVuZGVyZXIsIENhbnZhc1JlbmRlcmVyIH0gZnJvbSAnZWNoYXJ0cy9yZW5kZXJlcnMnOwoKZWNoYXJ0cy51c2UoW1NWR1JlbmRlcmVyLCBDYW52YXNSZW5kZXJlcl0pOw\'" line-highlights="\'\'" />\n<p>Then you can set the <a href="https://echarts.apache.org/api.html#echarts.init">renderer parameter</a> when initializing the chart.</p>\n<md-code-block lang="js" code="\'Ly8gVXNlIHRoZSBDYW52YXMgcmVuZGVyZXIgKGRlZmF1bHQpCnZhciBjaGFydCA9IGVjaGFydHMuaW5pdChjb250YWluZXJEb20sIG51bGwsIHsgcmVuZGVyZXI6ICdjYW52YXMnIH0pOwovLyBFcXVpdmFsZW50IHRvCnZhciBjaGFydCA9IGVjaGFydHMuaW5pdChjb250YWluZXJEb20pOwoKLy8gdXNlIHRoZSBTVkcgcmVuZGVyZXIKdmFyIGNoYXJ0ID0gZWNoYXJ0cy5pbml0KGNvbnRhaW5lckRvbSwgbnVsbCwgeyByZW5kZXJlcjogJ3N2ZycgfSk7\'" line-highlights="\'\'" />\n',postPath:"en/best-practices/canvas-vs-svg",title:"Canvas vs. SVG - Best Practices"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:r},{title:"入门篇",dir:a,children:[{title:"获取 ECharts",dir:n},{title:"在项目中引入 ECharts",dir:d},{title:"资源列表",dir:l,draft:e},{title:"寻求帮助",dir:o},{title:"版本特性",dir:s,children:[{title:"ECharts 6 特性介绍",dir:h},{title:"v5 升级 v6 指南",dir:c},{title:"5.0",dir:p},{title:"v4 升级 v5 指南",dir:m},{title:5.2,dir:g},{title:5.3,dir:f},{title:5.4,dir:b},{title:5.5,dir:u},{title:5.6,dir:v}]}]},{title:"概念篇",dir:y,children:[{title:"图表容器及大小",dir:w},{title:"配置项",dir:C,draft:e},{title:"系列",dir:S,draft:e},{title:"样式",dir:G},{title:"数据集",dir:Z},{title:"数据转换",dir:V},{title:"坐标系",dir:I,draft:e},{title:"坐标轴",dir:k},{title:"视觉映射",dir:i},{title:"图例",dir:W},{title:"事件与行为",dir:B}]},{title:"应用篇",dir:R,children:[{title:"常用图表类型",dir:X,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:x},{title:"堆叠柱状图",dir:H},{title:"动态排序柱状图",dir:J},{title:"极坐标系柱状图",dir:Y,draft:e},{title:"阶梯瀑布图",dir:P},{title:"视觉映射的柱状图",dir:i,draft:e}]},{title:"折线图",dir:E,children:[{title:"基础折线图",dir:M},{title:"堆叠折线图",dir:N},{title:"区域面积图",dir:z},{title:"平滑曲线图",dir:L},{title:"阶梯线图",dir:D}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:F},{title:"圆环图",dir:j},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:A,children:[{title:"基础散点图",dir:T}]}]},{title:"常用组件",dir:O,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:U}]}]},{title:"移动端优化",dir:t,draft:e},{title:"跨平台方案",dir:q,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:K},{title:"数据下钻",dir:_,draft:e}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:Q}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:ee}]},{title:"交互",dir:te,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:ie,draft:e},{title:"智能指针吸附",dir:re}]}]},{title:"最佳实践",dir:ae,children:[{title:"移动端优化",dir:t,draft:e},{title:ne,dir:de},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:le}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:oe}]}],en:[{title:"Get Started",dir:r},{title:"Basics",dir:a,children:[{title:"Download ECharts",dir:n},{title:"Import ECharts",dir:d},{title:"Resources",dir:l,draft:e},{title:"Get Help",dir:o},{title:"What's New",dir:s,children:[{title:"ECharts 6 Features",dir:h},{title:"Migration from v5 to v6",dir:c},{title:"5.0",dir:p},{title:"Migration from v4 to v5",dir:m},{title:5.2,dir:g},{title:5.3,dir:f},{title:5.4,dir:b},{title:5.5,dir:u},{title:5.6,dir:v}]}]},{title:"Concepts",dir:y,children:[{title:"Chart Container",dir:w},{title:"Chart Option",dir:C,draft:e},{title:"Series",dir:S,draft:e},{title:"Style",dir:G},{title:"Dataset",dir:Z},{title:"Data Transform",dir:V},{title:"Coordinate",dir:I,draft:e},{title:"Axis",dir:k},{title:"Visual Mapping",dir:i},{title:"Legend",dir:W},{title:"Event and Action",dir:B}]},{title:"How To Guides",dir:R,children:[{title:"Common Charts",dir:X,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:x},{title:"Stacked Bar",dir:H},{title:"Bar Racing",dir:J},{title:"Bar Polar",dir:Y,draft:e},{title:"Waterfall",dir:P}]},{title:"Line",dir:E,children:[{title:"Basic Line",dir:M},{title:"Stacked Line",dir:N},{title:"Area Chart",dir:z},{title:"Smoothed Line",dir:L},{title:"Step Line",dir:D}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:F},{title:"Ring Style",dir:j},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:A,children:[{title:"Basic Scatter",dir:T}]}]},{title:"Common Components",dir:O,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:U}]}]},{title:"Mobile",dir:t,draft:e},{title:"Cross Platform",dir:q,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:K},{title:"Drilldown",dir:_,draft:e}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:Q}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:ee}]},{title:"Interaction",dir:te,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:ie,draft:e},{title:"Intelligent Pointer Snapping",dir:re}]}]},{title:"Best Practices",dir:ae,children:[{title:"Mobile Optimization",dir:t,draft:e},{title:ne,dir:de},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:le}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:oe}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:e,routePath:"/en/best-practices/canvas-vs-svg",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/en/best-practices/security/index.html b/docs/en/best-practices/security/index.html
new file mode 100644
index 0000000..b8ea9e2
--- /dev/null
+++ b/docs/en/best-practices/security/index.html
@@ -0,0 +1,32 @@
+<!doctype html>
+<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Security Guidelines - Best Practices - Handbook - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="en"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/en/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/en/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/en/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/en/index.html" class="navbar-brand"><img src="https://echarts.apache.org/en/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/en/index.html">Home</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Docs<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/feature.html">Features</a></li><li><a href="https://echarts.apache.org/handbook/en/get-started/">Handbook</a></li><li><a href="https://echarts.apache.org/en/api.html">API</a></li><li><a href="https://echarts.apache.org/en/option.html">Chart Configuration</a></li><li><a href="https://echarts.apache.org/en/changelog.html">Changelog</a></li><li><a href="https://echarts.apache.org/en/faq.html">FAQ</a></li><li><a href="https://echarts.apache.org/handbook/en/basics/release-note/v6-upgrade-guide">V6 Upgrade Guide</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Download<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/download.html">Download</a></li><li><a href="https://echarts.apache.org/en/download-theme.html">Download Themes</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">Download Custom Series<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/download-extension.html">Download Extensions</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/en/index.html">Examples</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Resources<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/spreadsheet.html">Spread Sheet Tool</a></li><li><a href="https://echarts.apache.org/en/theme-builder.html">Theme Builder</a></li><li><a href="https://echarts.apache.org/en/cheat-sheet.html">Cheat Sheet</a></li><li><a href="https://echarts.apache.org/en/resources.html">More Resources</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/events.html">Events</a></li><li><a href="https://echarts.apache.org/en/committers.html">Committers</a></li><li><a href="https://echarts.apache.org/en/maillist.html">Mailing List</a></li><li><a href="https://echarts.apache.org/en/contributing.html">How to Contribute</a></li><li><a href="https://echarts.apache.org/en/dependencies.html">Dependencies</a></li><li><a href="https://echarts.apache.org/en/coding-standard.html">Code Standard</a></li><li><a href="https://github.com/apache/echarts" target="_blank">Source Code (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/security.html">Security</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">License<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">Events<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("zh")'>中文</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/en/get-started" class="nav-link"><span class="title">Get Started</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Basics</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/basics/download" class="nav-link"><span class="title">Download ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/import" class="nav-link"><span class="title">Import ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/basics/help" class="nav-link"><span class="title">Get Help</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">What's New</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 Features</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">Migration from v5 to v6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">Migration from v4 to v5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Concepts</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/concepts/chart-size" class="nav-link"><span class="title">Chart Container</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/style" class="nav-link"><span class="title">Style</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/dataset" class="nav-link"><span class="title">Dataset</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/data-transform" class="nav-link"><span class="title">Data Transform</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/axis" class="nav-link"><span class="title">Axis</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/visual-map" class="nav-link"><span class="title">Visual Mapping</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/legend" class="nav-link"><span class="title">Legend</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/event" class="nav-link"><span class="title">Event and Action</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">How To Guides</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">Common Charts</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Bar</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">Basic Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">Stacked Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">Bar Racing</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">Waterfall</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Line</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">Basic Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">Stacked Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/area-line" class="nav-link"><span class="title">Area Chart</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">Smoothed Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/step-line" class="nav-link"><span class="title">Step Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Pie</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">Basic Pie</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">Ring Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/rose" class="nav-link"><span class="title">Rose Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Scatter</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">Basic Scatter</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Common Components</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Geo</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG Base Map</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">Cross Platform</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/cross-platform/server" class="nav-link"><span class="title">Server Side Rendering</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Data</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/data/dynamic-data" class="nav-link"><span class="title">Dynamic Data</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Label</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/label/rich-text" class="nav-link"><span class="title">Rich Text</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Animation</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/animation/transition" class="nav-link"><span class="title">Data Transition</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Interaction</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/drag" class="nav-link"><span class="title">Drag</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">Intelligent Pointer Snapping</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Best Practices</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/en/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/aria" class="nav-link"><span class="title">Aria</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/security" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">Security Guidelines</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Edit Handbook</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/meta/edit-guide" class="nav-link"><span class="title">Edit Guide</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="security-guidelines" tabindex="-1">Security Guidelines</h1> <h2 id="overview" tabindex="-1">Overview</h2> <p>ECharts aims to provide rich and flexible visualization capabilities. Although the vast majority of its APIs do not require special security considerations, sereval APIs are exceptions. For example, the option <code>tooltip.formatter</code> accepts a raw HTML string, allowing full control over the component's content and layout; the option <code>title.link</code> uses the provided URL string directly without automatic sanitization. While this flexibility is powerful, security risks may arise if the input comes from untrusted sources. These APIs are listed below, along with suggestions on how to use these features safely.</p> <p>Any security issues can be reported according to <a href="https://echarts.apache.org/en/security.html">ASF Security Page</a>.</p> <p>Note: This document is intended for ECharts API callers. <a href="https://github.com/apache/echarts/wiki/Security-Checklist-for-Code-Contributors">Security Checklist for Code Contributors</a> is another document used before submitting a pull request to ECharts. It is not intended for ECharts API callers, but they may refer to it if interested.</p> <h2 id="security_model_and_checklist" tabindex="-1">Security Model and Checklist</h2> <p>ECharts focuses on visualization logic. It generally assumes that inputs originate from trusted sources and does not perform automatic sanitization, as in the case with most frontend UI libraries. In fact, ECharts itself cannot properly sanitize untrusted inputs, because it can not determine which inputs are untrusted, and no universal sanitization rules fit all cases. However, ECharts should clearly identify which APIs (especially ECharts options) require security-related preprocessing or considerations in specific use cases. Given the large number of ECharts options, preprocess all inputs in every case would be impractical and unnecessary.</p> <p>ECharts renders using Canvas or SVG, except for several special components that allow HTML rendering (e.g., <a href="https://echarts.apache.org/option.html#tooltip">tooltip</a>, <a href="https://echarts.apache.org/option.html#toolbox.feature.dataView">dataView</a>). ECharts APIs accept Non-JS-function inputs and JS-function inputs. JS-function inputs are intended to be execute. Most non-JS-function inputs (e.g., plain text provided to be rendered) are treated as data only, and are inherently prevented from code evaluation and execution. Therefore, they generally do not require sanitization from malicious code. However, several APIs allow embeding potential unsafe content (for example, raw HTML or raw URLs) into the page. These APIs are powerful but vulnerable to Cross-Site Scripting (XSS) and related attacks if the inputs originate from untrusted sources.</p> <p><strong>Generally speaking, if no untrusted content is involved, these injection vulnerabilities will not arise.</strong> Untrusted content refers to content that originates from a source that can not be fully controlled, or that can be modified or injected by users or external systems. Developers must assume it unsafe to use directly in HTML, CSS and JS. For example, content is untrusted if it is produced by users or received from a client. However, handling user-provided content is often unavoidable. For example, render user data fetched from a database inside an HTML-based <code>tooltip</code> through a customized formatter. In such cases, additional processing is required to ensure correctness and safety -- primarily through HTML escaping, and additionally through sanitization when there are parts that cannot be escaped and originate from untrusted sources.</p> <p>Before deploying charts, please review this <strong>checklist</strong> to ensure your usage is safe:</p> <table><thead><tr><th>APIs</th> <th>Potential Risks and Suggestions</th></tr></thead> <tbody><tr><td><strong>option <a href="https://echarts.apache.org/option.html#tooltip.formatter">tooltip.formatter</a></strong><br>· <code>formatter</code> allows HTML string or DOM elements input, which are later rendered directly inside the tooltip, where XSS risks need to be considered.<br>(exceptions): A string directly set to the <code>formatter</code> is treated as a simple template for later combining with data internally. <a href="https://echarts.apache.org/option.html#tooltip.renderMode">tooltip.renderMode: 'richText'</a> is another level of templating syntax for styling. Both of them are internally implemented and safe from injection.<br><br><strong>option <a href="https://echarts.apache.org/option.html#toolbox.feature.dataView.optionToContent">toolbox.feature.dataView.optionToContent</a></strong><br><strong>option <a href="https://echarts.apache.org/option.html#toolbox.feature.dataView.title">toolbox.feature.dataView.title</a></strong><br><strong>option <a href="https://echarts.apache.org/option.html#toolbox.feature.dataView.lang">toolbox.feature.dataView.lang</a></strong><br>· The <code>tooltip.dataView</code> panel is fully rendered in HTML. Certain parts of the HTML string are allowed to be customized via these APIs.</td> <td>XSS risks should be considered. In most cases, HTML escaping alone is sufficient. But if any unescaped parts originate from untrusted sources, more measures are required (e.g., sanitization, sandboxing).<br><br>See section <a href="en/best-practices/security#passing_raw_html_safely">"Passing Raw HTML Safely"</a> for safe usage recommendations.</td></tr> <tr><td><strong>option <a href="https://echarts.apache.org/option.html#tooltip.extraCssText">tooltip.extraCssText</a></strong><br>· <code>extraCssText</code> accepts a raw CSS style string for later directly appending to <code>tooltipEl.style.cssText</code>(via the DOM API).<br>(exceptions): this option is not applicable when <a href="https://echarts.apache.org/option.html#tooltip.renderMode">tooltip.renderMode: 'richText'</a>.<br></td> <td>Safe if the input comes from trusted sources; otherwise, a careful assessment is required.<br><br>See section <a href="en/best-practices/security#passing_inline_css_safely">"Passing inline CSS Safely"</a> for details.</td></tr> <tr><td><strong>option <a href="https://echarts.apache.org/option.html#title.link">title.link</a></strong><br><strong>option <a href="https://echarts.apache.org/option.html#title.sublink">title.sublink</a></strong><br><strong>option <a href="https://echarts.apache.org/option.html#series-treemap.data.link">series-treemap.data.link</a></strong><br><strong>option <a href="https://echarts.apache.org/option.html#series-sunburst.data.link">series-sunburst.data.link</a></strong><br>· They accept raw URLs directly for these links.</td> <td>Safe if the input comes from trusted sources; otherwise, XSS risks should be considered.<br><br>See section <a href="en/best-practices/security#passing_raw_urls_safely">"Passing Raw URLs Safely"</a> for safe usage recommendations.</td></tr> <tr><td><strong>option <a href="https://echarts.apache.org/option.html#toolbox.feature.saveAsImage.name">toolbox.feature.saveAsImage.name</a></strong><br><strong>option <a href="https://echarts.apache.org/option.html#toolbox.feature.saveAsImage.type">toolbox.feature.saveAsImage.type</a></strong><br><strong>option <a href="https://echarts.apache.org/option.html#title.text">title[0].text</a></strong><br>· The download filename is assembled by <code>{name}.{type}</code> without validation or sanitization. If <code>name</code> is not provided, <code>title[0].text</code> (if any) has historically been used instead, although this usage is not recommended.</td> <td>See section <a href="en/best-practices/security#passing_download_filename_safely">"Passing Download Filename Safely"</a> for safe usage recommendations.</td></tr> <tr><td>All JS-function inputs (callbacks)</td> <td>This is generally not a concern, unless special requirements involve untrusted code.<br><br>See section <a href="en/best-practices/security#passing_js_function_safely">"Passing JS Function Safely"</a> for details.</td></tr></tbody></table> <h2 id="passing_raw_html_safely" tabindex="-1">Passing Raw HTML Safely</h2> <p>Section <a href="en/best-practices/security#security_model_and_checklist">"Security Model and Checklist"</a> have listed the APIs that accept raw HTML directly. Untrusted HTML may lead to XSS and related attacks, so additional processing is required before passing content to ECharts. Several commonly used mitigation approaches -- "HTML Escaping", "Sanitization", "Sandboxing" are described below. In most cases, "HTML Escaping" is sufficient, except when unescaped content comes from untrusted sources.</p> <h3 id="passing_raw_html_safely_html_escaping" tabindex="-1">HTML Escaping</h3> <p>HTML escaping is always necessary for data before assembling it to an HTML string -- not only for security, but also for the basic correctness of display.</p> <p>A typical and simplest HTML escaping implementation is these character conversions:</p> <pre><code>'&' => '&ampamp;'
+'&lt;' => '&amplt;'
+'>' => '&ampgt;'
+'"' => '&ampquot;'
+"'" => '&amp#39;
+</code></pre> <p>It removes the functionality from the markup characters, thereby closing the attack vector for code injection (e.g., <code>&lt;script>...&lt;/script></code>), regardless of whether the content is trusted or untrusted.</p> <p>For example,
+</p><div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token comment">// Incorrect and unsafe.</span>
+<span class="token function-variable function">formatter</span><span class="token operator">:</span> <span class="token parameter">params</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
+    <span class="token keyword">const</span> <span class="token punctuation">{</span> name<span class="token punctuation">,</span> value <span class="token punctuation">}</span> <span class="token operator">=</span> params<span class="token punctuation">;</span>
+    <span class="token comment">// May cause incorrect rendering if `name` or `value` contain functional</span>
+    <span class="token comment">// charactors like '&lt;', '>', etc.</span>
+    <span class="token comment">// Additionally, it introduces XSS risks if `name` or `value` come from</span>
+    <span class="token comment">// untrusted sources, where malicious code may be injected into that strings.</span>
+    <span class="token keyword">return</span> <span class="token template-string"><span class="token template-punctuation string">`</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>name<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">, &lt;b></span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>value<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">&lt;/b></span><span class="token template-punctuation string">`</span></span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span>
+<span class="token comment">// Correct and safe.</span>
+<span class="token function-variable function">formatter</span><span class="token operator">:</span> <span class="token parameter">params</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
+    <span class="token keyword">const</span> <span class="token punctuation">{</span> name<span class="token punctuation">,</span> value <span class="token punctuation">}</span> <span class="token operator">=</span> params<span class="token punctuation">;</span>
+    <span class="token keyword">return</span> <span class="token template-string"><span class="token template-punctuation string">`</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>echarts<span class="token punctuation">.</span>format<span class="token punctuation">.</span><span class="token function">encodeHTML</span><span class="token punctuation">(</span>name<span class="token punctuation">)</span><span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">, &lt;b></span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>echarts<span class="token punctuation">.</span>format<span class="token punctuation">.</span><span class="token function">encodeHTML</span><span class="token punctuation">(</span>value<span class="token punctuation">)</span><span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">&lt;b/></span><span class="token template-punctuation string">`</span></span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div><p></p> <p>Other approaches, like using DOM API <code>.textContent = </code>, can also escape HTML.</p> <p>In most use cases, untrusted content (e.g., user-provided text) is only used for display as plain text, while markup tokens (i.e., parts not meant to be escaped, such as HTML tags or attributes) are fully controlled by the application owner and therefore trusted. In this scenario, HTML escaping alone is an effective and simple way to prevent from XSS, as lone as all untrusted content is properly escaped.</p> <h3 id="passing_raw_html_safely_sanitization" tabindex="-1">Sanitization</h3> <p>Some use cases require untrusted markup tokens to be interpreted as actual markup. For example, text from a database may include styling or functional tags (e.g., <code>&lt;em></code>, <code>&lt;a href="..."></code>) that are meant to be interpreted rather than displayed as plain text. Another example is that users or untrusted sources are allowed to provide HTML templates that define structures and styles, which are later combined with data content to produce the final renderable HTML and passed to ECharts.</p> <p>In these cases, the security risks are heightened. Sanitization can be applied to mitigate those risks, provided that no embedded JS and CSS code is allowed to execute. A sanitizer filters HTML content based on predefined whitelists -- for example, removing <code>&lt;script></code> and <code>&lt;style></code> blocks, <code>&lt;link></code> elements, inline CSS, event handler attributes such as <code>onclick</code>, and URLs using <code>javascript:</code>/<code>data:</code> protocol. It's recommended to use a well-maintained and widely adopted sanitizer rather than writing your own regex or manual string manipulations.</p> <p>Sanitization may be enforced on the client-side, on the server-side, or both, depending on the product requirements and threat model. For example, concerning content that originates from client (e.g., submitted by users), relying only on client-side sanitization is insufficient because an attacker can bypass the client and submit crafted payloads directly to the server. For instance, an online visual editor lets users compose posts in a WYSIWYG fashion, where users can choose from several built-in HTML snippets/templates or JS-functions (e.g., for <a href="https://echarts.apache.org/option.html#tooltip.formatter">tooltip.formatter</a> or <a href="https://echarts.apache.org/option.html#series-scatter.label.formatter">label.formatter</a>). If the selected or generated HTML text or JS-function text are sent from client to server and persisted to the database without any additional handling, an attacker can simulate a network request to inject malicious code. Later, when those options are retrieved and passed to <a href="https://echarts.apache.org/api.html#echartsInstance.setOption">chart.setOption()</a>, the malicious code will execute. There are some recommended mitigations for this case:</p> <ul><li>Persist only reference (IDs) to this built-in snippets/tempates or JS-functions, not raw code supplied by client.</li> <li>If user-provided snippets are allowed for expressiveness (beyond built-in selections), some third-party string templating libraries may be introduced to preventing injection.</li> <li>If user-provided snippets must allow HTML (beyond the approaches above), enforce strict server-side sanitization or validation before persisting. This should include removing all JS, CSS, and other potentially unsafe content. Additionally, consider using a sandboxed iframe to limit the potential impact of any remaining security issues.</li></ul> <p>Achieving sufficient security through sanitization is sometimes not easy. It requires proper configurations, must be kept up to date with browers changes, and often needs to be combined with other defense mechanisms to be "safe enough" for most real-world use cases. HTML is extremely complex -- the more features are allowed in untrusted content, the more potential attack vectors are introduced.</p> <h3 id="passing_raw_html_sandboxing" tabindex="-1">Sandboxing</h3> <p>If executing untrusted code is required, or other measures are considered insufficient, a sandboxed iframe can provide a higher level of security, as used by services like JSFiddle and CodePen.</p> <h2 id="passing_inline_css_safely" tabindex="-1">Passing inline CSS Safely</h2> <p>Although CSS safety issues are covered by the discussion about HTML safety (see section <a href="en/best-practices/security#passing_raw_html_safely">"Passing Raw HTML Safely"</a>), this section focuses on the APIs that only accept inline CSS strings (those that modify <code>style</code> attribute via the DOM API <code>.style.cssText =</code>), which are listed in section <a href="en/best-practices/security#security_model_and_checklist">"Security Model and Checklist"</a>.</p> <p>If the inline CSS strings come entirely from trusted sources (e.g., they are part of your application), security considerations are minimal -- this is also the most common case.</p> <p>Otherwise, untrusted CSS can lead to attacks. Some widely adopted HTML sanitizers support CSS sanitization, but may remove all CSS by default, since sanitizing CSS properly is quite complex. Therefore, accepting untrusted CSS requires meticulous assessment base on the specific use case.</p> <h2 id="passing_raw_urls_safely" tabindex="-1">Passing Raw URLs Safely</h2> <p>Although URL safety issues is covered by the discussion of HTML safety (see section <a href="en/best-practices/security#passing_raw_html_safely">"Passing Raw HTML Safely"</a>), this section focuses on the APIs that only accept URL strings, which is listed in section <a href="en/best-practices/security#security_model_and_checklist">"Security Model and Checklist"</a>.</p> <p>If the URL strings are entirely from trusted sources (e.g., they are part of your application), security considerations are minimal.</p> <p>Otherwise, untrusted URL strings can lead to attacks, for example, by using protocols, such as <code>javascript:</code> or <code>data:</code>, to execute malicious code. Therefore, before passing them to ECharts, sanitization should be enforced, typically by validating the protocol against a specified whitelist.</p> <h2 id="passing_download_filename_safely" tabindex="-1">Passing Download Filename Safely</h2> <p>Currently, only the <a href="https://echarts.apache.org/option.html#toolbox.feature.saveAsImage">saveAsImage</a> feature accepts an input as a filename. This input can be considered safe if it originates from trusted sources, does not exceed the length limit, and contains exclusively ASCII alphabetic characters.</p> <p>Otherwise, although modern browsers have significantly improved their handling of unsanitized download filenames (e.g., path traversal sequences <code>../</code>, <code>..\\</code> are stripped, and special characters are correctly handled), some risks still remain, including the inconsistent behaviors with reserved characters and length limitations. Furthermore, the behavior of older clients or browsers is unclear and less robust. Therefore, sanitization or preprocessing are required for these untrusted inputs.</p> <h2 id="passing_js_function_safely" tabindex="-1">Passing JS Function Safely</h2> <p>ECharts options (i.e., the input to <a href="https://echarts.apache.org/api.html#echartsInstance.setOption">chart.setOption()</a>) are primarily declarative, but some options accept JS-function (callbacks) to provide greater expressiveness and flexibility. Examples include <a href="https://echarts.apache.org/option.html#series-scatter.label.formatter">label.formatter</a>, <a href="https://echarts.apache.org/option.html#xAxis.axisTick.interval">axisTick.interval</a>, and similar. In most use cases, these JS-function options are part of the source code of the application itself and thus fully trusted, so no security risk is introduced.</p> <p>However, certain products may allow JS-function options to originate from untrusted sources, for example, end users. Allowing this introduces both security risks and maintenance costs. Essentially, this scenario carries the same level of risk as allowing code execution in untrusted raw HTML, and can be mitigated using similar approaches, as discussed in <a href="en/best-practices/security#passing_raw_html_safely">"Passing Raw HTML Safely"</a>.</p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">Contributors</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/en/best-practices/security.md" title="Edit this Document" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">Edit this page on GitHub</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/100pah" target="_blank" class="post-contributor has-avatar"><img alt="100pah" src="https://echarts.apache.org/en/images/people/宿爽.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>100pah</span></a><a href="https://github.com/plainheart" target="_blank" class="post-contributor has-avatar"><img alt="plainheart" src="https://echarts.apache.org/en/images/people/plainheart.jpg" loading="lazy" decoding="async" fetchpriority="low"> <span>plainheart</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(e,t,i,a,r,s,o,n,l,d,c,h,p,u,f,m,g,b,y,v,S,w,x,C,I,k,T,_,L,H,M,P,A,q,B,R,G,z,J,E,W,F,V,Z,Y,X,j,D,U,N,O,Q,K,$,ee,te,ie,ae,re,se,oe,ne,le){return{layout:"default",data:[{html:'<h1 id="security-guidelines" tabindex="-1">Security Guidelines</h1>\n<h2 id="overview" tabindex="-1">Overview</h2>\n<p>ECharts aims to provide rich and flexible visualization capabilities. Although the vast majority of its APIs do not require special security considerations, sereval APIs are exceptions. For example, the option <code>tooltip.formatter</code> accepts a raw HTML string, allowing full control over the component\'s content and layout; the option <code>title.link</code> uses the provided URL string directly without automatic sanitization. While this flexibility is powerful, security risks may arise if the input comes from untrusted sources. These APIs are listed below, along with suggestions on how to use these features safely.</p>\n<p>Any security issues can be reported according to <a href="https://echarts.apache.org/en/security.html">ASF Security Page</a>.</p>\n<p>Note: This document is intended for ECharts API callers. <a href="https://github.com/apache/echarts/wiki/Security-Checklist-for-Code-Contributors">Security Checklist for Code Contributors</a> is another document used before submitting a pull request to ECharts. It is not intended for ECharts API callers, but they may refer to it if interested.</p>\n<h2 id="security_model_and_checklist" tabindex="-1">Security Model and Checklist</h2>\n<p>ECharts focuses on visualization logic. It generally assumes that inputs originate from trusted sources and does not perform automatic sanitization, as in the case with most frontend UI libraries. In fact, ECharts itself cannot properly sanitize untrusted inputs, because it can not determine which inputs are untrusted, and no universal sanitization rules fit all cases. However, ECharts should clearly identify which APIs (especially ECharts options) require security-related preprocessing or considerations in specific use cases. Given the large number of ECharts options, preprocess all inputs in every case would be impractical and unnecessary.</p>\n<p>ECharts renders using Canvas or SVG, except for several special components that allow HTML rendering (e.g., <a href="https://echarts.apache.org/option.html#tooltip">tooltip</a>, <a href="https://echarts.apache.org/option.html#toolbox.feature.dataView">dataView</a>). ECharts APIs accept Non-JS-function inputs and JS-function inputs. JS-function inputs are intended to be execute. Most non-JS-function inputs (e.g., plain text provided to be rendered) are treated as data only, and are inherently prevented from code evaluation and execution. Therefore, they generally do not require sanitization from malicious code. However, several APIs allow embeding potential unsafe content (for example, raw HTML or raw URLs) into the page. These APIs are powerful but vulnerable to Cross-Site Scripting (XSS) and related attacks if the inputs originate from untrusted sources.</p>\n<p><strong>Generally speaking, if no untrusted content is involved, these injection vulnerabilities will not arise.</strong> Untrusted content refers to content that originates from a source that can not be fully controlled, or that can be modified or injected by users or external systems. Developers must assume it unsafe to use directly in HTML, CSS and JS. For example, content is untrusted if it is produced by users or received from a client. However, handling user-provided content is often unavoidable. For example, render user data fetched from a database inside an HTML-based <code>tooltip</code> through a customized formatter. In such cases, additional processing is required to ensure correctness and safety -- primarily through HTML escaping, and additionally through sanitization when there are parts that cannot be escaped and originate from untrusted sources.</p>\n<p>Before deploying charts, please review this <strong>checklist</strong> to ensure your usage is safe:</p>\n<table>\n<thead>\n<tr>\n<th>APIs</th>\n<th>Potential Risks and Suggestions</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>option <a href="https://echarts.apache.org/option.html#tooltip.formatter">tooltip.formatter</a></strong><br>· <code>formatter</code> allows HTML string or DOM elements input, which are later rendered directly inside the tooltip, where XSS risks need to be considered.<br>(exceptions): A string directly set to the <code>formatter</code> is treated as a simple template for later combining with data internally. <a href="https://echarts.apache.org/option.html#tooltip.renderMode">tooltip.renderMode: \'richText\'</a> is another level of templating syntax for styling. Both of them are internally implemented and safe from injection.<br><br><strong>option <a href="https://echarts.apache.org/option.html#toolbox.feature.dataView.optionToContent">toolbox.feature.dataView.optionToContent</a></strong><br><strong>option <a href="https://echarts.apache.org/option.html#toolbox.feature.dataView.title">toolbox.feature.dataView.title</a></strong><br><strong>option <a href="https://echarts.apache.org/option.html#toolbox.feature.dataView.lang">toolbox.feature.dataView.lang</a></strong><br>· The <code>tooltip.dataView</code> panel is fully rendered in HTML. Certain parts of the HTML string are allowed to be customized via these APIs.</td>\n<td>XSS risks should be considered. In most cases, HTML escaping alone is sufficient. But if any unescaped parts originate from untrusted sources, more measures are required (e.g., sanitization, sandboxing).<br><br>See section <a href="en/best-practices/security#passing_raw_html_safely">&quot;Passing Raw HTML Safely&quot;</a> for safe usage recommendations.</td>\n</tr>\n<tr>\n<td><strong>option <a href="https://echarts.apache.org/option.html#tooltip.extraCssText">tooltip.extraCssText</a></strong><br>· <code>extraCssText</code> accepts a raw CSS style string for later directly appending to <code>tooltipEl.style.cssText</code>(via the DOM API).<br>(exceptions): this option is not applicable when <a href="https://echarts.apache.org/option.html#tooltip.renderMode">tooltip.renderMode: \'richText\'</a>.<br></td>\n<td>Safe if the input comes from trusted sources; otherwise, a careful assessment is required.<br><br>See section <a href="en/best-practices/security#passing_inline_css_safely">&quot;Passing inline CSS Safely&quot;</a> for details.</td>\n</tr>\n<tr>\n<td><strong>option <a href="https://echarts.apache.org/option.html#title.link">title.link</a></strong><br><strong>option <a href="https://echarts.apache.org/option.html#title.sublink">title.sublink</a></strong><br><strong>option <a href="https://echarts.apache.org/option.html#series-treemap.data.link">series-treemap.data.link</a></strong><br><strong>option <a href="https://echarts.apache.org/option.html#series-sunburst.data.link">series-sunburst.data.link</a></strong><br>· They accept raw URLs directly for these links.</td>\n<td>Safe if the input comes from trusted sources; otherwise, XSS risks should be considered.<br><br>See section <a href="en/best-practices/security#passing_raw_urls_safely">&quot;Passing Raw URLs Safely&quot;</a> for safe usage recommendations.</td>\n</tr>\n<tr>\n<td><strong>option <a href="https://echarts.apache.org/option.html#toolbox.feature.saveAsImage.name">toolbox.feature.saveAsImage.name</a></strong><br><strong>option <a href="https://echarts.apache.org/option.html#toolbox.feature.saveAsImage.type">toolbox.feature.saveAsImage.type</a></strong><br><strong>option <a href="https://echarts.apache.org/option.html#title.text">title[0].text</a></strong><br>· The download filename is assembled by <code>{name}.{type}</code> without validation or sanitization. If <code>name</code> is not provided, <code>title[0].text</code> (if any) has historically been used instead, although this usage is not recommended.</td>\n<td>See section <a href="en/best-practices/security#passing_download_filename_safely">&quot;Passing Download Filename Safely&quot;</a> for safe usage recommendations.</td>\n</tr>\n<tr>\n<td>All JS-function inputs (callbacks)</td>\n<td>This is generally not a concern, unless special requirements involve untrusted code.<br><br>See section <a href="en/best-practices/security#passing_js_function_safely">&quot;Passing JS Function Safely&quot;</a> for details.</td>\n</tr>\n</tbody>\n</table>\n<h2 id="passing_raw_html_safely" tabindex="-1">Passing Raw HTML Safely</h2>\n<p>Section <a href="en/best-practices/security#security_model_and_checklist">&quot;Security Model and Checklist&quot;</a> have listed the APIs that accept raw HTML directly. Untrusted HTML may lead to XSS and related attacks, so additional processing is required before passing content to ECharts. Several commonly used mitigation approaches -- &quot;HTML Escaping&quot;, &quot;Sanitization&quot;, &quot;Sandboxing&quot; are described below. In most cases, &quot;HTML Escaping&quot; is sufficient, except when unescaped content comes from untrusted sources.</p>\n<h3 id="passing_raw_html_safely_html_escaping" tabindex="-1">HTML Escaping</h3>\n<p>HTML escaping is always necessary for data before assembling it to an HTML string -- not only for security, but also for the basic correctness of display.</p>\n<p>A typical and simplest HTML escaping implementation is these character conversions:</p>\n<pre><code>\'&amp;\' =&gt; \'&amp;amp;\'\n\'&lt;\' =&gt; \'&amp;lt;\'\n\'&gt;\' =&gt; \'&amp;gt;\'\n\'&quot;\' =&gt; \'&amp;quot;\'\n&quot;\'&quot; =&gt; \'&amp;#39;\n</code></pre>\n<p>It removes the functionality from the markup characters, thereby closing the attack vector for code injection (e.g., <code>&lt;script&gt;...&lt;/script&gt;</code>), regardless of whether the content is trusted or untrusted.</p>\n<p>For example,\n<md-code-block lang="js" code="\'Ly8gSW5jb3JyZWN0IGFuZCB1bnNhZmUuCmZvcm1hdHRlcjogcGFyYW1zID0-IHsKICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IHBhcmFtczsKICAgIC8vIE1heSBjYXVzZSBpbmNvcnJlY3QgcmVuZGVyaW5nIGlmIGBuYW1lYCBvciBgdmFsdWVgIGNvbnRhaW4gZnVuY3Rpb25hbAogICAgLy8gY2hhcmFjdG9ycyBsaWtlICc8JywgJz4nLCBldGMuCiAgICAvLyBBZGRpdGlvbmFsbHksIGl0IGludHJvZHVjZXMgWFNTIHJpc2tzIGlmIGBuYW1lYCBvciBgdmFsdWVgIGNvbWUgZnJvbQogICAgLy8gdW50cnVzdGVkIHNvdXJjZXMsIHdoZXJlIG1hbGljaW91cyBjb2RlIG1heSBiZSBpbmplY3RlZCBpbnRvIHRoYXQgc3RyaW5ncy4KICAgIHJldHVybiBgJHtuYW1lfSwgPGI-JHt2YWx1ZX08L2I-YDsKfQovLyBDb3JyZWN0IGFuZCBzYWZlLgpmb3JtYXR0ZXI6IHBhcmFtcyA9PiB7CiAgICBjb25zdCB7IG5hbWUsIHZhbHVlIH0gPSBwYXJhbXM7CiAgICByZXR1cm4gYCR7ZWNoYXJ0cy5mb3JtYXQuZW5jb2RlSFRNTChuYW1lKX0sIDxiPiR7ZWNoYXJ0cy5mb3JtYXQuZW5jb2RlSFRNTCh2YWx1ZSl9PGIvPmA7Cn0\'" line-highlights="\'\'" /></p>\n<p>Other approaches, like using DOM API <code>.textContent = </code>, can also escape HTML.</p>\n<p>In most use cases, untrusted content (e.g., user-provided text) is only used for display as plain text, while markup tokens (i.e., parts not meant to be escaped, such as HTML tags or attributes) are fully controlled by the application owner and therefore trusted. In this scenario, HTML escaping alone is an effective and simple way to prevent from XSS, as lone as all untrusted content is properly escaped.</p>\n<h3 id="passing_raw_html_safely_sanitization" tabindex="-1">Sanitization</h3>\n<p>Some use cases require untrusted markup tokens to be interpreted as actual markup. For example, text from a database may include styling or functional tags (e.g., <code>&lt;em&gt;</code>, <code>&lt;a href=&quot;...&quot;&gt;</code>) that are meant to be interpreted rather than displayed as plain text. Another example is that users or untrusted sources are allowed to provide HTML templates that define structures and styles, which are later combined with data content to produce the final renderable HTML and passed to ECharts.</p>\n<p>In these cases, the security risks are heightened. Sanitization can be applied to mitigate those risks, provided that no embedded JS and CSS code is allowed to execute. A sanitizer filters HTML content based on predefined whitelists -- for example, removing <code>&lt;script&gt;</code> and <code>&lt;style&gt;</code> blocks, <code>&lt;link&gt;</code> elements, inline CSS, event handler attributes such as <code>onclick</code>, and URLs using <code>javascript:</code>/<code>data:</code> protocol. It\'s recommended to use a well-maintained and widely adopted sanitizer rather than writing your own regex or manual string manipulations.</p>\n<p>Sanitization may be enforced on the client-side, on the server-side, or both, depending on the product requirements and threat model. For example, concerning content that originates from client (e.g., submitted by users), relying only on client-side sanitization is insufficient because an attacker can bypass the client and submit crafted payloads directly to the server. For instance, an online visual editor lets users compose posts in a WYSIWYG fashion, where users can choose from several built-in HTML snippets/templates or JS-functions (e.g., for <a href="https://echarts.apache.org/option.html#tooltip.formatter">tooltip.formatter</a> or <a href="https://echarts.apache.org/option.html#series-scatter.label.formatter">label.formatter</a>). If the selected or generated HTML text or JS-function text are sent from client to server and persisted to the database without any additional handling, an attacker can simulate a network request to inject malicious code. Later, when those options are retrieved and passed to <a href="https://echarts.apache.org/api.html#echartsInstance.setOption">chart.setOption()</a>, the malicious code will execute. There are some recommended mitigations for this case:</p>\n<ul>\n<li>Persist only reference (IDs) to this built-in snippets/tempates or JS-functions, not raw code supplied by client.</li>\n<li>If user-provided snippets are allowed for expressiveness (beyond built-in selections), some third-party string templating libraries may be introduced to preventing injection.</li>\n<li>If user-provided snippets must allow HTML (beyond the approaches above), enforce strict server-side sanitization or validation before persisting. This should include removing all JS, CSS, and other potentially unsafe content. Additionally, consider using a sandboxed iframe to limit the potential impact of any remaining security issues.</li>\n</ul>\n<p>Achieving sufficient security through sanitization is sometimes not easy. It requires proper configurations, must be kept up to date with browers changes, and often needs to be combined with other defense mechanisms to be &quot;safe enough&quot; for most real-world use cases. HTML is extremely complex -- the more features are allowed in untrusted content, the more potential attack vectors are introduced.</p>\n<h3 id="passing_raw_html_sandboxing" tabindex="-1">Sandboxing</h3>\n<p>If executing untrusted code is required, or other measures are considered insufficient, a sandboxed iframe can provide a higher level of security, as used by services like JSFiddle and CodePen.</p>\n<h2 id="passing_inline_css_safely" tabindex="-1">Passing inline CSS Safely</h2>\n<p>Although CSS safety issues are covered by the discussion about HTML safety (see section <a href="en/best-practices/security#passing_raw_html_safely">&quot;Passing Raw HTML Safely&quot;</a>), this section focuses on the APIs that only accept inline CSS strings (those that modify <code>style</code> attribute via the DOM API <code>.style.cssText =</code>), which are listed in section <a href="en/best-practices/security#security_model_and_checklist">&quot;Security Model and Checklist&quot;</a>.</p>\n<p>If the inline CSS strings come entirely from trusted sources (e.g., they are part of your application), security considerations are minimal -- this is also the most common case.</p>\n<p>Otherwise, untrusted CSS can lead to attacks. Some widely adopted HTML sanitizers support CSS sanitization, but may remove all CSS by default, since sanitizing CSS properly is quite complex. Therefore, accepting untrusted CSS requires meticulous assessment base on the specific use case.</p>\n<h2 id="passing_raw_urls_safely" tabindex="-1">Passing Raw URLs Safely</h2>\n<p>Although URL safety issues is covered by the discussion of HTML safety (see section <a href="en/best-practices/security#passing_raw_html_safely">&quot;Passing Raw HTML Safely&quot;</a>), this section focuses on the APIs that only accept URL strings, which is listed in section <a href="en/best-practices/security#security_model_and_checklist">&quot;Security Model and Checklist&quot;</a>.</p>\n<p>If the URL strings are entirely from trusted sources (e.g., they are part of your application), security considerations are minimal.</p>\n<p>Otherwise, untrusted URL strings can lead to attacks, for example, by using protocols, such as <code>javascript:</code> or <code>data:</code>, to execute malicious code. Therefore, before passing them to ECharts, sanitization should be enforced, typically by validating the protocol against a specified whitelist.</p>\n<h2 id="passing_download_filename_safely" tabindex="-1">Passing Download Filename Safely</h2>\n<p>Currently, only the <a href="https://echarts.apache.org/option.html#toolbox.feature.saveAsImage">saveAsImage</a> feature accepts an input as a filename. This input can be considered safe if it originates from trusted sources, does not exceed the length limit, and contains exclusively ASCII alphabetic characters.</p>\n<p>Otherwise, although modern browsers have significantly improved their handling of unsanitized download filenames (e.g., path traversal sequences <code>../</code>, <code>..\\\\</code> are stripped, and special characters are correctly handled), some risks still remain, including the inconsistent behaviors with reserved characters and length limitations. Furthermore, the behavior of older clients or browsers is unclear and less robust. Therefore, sanitization or preprocessing are required for these untrusted inputs.</p>\n<h2 id="passing_js_function_safely" tabindex="-1">Passing JS Function Safely</h2>\n<p>ECharts options (i.e., the input to <a href="https://echarts.apache.org/api.html#echartsInstance.setOption">chart.setOption()</a>) are primarily declarative, but some options accept JS-function (callbacks) to provide greater expressiveness and flexibility. Examples include <a href="https://echarts.apache.org/option.html#series-scatter.label.formatter">label.formatter</a>, <a href="https://echarts.apache.org/option.html#xAxis.axisTick.interval">axisTick.interval</a>, and similar. In most use cases, these JS-function options are part of the source code of the application itself and thus fully trusted, so no security risk is introduced.</p>\n<p>However, certain products may allow JS-function options to originate from untrusted sources, for example, end users. Allowing this introduces both security risks and maintenance costs. Essentially, this scenario carries the same level of risk as allowing code execution in untrusted raw HTML, and can be mitigated using similar approaches, as discussed in <a href="en/best-practices/security#passing_raw_html_safely">&quot;Passing Raw HTML Safely&quot;</a>.</p>\n',postPath:"en/best-practices/security",title:"Security Guidelines - Best Practices"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:a},{title:"入门篇",dir:r,children:[{title:"获取 ECharts",dir:s},{title:"在项目中引入 ECharts",dir:o},{title:"资源列表",dir:n,draft:e},{title:"寻求帮助",dir:l},{title:"版本特性",dir:d,children:[{title:"ECharts 6 特性介绍",dir:c},{title:"v5 升级 v6 指南",dir:h},{title:"5.0",dir:p},{title:"v4 升级 v5 指南",dir:u},{title:5.2,dir:f},{title:5.3,dir:m},{title:5.4,dir:g},{title:5.5,dir:b},{title:5.6,dir:y}]}]},{title:"概念篇",dir:v,children:[{title:"图表容器及大小",dir:S},{title:"配置项",dir:w,draft:e},{title:"系列",dir:x,draft:e},{title:"样式",dir:C},{title:"数据集",dir:I},{title:"数据转换",dir:k},{title:"坐标系",dir:T,draft:e},{title:"坐标轴",dir:_},{title:"视觉映射",dir:i},{title:"图例",dir:L},{title:"事件与行为",dir:H}]},{title:"应用篇",dir:M,children:[{title:"常用图表类型",dir:P,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:A},{title:"堆叠柱状图",dir:q},{title:"动态排序柱状图",dir:B},{title:"极坐标系柱状图",dir:R,draft:e},{title:"阶梯瀑布图",dir:G},{title:"视觉映射的柱状图",dir:i,draft:e}]},{title:"折线图",dir:z,children:[{title:"基础折线图",dir:J},{title:"堆叠折线图",dir:E},{title:"区域面积图",dir:W},{title:"平滑曲线图",dir:F},{title:"阶梯线图",dir:V}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:Z},{title:"圆环图",dir:Y},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:X,children:[{title:"基础散点图",dir:j}]}]},{title:"常用组件",dir:D,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:U}]}]},{title:"移动端优化",dir:t,draft:e},{title:"跨平台方案",dir:N,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:O},{title:"数据下钻",dir:Q,draft:e}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:K}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:ee}]},{title:"交互",dir:te,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:ie,draft:e},{title:"智能指针吸附",dir:ae}]}]},{title:"最佳实践",dir:re,children:[{title:"移动端优化",dir:t,draft:e},{title:se,dir:oe},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:ne}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:le}]}],en:[{title:"Get Started",dir:a},{title:"Basics",dir:r,children:[{title:"Download ECharts",dir:s},{title:"Import ECharts",dir:o},{title:"Resources",dir:n,draft:e},{title:"Get Help",dir:l},{title:"What's New",dir:d,children:[{title:"ECharts 6 Features",dir:c},{title:"Migration from v5 to v6",dir:h},{title:"5.0",dir:p},{title:"Migration from v4 to v5",dir:u},{title:5.2,dir:f},{title:5.3,dir:m},{title:5.4,dir:g},{title:5.5,dir:b},{title:5.6,dir:y}]}]},{title:"Concepts",dir:v,children:[{title:"Chart Container",dir:S},{title:"Chart Option",dir:w,draft:e},{title:"Series",dir:x,draft:e},{title:"Style",dir:C},{title:"Dataset",dir:I},{title:"Data Transform",dir:k},{title:"Coordinate",dir:T,draft:e},{title:"Axis",dir:_},{title:"Visual Mapping",dir:i},{title:"Legend",dir:L},{title:"Event and Action",dir:H}]},{title:"How To Guides",dir:M,children:[{title:"Common Charts",dir:P,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:A},{title:"Stacked Bar",dir:q},{title:"Bar Racing",dir:B},{title:"Bar Polar",dir:R,draft:e},{title:"Waterfall",dir:G}]},{title:"Line",dir:z,children:[{title:"Basic Line",dir:J},{title:"Stacked Line",dir:E},{title:"Area Chart",dir:W},{title:"Smoothed Line",dir:F},{title:"Step Line",dir:V}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:Z},{title:"Ring Style",dir:Y},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:X,children:[{title:"Basic Scatter",dir:j}]}]},{title:"Common Components",dir:D,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:U}]}]},{title:"Mobile",dir:t,draft:e},{title:"Cross Platform",dir:N,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:O},{title:"Drilldown",dir:Q,draft:e}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:K}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:ee}]},{title:"Interaction",dir:te,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:ie,draft:e},{title:"Intelligent Pointer Snapping",dir:ae}]}]},{title:"Best Practices",dir:re,children:[{title:"Mobile Optimization",dir:t,draft:e},{title:se,dir:oe},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:ne}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:le}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:e,routePath:"/en/best-practices/security",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/en/concepts/axis/index.html b/docs/en/concepts/axis/index.html
new file mode 100644
index 0000000..8a65743
--- /dev/null
+++ b/docs/en/concepts/axis/index.html
@@ -0,0 +1,286 @@
+<!doctype html>
+<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Axis - Concepts - Handbook - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="en"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/en/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/en/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/en/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/en/index.html" class="navbar-brand"><img src="https://echarts.apache.org/en/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/en/index.html">Home</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Docs<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/feature.html">Features</a></li><li><a href="https://echarts.apache.org/handbook/en/get-started/">Handbook</a></li><li><a href="https://echarts.apache.org/en/api.html">API</a></li><li><a href="https://echarts.apache.org/en/option.html">Chart Configuration</a></li><li><a href="https://echarts.apache.org/en/changelog.html">Changelog</a></li><li><a href="https://echarts.apache.org/en/faq.html">FAQ</a></li><li><a href="https://echarts.apache.org/handbook/en/basics/release-note/v6-upgrade-guide">V6 Upgrade Guide</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Download<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/download.html">Download</a></li><li><a href="https://echarts.apache.org/en/download-theme.html">Download Themes</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">Download Custom Series<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/download-extension.html">Download Extensions</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/en/index.html">Examples</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Resources<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/spreadsheet.html">Spread Sheet Tool</a></li><li><a href="https://echarts.apache.org/en/theme-builder.html">Theme Builder</a></li><li><a href="https://echarts.apache.org/en/cheat-sheet.html">Cheat Sheet</a></li><li><a href="https://echarts.apache.org/en/resources.html">More Resources</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/events.html">Events</a></li><li><a href="https://echarts.apache.org/en/committers.html">Committers</a></li><li><a href="https://echarts.apache.org/en/maillist.html">Mailing List</a></li><li><a href="https://echarts.apache.org/en/contributing.html">How to Contribute</a></li><li><a href="https://echarts.apache.org/en/dependencies.html">Dependencies</a></li><li><a href="https://echarts.apache.org/en/coding-standard.html">Code Standard</a></li><li><a href="https://github.com/apache/echarts" target="_blank">Source Code (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/security.html">Security</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">License<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">Events<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("zh")'>中文</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/en/get-started" class="nav-link"><span class="title">Get Started</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Basics</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/basics/download" class="nav-link"><span class="title">Download ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/import" class="nav-link"><span class="title">Import ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/basics/help" class="nav-link"><span class="title">Get Help</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">What's New</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 Features</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">Migration from v5 to v6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">Migration from v4 to v5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Concepts</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/concepts/chart-size" class="nav-link"><span class="title">Chart Container</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/style" class="nav-link"><span class="title">Style</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/dataset" class="nav-link"><span class="title">Dataset</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/data-transform" class="nav-link"><span class="title">Data Transform</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/axis" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">Axis</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/visual-map" class="nav-link"><span class="title">Visual Mapping</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/legend" class="nav-link"><span class="title">Legend</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/event" class="nav-link"><span class="title">Event and Action</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">How To Guides</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">Common Charts</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Bar</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">Basic Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">Stacked Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">Bar Racing</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">Waterfall</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Line</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">Basic Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">Stacked Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/area-line" class="nav-link"><span class="title">Area Chart</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">Smoothed Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/step-line" class="nav-link"><span class="title">Step Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Pie</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">Basic Pie</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">Ring Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/rose" class="nav-link"><span class="title">Rose Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Scatter</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">Basic Scatter</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Common Components</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Geo</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG Base Map</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">Cross Platform</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/cross-platform/server" class="nav-link"><span class="title">Server Side Rendering</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Data</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/data/dynamic-data" class="nav-link"><span class="title">Dynamic Data</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Label</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/label/rich-text" class="nav-link"><span class="title">Rich Text</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Animation</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/animation/transition" class="nav-link"><span class="title">Data Transition</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Interaction</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/drag" class="nav-link"><span class="title">Drag</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">Intelligent Pointer Snapping</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Best Practices</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/en/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/aria" class="nav-link"><span class="title">Aria</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/security" class="nav-link"><span class="title">Security Guidelines</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Edit Handbook</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/meta/edit-guide" class="nav-link"><span class="title">Edit Guide</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="axis" tabindex="-1">Axis</h1> <p>The x/y-axis in the Cartesian coordinate system.</p> <h2 id="x-axis%2C-y-axis" tabindex="-1">x-axis, y-axis</h2> <p>Both x-axis and y-axis included axis line, tick, label and title. Some chart will use the grid to assist the data viewing and calculating.</p> <p><img max-width="830" width="100%" height="100%" src="images/design/axis/charts_axis_img02.jpg"></p> <p>A normal 2D coordinate system has x-axis and y-axis. X-axis located at the bottom while y-axis at the left side in common. The Config is shown below:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token comment">// ...</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token comment">// ...</span>
+  <span class="token punctuation">}</span>
+  <span class="token comment">// ...</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>The x-axis is usually used to declare the number of categories which was also called the aspects of observing the data: "Sales Time", "Sales Location" and "product name", etc.. The y-axis usually used to indicate the numerical value of categories. These data are used to examine the quantitative value of a certain type of data or some indicator you need to analyze, such as "Sales Quantity" and "Sales Price".</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'time'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Sales Time'</span>
+    <span class="token comment">// ...</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'value'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Sales Quantity'</span>
+    <span class="token comment">// ...</span>
+  <span class="token punctuation">}</span>
+  <span class="token comment">// ...</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>When x-axis has a large span, we can use the zoom method to display part of the data in the chart.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'time'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Sales Time'</span>
+    <span class="token comment">// ...</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'value'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Sales Quantity'</span>
+    <span class="token comment">// ...</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">dataZoom</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
+  <span class="token comment">// ...</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>In two-dimensional data, there can be more than two axes. There are usually two x or y axes at the same time in ECharts. You can change the config <a href="https://echarts.apache.org/option.html#xAxis.offset">offset</a> to avoid overlaps of axes at the same place. X-axes can be displayed at the top and bottom, y-axes at left and right.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'time'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Sales Time'</span>
+    <span class="token comment">// ...</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'value'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Sales Quantity'</span>
+      <span class="token comment">// ...</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'value'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Sales Price'</span>
+      <span class="token comment">// ...</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+  <span class="token comment">// ...</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="axis-line" tabindex="-1">Axis Line</h2> <p>ECharts provide the config of <a href="https://echarts.apache.org/option.html#xAxis.axisLine">axisLine</a>. You can change the setting according to the demand, such as the arrow on two sides and the style of axes.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">axisLine</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">symbol</span><span class="token operator">:</span> <span class="token string">'arrow'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">lineStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'dashed'</span>
+        <span class="token comment">// ...</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+    <span class="token comment">// ...</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">axisLine</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">symbol</span><span class="token operator">:</span> <span class="token string">'arrow'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">lineStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'dashed'</span>
+        <span class="token comment">// ...</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span>
+  <span class="token comment">// ...</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="tick" tabindex="-1">Tick</h2> <p>ECharts provide the config <a href="https://echarts.apache.org/option.html#xAxis.axisTick">axisTick</a>. You can change the setting according to the demand, such as the length of ticks, and the style of ticks.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">axisTick</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">length</span><span class="token operator">:</span> <span class="token number">6</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">lineStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'dashed'</span>
+        <span class="token comment">// ...</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+    <span class="token comment">// ...</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">axisTick</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">length</span><span class="token operator">:</span> <span class="token number">6</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">lineStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'dashed'</span>
+        <span class="token comment">// ...</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span>
+  <span class="token comment">// ...</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="label" tabindex="-1">Label</h2> <p>ECharts provide the config <a href="https://echarts.apache.org/option.html#xAxis.axisLabel">axisLabel</a>. You can change the setting according to the demand, such as the text alignment and the customized label content.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">axisLabel</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">formatter</span><span class="token operator">:</span> <span class="token string">'{value} kg'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">align</span><span class="token operator">:</span> <span class="token string">'center'</span>
+      <span class="token comment">// ...</span>
+    <span class="token punctuation">}</span>
+    <span class="token comment">// ...</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">axisLabel</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">formatter</span><span class="token operator">:</span> <span class="token string">'{value} ¥'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">align</span><span class="token operator">:</span> <span class="token string">'center'</span>
+      <span class="token comment">// ...</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span>
+  <span class="token comment">// ...</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="example" tabindex="-1">Example</h2> <p>The y-axis on the left side represents the monthly average temperature in Tokyo, the y-axis on the right side represents the precipitation of Tokyo. The x-axis represents the time. It reflects the trend and relation between the average temperature and precipitation.</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  tooltip: {
+    trigger: 'axis',
+    axisPointer: { type: 'cross' }
+  },
+  legend: {},
+  xAxis: [
+    {
+      type: 'category',
+      axisTick: {
+        alignWithLabel: true
+      },
+      axisLabel: {
+        rotate: 30
+      },
+      data: [
+        'January',
+        'February',
+        'March',
+        'April',
+        'May',
+        'June',
+        'July',
+        'August',
+        'September',
+        'October',
+        'November',
+        'December'
+      ]
+    }
+  ],
+  yAxis: [
+    {
+      type: 'value',
+      name: 'Precipitation',
+      min: 0,
+      max: 250,
+      position: 'right',
+      axisLabel: {
+        formatter: '{value} ml'
+      }
+    },
+    {
+      type: 'value',
+      name: 'Temperature',
+      min: 0,
+      max: 25,
+      position: 'left',
+      axisLabel: {
+        formatter: '{value} °C'
+      }
+    }
+  ],
+  series: [
+    {
+      name: 'Precipitation',
+      type: 'bar',
+      yAxisIndex: 0,
+      data: [6, 32, 70, 86, 68.7, 100.7, 125.6, 112.2, 78.7, 48.8, 36.0, 19.3]
+    },
+    {
+      name: 'Temperature',
+      type: 'line',
+      smooth: true,
+      yAxisIndex: 1,
+      data: [
+        6.0,
+        10.2,
+        10.3,
+        11.5,
+        10.3,
+        13.2,
+        14.3,
+        16.4,
+        18.0,
+        16.5,
+        12.0,
+        5.2
+      ]
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">tooltip</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">trigger</span><span class="token operator">:</span> <span class="token string">'axis'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">axisPointer</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'cross'</span> <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">legend</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'category'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">axisTick</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">alignWithLabel</span><span class="token operator">:</span> <span class="token boolean">true</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">axisLabel</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">rotate</span><span class="token operator">:</span> <span class="token number">30</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token string">'January'</span><span class="token punctuation">,</span>
+        <span class="token string">'February'</span><span class="token punctuation">,</span>
+        <span class="token string">'March'</span><span class="token punctuation">,</span>
+        <span class="token string">'April'</span><span class="token punctuation">,</span>
+        <span class="token string">'May'</span><span class="token punctuation">,</span>
+        <span class="token string">'June'</span><span class="token punctuation">,</span>
+        <span class="token string">'July'</span><span class="token punctuation">,</span>
+        <span class="token string">'August'</span><span class="token punctuation">,</span>
+        <span class="token string">'September'</span><span class="token punctuation">,</span>
+        <span class="token string">'October'</span><span class="token punctuation">,</span>
+        <span class="token string">'November'</span><span class="token punctuation">,</span>
+        <span class="token string">'December'</span>
+      <span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'value'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Precipitation'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">min</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">max</span><span class="token operator">:</span> <span class="token number">250</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">position</span><span class="token operator">:</span> <span class="token string">'right'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">axisLabel</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">formatter</span><span class="token operator">:</span> <span class="token string">'{value} ml'</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'value'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Temperature'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">min</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">max</span><span class="token operator">:</span> <span class="token number">25</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">position</span><span class="token operator">:</span> <span class="token string">'left'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">axisLabel</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">formatter</span><span class="token operator">:</span> <span class="token string">'{value} °C'</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Precipitation'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">yAxisIndex</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">6</span><span class="token punctuation">,</span> <span class="token number">32</span><span class="token punctuation">,</span> <span class="token number">70</span><span class="token punctuation">,</span> <span class="token number">86</span><span class="token punctuation">,</span> <span class="token number">68.7</span><span class="token punctuation">,</span> <span class="token number">100.7</span><span class="token punctuation">,</span> <span class="token number">125.6</span><span class="token punctuation">,</span> <span class="token number">112.2</span><span class="token punctuation">,</span> <span class="token number">78.7</span><span class="token punctuation">,</span> <span class="token number">48.8</span><span class="token punctuation">,</span> <span class="token number">36.0</span><span class="token punctuation">,</span> <span class="token number">19.3</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Temperature'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">smooth</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">yAxisIndex</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token number">6.0</span><span class="token punctuation">,</span>
+        <span class="token number">10.2</span><span class="token punctuation">,</span>
+        <span class="token number">10.3</span><span class="token punctuation">,</span>
+        <span class="token number">11.5</span><span class="token punctuation">,</span>
+        <span class="token number">10.3</span><span class="token punctuation">,</span>
+        <span class="token number">13.2</span><span class="token punctuation">,</span>
+        <span class="token number">14.3</span><span class="token punctuation">,</span>
+        <span class="token number">16.4</span><span class="token punctuation">,</span>
+        <span class="token number">18.0</span><span class="token punctuation">,</span>
+        <span class="token number">16.5</span><span class="token punctuation">,</span>
+        <span class="token number">12.0</span><span class="token punctuation">,</span>
+        <span class="token number">5.2</span>
+      <span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>These are the concise intro of the usage of axis config. Check more details at: <a href="https://echarts.apache.org/option.html#xAxis">Official Website</a>.</p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">Contributors</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/en/concepts/axis.md" title="Edit this Document" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">Edit this page on GitHub</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(i,t,e,a,g,d,l,r,I,C,o,n,s,A,h,c,p,u,m,b,x,B,f,w,y,L,G,K,v,H,Z,W,X,T,F,J,S,V,O,M,k,Y,z,D,R,U,Q,j,E,N,P,q,_,$,ii,ti,ei,ai,gi,di,li,ri,Ii){return{layout:"default",data:[{html:'<h1 id="axis" tabindex="-1">Axis</h1>\n<p>The x/y-axis in the Cartesian coordinate system.</p>\n<h2 id="x-axis%2C-y-axis" tabindex="-1">x-axis, y-axis</h2>\n<p>Both x-axis and y-axis included axis line, tick, label and title. Some chart will use the grid to assist the data viewing and calculating.</p>\n<p><img max-width="830" width="100%" height="100%"\nsrc="images/design/axis/charts_axis_img02.jpg">\n</img></p>\n<p>A normal 2D coordinate system has x-axis and y-axis. X-axis located at the bottom while y-axis at the left side in common. The Config is shown below:</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICAvLyAuLi4KICB9LAogIHlBeGlzOiB7CiAgICAvLyAuLi4KICB9CiAgLy8gLi4uCn07\'" line-highlights="\'\'" />\n<p>The x-axis is usually used to declare the number of categories which was also called the aspects of observing the data: &quot;Sales Time&quot;, &quot;Sales Location&quot; and &quot;product name&quot;, etc.. The y-axis usually used to indicate the numerical value of categories. These data are used to examine the quantitative value of a certain type of data or some indicator you need to analyze, such as &quot;Sales Quantity&quot; and &quot;Sales Price&quot;.</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICB0eXBlOiAndGltZScsCiAgICBuYW1lOiAnU2FsZXMgVGltZScKICAgIC8vIC4uLgogIH0sCiAgeUF4aXM6IHsKICAgIHR5cGU6ICd2YWx1ZScsCiAgICBuYW1lOiAnU2FsZXMgUXVhbnRpdHknCiAgICAvLyAuLi4KICB9CiAgLy8gLi4uCn07\'" line-highlights="\'\'" />\n<p>When x-axis has a large span, we can use the zoom method to display part of the data in the chart.</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICB0eXBlOiAndGltZScsCiAgICBuYW1lOiAnU2FsZXMgVGltZScKICAgIC8vIC4uLgogIH0sCiAgeUF4aXM6IHsKICAgIHR5cGU6ICd2YWx1ZScsCiAgICBuYW1lOiAnU2FsZXMgUXVhbnRpdHknCiAgICAvLyAuLi4KICB9LAogIGRhdGFab29tOiBbXQogIC8vIC4uLgp9Ow\'" line-highlights="\'\'" />\n<p>In two-dimensional data, there can be more than two axes. There are usually two x or y axes at the same time in ECharts. You can change the config <a href="https://echarts.apache.org/option.html#xAxis.offset">offset</a> to avoid overlaps of axes at the same place. X-axes can be displayed at the top and bottom, y-axes at left and right.</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICB0eXBlOiAndGltZScsCiAgICBuYW1lOiAnU2FsZXMgVGltZScKICAgIC8vIC4uLgogIH0sCiAgeUF4aXM6IFsKICAgIHsKICAgICAgdHlwZTogJ3ZhbHVlJywKICAgICAgbmFtZTogJ1NhbGVzIFF1YW50aXR5JwogICAgICAvLyAuLi4KICAgIH0sCiAgICB7CiAgICAgIHR5cGU6ICd2YWx1ZScsCiAgICAgIG5hbWU6ICdTYWxlcyBQcmljZScKICAgICAgLy8gLi4uCiAgICB9CiAgXQogIC8vIC4uLgp9Ow\'" line-highlights="\'\'" />\n<h2 id="axis-line" tabindex="-1">Axis Line</h2>\n<p>ECharts provide the config of <a href="https://echarts.apache.org/option.html#xAxis.axisLine">axisLine</a>. You can change the setting according to the demand, such as the arrow on two sides and the style of axes.</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBheGlzTGluZTogewogICAgICBzeW1ib2w6ICdhcnJvdycsCiAgICAgIGxpbmVTdHlsZTogewogICAgICAgIHR5cGU6ICdkYXNoZWQnCiAgICAgICAgLy8gLi4uCiAgICAgIH0KICAgIH0KICAgIC8vIC4uLgogIH0sCiAgeUF4aXM6IHsKICAgIGF4aXNMaW5lOiB7CiAgICAgIHN5bWJvbDogJ2Fycm93JywKICAgICAgbGluZVN0eWxlOiB7CiAgICAgICAgdHlwZTogJ2Rhc2hlZCcKICAgICAgICAvLyAuLi4KICAgICAgfQogICAgfQogIH0KICAvLyAuLi4KfTs\'" line-highlights="\'\'" />\n<h2 id="tick" tabindex="-1">Tick</h2>\n<p>ECharts provide the config <a href="https://echarts.apache.org/option.html#xAxis.axisTick">axisTick</a>. You can change the setting according to the demand, such as the length of ticks, and the style of ticks.</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBheGlzVGljazogewogICAgICBsZW5ndGg6IDYsCiAgICAgIGxpbmVTdHlsZTogewogICAgICAgIHR5cGU6ICdkYXNoZWQnCiAgICAgICAgLy8gLi4uCiAgICAgIH0KICAgIH0KICAgIC8vIC4uLgogIH0sCiAgeUF4aXM6IHsKICAgIGF4aXNUaWNrOiB7CiAgICAgIGxlbmd0aDogNiwKICAgICAgbGluZVN0eWxlOiB7CiAgICAgICAgdHlwZTogJ2Rhc2hlZCcKICAgICAgICAvLyAuLi4KICAgICAgfQogICAgfQogIH0KICAvLyAuLi4KfTs\'" line-highlights="\'\'" />\n<h2 id="label" tabindex="-1">Label</h2>\n<p>ECharts provide the config <a href="https://echarts.apache.org/option.html#xAxis.axisLabel">axisLabel</a>. You can change the setting according to the demand, such as the text alignment and the customized label content.</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBheGlzTGFiZWw6IHsKICAgICAgZm9ybWF0dGVyOiAne3ZhbHVlfSBrZycsCiAgICAgIGFsaWduOiAnY2VudGVyJwogICAgICAvLyAuLi4KICAgIH0KICAgIC8vIC4uLgogIH0sCiAgeUF4aXM6IHsKICAgIGF4aXNMYWJlbDogewogICAgICBmb3JtYXR0ZXI6ICd7dmFsdWV9IMKlJywKICAgICAgYWxpZ246ICdjZW50ZXInCiAgICAgIC8vIC4uLgogICAgfQogIH0KICAvLyAuLi4KfTs\'" line-highlights="\'\'" />\n<h2 id="example" tabindex="-1">Example</h2>\n<p>The y-axis on the left side represents the monthly average temperature in Tokyo, the y-axis on the right side represents the precipitation of Tokyo. The x-axis represents the time. It reflects the trend and relation between the average temperature and precipitation.</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHRvb2x0aXA6IHsKICAgIHRyaWdnZXI6ICdheGlzJywKICAgIGF4aXNQb2ludGVyOiB7IHR5cGU6ICdjcm9zcycgfQogIH0sCiAgbGVnZW5kOiB7fSwKICB4QXhpczogWwogICAgewogICAgICB0eXBlOiAnY2F0ZWdvcnknLAogICAgICBheGlzVGljazogewogICAgICAgIGFsaWduV2l0aExhYmVsOiB0cnVlCiAgICAgIH0sCiAgICAgIGF4aXNMYWJlbDogewogICAgICAgIHJvdGF0ZTogMzAKICAgICAgfSwKICAgICAgZGF0YTogWwogICAgICAgICdKYW51YXJ5JywKICAgICAgICAnRmVicnVhcnknLAogICAgICAgICdNYXJjaCcsCiAgICAgICAgJ0FwcmlsJywKICAgICAgICAnTWF5JywKICAgICAgICAnSnVuZScsCiAgICAgICAgJ0p1bHknLAogICAgICAgICdBdWd1c3QnLAogICAgICAgICdTZXB0ZW1iZXInLAogICAgICAgICdPY3RvYmVyJywKICAgICAgICAnTm92ZW1iZXInLAogICAgICAgICdEZWNlbWJlcicKICAgICAgXQogICAgfQogIF0sCiAgeUF4aXM6IFsKICAgIHsKICAgICAgdHlwZTogJ3ZhbHVlJywKICAgICAgbmFtZTogJ1ByZWNpcGl0YXRpb24nLAogICAgICBtaW46IDAsCiAgICAgIG1heDogMjUwLAogICAgICBwb3NpdGlvbjogJ3JpZ2h0JywKICAgICAgYXhpc0xhYmVsOiB7CiAgICAgICAgZm9ybWF0dGVyOiAne3ZhbHVlfSBtbCcKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgdHlwZTogJ3ZhbHVlJywKICAgICAgbmFtZTogJ1RlbXBlcmF0dXJlJywKICAgICAgbWluOiAwLAogICAgICBtYXg6IDI1LAogICAgICBwb3NpdGlvbjogJ2xlZnQnLAogICAgICBheGlzTGFiZWw6IHsKICAgICAgICBmb3JtYXR0ZXI6ICd7dmFsdWV9IMKwQycKICAgICAgfQogICAgfQogIF0sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIG5hbWU6ICdQcmVjaXBpdGF0aW9uJywKICAgICAgdHlwZTogJ2JhcicsCiAgICAgIHlBeGlzSW5kZXg6IDAsCiAgICAgIGRhdGE6IFs2LCAzMiwgNzAsIDg2LCA2OC43LCAxMDAuNywgMTI1LjYsIDExMi4yLCA3OC43LCA0OC44LCAzNi4wLCAxOS4zXQogICAgfSwKICAgIHsKICAgICAgbmFtZTogJ1RlbXBlcmF0dXJlJywKICAgICAgdHlwZTogJ2xpbmUnLAogICAgICBzbW9vdGg6IHRydWUsCiAgICAgIHlBeGlzSW5kZXg6IDEsCiAgICAgIGRhdGE6IFsKICAgICAgICA2LjAsCiAgICAgICAgMTAuMiwKICAgICAgICAxMC4zLAogICAgICAgIDExLjUsCiAgICAgICAgMTAuMywKICAgICAgICAxMy4yLAogICAgICAgIDE0LjMsCiAgICAgICAgMTYuNCwKICAgICAgICAxOC4wLAogICAgICAgIDE2LjUsCiAgICAgICAgMTIuMCwKICAgICAgICA1LjIKICAgICAgXQogICAgfQogIF0KfTs\'" v-bind="{}" />\n<p>These are the concise intro of the usage of axis config. Check more details at: <a href="https://echarts.apache.org/option.html#xAxis">Official Website</a>.</p>\n',postPath:"en/concepts/axis",title:"Axis - Concepts"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:a},{title:"入门篇",dir:g,children:[{title:"获取 ECharts",dir:d},{title:"在项目中引入 ECharts",dir:l},{title:"资源列表",dir:r,draft:i},{title:"寻求帮助",dir:I},{title:"版本特性",dir:C,children:[{title:"ECharts 6 特性介绍",dir:o},{title:"v5 升级 v6 指南",dir:n},{title:"5.0",dir:s},{title:"v4 升级 v5 指南",dir:A},{title:5.2,dir:h},{title:5.3,dir:c},{title:5.4,dir:p},{title:5.5,dir:u},{title:5.6,dir:m}]}]},{title:"概念篇",dir:b,children:[{title:"图表容器及大小",dir:x},{title:"配置项",dir:B,draft:i},{title:"系列",dir:f,draft:i},{title:"样式",dir:w},{title:"数据集",dir:y},{title:"数据转换",dir:L},{title:"坐标系",dir:G,draft:i},{title:"坐标轴",dir:K},{title:"视觉映射",dir:e},{title:"图例",dir:v},{title:"事件与行为",dir:H}]},{title:"应用篇",dir:Z,children:[{title:"常用图表类型",dir:W,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:X},{title:"堆叠柱状图",dir:T},{title:"动态排序柱状图",dir:F},{title:"极坐标系柱状图",dir:J,draft:i},{title:"阶梯瀑布图",dir:S},{title:"视觉映射的柱状图",dir:e,draft:i}]},{title:"折线图",dir:V,children:[{title:"基础折线图",dir:O},{title:"堆叠折线图",dir:M},{title:"区域面积图",dir:k},{title:"平滑曲线图",dir:Y},{title:"阶梯线图",dir:z}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:D},{title:"圆环图",dir:R},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:U,children:[{title:"基础散点图",dir:Q}]}]},{title:"常用组件",dir:j,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:E}]}]},{title:"移动端优化",dir:t,draft:i},{title:"跨平台方案",dir:N,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:P},{title:"数据下钻",dir:q,draft:i}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:_}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:ii}]},{title:"交互",dir:ti,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:ei,draft:i},{title:"智能指针吸附",dir:ai}]}]},{title:"最佳实践",dir:gi,children:[{title:"移动端优化",dir:t,draft:i},{title:di,dir:li},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:ri}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:Ii}]}],en:[{title:"Get Started",dir:a},{title:"Basics",dir:g,children:[{title:"Download ECharts",dir:d},{title:"Import ECharts",dir:l},{title:"Resources",dir:r,draft:i},{title:"Get Help",dir:I},{title:"What's New",dir:C,children:[{title:"ECharts 6 Features",dir:o},{title:"Migration from v5 to v6",dir:n},{title:"5.0",dir:s},{title:"Migration from v4 to v5",dir:A},{title:5.2,dir:h},{title:5.3,dir:c},{title:5.4,dir:p},{title:5.5,dir:u},{title:5.6,dir:m}]}]},{title:"Concepts",dir:b,children:[{title:"Chart Container",dir:x},{title:"Chart Option",dir:B,draft:i},{title:"Series",dir:f,draft:i},{title:"Style",dir:w},{title:"Dataset",dir:y},{title:"Data Transform",dir:L},{title:"Coordinate",dir:G,draft:i},{title:"Axis",dir:K},{title:"Visual Mapping",dir:e},{title:"Legend",dir:v},{title:"Event and Action",dir:H}]},{title:"How To Guides",dir:Z,children:[{title:"Common Charts",dir:W,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:X},{title:"Stacked Bar",dir:T},{title:"Bar Racing",dir:F},{title:"Bar Polar",dir:J,draft:i},{title:"Waterfall",dir:S}]},{title:"Line",dir:V,children:[{title:"Basic Line",dir:O},{title:"Stacked Line",dir:M},{title:"Area Chart",dir:k},{title:"Smoothed Line",dir:Y},{title:"Step Line",dir:z}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:D},{title:"Ring Style",dir:R},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:U,children:[{title:"Basic Scatter",dir:Q}]}]},{title:"Common Components",dir:j,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:E}]}]},{title:"Mobile",dir:t,draft:i},{title:"Cross Platform",dir:N,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:P},{title:"Drilldown",dir:q,draft:i}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:_}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:ii}]},{title:"Interaction",dir:ti,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:ei,draft:i},{title:"Intelligent Pointer Snapping",dir:ai}]}]},{title:"Best Practices",dir:gi,children:[{title:"Mobile Optimization",dir:t,draft:i},{title:di,dir:li},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:ri}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:Ii}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:i,routePath:"/en/concepts/axis",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/en/concepts/chart-size/index.html b/docs/en/concepts/chart-size/index.html
new file mode 100644
index 0000000..746ce19
--- /dev/null
+++ b/docs/en/concepts/chart-size/index.html
@@ -0,0 +1,41 @@
+<!doctype html>
+<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Chart Container - Concepts - Handbook - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="en"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/en/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/en/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/en/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/en/index.html" class="navbar-brand"><img src="https://echarts.apache.org/en/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/en/index.html">Home</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Docs<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/feature.html">Features</a></li><li><a href="https://echarts.apache.org/handbook/en/get-started/">Handbook</a></li><li><a href="https://echarts.apache.org/en/api.html">API</a></li><li><a href="https://echarts.apache.org/en/option.html">Chart Configuration</a></li><li><a href="https://echarts.apache.org/en/changelog.html">Changelog</a></li><li><a href="https://echarts.apache.org/en/faq.html">FAQ</a></li><li><a href="https://echarts.apache.org/handbook/en/basics/release-note/v6-upgrade-guide">V6 Upgrade Guide</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Download<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/download.html">Download</a></li><li><a href="https://echarts.apache.org/en/download-theme.html">Download Themes</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">Download Custom Series<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/download-extension.html">Download Extensions</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/en/index.html">Examples</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Resources<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/spreadsheet.html">Spread Sheet Tool</a></li><li><a href="https://echarts.apache.org/en/theme-builder.html">Theme Builder</a></li><li><a href="https://echarts.apache.org/en/cheat-sheet.html">Cheat Sheet</a></li><li><a href="https://echarts.apache.org/en/resources.html">More Resources</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/events.html">Events</a></li><li><a href="https://echarts.apache.org/en/committers.html">Committers</a></li><li><a href="https://echarts.apache.org/en/maillist.html">Mailing List</a></li><li><a href="https://echarts.apache.org/en/contributing.html">How to Contribute</a></li><li><a href="https://echarts.apache.org/en/dependencies.html">Dependencies</a></li><li><a href="https://echarts.apache.org/en/coding-standard.html">Code Standard</a></li><li><a href="https://github.com/apache/echarts" target="_blank">Source Code (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/security.html">Security</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">License<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">Events<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("zh")'>中文</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/en/get-started" class="nav-link"><span class="title">Get Started</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Basics</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/basics/download" class="nav-link"><span class="title">Download ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/import" class="nav-link"><span class="title">Import ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/basics/help" class="nav-link"><span class="title">Get Help</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">What's New</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 Features</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">Migration from v5 to v6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">Migration from v4 to v5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Concepts</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/concepts/chart-size" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">Chart Container</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/style" class="nav-link"><span class="title">Style</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/dataset" class="nav-link"><span class="title">Dataset</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/data-transform" class="nav-link"><span class="title">Data Transform</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/axis" class="nav-link"><span class="title">Axis</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/visual-map" class="nav-link"><span class="title">Visual Mapping</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/legend" class="nav-link"><span class="title">Legend</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/event" class="nav-link"><span class="title">Event and Action</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">How To Guides</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">Common Charts</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Bar</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">Basic Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">Stacked Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">Bar Racing</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">Waterfall</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Line</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">Basic Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">Stacked Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/area-line" class="nav-link"><span class="title">Area Chart</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">Smoothed Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/step-line" class="nav-link"><span class="title">Step Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Pie</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">Basic Pie</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">Ring Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/rose" class="nav-link"><span class="title">Rose Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Scatter</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">Basic Scatter</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Common Components</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Geo</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG Base Map</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">Cross Platform</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/cross-platform/server" class="nav-link"><span class="title">Server Side Rendering</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Data</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/data/dynamic-data" class="nav-link"><span class="title">Dynamic Data</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Label</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/label/rich-text" class="nav-link"><span class="title">Rich Text</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Animation</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/animation/transition" class="nav-link"><span class="title">Data Transition</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Interaction</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/drag" class="nav-link"><span class="title">Drag</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">Intelligent Pointer Snapping</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Best Practices</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/en/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/aria" class="nav-link"><span class="title">Aria</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/security" class="nav-link"><span class="title">Security Guidelines</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Edit Handbook</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/meta/edit-guide" class="nav-link"><span class="title">Edit Guide</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="chart-container-and-size" tabindex="-1">Chart Container and Size</h1> <p>In <a href="en/get-started">Get Started</a>, we introduced the API to initialize the ECharts <a href="https://echarts.apache.org//api.html#echarts.init"><code>echarts.init</code></a>. <a href="https://echarts.apache.org//api.html#echarts.init">API Document</a> has introduced the specific meaning of each parameters. Please read and understand the document before reading the following content.</p> <p>Refer to several common usage scenarios, here is the example to initialize a chart and change the size.</p> <h2 id="initialization" tabindex="-1">Initialization</h2> <h3 id="define-a-parent-container-in-html" tabindex="-1">Define a Parent Container in HTML</h3> <p>In general, you need to define a <code>&lt;div></code> node and use the CSS to change the width and height. While initializing, import the chart into the node. Without declaring <code>opts.width</code> or <code>opts.height</code>, the size of the chart will default to the size of the node.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-html line-numbers"><code><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>main<span class="token punctuation">"</span></span> <span class="token special-attr"><span class="token attr-name">style</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token value css language-css"><span class="token property">width</span><span class="token punctuation">:</span> 600px<span class="token punctuation">;</span><span class="token property">height</span><span class="token punctuation">:</span>400px<span class="token punctuation">;</span></span><span class="token punctuation">"</span></span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">></span></span>
+<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>text/javascript<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
+  var myChart = echarts.init(document.getElementById('main'));
+<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">></span></span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>To be noticed, before calling <code>echarts.init</code>, you need to make sure the container already has width and height.</p> <h3 id="specify-the-chart-size" tabindex="-1">Specify the chart size</h3> <p>If the height and width of the container do not exist, or you wish the chart size not equal to the container, you can initialize the size at the beginning.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-html line-numbers"><code><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>main<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">></span></span>
+<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>text/javascript<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
+  var myChart = echarts.init(document.getElementById('main'), null, {
+    width: 600,
+    height: 400
+  });
+<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">></span></span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="reactive-of-the-container-size" tabindex="-1">Reactive of the Container Size</h2> <h3 id="listen-to-the-container-size-to-change-the-chart-size" tabindex="-1">Listen to the Container Size to Change the Chart Size</h3> <p>In some cases, we want to accordingly change the chart size while the size of containers changed.</p> <p>For instance, the container has a height of 400px and a width of 100% site width. If you are willing to change the site width while stable the chart width as 100% of it, try the following method.</p> <p>You can listen to <code>resize</code> of the site to catch the event that the browser is resized. Then use <a href="https://echarts.apache.org/api.html#echartsInstance.resize"><code>echartsInstance.resize</code></a> to resize the chart.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-html line-numbers"><code><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>style</span><span class="token punctuation">></span></span><span class="token style"><span class="token language-css">
+  <span class="token selector">#main,
+  html,
+  body</span> <span class="token punctuation">{</span>
+    <span class="token property">width</span><span class="token punctuation">:</span> 100%<span class="token punctuation">;</span>
+  <span class="token punctuation">}</span>
+  <span class="token selector">#main</span> <span class="token punctuation">{</span>
+    <span class="token property">height</span><span class="token punctuation">:</span> 400px<span class="token punctuation">;</span>
+  <span class="token punctuation">}</span>
+</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>style</span><span class="token punctuation">></span></span>
+<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>main<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">></span></span>
+<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>text/javascript<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
+  var myChart = echarts.init(document.getElementById('main'));
+  window.addEventListener('resize', function() {
+    myChart.resize();
+  });
+<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">></span></span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <blockquote><p>Tips:Sometimes we may adjust the container size by JS/CSS, but this doesn't change the page size so that the <code>resize</code> event won't be triggered. You can try the <a href="https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver"><code>ResizeObserver</code></a> API to cover this scenario.</p></blockquote> <h3 id="state-a-specific-chart-size" tabindex="-1">State a Specific Chart Size</h3> <p>Except for calling <code>resize()</code> without parameters, you can state the height and width to implement the chart size different from the size of the container.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>myChart<span class="token punctuation">.</span><span class="token function">resize</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+  <span class="token literal-property property">width</span><span class="token operator">:</span> <span class="token number">800</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">height</span><span class="token operator">:</span> <span class="token number">400</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <blockquote><p>Tips: Pay attention to how the API defined while reading the documentation. <code>resize()</code> API was sometimes mistaken for the form like <code>myCharts.resize(800, 400)</code> which do not exist.</p></blockquote> <h3 id="dispose-and-rebuild-of-the-container-node" tabindex="-1">Dispose and Rebuild of the Container Node</h3> <p>We assume that there exist several bookmark pages and each page contained some charts. In this case, the content in other pages will be removed in DOM when select one page. The user will not find the chart after reselecting these pages.</p> <p>Essentially, this is because the container node of the charts was removed. Even if the node is added again later, the node where the graph is located no longer exists.</p> <p>The correct way is, call <a href="https://echarts.apache.org/api.html#echartsInstance.dispose"><code>echartsInstance.dispose</code></a> to dispose the instance after the container was disposed, and call <a href="https://echarts.apache.org//api.html#echarts.init">echarts.init</a> to initialize after the container was added again.</p> <blockquote><p>Tips: Call <a href="https://echarts.apache.org/api.html#echartsInstance.dispose"><code>echartsInstance.dispose</code></a> to release resources while disposing the node to avoid memory leaks.</p></blockquote></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">Contributors</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/en/concepts/chart-size.md" title="Edit this Document" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">Edit this page on GitHub</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a><a href="https://github.com/plainheart" target="_blank" class="post-contributor has-avatar"><img alt="plainheart" src="https://echarts.apache.org/en/images/people/plainheart.jpg" loading="lazy" decoding="async" fetchpriority="low"> <span>plainheart</span></a><a href="https://github.com/ppd0705" target="_blank" class="post-contributor"><!----> <span>ppd0705</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(e,t,i,a,r,d,n,l,o,h,c,s,p,g,m,f,b,u,C,w,z,I,v,S,y,P,k,A,G,B,W,x,D,R,Z,H,L,T,V,X,N,Y,E,K,M,j,J,F,Q,O,U,q,_,$,ee,te,ie,ae,re,de,ne,le,oe){return{layout:"default",data:[{html:'<h1 id="chart-container-and-size" tabindex="-1">Chart Container and Size</h1>\n<p>In <a href="en/get-started">Get Started</a>, we introduced the API to initialize the ECharts <a href="https://echarts.apache.org//api.html#echarts.init"><code>echarts.init</code></a>. <a href="https://echarts.apache.org//api.html#echarts.init">API Document</a> has introduced the specific meaning of each parameters. Please read and understand the document before reading the following content.</p>\n<p>Refer to several common usage scenarios, here is the example to initialize a chart and change the size.</p>\n<h2 id="initialization" tabindex="-1">Initialization</h2>\n<h3 id="define-a-parent-container-in-html" tabindex="-1">Define a Parent Container in HTML</h3>\n<p>In general, you need to define a <code>&lt;div&gt;</code> node and use the CSS to change the width and height. While initializing, import the chart into the node. Without declaring <code>opts.width</code> or <code>opts.height</code>, the size of the chart will default to the size of the node.</p>\n<md-code-block lang="html" code="\'PGRpdiBpZD0ibWFpbiIgc3R5bGU9IndpZHRoOiA2MDBweDtoZWlnaHQ6NDAwcHg7Ij48L2Rpdj4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogIHZhciBteUNoYXJ0ID0gZWNoYXJ0cy5pbml0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYWluJykpOwo8L3NjcmlwdD4\'" line-highlights="\'\'" />\n<p>To be noticed, before calling <code>echarts.init</code>, you need to make sure the container already has width and height.</p>\n<h3 id="specify-the-chart-size" tabindex="-1">Specify the chart size</h3>\n<p>If the height and width of the container do not exist, or you wish the chart size not equal to the container, you can initialize the size at the beginning.</p>\n<md-code-block lang="html" code="\'PGRpdiBpZD0ibWFpbiI-PC9kaXY-CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICB2YXIgbXlDaGFydCA9IGVjaGFydHMuaW5pdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFpbicpLCBudWxsLCB7CiAgICB3aWR0aDogNjAwLAogICAgaGVpZ2h0OiA0MDAKICB9KTsKPC9zY3JpcHQ-\'" line-highlights="\'\'" />\n<h2 id="reactive-of-the-container-size" tabindex="-1">Reactive of the Container Size</h2>\n<h3 id="listen-to-the-container-size-to-change-the-chart-size" tabindex="-1">Listen to the Container Size to Change the Chart Size</h3>\n<p>In some cases, we want to accordingly change the chart size while the size of containers changed.</p>\n<p>For instance, the container has a height of 400px and a width of 100% site width. If you are willing to change the site width while stable the chart width as 100% of it, try the following method.</p>\n<p>You can listen to <code>resize</code> of the site to catch the event that the browser is resized. Then use <a href="https://echarts.apache.org/api.html#echartsInstance.resize"><code>echartsInstance.resize</code></a> to resize the chart.</p>\n<md-code-block lang="html" code="\'PHN0eWxlPgogICNtYWluLAogIGh0bWwsCiAgYm9keSB7CiAgICB3aWR0aDogMTAwJTsKICB9CiAgI21haW4gewogICAgaGVpZ2h0OiA0MDBweDsKICB9Cjwvc3R5bGU-CjxkaXYgaWQ9Im1haW4iPjwvZGl2Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI-CiAgdmFyIG15Q2hhcnQgPSBlY2hhcnRzLmluaXQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21haW4nKSk7CiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGZ1bmN0aW9uKCkgewogICAgbXlDaGFydC5yZXNpemUoKTsKICB9KTsKPC9zY3JpcHQ-\'" line-highlights="\'\'" />\n<blockquote>\n<p>Tips:Sometimes we may adjust the container size by JS/CSS, but this doesn\'t change the page size so that the <code>resize</code> event won\'t be triggered. You can try the <a href="https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver"><code>ResizeObserver</code></a> API to cover this scenario.</p>\n</blockquote>\n<h3 id="state-a-specific-chart-size" tabindex="-1">State a Specific Chart Size</h3>\n<p>Except for calling <code>resize()</code> without parameters, you can state the height and width to implement the chart size different from the size of the container.</p>\n<md-code-block lang="js" code="\'bXlDaGFydC5yZXNpemUoewogIHdpZHRoOiA4MDAsCiAgaGVpZ2h0OiA0MDAKfSk7\'" line-highlights="\'\'" />\n<blockquote>\n<p>Tips: Pay attention to how the API defined while reading the documentation. <code>resize()</code> API was sometimes mistaken for the form like <code>myCharts.resize(800, 400)</code> which do not exist.</p>\n</blockquote>\n<h3 id="dispose-and-rebuild-of-the-container-node" tabindex="-1">Dispose and Rebuild of the Container Node</h3>\n<p>We assume that there exist several bookmark pages and each page contained some charts. In this case, the content in other pages will be removed in DOM when select one page. The user will not find the chart after reselecting these pages.</p>\n<p>Essentially, this is because the container node of the charts was removed. Even if the node is added again later, the node where the graph is located no longer exists.</p>\n<p>The correct way is, call <a href="https://echarts.apache.org/api.html#echartsInstance.dispose"><code>echartsInstance.dispose</code></a> to dispose the instance after the container was disposed, and call <a href="https://echarts.apache.org//api.html#echarts.init">echarts.init</a> to initialize after the container was added again.</p>\n<blockquote>\n<p>Tips: Call <a href="https://echarts.apache.org/api.html#echartsInstance.dispose"><code>echartsInstance.dispose</code></a> to release resources while disposing the node to avoid memory leaks.</p>\n</blockquote>\n',postPath:"en/concepts/chart-size",title:"Chart Container - Concepts"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:a},{title:"入门篇",dir:r,children:[{title:"获取 ECharts",dir:d},{title:"在项目中引入 ECharts",dir:n},{title:"资源列表",dir:l,draft:e},{title:"寻求帮助",dir:o},{title:"版本特性",dir:h,children:[{title:"ECharts 6 特性介绍",dir:c},{title:"v5 升级 v6 指南",dir:s},{title:"5.0",dir:p},{title:"v4 升级 v5 指南",dir:g},{title:5.2,dir:m},{title:5.3,dir:f},{title:5.4,dir:b},{title:5.5,dir:u},{title:5.6,dir:C}]}]},{title:"概念篇",dir:w,children:[{title:"图表容器及大小",dir:z},{title:"配置项",dir:I,draft:e},{title:"系列",dir:v,draft:e},{title:"样式",dir:S},{title:"数据集",dir:y},{title:"数据转换",dir:P},{title:"坐标系",dir:k,draft:e},{title:"坐标轴",dir:A},{title:"视觉映射",dir:i},{title:"图例",dir:G},{title:"事件与行为",dir:B}]},{title:"应用篇",dir:W,children:[{title:"常用图表类型",dir:x,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:D},{title:"堆叠柱状图",dir:R},{title:"动态排序柱状图",dir:Z},{title:"极坐标系柱状图",dir:H,draft:e},{title:"阶梯瀑布图",dir:L},{title:"视觉映射的柱状图",dir:i,draft:e}]},{title:"折线图",dir:T,children:[{title:"基础折线图",dir:V},{title:"堆叠折线图",dir:X},{title:"区域面积图",dir:N},{title:"平滑曲线图",dir:Y},{title:"阶梯线图",dir:E}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:K},{title:"圆环图",dir:M},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:j,children:[{title:"基础散点图",dir:J}]}]},{title:"常用组件",dir:F,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:Q}]}]},{title:"移动端优化",dir:t,draft:e},{title:"跨平台方案",dir:O,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:U},{title:"数据下钻",dir:q,draft:e}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:_}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:ee}]},{title:"交互",dir:te,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:ie,draft:e},{title:"智能指针吸附",dir:ae}]}]},{title:"最佳实践",dir:re,children:[{title:"移动端优化",dir:t,draft:e},{title:de,dir:ne},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:le}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:oe}]}],en:[{title:"Get Started",dir:a},{title:"Basics",dir:r,children:[{title:"Download ECharts",dir:d},{title:"Import ECharts",dir:n},{title:"Resources",dir:l,draft:e},{title:"Get Help",dir:o},{title:"What's New",dir:h,children:[{title:"ECharts 6 Features",dir:c},{title:"Migration from v5 to v6",dir:s},{title:"5.0",dir:p},{title:"Migration from v4 to v5",dir:g},{title:5.2,dir:m},{title:5.3,dir:f},{title:5.4,dir:b},{title:5.5,dir:u},{title:5.6,dir:C}]}]},{title:"Concepts",dir:w,children:[{title:"Chart Container",dir:z},{title:"Chart Option",dir:I,draft:e},{title:"Series",dir:v,draft:e},{title:"Style",dir:S},{title:"Dataset",dir:y},{title:"Data Transform",dir:P},{title:"Coordinate",dir:k,draft:e},{title:"Axis",dir:A},{title:"Visual Mapping",dir:i},{title:"Legend",dir:G},{title:"Event and Action",dir:B}]},{title:"How To Guides",dir:W,children:[{title:"Common Charts",dir:x,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:D},{title:"Stacked Bar",dir:R},{title:"Bar Racing",dir:Z},{title:"Bar Polar",dir:H,draft:e},{title:"Waterfall",dir:L}]},{title:"Line",dir:T,children:[{title:"Basic Line",dir:V},{title:"Stacked Line",dir:X},{title:"Area Chart",dir:N},{title:"Smoothed Line",dir:Y},{title:"Step Line",dir:E}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:K},{title:"Ring Style",dir:M},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:j,children:[{title:"Basic Scatter",dir:J}]}]},{title:"Common Components",dir:F,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:Q}]}]},{title:"Mobile",dir:t,draft:e},{title:"Cross Platform",dir:O,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:U},{title:"Drilldown",dir:q,draft:e}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:_}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:ee}]},{title:"Interaction",dir:te,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:ie,draft:e},{title:"Intelligent Pointer Snapping",dir:ae}]}]},{title:"Best Practices",dir:re,children:[{title:"Mobile Optimization",dir:t,draft:e},{title:de,dir:ne},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:le}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:oe}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:e,routePath:"/en/concepts/chart-size",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/en/concepts/data-transform/index.html b/docs/en/concepts/data-transform/index.html
new file mode 100644
index 0000000..26b8c31
--- /dev/null
+++ b/docs/en/concepts/data-transform/index.html
@@ -0,0 +1,610 @@
+<!doctype html>
+<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Data Transform - Concepts - Handbook - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="en"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/en/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/en/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/en/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/en/index.html" class="navbar-brand"><img src="https://echarts.apache.org/en/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/en/index.html">Home</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Docs<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/feature.html">Features</a></li><li><a href="https://echarts.apache.org/handbook/en/get-started/">Handbook</a></li><li><a href="https://echarts.apache.org/en/api.html">API</a></li><li><a href="https://echarts.apache.org/en/option.html">Chart Configuration</a></li><li><a href="https://echarts.apache.org/en/changelog.html">Changelog</a></li><li><a href="https://echarts.apache.org/en/faq.html">FAQ</a></li><li><a href="https://echarts.apache.org/handbook/en/basics/release-note/v6-upgrade-guide">V6 Upgrade Guide</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Download<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/download.html">Download</a></li><li><a href="https://echarts.apache.org/en/download-theme.html">Download Themes</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">Download Custom Series<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/download-extension.html">Download Extensions</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/en/index.html">Examples</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Resources<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/spreadsheet.html">Spread Sheet Tool</a></li><li><a href="https://echarts.apache.org/en/theme-builder.html">Theme Builder</a></li><li><a href="https://echarts.apache.org/en/cheat-sheet.html">Cheat Sheet</a></li><li><a href="https://echarts.apache.org/en/resources.html">More Resources</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/events.html">Events</a></li><li><a href="https://echarts.apache.org/en/committers.html">Committers</a></li><li><a href="https://echarts.apache.org/en/maillist.html">Mailing List</a></li><li><a href="https://echarts.apache.org/en/contributing.html">How to Contribute</a></li><li><a href="https://echarts.apache.org/en/dependencies.html">Dependencies</a></li><li><a href="https://echarts.apache.org/en/coding-standard.html">Code Standard</a></li><li><a href="https://github.com/apache/echarts" target="_blank">Source Code (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/security.html">Security</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">License<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">Events<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("zh")'>中文</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/en/get-started" class="nav-link"><span class="title">Get Started</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Basics</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/basics/download" class="nav-link"><span class="title">Download ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/import" class="nav-link"><span class="title">Import ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/basics/help" class="nav-link"><span class="title">Get Help</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">What's New</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 Features</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">Migration from v5 to v6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">Migration from v4 to v5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Concepts</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/concepts/chart-size" class="nav-link"><span class="title">Chart Container</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/style" class="nav-link"><span class="title">Style</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/dataset" class="nav-link"><span class="title">Dataset</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/data-transform" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">Data Transform</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/axis" class="nav-link"><span class="title">Axis</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/visual-map" class="nav-link"><span class="title">Visual Mapping</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/legend" class="nav-link"><span class="title">Legend</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/event" class="nav-link"><span class="title">Event and Action</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">How To Guides</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">Common Charts</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Bar</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">Basic Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">Stacked Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">Bar Racing</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">Waterfall</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Line</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">Basic Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">Stacked Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/area-line" class="nav-link"><span class="title">Area Chart</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">Smoothed Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/step-line" class="nav-link"><span class="title">Step Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Pie</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">Basic Pie</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">Ring Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/rose" class="nav-link"><span class="title">Rose Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Scatter</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">Basic Scatter</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Common Components</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Geo</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG Base Map</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">Cross Platform</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/cross-platform/server" class="nav-link"><span class="title">Server Side Rendering</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Data</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/data/dynamic-data" class="nav-link"><span class="title">Dynamic Data</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Label</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/label/rich-text" class="nav-link"><span class="title">Rich Text</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Animation</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/animation/transition" class="nav-link"><span class="title">Data Transition</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Interaction</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/drag" class="nav-link"><span class="title">Drag</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">Intelligent Pointer Snapping</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Best Practices</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/en/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/aria" class="nav-link"><span class="title">Aria</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/security" class="nav-link"><span class="title">Security Guidelines</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Edit Handbook</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/meta/edit-guide" class="nav-link"><span class="title">Edit Guide</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="data-transform" tabindex="-1">Data Transform</h1> <p><code>Data transform</code> has been supported since Apache ECharts<sup>TM</sup> 5. In echarts, the term <code>data transform</code> refers to generating new data from user provided source data using transform functions. This feature enables users to process data in a declarative way and provides users several common "transform functions" to make such tasks work "out-of-the-box". (For consistency, we use the noun form "transform" rather than "transformation.")</p> <p>The abstract formula of a data transform is: <code>outData = f(inputData)</code>, where the transform function <code>f</code> can be <code>filter</code>, <code>sort</code>, <code>regression</code>, <code>boxplot</code>, <code>cluster</code>, <code>aggregate</code> and so on.
+With the help of these transform functions, users can implement features like:</p> <ul><li>Partition data into multiple series.</li> <li>Compute statistics and visualize the results.</li> <li>Adapt visualization algorithms to the data and display the results.</li> <li>Sort data.</li> <li>Remove or choose certain kind of empty or special datums.</li> <li>...</li></ul> <h2 id="get-started-to-data-transform" tabindex="-1">Get Started to Data Transform</h2> <p>In echarts, data transform is implemented based on the concept of <a href="https://echarts.apache.org/option.html##dataset">dataset</a>.You can specify a <a href="https://echarts.apache.org/option.html##dataset.transform">dataset.transform</a> within a dataset instance to indicate that the dataset should be generated using the defined <code>transform</code>. For example:</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">var option = {
+  dataset: [
+    {
+      // This dataset is on `datasetIndex: 0`.
+      source: [
+        ['Product', 'Sales', 'Price', 'Year'],
+        ['Cake', 123, 32, 2011],
+        ['Cereal', 231, 14, 2011],
+        ['Tofu', 235, 5, 2011],
+        ['Dumpling', 341, 25, 2011],
+        ['Biscuit', 122, 29, 2011],
+        ['Cake', 143, 30, 2012],
+        ['Cereal', 201, 19, 2012],
+        ['Tofu', 255, 7, 2012],
+        ['Dumpling', 241, 27, 2012],
+        ['Biscuit', 102, 34, 2012],
+        ['Cake', 153, 28, 2013],
+        ['Cereal', 181, 21, 2013],
+        ['Tofu', 395, 4, 2013],
+        ['Dumpling', 281, 31, 2013],
+        ['Biscuit', 92, 39, 2013],
+        ['Cake', 223, 29, 2014],
+        ['Cereal', 211, 17, 2014],
+        ['Tofu', 345, 3, 2014],
+        ['Dumpling', 211, 35, 2014],
+        ['Biscuit', 72, 24, 2014]
+      ]
+      // id: 'a'
+    },
+    {
+      // This dataset is on `datasetIndex: 1`.
+      // A `transform` is configured to indicate that the
+      // final data of this dataset is transformed via this
+      // transform function.
+      transform: {
+        type: 'filter',
+        config: { dimension: 'Year', value: 2011 }
+      }
+      // There can be optional properties `fromDatasetIndex` or `fromDatasetId`
+      // to indicate that where is the input data of the transform from.
+      // For example, `fromDatasetIndex: 0` specify the input data is from
+      // the dataset on `datasetIndex: 0`, or `fromDatasetId: 'a'` specify the
+      // input data is from the dataset having `id: 'a'`.
+      // [DEFAULT_RULE]
+      // If both `fromDatasetIndex` and `fromDatasetId` are omitted,
+      // `fromDatasetIndex: 0` are used by default.
+    },
+    {
+      // This dataset is on `datasetIndex: 2`.
+      // Similarly, if neither `fromDatasetIndex` nor `fromDatasetId` is
+      // specified, `fromDatasetIndex: 0` is used by default
+      transform: {
+        // The "filter" transform filters and gets data items only match
+        // the given condition in property `config`.
+        type: 'filter',
+        // Transforms has a property `config`. In this "filter" transform,
+        // the `config` specify the condition that each result data item
+        // should be satisfied. In this case, this transform get all of
+        // the data items that the value on dimension "Year" equals to 2012.
+        config: { dimension: 'Year', value: 2012 }
+      }
+    },
+    {
+      // This dataset is on `datasetIndex: 3`
+      transform: {
+        type: 'filter',
+        config: { dimension: 'Year', value: 2013 }
+      }
+    }
+  ],
+  series: [
+    {
+      type: 'pie',
+      radius: 50,
+      center: ['25%', '50%'],
+      // In this case, each "pie" series reference to a dataset that has
+      // the result of its "filter" transform.
+      datasetIndex: 1
+    },
+    {
+      type: 'pie',
+      radius: 50,
+      center: ['50%', '50%'],
+      datasetIndex: 2
+    },
+    {
+      type: 'pie',
+      radius: 50,
+      center: ['75%', '50%'],
+      datasetIndex: 3
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor"><span class="token keyword">var</span> option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">dataset</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token comment">// This dataset is on `datasetIndex: 0`.</span>
+      <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">[</span><span class="token string">'Product'</span><span class="token punctuation">,</span> <span class="token string">'Sales'</span><span class="token punctuation">,</span> <span class="token string">'Price'</span><span class="token punctuation">,</span> <span class="token string">'Year'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Cake'</span><span class="token punctuation">,</span> <span class="token number">123</span><span class="token punctuation">,</span> <span class="token number">32</span><span class="token punctuation">,</span> <span class="token number">2011</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Cereal'</span><span class="token punctuation">,</span> <span class="token number">231</span><span class="token punctuation">,</span> <span class="token number">14</span><span class="token punctuation">,</span> <span class="token number">2011</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Tofu'</span><span class="token punctuation">,</span> <span class="token number">235</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">2011</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Dumpling'</span><span class="token punctuation">,</span> <span class="token number">341</span><span class="token punctuation">,</span> <span class="token number">25</span><span class="token punctuation">,</span> <span class="token number">2011</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Biscuit'</span><span class="token punctuation">,</span> <span class="token number">122</span><span class="token punctuation">,</span> <span class="token number">29</span><span class="token punctuation">,</span> <span class="token number">2011</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Cake'</span><span class="token punctuation">,</span> <span class="token number">143</span><span class="token punctuation">,</span> <span class="token number">30</span><span class="token punctuation">,</span> <span class="token number">2012</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Cereal'</span><span class="token punctuation">,</span> <span class="token number">201</span><span class="token punctuation">,</span> <span class="token number">19</span><span class="token punctuation">,</span> <span class="token number">2012</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Tofu'</span><span class="token punctuation">,</span> <span class="token number">255</span><span class="token punctuation">,</span> <span class="token number">7</span><span class="token punctuation">,</span> <span class="token number">2012</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Dumpling'</span><span class="token punctuation">,</span> <span class="token number">241</span><span class="token punctuation">,</span> <span class="token number">27</span><span class="token punctuation">,</span> <span class="token number">2012</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Biscuit'</span><span class="token punctuation">,</span> <span class="token number">102</span><span class="token punctuation">,</span> <span class="token number">34</span><span class="token punctuation">,</span> <span class="token number">2012</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Cake'</span><span class="token punctuation">,</span> <span class="token number">153</span><span class="token punctuation">,</span> <span class="token number">28</span><span class="token punctuation">,</span> <span class="token number">2013</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Cereal'</span><span class="token punctuation">,</span> <span class="token number">181</span><span class="token punctuation">,</span> <span class="token number">21</span><span class="token punctuation">,</span> <span class="token number">2013</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Tofu'</span><span class="token punctuation">,</span> <span class="token number">395</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">2013</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Dumpling'</span><span class="token punctuation">,</span> <span class="token number">281</span><span class="token punctuation">,</span> <span class="token number">31</span><span class="token punctuation">,</span> <span class="token number">2013</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Biscuit'</span><span class="token punctuation">,</span> <span class="token number">92</span><span class="token punctuation">,</span> <span class="token number">39</span><span class="token punctuation">,</span> <span class="token number">2013</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Cake'</span><span class="token punctuation">,</span> <span class="token number">223</span><span class="token punctuation">,</span> <span class="token number">29</span><span class="token punctuation">,</span> <span class="token number">2014</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Cereal'</span><span class="token punctuation">,</span> <span class="token number">211</span><span class="token punctuation">,</span> <span class="token number">17</span><span class="token punctuation">,</span> <span class="token number">2014</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Tofu'</span><span class="token punctuation">,</span> <span class="token number">345</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">2014</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Dumpling'</span><span class="token punctuation">,</span> <span class="token number">211</span><span class="token punctuation">,</span> <span class="token number">35</span><span class="token punctuation">,</span> <span class="token number">2014</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Biscuit'</span><span class="token punctuation">,</span> <span class="token number">72</span><span class="token punctuation">,</span> <span class="token number">24</span><span class="token punctuation">,</span> <span class="token number">2014</span><span class="token punctuation">]</span>
+      <span class="token punctuation">]</span>
+      <span class="token comment">// id: 'a'</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token comment">// This dataset is on `datasetIndex: 1`.</span>
+      <span class="token comment">// A `transform` is configured to indicate that the</span>
+      <span class="token comment">// final data of this dataset is transformed via this</span>
+      <span class="token comment">// transform function.</span>
+      <span class="token literal-property property">transform</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'filter'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">config</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">dimension</span><span class="token operator">:</span> <span class="token string">'Year'</span><span class="token punctuation">,</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">2011</span> <span class="token punctuation">}</span>
+      <span class="token punctuation">}</span>
+      <span class="token comment">// There can be optional properties `fromDatasetIndex` or `fromDatasetId`</span>
+      <span class="token comment">// to indicate that where is the input data of the transform from.</span>
+      <span class="token comment">// For example, `fromDatasetIndex: 0` specify the input data is from</span>
+      <span class="token comment">// the dataset on `datasetIndex: 0`, or `fromDatasetId: 'a'` specify the</span>
+      <span class="token comment">// input data is from the dataset having `id: 'a'`.</span>
+      <span class="token comment">// [DEFAULT_RULE]</span>
+      <span class="token comment">// If both `fromDatasetIndex` and `fromDatasetId` are omitted,</span>
+      <span class="token comment">// `fromDatasetIndex: 0` are used by default.</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token comment">// This dataset is on `datasetIndex: 2`.</span>
+      <span class="token comment">// Similarly, if neither `fromDatasetIndex` nor `fromDatasetId` is</span>
+      <span class="token comment">// specified, `fromDatasetIndex: 0` is used by default</span>
+      <span class="token literal-property property">transform</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token comment">// The "filter" transform filters and gets data items only match</span>
+        <span class="token comment">// the given condition in property `config`.</span>
+        <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'filter'</span><span class="token punctuation">,</span>
+        <span class="token comment">// Transforms has a property `config`. In this "filter" transform,</span>
+        <span class="token comment">// the `config` specify the condition that each result data item</span>
+        <span class="token comment">// should be satisfied. In this case, this transform get all of</span>
+        <span class="token comment">// the data items that the value on dimension "Year" equals to 2012.</span>
+        <span class="token literal-property property">config</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">dimension</span><span class="token operator">:</span> <span class="token string">'Year'</span><span class="token punctuation">,</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">2012</span> <span class="token punctuation">}</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token comment">// This dataset is on `datasetIndex: 3`</span>
+      <span class="token literal-property property">transform</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'filter'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">config</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">dimension</span><span class="token operator">:</span> <span class="token string">'Year'</span><span class="token punctuation">,</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">2013</span> <span class="token punctuation">}</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'pie'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">radius</span><span class="token operator">:</span> <span class="token number">50</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">center</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'25%'</span><span class="token punctuation">,</span> <span class="token string">'50%'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token comment">// In this case, each "pie" series reference to a dataset that has</span>
+      <span class="token comment">// the result of its "filter" transform.</span>
+      <span class="token literal-property property">datasetIndex</span><span class="token operator">:</span> <span class="token number">1</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'pie'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">radius</span><span class="token operator">:</span> <span class="token number">50</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">center</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'50%'</span><span class="token punctuation">,</span> <span class="token string">'50%'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">datasetIndex</span><span class="token operator">:</span> <span class="token number">2</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'pie'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">radius</span><span class="token operator">:</span> <span class="token number">50</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">center</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'75%'</span><span class="token punctuation">,</span> <span class="token string">'50%'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">datasetIndex</span><span class="token operator">:</span> <span class="token number">3</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>Let's summarize the key points of using data transform:</p> <ul><li>Generate new data from existing declared data via the declaration of <code>transform</code>, <code>fromDatasetIndex</code>/<code>fromDatasetId</code> in some blank dataset.</li> <li>Series references these datasets to show the result.</li></ul> <h2 id="advanced-usage" tabindex="-1">Advanced Usage</h2> <h4 id="piped-transform" tabindex="-1">Piped Transform</h4> <p>There is a syntactic sugar that pipe transforms like:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">dataset</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">]</span> <span class="token comment">// The original data</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token comment">// Declare transforms in an array to pipe multiple transforms,</span>
+      <span class="token comment">// which makes them execute one by one and take the output of</span>
+      <span class="token comment">// the previous transform as the input of the next transform.</span>
+      <span class="token literal-property property">transform</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'filter'</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">config</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">dimension</span><span class="token operator">:</span> <span class="token string">'Product'</span><span class="token punctuation">,</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token string">'Tofu'</span> <span class="token punctuation">}</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'sort'</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">config</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">dimension</span><span class="token operator">:</span> <span class="token string">'Year'</span><span class="token punctuation">,</span> <span class="token literal-property property">order</span><span class="token operator">:</span> <span class="token string">'desc'</span> <span class="token punctuation">}</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'pie'</span><span class="token punctuation">,</span>
+    <span class="token comment">// Display the result of the piped transform.</span>
+    <span class="token literal-property property">datasetIndex</span><span class="token operator">:</span> <span class="token number">1</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <blockquote><p>Note: theoretically any type of transform is able to have multiple input data and multiple output data. But when a transform is piped, it is only able to take one input (except it is the first transform of the pipe) and product one output (except it is the last transform of the pipe).</p></blockquote> <h4 id="output-multiple-data" tabindex="-1">Output Multiple Data</h4> <p>In most cases, transform functions only need to produce one data. But there is indeed scenarios that a transform function needs to produce multiple data, each of whom might be used by different series.</p> <p>For example, in the built-in boxplot transform, besides boxplot data produced, the outlier data are also produced, which can be used in a scatter series. See the <a href="https://echarts.apache.org/examples/en/editor.html?c=boxplot-light-velocity">example</a>.</p> <p>We use prop <a href="https://echarts.apache.org/option.html##dataset.fromTransformResult">dataset.fromTransformResult</a> to satisfy this requirement. For example:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">dataset</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token comment">// Original source data.</span>
+      <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">transform</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'boxplot'</span>
+      <span class="token punctuation">}</span>
+      <span class="token comment">// After this "boxplot transform" two result data generated:</span>
+      <span class="token comment">// result[0]: The boxplot data</span>
+      <span class="token comment">// result[1]: The outlier data</span>
+      <span class="token comment">// By default, when series or other dataset reference this dataset,</span>
+      <span class="token comment">// only result[0] can be visited.</span>
+      <span class="token comment">// If we need to visit result[1], we have to use another dataset</span>
+      <span class="token comment">// as follows:</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token comment">// This extra dataset references the dataset above, and retrieves</span>
+      <span class="token comment">// the result[1] as its own data. Thus series or other dataset can</span>
+      <span class="token comment">// reference this dataset to get the data from result[1].</span>
+      <span class="token literal-property property">fromDatasetIndex</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">fromTransformResult</span><span class="token operator">:</span> <span class="token number">1</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'category'</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'boxplot'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'boxplot'</span><span class="token punctuation">,</span>
+      <span class="token comment">// Reference the data from result[0].</span>
+      <span class="token literal-property property">datasetIndex</span><span class="token operator">:</span> <span class="token number">1</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'outlier'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'scatter'</span><span class="token punctuation">,</span>
+      <span class="token comment">// Reference the data from result[1].</span>
+      <span class="token literal-property property">datasetIndex</span><span class="token operator">:</span> <span class="token number">2</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>What more, <a href="https://echarts.apache.org/option.html##dataset.fromTransformResult">dataset.fromTransformResult</a> and <a href="https://echarts.apache.org/option.html##dataset.transform">dataset.transform</a> can both appear in one dataset, which means that the input of the transform is from retrieved from the upstream result specified by <code>fromTransformResult</code>. For example:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token punctuation">{</span>
+  <span class="token literal-property property">fromDatasetIndex</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">fromTransformResult</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">transform</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'sort'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">config</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">dimension</span><span class="token operator">:</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token literal-property property">order</span><span class="token operator">:</span> <span class="token string">'desc'</span> <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h4 id="debug-in-develop-environment" tabindex="-1">Debug in Develop Environment</h4> <p>When using data transform, we might run into the trouble that the final chart do not display correctly but we do not know where the config is wrong. There is a property <code>transform.print</code> might help in such case. (<code>transform.print</code> is only available in dev environment).</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">dataset</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">transform</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'filter'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">config</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token comment">// The result of this transform will be printed</span>
+        <span class="token comment">// in dev tool via `console.log`.</span>
+        <span class="token literal-property property">print</span><span class="token operator">:</span> <span class="token boolean">true</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="filter-transform" tabindex="-1">Filter Transform</h2> <p>Transform type "filter" is a built-in transform that provide data filter according to specified conditions. The basic option is like:</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  dataset: [
+    {
+      source: [
+        ['Product', 'Sales', 'Price', 'Year'],
+        ['Cake', 123, 32, 2011],
+        ['Latte', 231, 14, 2011],
+        ['Tofu', 235, 5, 2011],
+        ['Milk Tee', 341, 25, 2011],
+        ['Porridge', 122, 29, 2011],
+        ['Cake', 143, 30, 2012],
+        ['Latte', 201, 19, 2012],
+        ['Tofu', 255, 7, 2012],
+        ['Milk Tee', 241, 27, 2012],
+        ['Porridge', 102, 34, 2012],
+        ['Cake', 153, 28, 2013],
+        ['Latte', 181, 21, 2013],
+        ['Tofu', 395, 4, 2013],
+        ['Milk Tee', 281, 31, 2013],
+        ['Porridge', 92, 39, 2013],
+        ['Cake', 223, 29, 2014],
+        ['Latte', 211, 17, 2014],
+        ['Tofu', 345, 3, 2014],
+        ['Milk Tee', 211, 35, 2014],
+        ['Porridge', 72, 24, 2014]
+      ]
+    },
+    {
+      transform: {
+        type: 'filter',
+        config: { dimension: 'Year', '=': 2011 }
+        // The config is the "condition" of this filter.
+        // This transform traverse the source data and
+        // and retrieve all the items that the "Year"
+        // is `2011`.
+      }
+    }
+  ],
+  series: {
+    type: 'pie',
+    datasetIndex: 1
+  }
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">dataset</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">[</span><span class="token string">'Product'</span><span class="token punctuation">,</span> <span class="token string">'Sales'</span><span class="token punctuation">,</span> <span class="token string">'Price'</span><span class="token punctuation">,</span> <span class="token string">'Year'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Cake'</span><span class="token punctuation">,</span> <span class="token number">123</span><span class="token punctuation">,</span> <span class="token number">32</span><span class="token punctuation">,</span> <span class="token number">2011</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Latte'</span><span class="token punctuation">,</span> <span class="token number">231</span><span class="token punctuation">,</span> <span class="token number">14</span><span class="token punctuation">,</span> <span class="token number">2011</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Tofu'</span><span class="token punctuation">,</span> <span class="token number">235</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">2011</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Milk Tee'</span><span class="token punctuation">,</span> <span class="token number">341</span><span class="token punctuation">,</span> <span class="token number">25</span><span class="token punctuation">,</span> <span class="token number">2011</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Porridge'</span><span class="token punctuation">,</span> <span class="token number">122</span><span class="token punctuation">,</span> <span class="token number">29</span><span class="token punctuation">,</span> <span class="token number">2011</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Cake'</span><span class="token punctuation">,</span> <span class="token number">143</span><span class="token punctuation">,</span> <span class="token number">30</span><span class="token punctuation">,</span> <span class="token number">2012</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Latte'</span><span class="token punctuation">,</span> <span class="token number">201</span><span class="token punctuation">,</span> <span class="token number">19</span><span class="token punctuation">,</span> <span class="token number">2012</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Tofu'</span><span class="token punctuation">,</span> <span class="token number">255</span><span class="token punctuation">,</span> <span class="token number">7</span><span class="token punctuation">,</span> <span class="token number">2012</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Milk Tee'</span><span class="token punctuation">,</span> <span class="token number">241</span><span class="token punctuation">,</span> <span class="token number">27</span><span class="token punctuation">,</span> <span class="token number">2012</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Porridge'</span><span class="token punctuation">,</span> <span class="token number">102</span><span class="token punctuation">,</span> <span class="token number">34</span><span class="token punctuation">,</span> <span class="token number">2012</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Cake'</span><span class="token punctuation">,</span> <span class="token number">153</span><span class="token punctuation">,</span> <span class="token number">28</span><span class="token punctuation">,</span> <span class="token number">2013</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Latte'</span><span class="token punctuation">,</span> <span class="token number">181</span><span class="token punctuation">,</span> <span class="token number">21</span><span class="token punctuation">,</span> <span class="token number">2013</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Tofu'</span><span class="token punctuation">,</span> <span class="token number">395</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">2013</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Milk Tee'</span><span class="token punctuation">,</span> <span class="token number">281</span><span class="token punctuation">,</span> <span class="token number">31</span><span class="token punctuation">,</span> <span class="token number">2013</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Porridge'</span><span class="token punctuation">,</span> <span class="token number">92</span><span class="token punctuation">,</span> <span class="token number">39</span><span class="token punctuation">,</span> <span class="token number">2013</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Cake'</span><span class="token punctuation">,</span> <span class="token number">223</span><span class="token punctuation">,</span> <span class="token number">29</span><span class="token punctuation">,</span> <span class="token number">2014</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Latte'</span><span class="token punctuation">,</span> <span class="token number">211</span><span class="token punctuation">,</span> <span class="token number">17</span><span class="token punctuation">,</span> <span class="token number">2014</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Tofu'</span><span class="token punctuation">,</span> <span class="token number">345</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">2014</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Milk Tee'</span><span class="token punctuation">,</span> <span class="token number">211</span><span class="token punctuation">,</span> <span class="token number">35</span><span class="token punctuation">,</span> <span class="token number">2014</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Porridge'</span><span class="token punctuation">,</span> <span class="token number">72</span><span class="token punctuation">,</span> <span class="token number">24</span><span class="token punctuation">,</span> <span class="token number">2014</span><span class="token punctuation">]</span>
+      <span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">transform</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'filter'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">config</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">dimension</span><span class="token operator">:</span> <span class="token string">'Year'</span><span class="token punctuation">,</span> <span class="token string-property property">'='</span><span class="token operator">:</span> <span class="token number">2011</span> <span class="token punctuation">}</span>
+        <span class="token comment">// The config is the "condition" of this filter.</span>
+        <span class="token comment">// This transform traverse the source data and</span>
+        <span class="token comment">// and retrieve all the items that the "Year"</span>
+        <span class="token comment">// is `2011`.</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'pie'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">datasetIndex</span><span class="token operator">:</span> <span class="token number">1</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>This is another example of filter transform:</p> <p><iframe width="100%" height="350" src=""></iframe></p> <p><strong>About dimension:</strong></p> <p>The <code>config.dimension</code> can be:</p> <ul><li>Dimension name declared in dataset, like <code>config: { dimension: 'Year', '=': 2011 }</code>. Dimension name declaration is not mandatory.</li> <li>Dimension index (start from 0), like <code>config: { dimension: 3, '=': 2011 }</code>.</li></ul> <p><strong>About relational operator:</strong></p> <p>The relational operator can be:
+<code>></code>(<code>gt</code>), <code>>=</code>(<code>gte</code>), <code>&lt;</code>(<code>lt</code>), <code>&lt;=</code>(<code>lte</code>), <code>=</code>(<code>eq</code>), <code>!=</code>(<code>ne</code>, <code>&lt;></code>), <code>reg</code>. (The name in the parentheses are aliases). They follows the common semantics.
+Besides the common number comparison, there is some extra features:</p> <ul><li>Multiple operators are able to appear in one {} item like <code>{ dimension: 'Price', '>=': 20, '&lt;': 30 }</code>, which means logical "and" (Price >= 20 and Price &lt; 30).</li> <li>The data value can be "numeric string". Numeric string is a string that can be converted to number. Like ' 123 '. White spaces and line breaks will be auto trimmed in the conversion.</li> <li>If we need to compare "JS <code>Date</code> instance" or date string (like '2012-05-12'), we need to specify <code>parser: 'time'</code> manually, like <code>config: { dimension: 3, lt: '2012-05-12', parser: 'time' }</code>.</li> <li>Pure string comparison is supported but can only be used in <code>=</code>, <code>!=</code>. <code>></code>, <code>>=</code>, <code>&lt;</code>, <code>&lt;=</code> do not support pure string comparison (the "right value" of the four operators can not be a "string").</li> <li>The operator <code>reg</code> can be used to make regular expression test. Like using <code>{ dimension: 'Name', reg: /\s+Müller\s*$/ }</code> to select all data items that the "Name" dimension contains family name Müller.</li></ul> <p><strong>About logical relationship:</strong></p> <p>Sometimes we also need to express logical relationship ( <code>and</code> / <code>or</code> / <code>not</code> ):</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">dataset</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token comment">// ...</span>
+      <span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">transform</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'filter'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">config</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+          <span class="token comment">// Use operator "and".</span>
+          <span class="token comment">// Similarly, we can also use "or", "not" in the same place.</span>
+          <span class="token comment">// But "not" should be followed with a {...} rather than `[...]`.</span>
+          <span class="token literal-property property">and</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+            <span class="token punctuation">{</span> <span class="token literal-property property">dimension</span><span class="token operator">:</span> <span class="token string">'Year'</span><span class="token punctuation">,</span> <span class="token string-property property">'='</span><span class="token operator">:</span> <span class="token number">2011</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+            <span class="token punctuation">{</span> <span class="token literal-property property">dimension</span><span class="token operator">:</span> <span class="token string">'Price'</span><span class="token punctuation">,</span> <span class="token string-property property">'>='</span><span class="token operator">:</span> <span class="token number">20</span><span class="token punctuation">,</span> <span class="token string-property property">'&lt;'</span><span class="token operator">:</span> <span class="token number">30</span> <span class="token punctuation">}</span>
+          <span class="token punctuation">]</span>
+        <span class="token punctuation">}</span>
+        <span class="token comment">// The condition is "Year" is 2011 and "Price" is greater</span>
+        <span class="token comment">// or equal to 20 but less than 30.</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'pie'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">datasetIndex</span><span class="token operator">:</span> <span class="token number">1</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p><code>and</code>/<code>or</code>/<code>not</code> can be nested like:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token literal-property property">transform</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'filter'</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">config</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">or</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">{</span>
+      <span class="token literal-property property">and</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">{</span>
+        <span class="token literal-property property">dimension</span><span class="token operator">:</span> <span class="token string">'Price'</span><span class="token punctuation">,</span> <span class="token string-property property">'>='</span><span class="token operator">:</span> <span class="token number">10</span><span class="token punctuation">,</span> <span class="token string-property property">'&lt;'</span><span class="token operator">:</span> <span class="token number">20</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">dimension</span><span class="token operator">:</span> <span class="token string">'Sales'</span><span class="token punctuation">,</span> <span class="token string-property property">'&lt;'</span><span class="token operator">:</span> <span class="token number">100</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">not</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">dimension</span><span class="token operator">:</span> <span class="token string">'Product'</span><span class="token punctuation">,</span> <span class="token string-property property">'='</span><span class="token operator">:</span> <span class="token string">'Tofu'</span> <span class="token punctuation">}</span>
+      <span class="token punctuation">}</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">and</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">{</span>
+        <span class="token literal-property property">dimension</span><span class="token operator">:</span> <span class="token string">'Price'</span><span class="token punctuation">,</span> <span class="token string-property property">'>='</span><span class="token operator">:</span> <span class="token number">10</span><span class="token punctuation">,</span> <span class="token string-property property">'&lt;'</span><span class="token operator">:</span> <span class="token number">20</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">dimension</span><span class="token operator">:</span> <span class="token string">'Sales'</span><span class="token punctuation">,</span> <span class="token string-property property">'&lt;'</span><span class="token operator">:</span> <span class="token number">100</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">not</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">dimension</span><span class="token operator">:</span> <span class="token string">'Product'</span><span class="token punctuation">,</span> <span class="token string-property property">'='</span><span class="token operator">:</span> <span class="token string">'Cake'</span> <span class="token punctuation">}</span>
+      <span class="token punctuation">}</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p><strong>About parser:</strong></p> <p>Some "parser" can be specified when make value comparison. At present only supported:</p> <ul><li><code>parser: 'time'</code>: Parse the value to date time before comparing. The parser rule is the same as <code>echarts.time.parse</code>, where JS <code>Date</code> instance, timestamp number (in millisecond) and time string (like <code>'2012-05-12 03:11:22'</code>) are supported to be parse to timestamp number, while other value will be parsed to <code>NaN</code>.</li> <li><code>parser: 'trim'</code>: Trim the string before making comparison. For non-string, return the original value.</li> <li><code>parser: 'number'</code>: Force to convert the value to number before making comparison. If not possible to be converted to a meaningful number, converted to <code>NaN</code>. In most cases it is not necessary, because by default the value will be auto converted to number if possible before making comparison. But the default conversion is strict while this parser provide a loose strategy. If we meet the case that number string with unit suffix (like <code>'33%'</code>, <code>12px</code>), we should use <code>parser: 'number'</code> to convert them to number before making comparison.</li></ul> <p>This is an example to show the <code>parser: 'time'</code>:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">dataset</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">[</span><span class="token string">'Product'</span><span class="token punctuation">,</span> <span class="token string">'Sales'</span><span class="token punctuation">,</span> <span class="token string">'Price'</span><span class="token punctuation">,</span> <span class="token string">'Date'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Milk Tee'</span><span class="token punctuation">,</span> <span class="token number">311</span><span class="token punctuation">,</span> <span class="token number">21</span><span class="token punctuation">,</span> <span class="token string">'2012-05-12'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Cake'</span><span class="token punctuation">,</span> <span class="token number">135</span><span class="token punctuation">,</span> <span class="token number">28</span><span class="token punctuation">,</span> <span class="token string">'2012-05-22'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Latte'</span><span class="token punctuation">,</span> <span class="token number">262</span><span class="token punctuation">,</span> <span class="token number">36</span><span class="token punctuation">,</span> <span class="token string">'2012-06-02'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Milk Tee'</span><span class="token punctuation">,</span> <span class="token number">359</span><span class="token punctuation">,</span> <span class="token number">21</span><span class="token punctuation">,</span> <span class="token string">'2012-06-22'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Cake'</span><span class="token punctuation">,</span> <span class="token number">121</span><span class="token punctuation">,</span> <span class="token number">28</span><span class="token punctuation">,</span> <span class="token string">'2012-07-02'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Latte'</span><span class="token punctuation">,</span> <span class="token number">271</span><span class="token punctuation">,</span> <span class="token number">36</span><span class="token punctuation">,</span> <span class="token string">'2012-06-22'</span><span class="token punctuation">]</span>
+        <span class="token comment">// ...</span>
+      <span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">transform</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'filter'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">config</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+          <span class="token literal-property property">dimension</span><span class="token operator">:</span> <span class="token string">'Date'</span><span class="token punctuation">,</span>
+          <span class="token string-property property">'>='</span><span class="token operator">:</span> <span class="token string">'2012-05'</span><span class="token punctuation">,</span>
+          <span class="token string-property property">'&lt;'</span><span class="token operator">:</span> <span class="token string">'2012-06'</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">parser</span><span class="token operator">:</span> <span class="token string">'time'</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p><strong>Formally definition:</strong></p> <p>Finally, we give the formally definition of the filter transform config here:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code><span class="token keyword">type</span> <span class="token class-name">FilterTransform</span> <span class="token operator">=</span> <span class="token punctuation">{</span>
+  type<span class="token operator">:</span> <span class="token string">'filter'</span><span class="token punctuation">;</span>
+  config<span class="token operator">:</span> ConditionalExpressionOption<span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span>
+<span class="token keyword">type</span> <span class="token class-name">ConditionalExpressionOption</span> <span class="token operator">=</span>
+  <span class="token operator">|</span> <span class="token boolean">true</span>
+  <span class="token operator">|</span> <span class="token boolean">false</span>
+  <span class="token operator">|</span> RelationalExpressionOption
+  <span class="token operator">|</span> LogicalExpressionOption<span class="token punctuation">;</span>
+<span class="token keyword">type</span> <span class="token class-name">RelationalExpressionOption</span> <span class="token operator">=</span> <span class="token punctuation">{</span>
+  dimension<span class="token operator">:</span> DimensionName <span class="token operator">|</span> DimensionIndex<span class="token punctuation">;</span>
+  parser<span class="token operator">?</span><span class="token operator">:</span> <span class="token string">'time'</span> <span class="token operator">|</span> <span class="token string">'trim'</span> <span class="token operator">|</span> <span class="token string">'number'</span><span class="token punctuation">;</span>
+  lt<span class="token operator">?</span><span class="token operator">:</span> DataValue<span class="token punctuation">;</span> <span class="token comment">// less than</span>
+  lte<span class="token operator">?</span><span class="token operator">:</span> DataValue<span class="token punctuation">;</span> <span class="token comment">// less than or equal</span>
+  gt<span class="token operator">?</span><span class="token operator">:</span> DataValue<span class="token punctuation">;</span> <span class="token comment">// greater than</span>
+  gte<span class="token operator">?</span><span class="token operator">:</span> DataValue<span class="token punctuation">;</span> <span class="token comment">// greater than or equal</span>
+  eq<span class="token operator">?</span><span class="token operator">:</span> DataValue<span class="token punctuation">;</span> <span class="token comment">// equal</span>
+  ne<span class="token operator">?</span><span class="token operator">:</span> DataValue<span class="token punctuation">;</span> <span class="token comment">// not equal</span>
+  <span class="token string">'&lt;'</span><span class="token operator">?</span><span class="token operator">:</span> DataValue<span class="token punctuation">;</span> <span class="token comment">// lt</span>
+  <span class="token string">'&lt;='</span><span class="token operator">?</span><span class="token operator">:</span> DataValue<span class="token punctuation">;</span> <span class="token comment">// lte</span>
+  <span class="token string">'>'</span><span class="token operator">?</span><span class="token operator">:</span> DataValue<span class="token punctuation">;</span> <span class="token comment">// gt</span>
+  <span class="token string">'>='</span><span class="token operator">?</span><span class="token operator">:</span> DataValue<span class="token punctuation">;</span> <span class="token comment">// gte</span>
+  <span class="token string">'='</span><span class="token operator">?</span><span class="token operator">:</span> DataValue<span class="token punctuation">;</span> <span class="token comment">// eq</span>
+  <span class="token string">'!='</span><span class="token operator">?</span><span class="token operator">:</span> DataValue<span class="token punctuation">;</span> <span class="token comment">// ne</span>
+  <span class="token string">'&lt;>'</span><span class="token operator">?</span><span class="token operator">:</span> DataValue<span class="token punctuation">;</span> <span class="token comment">// ne (SQL style)</span>
+  reg<span class="token operator">?</span><span class="token operator">:</span> RegExp <span class="token operator">|</span> <span class="token builtin">string</span><span class="token punctuation">;</span> <span class="token comment">// RegExp</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span>
+<span class="token keyword">type</span> <span class="token class-name">LogicalExpressionOption</span> <span class="token operator">=</span> <span class="token punctuation">{</span>
+  and<span class="token operator">?</span><span class="token operator">:</span> ConditionalExpressionOption<span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
+  or<span class="token operator">?</span><span class="token operator">:</span> ConditionalExpressionOption<span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
+  not<span class="token operator">?</span><span class="token operator">:</span> ConditionalExpressionOption<span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span>
+<span class="token keyword">type</span> <span class="token class-name">DataValue</span> <span class="token operator">=</span> <span class="token builtin">string</span> <span class="token operator">|</span> <span class="token builtin">number</span> <span class="token operator">|</span> Date<span class="token punctuation">;</span>
+<span class="token keyword">type</span> <span class="token class-name">DimensionName</span> <span class="token operator">=</span> <span class="token builtin">string</span><span class="token punctuation">;</span>
+<span class="token keyword">type</span> <span class="token class-name">DimensionIndex</span> <span class="token operator">=</span> <span class="token builtin">number</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <blockquote><p>Note that when using <a href="en/basics/import#shrinking-bundle-size">Minimal Bundle</a>, if you need to use this built-in transform, besides the <code>Dataset</code> component, it's required to import the <code>Transform</code> component.</p></blockquote> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code><span class="token keyword">import</span> <span class="token punctuation">{</span>
+  DatasetComponent<span class="token punctuation">,</span>
+  TransformComponent
+<span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'echarts/components'</span><span class="token punctuation">;</span>
+
+echarts<span class="token punctuation">.</span><span class="token function">use</span><span class="token punctuation">(</span><span class="token punctuation">[</span>
+  DatasetComponent<span class="token punctuation">,</span>
+  TransformComponent
+<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="sort-transform" tabindex="-1">Sort Transform</h2> <p>Another built-in transform is "sort".</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">dataset</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">dimensions</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'name'</span><span class="token punctuation">,</span> <span class="token string">'age'</span><span class="token punctuation">,</span> <span class="token string">'profession'</span><span class="token punctuation">,</span> <span class="token string">'score'</span><span class="token punctuation">,</span> <span class="token string">'date'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">[</span><span class="token string">' Hannah Krause '</span><span class="token punctuation">,</span> <span class="token number">41</span><span class="token punctuation">,</span> <span class="token string">'Engineer'</span><span class="token punctuation">,</span> <span class="token number">314</span><span class="token punctuation">,</span> <span class="token string">'2011-02-12'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Zhao Qian '</span><span class="token punctuation">,</span> <span class="token number">20</span><span class="token punctuation">,</span> <span class="token string">'Teacher'</span><span class="token punctuation">,</span> <span class="token number">351</span><span class="token punctuation">,</span> <span class="token string">'2011-03-01'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">' Jasmin Krause '</span><span class="token punctuation">,</span> <span class="token number">52</span><span class="token punctuation">,</span> <span class="token string">'Musician'</span><span class="token punctuation">,</span> <span class="token number">287</span><span class="token punctuation">,</span> <span class="token string">'2011-02-14'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Li Lei'</span><span class="token punctuation">,</span> <span class="token number">37</span><span class="token punctuation">,</span> <span class="token string">'Teacher'</span><span class="token punctuation">,</span> <span class="token number">219</span><span class="token punctuation">,</span> <span class="token string">'2011-02-18'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">' Karle Neumann '</span><span class="token punctuation">,</span> <span class="token number">25</span><span class="token punctuation">,</span> <span class="token string">'Engineer'</span><span class="token punctuation">,</span> <span class="token number">253</span><span class="token punctuation">,</span> <span class="token string">'2011-04-02'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">' Adrian Groß'</span><span class="token punctuation">,</span> <span class="token number">19</span><span class="token punctuation">,</span> <span class="token string">'Teacher'</span><span class="token punctuation">,</span> <span class="token keyword">null</span><span class="token punctuation">,</span> <span class="token string">'2011-01-16'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Mia Neumann'</span><span class="token punctuation">,</span> <span class="token number">71</span><span class="token punctuation">,</span> <span class="token string">'Engineer'</span><span class="token punctuation">,</span> <span class="token number">165</span><span class="token punctuation">,</span> <span class="token string">'2011-03-19'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">' Böhm Fuchs'</span><span class="token punctuation">,</span> <span class="token number">36</span><span class="token punctuation">,</span> <span class="token string">'Musician'</span><span class="token punctuation">,</span> <span class="token number">318</span><span class="token punctuation">,</span> <span class="token string">'2011-02-24'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Han Meimei '</span><span class="token punctuation">,</span> <span class="token number">67</span><span class="token punctuation">,</span> <span class="token string">'Engineer'</span><span class="token punctuation">,</span> <span class="token number">366</span><span class="token punctuation">,</span> <span class="token string">'2011-03-12'</span><span class="token punctuation">]</span>
+      <span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">transform</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'sort'</span><span class="token punctuation">,</span>
+        <span class="token comment">// Sort by score.</span>
+        <span class="token literal-property property">config</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">dimension</span><span class="token operator">:</span> <span class="token string">'score'</span><span class="token punctuation">,</span> <span class="token literal-property property">order</span><span class="token operator">:</span> <span class="token string">'asc'</span> <span class="token punctuation">}</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">datasetIndex</span><span class="token operator">:</span> <span class="token number">1</span>
+  <span class="token punctuation">}</span>
+  <span class="token comment">// ...</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p><iframe width="100%" height="350" src=""></iframe></p> <p>Some extra features about "sort transform":</p> <ul><li>Order by multiple dimensions is supported. See examples below.</li> <li>The sort rule:
+<ul><li>By default "numeric" (that is, number and numeric-string like <code>' 123 '</code>) are able to sorted by numeric order.</li> <li>Otherwise "non-numeric-string" are also able to be ordered among themselves. This might help to the case like grouping data items with the same tag, especially when multiple dimensions participated in the sort (See example below).</li> <li>When "numeric" is compared with "non-numeric-string", or either of them is compared with other types of value, they are not comparable. So we call the latter one as "incomparable" and treat it as "min value" or "max value" according to the prop <code>incomparable: 'min' | 'max'</code>. This feature usually helps to decide whether to put the empty values (like <code>null</code>, <code>undefined</code>, <code>NaN</code>, <code>''</code>, <code>'-'</code>) or other illegal values to the head or tail.</li></ul></li> <li><code>parser: 'time' | 'trim' | 'number'</code> can be used, the same as "filter transform".
+<ul><li>If intending to sort time values (JS <code>Date</code> instance or time string like <code>'2012-03-12 11:13:54'</code>), <code>parser: 'time'</code> should be specified. Like <code>config: { dimension: 'date', order: 'desc', parser: 'time' }</code></li> <li>If intending to sort values with unit suffix (like <code>'33%'</code>, <code>'16px'</code>), need to use <code>parser: 'number'</code>.</li></ul></li></ul> <p>See an example of multiple order:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">dataset</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">dimensions</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'name'</span><span class="token punctuation">,</span> <span class="token string">'age'</span><span class="token punctuation">,</span> <span class="token string">'profession'</span><span class="token punctuation">,</span> <span class="token string">'score'</span><span class="token punctuation">,</span> <span class="token string">'date'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">[</span><span class="token string">' Hannah Krause '</span><span class="token punctuation">,</span> <span class="token number">41</span><span class="token punctuation">,</span> <span class="token string">'Engineer'</span><span class="token punctuation">,</span> <span class="token number">314</span><span class="token punctuation">,</span> <span class="token string">'2011-02-12'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Zhao Qian '</span><span class="token punctuation">,</span> <span class="token number">20</span><span class="token punctuation">,</span> <span class="token string">'Teacher'</span><span class="token punctuation">,</span> <span class="token number">351</span><span class="token punctuation">,</span> <span class="token string">'2011-03-01'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">' Jasmin Krause '</span><span class="token punctuation">,</span> <span class="token number">52</span><span class="token punctuation">,</span> <span class="token string">'Musician'</span><span class="token punctuation">,</span> <span class="token number">287</span><span class="token punctuation">,</span> <span class="token string">'2011-02-14'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Li Lei'</span><span class="token punctuation">,</span> <span class="token number">37</span><span class="token punctuation">,</span> <span class="token string">'Teacher'</span><span class="token punctuation">,</span> <span class="token number">219</span><span class="token punctuation">,</span> <span class="token string">'2011-02-18'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">' Karle Neumann '</span><span class="token punctuation">,</span> <span class="token number">25</span><span class="token punctuation">,</span> <span class="token string">'Engineer'</span><span class="token punctuation">,</span> <span class="token number">253</span><span class="token punctuation">,</span> <span class="token string">'2011-04-02'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">' Adrian Groß'</span><span class="token punctuation">,</span> <span class="token number">19</span><span class="token punctuation">,</span> <span class="token string">'Teacher'</span><span class="token punctuation">,</span> <span class="token keyword">null</span><span class="token punctuation">,</span> <span class="token string">'2011-01-16'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Mia Neumann'</span><span class="token punctuation">,</span> <span class="token number">71</span><span class="token punctuation">,</span> <span class="token string">'Engineer'</span><span class="token punctuation">,</span> <span class="token number">165</span><span class="token punctuation">,</span> <span class="token string">'2011-03-19'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">' Böhm Fuchs'</span><span class="token punctuation">,</span> <span class="token number">36</span><span class="token punctuation">,</span> <span class="token string">'Musician'</span><span class="token punctuation">,</span> <span class="token number">318</span><span class="token punctuation">,</span> <span class="token string">'2011-02-24'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Han Meimei '</span><span class="token punctuation">,</span> <span class="token number">67</span><span class="token punctuation">,</span> <span class="token string">'Engineer'</span><span class="token punctuation">,</span> <span class="token number">366</span><span class="token punctuation">,</span> <span class="token string">'2011-03-12'</span><span class="token punctuation">]</span>
+      <span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">transform</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'sort'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">config</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+          <span class="token comment">// Sort by the two dimensions.</span>
+          <span class="token punctuation">{</span> <span class="token literal-property property">dimension</span><span class="token operator">:</span> <span class="token string">'profession'</span><span class="token punctuation">,</span> <span class="token literal-property property">order</span><span class="token operator">:</span> <span class="token string">'desc'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+          <span class="token punctuation">{</span> <span class="token literal-property property">dimension</span><span class="token operator">:</span> <span class="token string">'score'</span><span class="token punctuation">,</span> <span class="token literal-property property">order</span><span class="token operator">:</span> <span class="token string">'desc'</span> <span class="token punctuation">}</span>
+        <span class="token punctuation">]</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">datasetIndex</span><span class="token operator">:</span> <span class="token number">1</span>
+  <span class="token punctuation">}</span>
+  <span class="token comment">// ...</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p><iframe width="100%" height="350" src=""></iframe></p> <p>Finally, we give the formally definition of the sort transform config here:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code><span class="token keyword">type</span> <span class="token class-name">SortTransform</span> <span class="token operator">=</span> <span class="token punctuation">{</span>
+  type<span class="token operator">:</span> <span class="token string">'sort'</span><span class="token punctuation">;</span>
+  config<span class="token operator">:</span> OrderExpression <span class="token operator">|</span> OrderExpression<span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span>
+<span class="token keyword">type</span> <span class="token class-name">OrderExpression</span> <span class="token operator">=</span> <span class="token punctuation">{</span>
+  dimension<span class="token operator">:</span> DimensionName <span class="token operator">|</span> DimensionIndex<span class="token punctuation">;</span>
+  order<span class="token operator">:</span> <span class="token string">'asc'</span> <span class="token operator">|</span> <span class="token string">'desc'</span><span class="token punctuation">;</span>
+  incomparable<span class="token operator">?</span><span class="token operator">:</span> <span class="token string">'min'</span> <span class="token operator">|</span> <span class="token string">'max'</span><span class="token punctuation">;</span>
+  parser<span class="token operator">?</span><span class="token operator">:</span> <span class="token string">'time'</span> <span class="token operator">|</span> <span class="token string">'trim'</span> <span class="token operator">|</span> <span class="token string">'number'</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span>
+<span class="token keyword">type</span> <span class="token class-name">DimensionName</span> <span class="token operator">=</span> <span class="token builtin">string</span><span class="token punctuation">;</span>
+<span class="token keyword">type</span> <span class="token class-name">DimensionIndex</span> <span class="token operator">=</span> <span class="token builtin">number</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <blockquote><p>Note that when using <a href="en/basics/import#shrinking-bundle-size">Minimal Bundle</a>, if you need to use this built-in transform, besides the <code>Dataset</code> component, it's required to import the <code>Transform</code> component.</p></blockquote> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code><span class="token keyword">import</span> <span class="token punctuation">{</span>
+  DatasetComponent<span class="token punctuation">,</span>
+  TransformComponent
+<span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'echarts/components'</span><span class="token punctuation">;</span>
+
+echarts<span class="token punctuation">.</span><span class="token function">use</span><span class="token punctuation">(</span><span class="token punctuation">[</span>
+  DatasetComponent<span class="token punctuation">,</span>
+  TransformComponent
+<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="use-external-transforms" tabindex="-1">Use External Transforms</h2> <p>Besides built-in transforms (like 'filter', 'sort'), we can also use external transforms to provide more powerful functionalities. Here we use a third-party library <a href="https://github.com/ecomfe/echarts-stat">ecStat</a> as an example:</p> <p>This case show how to make a regression line via ecStat:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token comment">// Register the external transform at first.</span>
+echarts<span class="token punctuation">.</span><span class="token function">registerTransform</span><span class="token punctuation">(</span><span class="token function">ecStatTransform</span><span class="token punctuation">(</span>ecStat<span class="token punctuation">)</span><span class="token punctuation">.</span>regression<span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">dataset</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">source</span><span class="token operator">:</span> rawData
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">transform</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token comment">// Reference the registered external transform.</span>
+        <span class="token comment">// Note that external transform has a namespace (like 'ecStat:xxx'</span>
+        <span class="token comment">// has namespace 'ecStat').</span>
+        <span class="token comment">// built-in transform (like 'filter', 'sort') does not have a namespace.</span>
+        <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'ecStat:regression'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">config</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+          <span class="token comment">// Parameters needed by the external transform.</span>
+          <span class="token literal-property property">method</span><span class="token operator">:</span> <span class="token string">'exponential'</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'category'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'scatter'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'scatter'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">datasetIndex</span><span class="token operator">:</span> <span class="token number">0</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'regression'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">symbol</span><span class="token operator">:</span> <span class="token string">'none'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">datasetIndex</span><span class="token operator">:</span> <span class="token number">1</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>Examples with echarts-stat:</p> <ul><li><a href="https://echarts.apache.org/examples/en/editor.html?c=data-transform-aggregate&edit=1&reset=1">Aggregate</a></li> <li><a href="https://echarts.apache.org/examples/en/editor.html?c=bar-histogram&edit=1&reset=1">Bar histogram</a></li> <li><a href="https://echarts.apache.org/examples/en/editor.html?c=scatter-clustering&edit=1&reset=1">Scatter clustering</a></li> <li><a href="https://echarts.apache.org/examples/en/editor.html?c=scatter-linear-regression&edit=1&reset=1">Scatter linear regression</a></li> <li><a href="https://echarts.apache.org/examples/en/editor.html?c=scatter-exponential-regression&edit=1&reset=1">Scatter exponential regression</a></li> <li><a href="https://echarts.apache.org/examples/en/editor.html?c=scatter-logarithmic-regression&edit=1&reset=1">Scatter logarithmic regression</a></li> <li><a href="https://echarts.apache.org/examples/en/editor.html?c=scatter-polynomial-regression&edit=1&reset=1">Scatter polynomial regression</a></li></ul></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">Contributors</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/en/concepts/data-transform.md" title="Edit this Document" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">Edit this page on GitHub</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/plainheart" target="_blank" class="post-contributor has-avatar"><img alt="plainheart" src="https://echarts.apache.org/en/images/people/plainheart.jpg" loading="lazy" decoding="async" fetchpriority="low"> <span>plainheart</span></a><a href="https://github.com/100pah" target="_blank" class="post-contributor has-avatar"><img alt="100pah" src="https://echarts.apache.org/en/images/people/宿爽.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>100pah</span></a><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a><a href="https://github.com/Prajwalg19" target="_blank" class="post-contributor"><!----> <span>Prajwalg19</span></a><a href="https://github.com/shangchen0531" target="_blank" class="post-contributor"><!----> <span>shangchen0531</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(e,g,t,i,I,o,l,a,d,C,n,c,A,s,r,m,h,b,p,y,u,G,Z,B,w,W,J,M,X,f,R,F,L,v,z,Y,V,H,S,N,x,D,K,E,k,T,U,j,Q,O,q,P,_,$,ee,ge,te,ie,Ie,oe,le,ae,de){return{layout:"default",data:[{html:'<h1 id="data-transform" tabindex="-1">Data Transform</h1>\n<p><code>Data transform</code> has been supported since Apache ECharts<sup>TM</sup> 5. In echarts, the term <code>data transform</code> refers to generating new data from user provided source data using transform functions. This feature enables users to process data in a declarative way and provides users several common &quot;transform functions&quot; to make such tasks work &quot;out-of-the-box&quot;. (For consistency, we use the noun form &quot;transform&quot; rather than &quot;transformation.&quot;)</p>\n<p>The abstract formula of a data transform is: <code>outData = f(inputData)</code>, where the transform function <code>f</code> can be <code>filter</code>, <code>sort</code>, <code>regression</code>, <code>boxplot</code>, <code>cluster</code>, <code>aggregate</code> and so on.\nWith the help of these transform functions, users can implement features like:</p>\n<ul>\n<li>Partition data into multiple series.</li>\n<li>Compute statistics and visualize the results.</li>\n<li>Adapt visualization algorithms to the data and display the results.</li>\n<li>Sort data.</li>\n<li>Remove or choose certain kind of empty or special datums.</li>\n<li>...</li>\n</ul>\n<h2 id="get-started-to-data-transform" tabindex="-1">Get Started to Data Transform</h2>\n<p>In echarts, data transform is implemented based on the concept of <a href="https://echarts.apache.org/option.html##dataset">dataset</a>.You can specify a <a href="https://echarts.apache.org/option.html##dataset.transform">dataset.transform</a> within a dataset instance to indicate that the dataset should be generated using the defined <code>transform</code>. For example:</p>\n<md-live lang="js" code="\'dmFyIG9wdGlvbiA9IHsKICBkYXRhc2V0OiBbCiAgICB7CiAgICAgIC8vIFRoaXMgZGF0YXNldCBpcyBvbiBgZGF0YXNldEluZGV4OiAwYC4KICAgICAgc291cmNlOiBbCiAgICAgICAgWydQcm9kdWN0JywgJ1NhbGVzJywgJ1ByaWNlJywgJ1llYXInXSwKICAgICAgICBbJ0Nha2UnLCAxMjMsIDMyLCAyMDExXSwKICAgICAgICBbJ0NlcmVhbCcsIDIzMSwgMTQsIDIwMTFdLAogICAgICAgIFsnVG9mdScsIDIzNSwgNSwgMjAxMV0sCiAgICAgICAgWydEdW1wbGluZycsIDM0MSwgMjUsIDIwMTFdLAogICAgICAgIFsnQmlzY3VpdCcsIDEyMiwgMjksIDIwMTFdLAogICAgICAgIFsnQ2FrZScsIDE0MywgMzAsIDIwMTJdLAogICAgICAgIFsnQ2VyZWFsJywgMjAxLCAxOSwgMjAxMl0sCiAgICAgICAgWydUb2Z1JywgMjU1LCA3LCAyMDEyXSwKICAgICAgICBbJ0R1bXBsaW5nJywgMjQxLCAyNywgMjAxMl0sCiAgICAgICAgWydCaXNjdWl0JywgMTAyLCAzNCwgMjAxMl0sCiAgICAgICAgWydDYWtlJywgMTUzLCAyOCwgMjAxM10sCiAgICAgICAgWydDZXJlYWwnLCAxODEsIDIxLCAyMDEzXSwKICAgICAgICBbJ1RvZnUnLCAzOTUsIDQsIDIwMTNdLAogICAgICAgIFsnRHVtcGxpbmcnLCAyODEsIDMxLCAyMDEzXSwKICAgICAgICBbJ0Jpc2N1aXQnLCA5MiwgMzksIDIwMTNdLAogICAgICAgIFsnQ2FrZScsIDIyMywgMjksIDIwMTRdLAogICAgICAgIFsnQ2VyZWFsJywgMjExLCAxNywgMjAxNF0sCiAgICAgICAgWydUb2Z1JywgMzQ1LCAzLCAyMDE0XSwKICAgICAgICBbJ0R1bXBsaW5nJywgMjExLCAzNSwgMjAxNF0sCiAgICAgICAgWydCaXNjdWl0JywgNzIsIDI0LCAyMDE0XQogICAgICBdCiAgICAgIC8vIGlkOiAnYScKICAgIH0sCiAgICB7CiAgICAgIC8vIFRoaXMgZGF0YXNldCBpcyBvbiBgZGF0YXNldEluZGV4OiAxYC4KICAgICAgLy8gQSBgdHJhbnNmb3JtYCBpcyBjb25maWd1cmVkIHRvIGluZGljYXRlIHRoYXQgdGhlCiAgICAgIC8vIGZpbmFsIGRhdGEgb2YgdGhpcyBkYXRhc2V0IGlzIHRyYW5zZm9ybWVkIHZpYSB0aGlzCiAgICAgIC8vIHRyYW5zZm9ybSBmdW5jdGlvbi4KICAgICAgdHJhbnNmb3JtOiB7CiAgICAgICAgdHlwZTogJ2ZpbHRlcicsCiAgICAgICAgY29uZmlnOiB7IGRpbWVuc2lvbjogJ1llYXInLCB2YWx1ZTogMjAxMSB9CiAgICAgIH0KICAgICAgLy8gVGhlcmUgY2FuIGJlIG9wdGlvbmFsIHByb3BlcnRpZXMgYGZyb21EYXRhc2V0SW5kZXhgIG9yIGBmcm9tRGF0YXNldElkYAogICAgICAvLyB0byBpbmRpY2F0ZSB0aGF0IHdoZXJlIGlzIHRoZSBpbnB1dCBkYXRhIG9mIHRoZSB0cmFuc2Zvcm0gZnJvbS4KICAgICAgLy8gRm9yIGV4YW1wbGUsIGBmcm9tRGF0YXNldEluZGV4OiAwYCBzcGVjaWZ5IHRoZSBpbnB1dCBkYXRhIGlzIGZyb20KICAgICAgLy8gdGhlIGRhdGFzZXQgb24gYGRhdGFzZXRJbmRleDogMGAsIG9yIGBmcm9tRGF0YXNldElkOiAnYSdgIHNwZWNpZnkgdGhlCiAgICAgIC8vIGlucHV0IGRhdGEgaXMgZnJvbSB0aGUgZGF0YXNldCBoYXZpbmcgYGlkOiAnYSdgLgogICAgICAvLyBbREVGQVVMVF9SVUxFXQogICAgICAvLyBJZiBib3RoIGBmcm9tRGF0YXNldEluZGV4YCBhbmQgYGZyb21EYXRhc2V0SWRgIGFyZSBvbWl0dGVkLAogICAgICAvLyBgZnJvbURhdGFzZXRJbmRleDogMGAgYXJlIHVzZWQgYnkgZGVmYXVsdC4KICAgIH0sCiAgICB7CiAgICAgIC8vIFRoaXMgZGF0YXNldCBpcyBvbiBgZGF0YXNldEluZGV4OiAyYC4KICAgICAgLy8gU2ltaWxhcmx5LCBpZiBuZWl0aGVyIGBmcm9tRGF0YXNldEluZGV4YCBub3IgYGZyb21EYXRhc2V0SWRgIGlzCiAgICAgIC8vIHNwZWNpZmllZCwgYGZyb21EYXRhc2V0SW5kZXg6IDBgIGlzIHVzZWQgYnkgZGVmYXVsdAogICAgICB0cmFuc2Zvcm06IHsKICAgICAgICAvLyBUaGUgImZpbHRlciIgdHJhbnNmb3JtIGZpbHRlcnMgYW5kIGdldHMgZGF0YSBpdGVtcyBvbmx5IG1hdGNoCiAgICAgICAgLy8gdGhlIGdpdmVuIGNvbmRpdGlvbiBpbiBwcm9wZXJ0eSBgY29uZmlnYC4KICAgICAgICB0eXBlOiAnZmlsdGVyJywKICAgICAgICAvLyBUcmFuc2Zvcm1zIGhhcyBhIHByb3BlcnR5IGBjb25maWdgLiBJbiB0aGlzICJmaWx0ZXIiIHRyYW5zZm9ybSwKICAgICAgICAvLyB0aGUgYGNvbmZpZ2Agc3BlY2lmeSB0aGUgY29uZGl0aW9uIHRoYXQgZWFjaCByZXN1bHQgZGF0YSBpdGVtCiAgICAgICAgLy8gc2hvdWxkIGJlIHNhdGlzZmllZC4gSW4gdGhpcyBjYXNlLCB0aGlzIHRyYW5zZm9ybSBnZXQgYWxsIG9mCiAgICAgICAgLy8gdGhlIGRhdGEgaXRlbXMgdGhhdCB0aGUgdmFsdWUgb24gZGltZW5zaW9uICJZZWFyIiBlcXVhbHMgdG8gMjAxMi4KICAgICAgICBjb25maWc6IHsgZGltZW5zaW9uOiAnWWVhcicsIHZhbHVlOiAyMDEyIH0KICAgICAgfQogICAgfSwKICAgIHsKICAgICAgLy8gVGhpcyBkYXRhc2V0IGlzIG9uIGBkYXRhc2V0SW5kZXg6IDNgCiAgICAgIHRyYW5zZm9ybTogewogICAgICAgIHR5cGU6ICdmaWx0ZXInLAogICAgICAgIGNvbmZpZzogeyBkaW1lbnNpb246ICdZZWFyJywgdmFsdWU6IDIwMTMgfQogICAgICB9CiAgICB9CiAgXSwKICBzZXJpZXM6IFsKICAgIHsKICAgICAgdHlwZTogJ3BpZScsCiAgICAgIHJhZGl1czogNTAsCiAgICAgIGNlbnRlcjogWycyNSUnLCAnNTAlJ10sCiAgICAgIC8vIEluIHRoaXMgY2FzZSwgZWFjaCAicGllIiBzZXJpZXMgcmVmZXJlbmNlIHRvIGEgZGF0YXNldCB0aGF0IGhhcwogICAgICAvLyB0aGUgcmVzdWx0IG9mIGl0cyAiZmlsdGVyIiB0cmFuc2Zvcm0uCiAgICAgIGRhdGFzZXRJbmRleDogMQogICAgfSwKICAgIHsKICAgICAgdHlwZTogJ3BpZScsCiAgICAgIHJhZGl1czogNTAsCiAgICAgIGNlbnRlcjogWyc1MCUnLCAnNTAlJ10sCiAgICAgIGRhdGFzZXRJbmRleDogMgogICAgfSwKICAgIHsKICAgICAgdHlwZTogJ3BpZScsCiAgICAgIHJhZGl1czogNTAsCiAgICAgIGNlbnRlcjogWyc3NSUnLCAnNTAlJ10sCiAgICAgIGRhdGFzZXRJbmRleDogMwogICAgfQogIF0KfTs\'" v-bind="{}" />\n<p>Let\'s summarize the key points of using data transform:</p>\n<ul>\n<li>Generate new data from existing declared data via the declaration of <code>transform</code>, <code>fromDatasetIndex</code>/<code>fromDatasetId</code> in some blank dataset.</li>\n<li>Series references these datasets to show the result.</li>\n</ul>\n<h2 id="advanced-usage" tabindex="-1">Advanced Usage</h2>\n<h4 id="piped-transform" tabindex="-1">Piped Transform</h4>\n<p>There is a syntactic sugar that pipe transforms like:</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIGRhdGFzZXQ6IFsKICAgIHsKICAgICAgc291cmNlOiBbXSAvLyBUaGUgb3JpZ2luYWwgZGF0YQogICAgfSwKICAgIHsKICAgICAgLy8gRGVjbGFyZSB0cmFuc2Zvcm1zIGluIGFuIGFycmF5IHRvIHBpcGUgbXVsdGlwbGUgdHJhbnNmb3JtcywKICAgICAgLy8gd2hpY2ggbWFrZXMgdGhlbSBleGVjdXRlIG9uZSBieSBvbmUgYW5kIHRha2UgdGhlIG91dHB1dCBvZgogICAgICAvLyB0aGUgcHJldmlvdXMgdHJhbnNmb3JtIGFzIHRoZSBpbnB1dCBvZiB0aGUgbmV4dCB0cmFuc2Zvcm0uCiAgICAgIHRyYW5zZm9ybTogWwogICAgICAgIHsKICAgICAgICAgIHR5cGU6ICdmaWx0ZXInLAogICAgICAgICAgY29uZmlnOiB7IGRpbWVuc2lvbjogJ1Byb2R1Y3QnLCB2YWx1ZTogJ1RvZnUnIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgIHR5cGU6ICdzb3J0JywKICAgICAgICAgIGNvbmZpZzogeyBkaW1lbnNpb246ICdZZWFyJywgb3JkZXI6ICdkZXNjJyB9CiAgICAgICAgfQogICAgICBdCiAgICB9CiAgXSwKICBzZXJpZXM6IHsKICAgIHR5cGU6ICdwaWUnLAogICAgLy8gRGlzcGxheSB0aGUgcmVzdWx0IG9mIHRoZSBwaXBlZCB0cmFuc2Zvcm0uCiAgICBkYXRhc2V0SW5kZXg6IDEKICB9Cn07\'" line-highlights="\'\'" />\n<blockquote>\n<p>Note: theoretically any type of transform is able to have multiple input data and multiple output data. But when a transform is piped, it is only able to take one input (except it is the first transform of the pipe) and product one output (except it is the last transform of the pipe).</p>\n</blockquote>\n<h4 id="output-multiple-data" tabindex="-1">Output Multiple Data</h4>\n<p>In most cases, transform functions only need to produce one data. But there is indeed scenarios that a transform function needs to produce multiple data, each of whom might be used by different series.</p>\n<p>For example, in the built-in boxplot transform, besides boxplot data produced, the outlier data are also produced, which can be used in a scatter series. See the <a href="https://echarts.apache.org/examples/en/editor.html?c=boxplot-light-velocity">example</a>.</p>\n<p>We use prop <a href="https://echarts.apache.org/option.html##dataset.fromTransformResult">dataset.fromTransformResult</a> to satisfy this requirement. For example:</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIGRhdGFzZXQ6IFsKICAgIHsKICAgICAgLy8gT3JpZ2luYWwgc291cmNlIGRhdGEuCiAgICAgIHNvdXJjZTogW10KICAgIH0sCiAgICB7CiAgICAgIHRyYW5zZm9ybTogewogICAgICAgIHR5cGU6ICdib3hwbG90JwogICAgICB9CiAgICAgIC8vIEFmdGVyIHRoaXMgImJveHBsb3QgdHJhbnNmb3JtIiB0d28gcmVzdWx0IGRhdGEgZ2VuZXJhdGVkOgogICAgICAvLyByZXN1bHRbMF06IFRoZSBib3hwbG90IGRhdGEKICAgICAgLy8gcmVzdWx0WzFdOiBUaGUgb3V0bGllciBkYXRhCiAgICAgIC8vIEJ5IGRlZmF1bHQsIHdoZW4gc2VyaWVzIG9yIG90aGVyIGRhdGFzZXQgcmVmZXJlbmNlIHRoaXMgZGF0YXNldCwKICAgICAgLy8gb25seSByZXN1bHRbMF0gY2FuIGJlIHZpc2l0ZWQuCiAgICAgIC8vIElmIHdlIG5lZWQgdG8gdmlzaXQgcmVzdWx0WzFdLCB3ZSBoYXZlIHRvIHVzZSBhbm90aGVyIGRhdGFzZXQKICAgICAgLy8gYXMgZm9sbG93czoKICAgIH0sCiAgICB7CiAgICAgIC8vIFRoaXMgZXh0cmEgZGF0YXNldCByZWZlcmVuY2VzIHRoZSBkYXRhc2V0IGFib3ZlLCBhbmQgcmV0cmlldmVzCiAgICAgIC8vIHRoZSByZXN1bHRbMV0gYXMgaXRzIG93biBkYXRhLiBUaHVzIHNlcmllcyBvciBvdGhlciBkYXRhc2V0IGNhbgogICAgICAvLyByZWZlcmVuY2UgdGhpcyBkYXRhc2V0IHRvIGdldCB0aGUgZGF0YSBmcm9tIHJlc3VsdFsxXS4KICAgICAgZnJvbURhdGFzZXRJbmRleDogMSwKICAgICAgZnJvbVRyYW5zZm9ybVJlc3VsdDogMQogICAgfQogIF0sCiAgeEF4aXM6IHsKICAgIHR5cGU6ICdjYXRlZ29yeScKICB9LAogIHlBeGlzOiB7fSwKICBzZXJpZXM6IFsKICAgIHsKICAgICAgbmFtZTogJ2JveHBsb3QnLAogICAgICB0eXBlOiAnYm94cGxvdCcsCiAgICAgIC8vIFJlZmVyZW5jZSB0aGUgZGF0YSBmcm9tIHJlc3VsdFswXS4KICAgICAgZGF0YXNldEluZGV4OiAxCiAgICB9LAogICAgewogICAgICBuYW1lOiAnb3V0bGllcicsCiAgICAgIHR5cGU6ICdzY2F0dGVyJywKICAgICAgLy8gUmVmZXJlbmNlIHRoZSBkYXRhIGZyb20gcmVzdWx0WzFdLgogICAgICBkYXRhc2V0SW5kZXg6IDIKICAgIH0KICBdCn07\'" line-highlights="\'\'" />\n<p>What more, <a href="https://echarts.apache.org/option.html##dataset.fromTransformResult">dataset.fromTransformResult</a> and <a href="https://echarts.apache.org/option.html##dataset.transform">dataset.transform</a> can both appear in one dataset, which means that the input of the transform is from retrieved from the upstream result specified by <code>fromTransformResult</code>. For example:</p>\n<md-code-block lang="js" code="\'ewogIGZyb21EYXRhc2V0SW5kZXg6IDEsCiAgZnJvbVRyYW5zZm9ybVJlc3VsdDogMSwKICB0cmFuc2Zvcm06IHsKICAgIHR5cGU6ICdzb3J0JywKICAgIGNvbmZpZzogeyBkaW1lbnNpb246IDIsIG9yZGVyOiAnZGVzYycgfQogIH0KfQ\'" line-highlights="\'\'" />\n<h4 id="debug-in-develop-environment" tabindex="-1">Debug in Develop Environment</h4>\n<p>When using data transform, we might run into the trouble that the final chart do not display correctly but we do not know where the config is wrong. There is a property <code>transform.print</code> might help in such case. (<code>transform.print</code> is only available in dev environment).</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIGRhdGFzZXQ6IFsKICAgIHsKICAgICAgc291cmNlOiBbXQogICAgfSwKICAgIHsKICAgICAgdHJhbnNmb3JtOiB7CiAgICAgICAgdHlwZTogJ2ZpbHRlcicsCiAgICAgICAgY29uZmlnOiB7fSwKICAgICAgICAvLyBUaGUgcmVzdWx0IG9mIHRoaXMgdHJhbnNmb3JtIHdpbGwgYmUgcHJpbnRlZAogICAgICAgIC8vIGluIGRldiB0b29sIHZpYSBgY29uc29sZS5sb2dgLgogICAgICAgIHByaW50OiB0cnVlCiAgICAgIH0KICAgIH0KICBdCn07\'" line-highlights="\'\'" />\n<h2 id="filter-transform" tabindex="-1">Filter Transform</h2>\n<p>Transform type &quot;filter&quot; is a built-in transform that provide data filter according to specified conditions. The basic option is like:</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIGRhdGFzZXQ6IFsKICAgIHsKICAgICAgc291cmNlOiBbCiAgICAgICAgWydQcm9kdWN0JywgJ1NhbGVzJywgJ1ByaWNlJywgJ1llYXInXSwKICAgICAgICBbJ0Nha2UnLCAxMjMsIDMyLCAyMDExXSwKICAgICAgICBbJ0xhdHRlJywgMjMxLCAxNCwgMjAxMV0sCiAgICAgICAgWydUb2Z1JywgMjM1LCA1LCAyMDExXSwKICAgICAgICBbJ01pbGsgVGVlJywgMzQxLCAyNSwgMjAxMV0sCiAgICAgICAgWydQb3JyaWRnZScsIDEyMiwgMjksIDIwMTFdLAogICAgICAgIFsnQ2FrZScsIDE0MywgMzAsIDIwMTJdLAogICAgICAgIFsnTGF0dGUnLCAyMDEsIDE5LCAyMDEyXSwKICAgICAgICBbJ1RvZnUnLCAyNTUsIDcsIDIwMTJdLAogICAgICAgIFsnTWlsayBUZWUnLCAyNDEsIDI3LCAyMDEyXSwKICAgICAgICBbJ1BvcnJpZGdlJywgMTAyLCAzNCwgMjAxMl0sCiAgICAgICAgWydDYWtlJywgMTUzLCAyOCwgMjAxM10sCiAgICAgICAgWydMYXR0ZScsIDE4MSwgMjEsIDIwMTNdLAogICAgICAgIFsnVG9mdScsIDM5NSwgNCwgMjAxM10sCiAgICAgICAgWydNaWxrIFRlZScsIDI4MSwgMzEsIDIwMTNdLAogICAgICAgIFsnUG9ycmlkZ2UnLCA5MiwgMzksIDIwMTNdLAogICAgICAgIFsnQ2FrZScsIDIyMywgMjksIDIwMTRdLAogICAgICAgIFsnTGF0dGUnLCAyMTEsIDE3LCAyMDE0XSwKICAgICAgICBbJ1RvZnUnLCAzNDUsIDMsIDIwMTRdLAogICAgICAgIFsnTWlsayBUZWUnLCAyMTEsIDM1LCAyMDE0XSwKICAgICAgICBbJ1BvcnJpZGdlJywgNzIsIDI0LCAyMDE0XQogICAgICBdCiAgICB9LAogICAgewogICAgICB0cmFuc2Zvcm06IHsKICAgICAgICB0eXBlOiAnZmlsdGVyJywKICAgICAgICBjb25maWc6IHsgZGltZW5zaW9uOiAnWWVhcicsICc9JzogMjAxMSB9CiAgICAgICAgLy8gVGhlIGNvbmZpZyBpcyB0aGUgImNvbmRpdGlvbiIgb2YgdGhpcyBmaWx0ZXIuCiAgICAgICAgLy8gVGhpcyB0cmFuc2Zvcm0gdHJhdmVyc2UgdGhlIHNvdXJjZSBkYXRhIGFuZAogICAgICAgIC8vIGFuZCByZXRyaWV2ZSBhbGwgdGhlIGl0ZW1zIHRoYXQgdGhlICJZZWFyIgogICAgICAgIC8vIGlzIGAyMDExYC4KICAgICAgfQogICAgfQogIF0sCiAgc2VyaWVzOiB7CiAgICB0eXBlOiAncGllJywKICAgIGRhdGFzZXRJbmRleDogMQogIH0KfTs\'" v-bind="{}" />\n<p>This is another example of filter transform:</p>\n<p><md-example src="data-transform-filter"></md-example></p>\n<p><strong>About dimension:</strong></p>\n<p>The <code>config.dimension</code> can be:</p>\n<ul>\n<li>Dimension name declared in dataset, like <code>config: { dimension: \'Year\', \'=\': 2011 }</code>. Dimension name declaration is not mandatory.</li>\n<li>Dimension index (start from 0), like <code>config: { dimension: 3, \'=\': 2011 }</code>.</li>\n</ul>\n<p><strong>About relational operator:</strong></p>\n<p>The relational operator can be:\n<code>&gt;</code>(<code>gt</code>), <code>&gt;=</code>(<code>gte</code>), <code>&lt;</code>(<code>lt</code>), <code>&lt;=</code>(<code>lte</code>), <code>=</code>(<code>eq</code>), <code>!=</code>(<code>ne</code>, <code>&lt;&gt;</code>), <code>reg</code>. (The name in the parentheses are aliases). They follows the common semantics.\nBesides the common number comparison, there is some extra features:</p>\n<ul>\n<li>Multiple operators are able to appear in one {} item like <code>{ dimension: \'Price\', \'&gt;=\': 20, \'&lt;\': 30 }</code>, which means logical &quot;and&quot; (Price &gt;= 20 and Price &lt; 30).</li>\n<li>The data value can be &quot;numeric string&quot;. Numeric string is a string that can be converted to number. Like \' 123 \'. White spaces and line breaks will be auto trimmed in the conversion.</li>\n<li>If we need to compare &quot;JS <code>Date</code> instance&quot; or date string (like \'2012-05-12\'), we need to specify <code>parser: \'time\'</code> manually, like <code>config: { dimension: 3, lt: \'2012-05-12\', parser: \'time\' }</code>.</li>\n<li>Pure string comparison is supported but can only be used in <code>=</code>, <code>!=</code>. <code>&gt;</code>, <code>&gt;=</code>, <code>&lt;</code>, <code>&lt;=</code> do not support pure string comparison (the &quot;right value&quot; of the four operators can not be a &quot;string&quot;).</li>\n<li>The operator <code>reg</code> can be used to make regular expression test. Like using <code>{ dimension: \'Name\', reg: /\\s+Müller\\s*$/ }</code> to select all data items that the &quot;Name&quot; dimension contains family name Müller.</li>\n</ul>\n<p><strong>About logical relationship:</strong></p>\n<p>Sometimes we also need to express logical relationship ( <code>and</code> / <code>or</code> / <code>not</code> ):</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIGRhdGFzZXQ6IFsKICAgIHsKICAgICAgc291cmNlOiBbCiAgICAgICAgLy8gLi4uCiAgICAgIF0KICAgIH0sCiAgICB7CiAgICAgIHRyYW5zZm9ybTogewogICAgICAgIHR5cGU6ICdmaWx0ZXInLAogICAgICAgIGNvbmZpZzogewogICAgICAgICAgLy8gVXNlIG9wZXJhdG9yICJhbmQiLgogICAgICAgICAgLy8gU2ltaWxhcmx5LCB3ZSBjYW4gYWxzbyB1c2UgIm9yIiwgIm5vdCIgaW4gdGhlIHNhbWUgcGxhY2UuCiAgICAgICAgICAvLyBCdXQgIm5vdCIgc2hvdWxkIGJlIGZvbGxvd2VkIHdpdGggYSB7Li4ufSByYXRoZXIgdGhhbiBgWy4uLl1gLgogICAgICAgICAgYW5kOiBbCiAgICAgICAgICAgIHsgZGltZW5zaW9uOiAnWWVhcicsICc9JzogMjAxMSB9LAogICAgICAgICAgICB7IGRpbWVuc2lvbjogJ1ByaWNlJywgJz49JzogMjAsICc8JzogMzAgfQogICAgICAgICAgXQogICAgICAgIH0KICAgICAgICAvLyBUaGUgY29uZGl0aW9uIGlzICJZZWFyIiBpcyAyMDExIGFuZCAiUHJpY2UiIGlzIGdyZWF0ZXIKICAgICAgICAvLyBvciBlcXVhbCB0byAyMCBidXQgbGVzcyB0aGFuIDMwLgogICAgICB9CiAgICB9CiAgXSwKICBzZXJpZXM6IHsKICAgIHR5cGU6ICdwaWUnLAogICAgZGF0YXNldEluZGV4OiAxCiAgfQp9Ow\'" line-highlights="\'\'" />\n<p><code>and</code>/<code>or</code>/<code>not</code> can be nested like:</p>\n<md-code-block lang="js" code="\'dHJhbnNmb3JtOiB7CiAgdHlwZTogJ2ZpbHRlcicsCiAgY29uZmlnOiB7CiAgICBvcjogW3sKICAgICAgYW5kOiBbewogICAgICAgIGRpbWVuc2lvbjogJ1ByaWNlJywgJz49JzogMTAsICc8JzogMjAKICAgICAgfSwgewogICAgICAgIGRpbWVuc2lvbjogJ1NhbGVzJywgJzwnOiAxMDAKICAgICAgfSwgewogICAgICAgIG5vdDogeyBkaW1lbnNpb246ICdQcm9kdWN0JywgJz0nOiAnVG9mdScgfQogICAgICB9XQogICAgfSwgewogICAgICBhbmQ6IFt7CiAgICAgICAgZGltZW5zaW9uOiAnUHJpY2UnLCAnPj0nOiAxMCwgJzwnOiAyMAogICAgICB9LCB7CiAgICAgICAgZGltZW5zaW9uOiAnU2FsZXMnLCAnPCc6IDEwMAogICAgICB9LCB7CiAgICAgICAgbm90OiB7IGRpbWVuc2lvbjogJ1Byb2R1Y3QnLCAnPSc6ICdDYWtlJyB9CiAgICAgIH1dCiAgICB9XQogIH0KfQ\'" line-highlights="\'\'" />\n<p><strong>About parser:</strong></p>\n<p>Some &quot;parser&quot; can be specified when make value comparison. At present only supported:</p>\n<ul>\n<li><code>parser: \'time\'</code>: Parse the value to date time before comparing. The parser rule is the same as <code>echarts.time.parse</code>, where JS <code>Date</code> instance, timestamp number (in millisecond) and time string (like <code>\'2012-05-12 03:11:22\'</code>) are supported to be parse to timestamp number, while other value will be parsed to <code>NaN</code>.</li>\n<li><code>parser: \'trim\'</code>: Trim the string before making comparison. For non-string, return the original value.</li>\n<li><code>parser: \'number\'</code>: Force to convert the value to number before making comparison. If not possible to be converted to a meaningful number, converted to <code>NaN</code>. In most cases it is not necessary, because by default the value will be auto converted to number if possible before making comparison. But the default conversion is strict while this parser provide a loose strategy. If we meet the case that number string with unit suffix (like <code>\'33%\'</code>, <code>12px</code>), we should use <code>parser: \'number\'</code> to convert them to number before making comparison.</li>\n</ul>\n<p>This is an example to show the <code>parser: \'time\'</code>:</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIGRhdGFzZXQ6IFsKICAgIHsKICAgICAgc291cmNlOiBbCiAgICAgICAgWydQcm9kdWN0JywgJ1NhbGVzJywgJ1ByaWNlJywgJ0RhdGUnXSwKICAgICAgICBbJ01pbGsgVGVlJywgMzExLCAyMSwgJzIwMTItMDUtMTInXSwKICAgICAgICBbJ0Nha2UnLCAxMzUsIDI4LCAnMjAxMi0wNS0yMiddLAogICAgICAgIFsnTGF0dGUnLCAyNjIsIDM2LCAnMjAxMi0wNi0wMiddLAogICAgICAgIFsnTWlsayBUZWUnLCAzNTksIDIxLCAnMjAxMi0wNi0yMiddLAogICAgICAgIFsnQ2FrZScsIDEyMSwgMjgsICcyMDEyLTA3LTAyJ10sCiAgICAgICAgWydMYXR0ZScsIDI3MSwgMzYsICcyMDEyLTA2LTIyJ10KICAgICAgICAvLyAuLi4KICAgICAgXQogICAgfSwKICAgIHsKICAgICAgdHJhbnNmb3JtOiB7CiAgICAgICAgdHlwZTogJ2ZpbHRlcicsCiAgICAgICAgY29uZmlnOiB7CiAgICAgICAgICBkaW1lbnNpb246ICdEYXRlJywKICAgICAgICAgICc-PSc6ICcyMDEyLTA1JywKICAgICAgICAgICc8JzogJzIwMTItMDYnLAogICAgICAgICAgcGFyc2VyOiAndGltZScKICAgICAgICB9CiAgICAgIH0KICAgIH0KICBdCn07\'" line-highlights="\'\'" />\n<p><strong>Formally definition:</strong></p>\n<p>Finally, we give the formally definition of the filter transform config here:</p>\n<md-code-block lang="ts" code="\'dHlwZSBGaWx0ZXJUcmFuc2Zvcm0gPSB7CiAgdHlwZTogJ2ZpbHRlcic7CiAgY29uZmlnOiBDb25kaXRpb25hbEV4cHJlc3Npb25PcHRpb247Cn07CnR5cGUgQ29uZGl0aW9uYWxFeHByZXNzaW9uT3B0aW9uID0KICB8IHRydWUKICB8IGZhbHNlCiAgfCBSZWxhdGlvbmFsRXhwcmVzc2lvbk9wdGlvbgogIHwgTG9naWNhbEV4cHJlc3Npb25PcHRpb247CnR5cGUgUmVsYXRpb25hbEV4cHJlc3Npb25PcHRpb24gPSB7CiAgZGltZW5zaW9uOiBEaW1lbnNpb25OYW1lIHwgRGltZW5zaW9uSW5kZXg7CiAgcGFyc2VyPzogJ3RpbWUnIHwgJ3RyaW0nIHwgJ251bWJlcic7CiAgbHQ_OiBEYXRhVmFsdWU7IC8vIGxlc3MgdGhhbgogIGx0ZT86IERhdGFWYWx1ZTsgLy8gbGVzcyB0aGFuIG9yIGVxdWFsCiAgZ3Q_OiBEYXRhVmFsdWU7IC8vIGdyZWF0ZXIgdGhhbgogIGd0ZT86IERhdGFWYWx1ZTsgLy8gZ3JlYXRlciB0aGFuIG9yIGVxdWFsCiAgZXE_OiBEYXRhVmFsdWU7IC8vIGVxdWFsCiAgbmU_OiBEYXRhVmFsdWU7IC8vIG5vdCBlcXVhbAogICc8Jz86IERhdGFWYWx1ZTsgLy8gbHQKICAnPD0nPzogRGF0YVZhbHVlOyAvLyBsdGUKICAnPic_OiBEYXRhVmFsdWU7IC8vIGd0CiAgJz49Jz86IERhdGFWYWx1ZTsgLy8gZ3RlCiAgJz0nPzogRGF0YVZhbHVlOyAvLyBlcQogICchPSc_OiBEYXRhVmFsdWU7IC8vIG5lCiAgJzw-Jz86IERhdGFWYWx1ZTsgLy8gbmUgKFNRTCBzdHlsZSkKICByZWc_OiBSZWdFeHAgfCBzdHJpbmc7IC8vIFJlZ0V4cAp9Owp0eXBlIExvZ2ljYWxFeHByZXNzaW9uT3B0aW9uID0gewogIGFuZD86IENvbmRpdGlvbmFsRXhwcmVzc2lvbk9wdGlvbltdOwogIG9yPzogQ29uZGl0aW9uYWxFeHByZXNzaW9uT3B0aW9uW107CiAgbm90PzogQ29uZGl0aW9uYWxFeHByZXNzaW9uT3B0aW9uOwp9Owp0eXBlIERhdGFWYWx1ZSA9IHN0cmluZyB8IG51bWJlciB8IERhdGU7CnR5cGUgRGltZW5zaW9uTmFtZSA9IHN0cmluZzsKdHlwZSBEaW1lbnNpb25JbmRleCA9IG51bWJlcjs\'" line-highlights="\'\'" />\n<blockquote>\n<p>Note that when using <a href="en/basics/import#shrinking-bundle-size">Minimal Bundle</a>, if you need to use this built-in transform, besides the <code>Dataset</code> component, it\'s required to import the <code>Transform</code> component.</p>\n</blockquote>\n<md-code-block lang="ts" code="\'aW1wb3J0IHsKICBEYXRhc2V0Q29tcG9uZW50LAogIFRyYW5zZm9ybUNvbXBvbmVudAp9IGZyb20gJ2VjaGFydHMvY29tcG9uZW50cyc7CgplY2hhcnRzLnVzZShbCiAgRGF0YXNldENvbXBvbmVudCwKICBUcmFuc2Zvcm1Db21wb25lbnQKXSk7\'" line-highlights="\'\'" />\n<h2 id="sort-transform" tabindex="-1">Sort Transform</h2>\n<p>Another built-in transform is &quot;sort&quot;.</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIGRhdGFzZXQ6IFsKICAgIHsKICAgICAgZGltZW5zaW9uczogWyduYW1lJywgJ2FnZScsICdwcm9mZXNzaW9uJywgJ3Njb3JlJywgJ2RhdGUnXSwKICAgICAgc291cmNlOiBbCiAgICAgICAgWycgSGFubmFoIEtyYXVzZSAnLCA0MSwgJ0VuZ2luZWVyJywgMzE0LCAnMjAxMS0wMi0xMiddLAogICAgICAgIFsnWmhhbyBRaWFuICcsIDIwLCAnVGVhY2hlcicsIDM1MSwgJzIwMTEtMDMtMDEnXSwKICAgICAgICBbJyBKYXNtaW4gS3JhdXNlICcsIDUyLCAnTXVzaWNpYW4nLCAyODcsICcyMDExLTAyLTE0J10sCiAgICAgICAgWydMaSBMZWknLCAzNywgJ1RlYWNoZXInLCAyMTksICcyMDExLTAyLTE4J10sCiAgICAgICAgWycgS2FybGUgTmV1bWFubiAnLCAyNSwgJ0VuZ2luZWVyJywgMjUzLCAnMjAxMS0wNC0wMiddLAogICAgICAgIFsnIEFkcmlhbiBHcm_DnycsIDE5LCAnVGVhY2hlcicsIG51bGwsICcyMDExLTAxLTE2J10sCiAgICAgICAgWydNaWEgTmV1bWFubicsIDcxLCAnRW5naW5lZXInLCAxNjUsICcyMDExLTAzLTE5J10sCiAgICAgICAgWycgQsO2aG0gRnVjaHMnLCAzNiwgJ011c2ljaWFuJywgMzE4LCAnMjAxMS0wMi0yNCddLAogICAgICAgIFsnSGFuIE1laW1laSAnLCA2NywgJ0VuZ2luZWVyJywgMzY2LCAnMjAxMS0wMy0xMiddCiAgICAgIF0KICAgIH0sCiAgICB7CiAgICAgIHRyYW5zZm9ybTogewogICAgICAgIHR5cGU6ICdzb3J0JywKICAgICAgICAvLyBTb3J0IGJ5IHNjb3JlLgogICAgICAgIGNvbmZpZzogeyBkaW1lbnNpb246ICdzY29yZScsIG9yZGVyOiAnYXNjJyB9CiAgICAgIH0KICAgIH0KICBdLAogIHNlcmllczogewogICAgdHlwZTogJ2JhcicsCiAgICBkYXRhc2V0SW5kZXg6IDEKICB9CiAgLy8gLi4uCn07\'" line-highlights="\'\'" />\n<p><md-example src="data-transform-sort-bar"></md-example></p>\n<p>Some extra features about &quot;sort transform&quot;:</p>\n<ul>\n<li>Order by multiple dimensions is supported. See examples below.</li>\n<li>The sort rule:\n<ul>\n<li>By default &quot;numeric&quot; (that is, number and numeric-string like <code>\' 123 \'</code>) are able to sorted by numeric order.</li>\n<li>Otherwise &quot;non-numeric-string&quot; are also able to be ordered among themselves. This might help to the case like grouping data items with the same tag, especially when multiple dimensions participated in the sort (See example below).</li>\n<li>When &quot;numeric&quot; is compared with &quot;non-numeric-string&quot;, or either of them is compared with other types of value, they are not comparable. So we call the latter one as &quot;incomparable&quot; and treat it as &quot;min value&quot; or &quot;max value&quot; according to the prop <code>incomparable: \'min\' | \'max\'</code>. This feature usually helps to decide whether to put the empty values (like <code>null</code>, <code>undefined</code>, <code>NaN</code>, <code>\'\'</code>, <code>\'-\'</code>) or other illegal values to the head or tail.</li>\n</ul>\n</li>\n<li><code>parser: \'time\' | \'trim\' | \'number\'</code> can be used, the same as &quot;filter transform&quot;.\n<ul>\n<li>If intending to sort time values (JS <code>Date</code> instance or time string like <code>\'2012-03-12 11:13:54\'</code>), <code>parser: \'time\'</code> should be specified. Like <code>config: { dimension: \'date\', order: \'desc\', parser: \'time\' }</code></li>\n<li>If intending to sort values with unit suffix (like <code>\'33%\'</code>, <code>\'16px\'</code>), need to use <code>parser: \'number\'</code>.</li>\n</ul>\n</li>\n</ul>\n<p>See an example of multiple order:</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIGRhdGFzZXQ6IFsKICAgIHsKICAgICAgZGltZW5zaW9uczogWyduYW1lJywgJ2FnZScsICdwcm9mZXNzaW9uJywgJ3Njb3JlJywgJ2RhdGUnXSwKICAgICAgc291cmNlOiBbCiAgICAgICAgWycgSGFubmFoIEtyYXVzZSAnLCA0MSwgJ0VuZ2luZWVyJywgMzE0LCAnMjAxMS0wMi0xMiddLAogICAgICAgIFsnWmhhbyBRaWFuICcsIDIwLCAnVGVhY2hlcicsIDM1MSwgJzIwMTEtMDMtMDEnXSwKICAgICAgICBbJyBKYXNtaW4gS3JhdXNlICcsIDUyLCAnTXVzaWNpYW4nLCAyODcsICcyMDExLTAyLTE0J10sCiAgICAgICAgWydMaSBMZWknLCAzNywgJ1RlYWNoZXInLCAyMTksICcyMDExLTAyLTE4J10sCiAgICAgICAgWycgS2FybGUgTmV1bWFubiAnLCAyNSwgJ0VuZ2luZWVyJywgMjUzLCAnMjAxMS0wNC0wMiddLAogICAgICAgIFsnIEFkcmlhbiBHcm_DnycsIDE5LCAnVGVhY2hlcicsIG51bGwsICcyMDExLTAxLTE2J10sCiAgICAgICAgWydNaWEgTmV1bWFubicsIDcxLCAnRW5naW5lZXInLCAxNjUsICcyMDExLTAzLTE5J10sCiAgICAgICAgWycgQsO2aG0gRnVjaHMnLCAzNiwgJ011c2ljaWFuJywgMzE4LCAnMjAxMS0wMi0yNCddLAogICAgICAgIFsnSGFuIE1laW1laSAnLCA2NywgJ0VuZ2luZWVyJywgMzY2LCAnMjAxMS0wMy0xMiddCiAgICAgIF0KICAgIH0sCiAgICB7CiAgICAgIHRyYW5zZm9ybTogewogICAgICAgIHR5cGU6ICdzb3J0JywKICAgICAgICBjb25maWc6IFsKICAgICAgICAgIC8vIFNvcnQgYnkgdGhlIHR3byBkaW1lbnNpb25zLgogICAgICAgICAgeyBkaW1lbnNpb246ICdwcm9mZXNzaW9uJywgb3JkZXI6ICdkZXNjJyB9LAogICAgICAgICAgeyBkaW1lbnNpb246ICdzY29yZScsIG9yZGVyOiAnZGVzYycgfQogICAgICAgIF0KICAgICAgfQogICAgfQogIF0sCiAgc2VyaWVzOiB7CiAgICB0eXBlOiAnYmFyJywKICAgIGRhdGFzZXRJbmRleDogMQogIH0KICAvLyAuLi4KfTs\'" line-highlights="\'\'" />\n<p><md-example src="doc-example/data-transform-multiple-sort-bar"></md-example></p>\n<p>Finally, we give the formally definition of the sort transform config here:</p>\n<md-code-block lang="ts" code="\'dHlwZSBTb3J0VHJhbnNmb3JtID0gewogIHR5cGU6ICdzb3J0JzsKICBjb25maWc6IE9yZGVyRXhwcmVzc2lvbiB8IE9yZGVyRXhwcmVzc2lvbltdOwp9Owp0eXBlIE9yZGVyRXhwcmVzc2lvbiA9IHsKICBkaW1lbnNpb246IERpbWVuc2lvbk5hbWUgfCBEaW1lbnNpb25JbmRleDsKICBvcmRlcjogJ2FzYycgfCAnZGVzYyc7CiAgaW5jb21wYXJhYmxlPzogJ21pbicgfCAnbWF4JzsKICBwYXJzZXI_OiAndGltZScgfCAndHJpbScgfCAnbnVtYmVyJzsKfTsKdHlwZSBEaW1lbnNpb25OYW1lID0gc3RyaW5nOwp0eXBlIERpbWVuc2lvbkluZGV4ID0gbnVtYmVyOw\'" line-highlights="\'\'" />\n<blockquote>\n<p>Note that when using <a href="en/basics/import#shrinking-bundle-size">Minimal Bundle</a>, if you need to use this built-in transform, besides the <code>Dataset</code> component, it\'s required to import the <code>Transform</code> component.</p>\n</blockquote>\n<md-code-block lang="ts" code="\'aW1wb3J0IHsKICBEYXRhc2V0Q29tcG9uZW50LAogIFRyYW5zZm9ybUNvbXBvbmVudAp9IGZyb20gJ2VjaGFydHMvY29tcG9uZW50cyc7CgplY2hhcnRzLnVzZShbCiAgRGF0YXNldENvbXBvbmVudCwKICBUcmFuc2Zvcm1Db21wb25lbnQKXSk7\'" line-highlights="\'\'" />\n<h2 id="use-external-transforms" tabindex="-1">Use External Transforms</h2>\n<p>Besides built-in transforms (like \'filter\', \'sort\'), we can also use external transforms to provide more powerful functionalities. Here we use a third-party library <a href="https://github.com/ecomfe/echarts-stat">ecStat</a> as an example:</p>\n<p>This case show how to make a regression line via ecStat:</p>\n<md-code-block lang="js" code="\'Ly8gUmVnaXN0ZXIgdGhlIGV4dGVybmFsIHRyYW5zZm9ybSBhdCBmaXJzdC4KZWNoYXJ0cy5yZWdpc3RlclRyYW5zZm9ybShlY1N0YXRUcmFuc2Zvcm0oZWNTdGF0KS5yZWdyZXNzaW9uKTs\'" line-highlights="\'\'" />\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIGRhdGFzZXQ6IFsKICAgIHsKICAgICAgc291cmNlOiByYXdEYXRhCiAgICB9LAogICAgewogICAgICB0cmFuc2Zvcm06IHsKICAgICAgICAvLyBSZWZlcmVuY2UgdGhlIHJlZ2lzdGVyZWQgZXh0ZXJuYWwgdHJhbnNmb3JtLgogICAgICAgIC8vIE5vdGUgdGhhdCBleHRlcm5hbCB0cmFuc2Zvcm0gaGFzIGEgbmFtZXNwYWNlIChsaWtlICdlY1N0YXQ6eHh4JwogICAgICAgIC8vIGhhcyBuYW1lc3BhY2UgJ2VjU3RhdCcpLgogICAgICAgIC8vIGJ1aWx0LWluIHRyYW5zZm9ybSAobGlrZSAnZmlsdGVyJywgJ3NvcnQnKSBkb2VzIG5vdCBoYXZlIGEgbmFtZXNwYWNlLgogICAgICAgIHR5cGU6ICdlY1N0YXQ6cmVncmVzc2lvbicsCiAgICAgICAgY29uZmlnOiB7CiAgICAgICAgICAvLyBQYXJhbWV0ZXJzIG5lZWRlZCBieSB0aGUgZXh0ZXJuYWwgdHJhbnNmb3JtLgogICAgICAgICAgbWV0aG9kOiAnZXhwb25lbnRpYWwnCiAgICAgICAgfQogICAgICB9CiAgICB9CiAgXSwKICB4QXhpczogeyB0eXBlOiAnY2F0ZWdvcnknIH0sCiAgeUF4aXM6IHt9LAogIHNlcmllczogWwogICAgewogICAgICBuYW1lOiAnc2NhdHRlcicsCiAgICAgIHR5cGU6ICdzY2F0dGVyJywKICAgICAgZGF0YXNldEluZGV4OiAwCiAgICB9LAogICAgewogICAgICBuYW1lOiAncmVncmVzc2lvbicsCiAgICAgIHR5cGU6ICdsaW5lJywKICAgICAgc3ltYm9sOiAnbm9uZScsCiAgICAgIGRhdGFzZXRJbmRleDogMQogICAgfQogIF0KfTs\'" line-highlights="\'\'" />\n<p>Examples with echarts-stat:</p>\n<ul>\n<li><a href="https://echarts.apache.org/examples/en/editor.html?c=data-transform-aggregate&amp;edit=1&amp;reset=1">Aggregate</a></li>\n<li><a href="https://echarts.apache.org/examples/en/editor.html?c=bar-histogram&amp;edit=1&amp;reset=1">Bar histogram</a></li>\n<li><a href="https://echarts.apache.org/examples/en/editor.html?c=scatter-clustering&amp;edit=1&amp;reset=1">Scatter clustering</a></li>\n<li><a href="https://echarts.apache.org/examples/en/editor.html?c=scatter-linear-regression&amp;edit=1&amp;reset=1">Scatter linear regression</a></li>\n<li><a href="https://echarts.apache.org/examples/en/editor.html?c=scatter-exponential-regression&amp;edit=1&amp;reset=1">Scatter exponential regression</a></li>\n<li><a href="https://echarts.apache.org/examples/en/editor.html?c=scatter-logarithmic-regression&amp;edit=1&amp;reset=1">Scatter logarithmic regression</a></li>\n<li><a href="https://echarts.apache.org/examples/en/editor.html?c=scatter-polynomial-regression&amp;edit=1&amp;reset=1">Scatter polynomial regression</a></li>\n</ul>\n',postPath:"en/concepts/data-transform",title:"Data Transform - Concepts"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:i},{title:"入门篇",dir:I,children:[{title:"获取 ECharts",dir:o},{title:"在项目中引入 ECharts",dir:l},{title:"资源列表",dir:a,draft:e},{title:"寻求帮助",dir:d},{title:"版本特性",dir:C,children:[{title:"ECharts 6 特性介绍",dir:n},{title:"v5 升级 v6 指南",dir:c},{title:"5.0",dir:A},{title:"v4 升级 v5 指南",dir:s},{title:5.2,dir:r},{title:5.3,dir:m},{title:5.4,dir:h},{title:5.5,dir:b},{title:5.6,dir:p}]}]},{title:"概念篇",dir:y,children:[{title:"图表容器及大小",dir:u},{title:"配置项",dir:G,draft:e},{title:"系列",dir:Z,draft:e},{title:"样式",dir:B},{title:"数据集",dir:w},{title:"数据转换",dir:W},{title:"坐标系",dir:J,draft:e},{title:"坐标轴",dir:M},{title:"视觉映射",dir:t},{title:"图例",dir:X},{title:"事件与行为",dir:f}]},{title:"应用篇",dir:R,children:[{title:"常用图表类型",dir:F,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:L},{title:"堆叠柱状图",dir:v},{title:"动态排序柱状图",dir:z},{title:"极坐标系柱状图",dir:Y,draft:e},{title:"阶梯瀑布图",dir:V},{title:"视觉映射的柱状图",dir:t,draft:e}]},{title:"折线图",dir:H,children:[{title:"基础折线图",dir:S},{title:"堆叠折线图",dir:N},{title:"区域面积图",dir:x},{title:"平滑曲线图",dir:D},{title:"阶梯线图",dir:K}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:E},{title:"圆环图",dir:k},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:T,children:[{title:"基础散点图",dir:U}]}]},{title:"常用组件",dir:j,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:Q}]}]},{title:"移动端优化",dir:g,draft:e},{title:"跨平台方案",dir:O,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:q},{title:"数据下钻",dir:P,draft:e}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:_}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:ee}]},{title:"交互",dir:ge,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:te,draft:e},{title:"智能指针吸附",dir:ie}]}]},{title:"最佳实践",dir:Ie,children:[{title:"移动端优化",dir:g,draft:e},{title:oe,dir:le},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:ae}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:de}]}],en:[{title:"Get Started",dir:i},{title:"Basics",dir:I,children:[{title:"Download ECharts",dir:o},{title:"Import ECharts",dir:l},{title:"Resources",dir:a,draft:e},{title:"Get Help",dir:d},{title:"What's New",dir:C,children:[{title:"ECharts 6 Features",dir:n},{title:"Migration from v5 to v6",dir:c},{title:"5.0",dir:A},{title:"Migration from v4 to v5",dir:s},{title:5.2,dir:r},{title:5.3,dir:m},{title:5.4,dir:h},{title:5.5,dir:b},{title:5.6,dir:p}]}]},{title:"Concepts",dir:y,children:[{title:"Chart Container",dir:u},{title:"Chart Option",dir:G,draft:e},{title:"Series",dir:Z,draft:e},{title:"Style",dir:B},{title:"Dataset",dir:w},{title:"Data Transform",dir:W},{title:"Coordinate",dir:J,draft:e},{title:"Axis",dir:M},{title:"Visual Mapping",dir:t},{title:"Legend",dir:X},{title:"Event and Action",dir:f}]},{title:"How To Guides",dir:R,children:[{title:"Common Charts",dir:F,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:L},{title:"Stacked Bar",dir:v},{title:"Bar Racing",dir:z},{title:"Bar Polar",dir:Y,draft:e},{title:"Waterfall",dir:V}]},{title:"Line",dir:H,children:[{title:"Basic Line",dir:S},{title:"Stacked Line",dir:N},{title:"Area Chart",dir:x},{title:"Smoothed Line",dir:D},{title:"Step Line",dir:K}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:E},{title:"Ring Style",dir:k},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:T,children:[{title:"Basic Scatter",dir:U}]}]},{title:"Common Components",dir:j,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:Q}]}]},{title:"Mobile",dir:g,draft:e},{title:"Cross Platform",dir:O,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:q},{title:"Drilldown",dir:P,draft:e}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:_}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:ee}]},{title:"Interaction",dir:ge,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:te,draft:e},{title:"Intelligent Pointer Snapping",dir:ie}]}]},{title:"Best Practices",dir:Ie,children:[{title:"Mobile Optimization",dir:g,draft:e},{title:oe,dir:le},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:ae}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:de}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:e,routePath:"/en/concepts/data-transform",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/en/concepts/dataset/index.html b/docs/en/concepts/dataset/index.html
new file mode 100644
index 0000000..f32c90c
--- /dev/null
+++ b/docs/en/concepts/dataset/index.html
@@ -0,0 +1,483 @@
+<!doctype html>
+<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Dataset - Concepts - Handbook - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="en"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/en/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/en/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/en/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/en/index.html" class="navbar-brand"><img src="https://echarts.apache.org/en/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/en/index.html">Home</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Docs<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/feature.html">Features</a></li><li><a href="https://echarts.apache.org/handbook/en/get-started/">Handbook</a></li><li><a href="https://echarts.apache.org/en/api.html">API</a></li><li><a href="https://echarts.apache.org/en/option.html">Chart Configuration</a></li><li><a href="https://echarts.apache.org/en/changelog.html">Changelog</a></li><li><a href="https://echarts.apache.org/en/faq.html">FAQ</a></li><li><a href="https://echarts.apache.org/handbook/en/basics/release-note/v6-upgrade-guide">V6 Upgrade Guide</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Download<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/download.html">Download</a></li><li><a href="https://echarts.apache.org/en/download-theme.html">Download Themes</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">Download Custom Series<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/download-extension.html">Download Extensions</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/en/index.html">Examples</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Resources<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/spreadsheet.html">Spread Sheet Tool</a></li><li><a href="https://echarts.apache.org/en/theme-builder.html">Theme Builder</a></li><li><a href="https://echarts.apache.org/en/cheat-sheet.html">Cheat Sheet</a></li><li><a href="https://echarts.apache.org/en/resources.html">More Resources</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/events.html">Events</a></li><li><a href="https://echarts.apache.org/en/committers.html">Committers</a></li><li><a href="https://echarts.apache.org/en/maillist.html">Mailing List</a></li><li><a href="https://echarts.apache.org/en/contributing.html">How to Contribute</a></li><li><a href="https://echarts.apache.org/en/dependencies.html">Dependencies</a></li><li><a href="https://echarts.apache.org/en/coding-standard.html">Code Standard</a></li><li><a href="https://github.com/apache/echarts" target="_blank">Source Code (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/security.html">Security</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">License<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">Events<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("zh")'>中文</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/en/get-started" class="nav-link"><span class="title">Get Started</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Basics</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/basics/download" class="nav-link"><span class="title">Download ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/import" class="nav-link"><span class="title">Import ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/basics/help" class="nav-link"><span class="title">Get Help</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">What's New</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 Features</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">Migration from v5 to v6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">Migration from v4 to v5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Concepts</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/concepts/chart-size" class="nav-link"><span class="title">Chart Container</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/style" class="nav-link"><span class="title">Style</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/dataset" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">Dataset</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/data-transform" class="nav-link"><span class="title">Data Transform</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/axis" class="nav-link"><span class="title">Axis</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/visual-map" class="nav-link"><span class="title">Visual Mapping</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/legend" class="nav-link"><span class="title">Legend</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/event" class="nav-link"><span class="title">Event and Action</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">How To Guides</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">Common Charts</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Bar</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">Basic Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">Stacked Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">Bar Racing</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">Waterfall</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Line</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">Basic Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">Stacked Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/area-line" class="nav-link"><span class="title">Area Chart</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">Smoothed Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/step-line" class="nav-link"><span class="title">Step Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Pie</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">Basic Pie</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">Ring Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/rose" class="nav-link"><span class="title">Rose Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Scatter</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">Basic Scatter</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Common Components</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Geo</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG Base Map</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">Cross Platform</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/cross-platform/server" class="nav-link"><span class="title">Server Side Rendering</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Data</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/data/dynamic-data" class="nav-link"><span class="title">Dynamic Data</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Label</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/label/rich-text" class="nav-link"><span class="title">Rich Text</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Animation</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/animation/transition" class="nav-link"><span class="title">Data Transition</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Interaction</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/drag" class="nav-link"><span class="title">Drag</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">Intelligent Pointer Snapping</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Best Practices</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/en/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/aria" class="nav-link"><span class="title">Aria</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/security" class="nav-link"><span class="title">Security Guidelines</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Edit Handbook</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/meta/edit-guide" class="nav-link"><span class="title">Edit Guide</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="dataset" tabindex="-1">Dataset</h1> <p><code>dataset</code> is a component dedicated to manage data. Although you can set the data in <code>series.data</code> for every series, we recommend you use the <code>dataset</code> to manage the data since ECharts 4 so that the data can be reused by multiple components and convenient for the separation of "data and configs". After all, data is the most common part to be changed while other configurations will mostly not change at runtime.</p> <h2 id="define-data-under-series" tabindex="-1">Define <strong>data</strong> under <strong>series</strong></h2> <p>If data is defined under <code>series</code>, for example:</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    type: 'category',
+    data: ['Matcha Latte', 'Milk Tea', 'Cheese Cocoa', 'Walnut Brownie']
+  },
+  yAxis: {},
+  series: [
+    {
+      type: 'bar',
+      name: '2015',
+      data: [89.3, 92.1, 94.4, 85.4]
+    },
+    {
+      type: 'bar',
+      name: '2016',
+      data: [95.8, 89.4, 91.2, 76.9]
+    },
+    {
+      type: 'bar',
+      name: '2017',
+      data: [97.7, 83.1, 92.5, 78.1]
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'category'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'Matcha Latte'</span><span class="token punctuation">,</span> <span class="token string">'Milk Tea'</span><span class="token punctuation">,</span> <span class="token string">'Cheese Cocoa'</span><span class="token punctuation">,</span> <span class="token string">'Walnut Brownie'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'2015'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">89.3</span><span class="token punctuation">,</span> <span class="token number">92.1</span><span class="token punctuation">,</span> <span class="token number">94.4</span><span class="token punctuation">,</span> <span class="token number">85.4</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'2016'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">95.8</span><span class="token punctuation">,</span> <span class="token number">89.4</span><span class="token punctuation">,</span> <span class="token number">91.2</span><span class="token punctuation">,</span> <span class="token number">76.9</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'2017'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">97.7</span><span class="token punctuation">,</span> <span class="token number">83.1</span><span class="token punctuation">,</span> <span class="token number">92.5</span><span class="token punctuation">,</span> <span class="token number">78.1</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>Defining <code>data</code> under <code>series</code> is suitable for customization for some special data structures such as "tree", "graph" and large data.
+However, it is not conducive to the data sharing for multiple series as well as mapping arrangement of chart types and series based on the original data. The other disadvantage is that programmers always need to divide the data in separate series (and categories) first.</p> <h2 id="define-data-in-dataset" tabindex="-1">Define <strong>data</strong> in <strong>dataset</strong></h2> <p>Here are the advantages if you define <code>data</code> in <code>dataset</code>:</p> <ul><li>Follow the ideas of data visualization: (I) Provide the data, (II)Mapping from data to visual to become a chart.</li> <li>Divide data from other configurations. The data often change but others not. It is
+Easy to manage separately.</li> <li>Data can be reused by several series or component, you don't need to create copies of a large amount of data for every series.</li> <li>Support more common data format, such as a 2D array, array of classes, etc., to avoid users from converting for data format to a certain extent.</li></ul> <p>Here is a simple <code>dataset</code> example:</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  legend: {},
+  tooltip: {},
+  dataset: {
+    // Provide a set of data.
+    source: [
+      ['product', '2015', '2016', '2017'],
+      ['Matcha Latte', 43.3, 85.8, 93.7],
+      ['Milk Tea', 83.1, 73.4, 55.1],
+      ['Cheese Cocoa', 86.4, 65.2, 82.5],
+      ['Walnut Brownie', 72.4, 53.9, 39.1]
+    ]
+  },
+  // Declare an x-axis (category axis).
+  // The category map the first column in the dataset by default.
+  xAxis: { type: 'category' },
+  // Declare a y-axis (value axis).
+  yAxis: {},
+  // Declare several 'bar' series,
+  // every series will auto-map to each column by default.
+  series: [{ type: 'bar' }, { type: 'bar' }, { type: 'bar' }]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">legend</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">tooltip</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">dataset</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token comment">// Provide a set of data.</span>
+    <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token punctuation">[</span><span class="token string">'product'</span><span class="token punctuation">,</span> <span class="token string">'2015'</span><span class="token punctuation">,</span> <span class="token string">'2016'</span><span class="token punctuation">,</span> <span class="token string">'2017'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token string">'Matcha Latte'</span><span class="token punctuation">,</span> <span class="token number">43.3</span><span class="token punctuation">,</span> <span class="token number">85.8</span><span class="token punctuation">,</span> <span class="token number">93.7</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token string">'Milk Tea'</span><span class="token punctuation">,</span> <span class="token number">83.1</span><span class="token punctuation">,</span> <span class="token number">73.4</span><span class="token punctuation">,</span> <span class="token number">55.1</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token string">'Cheese Cocoa'</span><span class="token punctuation">,</span> <span class="token number">86.4</span><span class="token punctuation">,</span> <span class="token number">65.2</span><span class="token punctuation">,</span> <span class="token number">82.5</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token string">'Walnut Brownie'</span><span class="token punctuation">,</span> <span class="token number">72.4</span><span class="token punctuation">,</span> <span class="token number">53.9</span><span class="token punctuation">,</span> <span class="token number">39.1</span><span class="token punctuation">]</span>
+    <span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token comment">// Declare an x-axis (category axis).</span>
+  <span class="token comment">// The category map the first column in the dataset by default.</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'category'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token comment">// Declare a y-axis (value axis).</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token comment">// Declare several 'bar' series,</span>
+  <span class="token comment">// every series will auto-map to each column by default.</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span> <span class="token punctuation">}</span><span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>Or try to use the "array of classes" format:</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  legend: {},
+  tooltip: {},
+  dataset: {
+    // Define the dimension of array. In cartesian coordinate system,
+    // if the type of x-axis is category, map the first dimension to
+    // x-axis by default, the second dimension to y-axis.
+    // You can also specify 'series.encode' to complete the map
+    // without specify dimensions. Please see below.
+
+    dimensions: ['product', '2015', '2016', '2017'],
+    source: [
+      { product: 'Matcha Latte', '2015': 43.3, '2016': 85.8, '2017': 93.7 },
+      { product: 'Milk Tea', '2015': 83.1, '2016': 73.4, '2017': 55.1 },
+      { product: 'Cheese Cocoa', '2015': 86.4, '2016': 65.2, '2017': 82.5 },
+      { product: 'Walnut Brownie', '2015': 72.4, '2016': 53.9, '2017': 39.1 }
+    ]
+  },
+  xAxis: { type: 'category' },
+  yAxis: {},
+  series: [{ type: 'bar' }, { type: 'bar' }, { type: 'bar' }]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">legend</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">tooltip</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">dataset</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token comment">// Define the dimension of array. In cartesian coordinate system,</span>
+    <span class="token comment">// if the type of x-axis is category, map the first dimension to</span>
+    <span class="token comment">// x-axis by default, the second dimension to y-axis.</span>
+    <span class="token comment">// You can also specify 'series.encode' to complete the map</span>
+    <span class="token comment">// without specify dimensions. Please see below.</span>
+
+    <span class="token literal-property property">dimensions</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'product'</span><span class="token punctuation">,</span> <span class="token string">'2015'</span><span class="token punctuation">,</span> <span class="token string">'2016'</span><span class="token punctuation">,</span> <span class="token string">'2017'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token punctuation">{</span> <span class="token literal-property property">product</span><span class="token operator">:</span> <span class="token string">'Matcha Latte'</span><span class="token punctuation">,</span> <span class="token string-property property">'2015'</span><span class="token operator">:</span> <span class="token number">43.3</span><span class="token punctuation">,</span> <span class="token string-property property">'2016'</span><span class="token operator">:</span> <span class="token number">85.8</span><span class="token punctuation">,</span> <span class="token string-property property">'2017'</span><span class="token operator">:</span> <span class="token number">93.7</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token punctuation">{</span> <span class="token literal-property property">product</span><span class="token operator">:</span> <span class="token string">'Milk Tea'</span><span class="token punctuation">,</span> <span class="token string-property property">'2015'</span><span class="token operator">:</span> <span class="token number">83.1</span><span class="token punctuation">,</span> <span class="token string-property property">'2016'</span><span class="token operator">:</span> <span class="token number">73.4</span><span class="token punctuation">,</span> <span class="token string-property property">'2017'</span><span class="token operator">:</span> <span class="token number">55.1</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token punctuation">{</span> <span class="token literal-property property">product</span><span class="token operator">:</span> <span class="token string">'Cheese Cocoa'</span><span class="token punctuation">,</span> <span class="token string-property property">'2015'</span><span class="token operator">:</span> <span class="token number">86.4</span><span class="token punctuation">,</span> <span class="token string-property property">'2016'</span><span class="token operator">:</span> <span class="token number">65.2</span><span class="token punctuation">,</span> <span class="token string-property property">'2017'</span><span class="token operator">:</span> <span class="token number">82.5</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token punctuation">{</span> <span class="token literal-property property">product</span><span class="token operator">:</span> <span class="token string">'Walnut Brownie'</span><span class="token punctuation">,</span> <span class="token string-property property">'2015'</span><span class="token operator">:</span> <span class="token number">72.4</span><span class="token punctuation">,</span> <span class="token string-property property">'2016'</span><span class="token operator">:</span> <span class="token number">53.9</span><span class="token punctuation">,</span> <span class="token string-property property">'2017'</span><span class="token operator">:</span> <span class="token number">39.1</span> <span class="token punctuation">}</span>
+    <span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'category'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span> <span class="token punctuation">}</span><span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <h2 id="map-from-data-to-chart" tabindex="-1">Map from Data to Chart</h2> <p>The ideas of data visualization: (I) Provide the data, (II)Mapping from data to visual to become a chart.</p> <p>In short, you can set these configs of mapping:</p> <ul><li>Specify 'column' or 'row' of <code>dataset</code> to map the <code>series</code>. You can use <a href="https://echarts.apache.org/option.html#series.seriesLayoutBy">series.seriesLayoutBy</a> to configure it. The default is to map according to the column.</li> <li>Rule of specifying dimension mapping: how to mapping from dimensions of 'dataset' to <code>axis</code>, <code>tooltip</code>, <code>label</code> and <code>visualMap</code>. To configure the mapping, please use <a href="https://echarts.apache.org/option.html#series.encode">series.encode</a> and <a href="https://echarts.apache.org/option.html#visualMap">visualMap</a>. The previous case did not give the mapping configuration so that ECharts will follow the default: if x-axis is category, mapping to the first row in <code>dataset.source</code>; three-column chart mapping with each row in <code>dataset.source</code> one by one.</li></ul> <p>The details of the configuration are shown below:</p> <h2 id="map-row-or-column-of-dataset-to-series" tabindex="-1">Map Row or Column of <strong>dataset</strong> to <strong>series</strong></h2> <p>Having the dataset, you can configure flexibly how the data map to the axis and series.</p> <p>You can use <code>seriesLayoutBy</code> to change the understanding of row and column of the chart. <code>seriesLayoutBy</code> can be:</p> <ul><li><code>'column'</code>: Default value. The series are placed above the column of <code>dataset</code>.</li> <li><code>'row'</code>: The series are placed above the row of <code>dataset</code>.</li></ul> <p>Check this case:</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  legend: {},
+  tooltip: {},
+  dataset: {
+    source: [
+      ['product', '2012', '2013', '2014', '2015'],
+      ['Matcha Latte', 41.1, 30.4, 65.1, 53.3],
+      ['Milk Tea', 86.5, 92.1, 85.7, 83.1],
+      ['Cheese Cocoa', 24.1, 67.2, 79.5, 86.4]
+    ]
+  },
+  xAxis: [
+    { type: 'category', gridIndex: 0 },
+    { type: 'category', gridIndex: 1 }
+  ],
+  yAxis: [{ gridIndex: 0 }, { gridIndex: 1 }],
+  grid: [{ bottom: '55%' }, { top: '55%' }],
+  series: [
+    // These series will show in the first coordinate, each series map a row in dataset.
+    { type: 'bar', seriesLayoutBy: 'row', xAxisIndex: 0, yAxisIndex: 0 },
+    { type: 'bar', seriesLayoutBy: 'row', xAxisIndex: 0, yAxisIndex: 0 },
+    { type: 'bar', seriesLayoutBy: 'row', xAxisIndex: 0, yAxisIndex: 0 },
+    // These series will show in the second coordinate, each series map a column in dataset.
+    { type: 'bar', seriesLayoutBy: 'column', xAxisIndex: 1, yAxisIndex: 1 },
+    { type: 'bar', seriesLayoutBy: 'column', xAxisIndex: 1, yAxisIndex: 1 },
+    { type: 'bar', seriesLayoutBy: 'column', xAxisIndex: 1, yAxisIndex: 1 },
+    { type: 'bar', seriesLayoutBy: 'column', xAxisIndex: 1, yAxisIndex: 1 }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">legend</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">tooltip</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">dataset</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token punctuation">[</span><span class="token string">'product'</span><span class="token punctuation">,</span> <span class="token string">'2012'</span><span class="token punctuation">,</span> <span class="token string">'2013'</span><span class="token punctuation">,</span> <span class="token string">'2014'</span><span class="token punctuation">,</span> <span class="token string">'2015'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token string">'Matcha Latte'</span><span class="token punctuation">,</span> <span class="token number">41.1</span><span class="token punctuation">,</span> <span class="token number">30.4</span><span class="token punctuation">,</span> <span class="token number">65.1</span><span class="token punctuation">,</span> <span class="token number">53.3</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token string">'Milk Tea'</span><span class="token punctuation">,</span> <span class="token number">86.5</span><span class="token punctuation">,</span> <span class="token number">92.1</span><span class="token punctuation">,</span> <span class="token number">85.7</span><span class="token punctuation">,</span> <span class="token number">83.1</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token string">'Cheese Cocoa'</span><span class="token punctuation">,</span> <span class="token number">24.1</span><span class="token punctuation">,</span> <span class="token number">67.2</span><span class="token punctuation">,</span> <span class="token number">79.5</span><span class="token punctuation">,</span> <span class="token number">86.4</span><span class="token punctuation">]</span>
+    <span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'category'</span><span class="token punctuation">,</span> <span class="token literal-property property">gridIndex</span><span class="token operator">:</span> <span class="token number">0</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'category'</span><span class="token punctuation">,</span> <span class="token literal-property property">gridIndex</span><span class="token operator">:</span> <span class="token number">1</span> <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">{</span> <span class="token literal-property property">gridIndex</span><span class="token operator">:</span> <span class="token number">0</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token literal-property property">gridIndex</span><span class="token operator">:</span> <span class="token number">1</span> <span class="token punctuation">}</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">grid</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">{</span> <span class="token literal-property property">bottom</span><span class="token operator">:</span> <span class="token string">'55%'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token literal-property property">top</span><span class="token operator">:</span> <span class="token string">'55%'</span> <span class="token punctuation">}</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token comment">// These series will show in the first coordinate, each series map a row in dataset.</span>
+    <span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span> <span class="token literal-property property">seriesLayoutBy</span><span class="token operator">:</span> <span class="token string">'row'</span><span class="token punctuation">,</span> <span class="token literal-property property">xAxisIndex</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token literal-property property">yAxisIndex</span><span class="token operator">:</span> <span class="token number">0</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span> <span class="token literal-property property">seriesLayoutBy</span><span class="token operator">:</span> <span class="token string">'row'</span><span class="token punctuation">,</span> <span class="token literal-property property">xAxisIndex</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token literal-property property">yAxisIndex</span><span class="token operator">:</span> <span class="token number">0</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span> <span class="token literal-property property">seriesLayoutBy</span><span class="token operator">:</span> <span class="token string">'row'</span><span class="token punctuation">,</span> <span class="token literal-property property">xAxisIndex</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token literal-property property">yAxisIndex</span><span class="token operator">:</span> <span class="token number">0</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token comment">// These series will show in the second coordinate, each series map a column in dataset.</span>
+    <span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span> <span class="token literal-property property">seriesLayoutBy</span><span class="token operator">:</span> <span class="token string">'column'</span><span class="token punctuation">,</span> <span class="token literal-property property">xAxisIndex</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token literal-property property">yAxisIndex</span><span class="token operator">:</span> <span class="token number">1</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span> <span class="token literal-property property">seriesLayoutBy</span><span class="token operator">:</span> <span class="token string">'column'</span><span class="token punctuation">,</span> <span class="token literal-property property">xAxisIndex</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token literal-property property">yAxisIndex</span><span class="token operator">:</span> <span class="token number">1</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span> <span class="token literal-property property">seriesLayoutBy</span><span class="token operator">:</span> <span class="token string">'column'</span><span class="token punctuation">,</span> <span class="token literal-property property">xAxisIndex</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token literal-property property">yAxisIndex</span><span class="token operator">:</span> <span class="token number">1</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span> <span class="token literal-property property">seriesLayoutBy</span><span class="token operator">:</span> <span class="token string">'column'</span><span class="token punctuation">,</span> <span class="token literal-property property">xAxisIndex</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token literal-property property">yAxisIndex</span><span class="token operator">:</span> <span class="token number">1</span> <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>The effect of configuration is shown in <a href="https://echarts.apache.org/examples/en/editor.html?c=dataset-series-layout-by">this case</a>.</p> <h2 id="dimension" tabindex="-1">Dimension</h2> <p>Most of the data described in commonly used charts is a "two-dimensional table" structure, in the previous case, we use a 2D array to contain a two-dimensional table. Now, when we map a series to a column, that column was called a "dimension" and each row was called "item", vice versa.</p> <p>The dimension can have their name to display in the chart. Dimension name can be defined in the first column (row). In the <a href="en/concepts/dataset/#map-from-data-to-charts-(series.encode)">next case</a>, <code>'score'</code>, <code>'amount'</code>, <code>'product'</code> are the name of dimensions. The actual data locate from the second row. ECharts will automatically check if the first column (row) contained dimension name in <code>dataset.source</code>. You can also use <code>dataset.sourceHeader: true</code> to declare that the first column (row) represents the dimension name.</p> <p>Try to use single <code>dataset.dimensions</code> or some <code>series.dimensions</code> to define the dimensions, therefore you can specify the name and type together.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">var</span> option1 <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">dataset</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">dimensions</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token punctuation">{</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'score'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token comment">// can be abbreviated as 'string', to indicate dimension name</span>
+      <span class="token string">'amount'</span><span class="token punctuation">,</span>
+      <span class="token comment">// Specify dimensions in 'type'.</span>
+      <span class="token punctuation">{</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'product'</span><span class="token punctuation">,</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'ordinal'</span> <span class="token punctuation">}</span>
+    <span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span>
+  <span class="token comment">// ...</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span>
+
+<span class="token keyword">var</span> option2 <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">dataset</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span><span class="token punctuation">,</span>
+    <span class="token comment">// series.dimensions will cover the config in dataset.dimension</span>
+    <span class="token literal-property property">dimensions</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token keyword">null</span><span class="token punctuation">,</span> <span class="token comment">// use null if you do not want dimension name.</span>
+      <span class="token string">'amount'</span><span class="token punctuation">,</span>
+      <span class="token punctuation">{</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'product'</span><span class="token punctuation">,</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'ordinal'</span> <span class="token punctuation">}</span>
+    <span class="token punctuation">]</span>
+  <span class="token punctuation">}</span>
+  <span class="token comment">// ...</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>In most cases, you don't need to define the dimension type because the ECharts will automatically judge it. If the judgment is inaccurate, you can define it manually.</p> <p>Dimension type can be the following values:</p> <ul><li><code>'number'</code>: Default, normal data.</li> <li><code>'ordinal'</code>: String types data like categories, text can be used on the axis only with the dimension type 'ordinal'. ECharts will try to judge this type automatically but might be inaccurate, so you can specify manually.</li> <li><code>'time'</code>: To represent time data, ECharts can automatically analyze data as timestamp if the dimension type is defined as <code>'time'</code>. For instance, ECharts will auto-analyze if the data of this dimension is '2017-05-10'. If the dimension is used as time axis (<a href="https://echarts.apache.org/option.html#xAxis.type">axis.type</a> = <code>'time'</code>), the dimension type will also be <code>'time'</code>. See <a href="https://echarts.apache.org/option.html#series.data">data</a> for more time type support.</li> <li><code>'float'</code>: Use <code>TypedArray</code> to optimize the performance in <code>'float'</code> dimension.</li> <li><code>'int'</code>: Use <code>TypedArray</code> to optimize the performance in <code>'int'</code> dimension.</li></ul> <h2 id="map-from-data-to-charts-(series.encode)" tabindex="-1">Map from Data to Charts (series.encode)</h2> <p>After understand the concept of dimension, you can use <a href="https://echarts.apache.org/option.html#series.encode">series.encode</a> to make a mapping:</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">var option = {
+  dataset: {
+    source: [
+      ['score', 'amount', 'product'],
+      [89.3, 58212, 'Matcha Latte'],
+      [57.1, 78254, 'Milk Tea'],
+      [74.4, 41032, 'Cheese Cocoa'],
+      [50.1, 12755, 'Cheese Brownie'],
+      [89.7, 20145, 'Matcha Cocoa'],
+      [68.1, 79146, 'Tea'],
+      [19.6, 91852, 'Orange Juice'],
+      [10.6, 101852, 'Lemon Juice'],
+      [32.7, 20112, 'Walnut Brownie']
+    ]
+  },
+  xAxis: {},
+  yAxis: { type: 'category' },
+  series: [
+    {
+      type: 'bar',
+      encode: {
+        // Map "amount" column to x-axis.
+        x: 'amount',
+        // Map "product" row to y-axis.
+        y: 'product'
+      }
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor"><span class="token keyword">var</span> option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">dataset</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token punctuation">[</span><span class="token string">'score'</span><span class="token punctuation">,</span> <span class="token string">'amount'</span><span class="token punctuation">,</span> <span class="token string">'product'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token number">89.3</span><span class="token punctuation">,</span> <span class="token number">58212</span><span class="token punctuation">,</span> <span class="token string">'Matcha Latte'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token number">57.1</span><span class="token punctuation">,</span> <span class="token number">78254</span><span class="token punctuation">,</span> <span class="token string">'Milk Tea'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token number">74.4</span><span class="token punctuation">,</span> <span class="token number">41032</span><span class="token punctuation">,</span> <span class="token string">'Cheese Cocoa'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token number">50.1</span><span class="token punctuation">,</span> <span class="token number">12755</span><span class="token punctuation">,</span> <span class="token string">'Cheese Brownie'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token number">89.7</span><span class="token punctuation">,</span> <span class="token number">20145</span><span class="token punctuation">,</span> <span class="token string">'Matcha Cocoa'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token number">68.1</span><span class="token punctuation">,</span> <span class="token number">79146</span><span class="token punctuation">,</span> <span class="token string">'Tea'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token number">19.6</span><span class="token punctuation">,</span> <span class="token number">91852</span><span class="token punctuation">,</span> <span class="token string">'Orange Juice'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token number">10.6</span><span class="token punctuation">,</span> <span class="token number">101852</span><span class="token punctuation">,</span> <span class="token string">'Lemon Juice'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token number">32.7</span><span class="token punctuation">,</span> <span class="token number">20112</span><span class="token punctuation">,</span> <span class="token string">'Walnut Brownie'</span><span class="token punctuation">]</span>
+    <span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'category'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">encode</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token comment">// Map "amount" column to x-axis.</span>
+        <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token string">'amount'</span><span class="token punctuation">,</span>
+        <span class="token comment">// Map "product" row to y-axis.</span>
+        <span class="token literal-property property">y</span><span class="token operator">:</span> <span class="token string">'product'</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>The basic structure of <code>series.encode</code> declaration:</p> <ul><li>To the left of the colon: Specific name of axis or label.</li> <li>To the right of the colon: Dimension name (string) or number(int, count from 0), to specify one or several dimensions (using array).</li></ul> <p>Generally, the following info is not necessary to be defined. Fill in as needed.</p> <p>Attribute suggested by <code>series.encode</code></p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token comment">// Supported in every coordinate and series:</span>
+<span class="token literal-property property">encode</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+  <span class="token comment">// Display the value of dimension named "product" and "score" in tooltip.</span>
+  <span class="token literal-property property">tooltip</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'product'</span><span class="token punctuation">,</span> <span class="token string">'score'</span><span class="token punctuation">]</span>
+  <span class="token comment">// Connect dimension name of "Dimension 1" and "Dimension 3" as the series name. (Avoid to repeat longer names in series.name)</span>
+  <span class="token literal-property property">seriesName</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token comment">// Means to use the value in "Dimension 2" as the id. It makes the new and old data correspond by id</span>
+	<span class="token comment">// when using setOption to update data, so that it can show animation properly.</span>
+  <span class="token literal-property property">itemId</span><span class="token operator">:</span> <span class="token number">2</span><span class="token punctuation">,</span>
+  <span class="token comment">// The itemName will show in the legend of Pie Charts.</span>
+  <span class="token literal-property property">itemName</span><span class="token operator">:</span> <span class="token number">3</span>
+<span class="token punctuation">}</span>
+
+<span class="token comment">// Grid/cartesian coordinate unique configs:</span>
+<span class="token literal-property property">encode</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+  <span class="token comment">// Map "Dimension 1", "Dimension 5" and "dimension named 'score'" to x-axis:</span>
+  <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">,</span> <span class="token string">'score'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token comment">// Map "Dimension 0" to y-axis:</span>
+  <span class="token literal-property property">y</span><span class="token operator">:</span> <span class="token number">0</span>
+<span class="token punctuation">}</span>
+
+<span class="token comment">// singleAxis unique configs:</span>
+<span class="token literal-property property">encode</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">single</span><span class="token operator">:</span> <span class="token number">3</span>
+<span class="token punctuation">}</span>
+
+<span class="token comment">// Polar coordinate unique configs:</span>
+<span class="token literal-property property">encode</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">radius</span><span class="token operator">:</span> <span class="token number">3</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">angle</span><span class="token operator">:</span> <span class="token number">2</span>
+<span class="token punctuation">}</span>
+
+<span class="token comment">// Geo-coordinate unique configs:</span>
+<span class="token literal-property property">encode</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">lng</span><span class="token operator">:</span> <span class="token number">3</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">lat</span><span class="token operator">:</span> <span class="token number">2</span>
+<span class="token punctuation">}</span>
+
+<span class="token comment">// For some charts without coordinate like pie chart, funnel chart:</span>
+<span class="token literal-property property">encode</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">3</span>
+<span class="token punctuation">}</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>This is a richer <a href="https://echarts.apache.org/examples/en/editor.html?c=dataset-encode1">example</a> of <code>series.encode</code>.</p> <h2 id="default-series.encode" tabindex="-1">Default series.encode</h2> <p>It is worth mentioning that ECharts will use some default mapping rules for some general charts (line, bar, scatter, candlestick, etc.) if <code>series.encode</code> is not specified. The default rule is:</p> <ul><li>In coordinate system (e.g. Cartesian, Polar):
+<ul><li>If there is category axis (<a href="https://echarts.apache.org/option.html#xAxis.type">axis.type</a> = <code>'category'</code>), map the first column(row) to the axis and each subsequent column(row) to each series.</li> <li>If both axes is not the category, then map every two columns in one series to two axes.</li></ul></li> <li>Without axis (e.g. Pie Chart):
+<ul><li>Use the first column(row) as the name, second column(row) as value. ECharts will not set the name if there is only one column(row).</li></ul></li></ul> <p>While the default rule cannot fulfill the requirements, you can configure <code>encode</code> by yourself, which is not complicate. Here is an <a href="https://echarts.apache.org/examples/en/editor.html?c=dataset-default">example</a>.</p> <h2 id="some-normal-settings-of-series.encode" tabindex="-1">Some Normal Settings of series.encode</h2> <p>Q: How to set the 3rd column as x-axis, 5th column as y-axis?</p> <p>A:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token comment">// dimensionIndex count from 0, so the 3rd line is dimensions[2].</span>
+    <span class="token literal-property property">encode</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token literal-property property">y</span><span class="token operator">:</span> <span class="token number">4</span> <span class="token punctuation">}</span>
+    <span class="token comment">// ...</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>Q: How to set the 3rd row as x-axis, 5th row as y-axis?</p> <p>A:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">encode</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token literal-property property">y</span><span class="token operator">:</span> <span class="token number">4</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">seriesLayoutBy</span><span class="token operator">:</span> <span class="token string">'row'</span>
+    <span class="token comment">// ...</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>Q: How to set the 2nd column as a label?</p> <p>A:
+We now support to trace value from specific dimension for <a href="https://echarts.apache.org/option.html#series.label.formatter">label.formatter</a>:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token comment">// `'{@score}'` means the value in the dimension named "score".</span>
+    <span class="token comment">// `'{@[4]}'` means the value in dimension 4.</span>
+    <span class="token literal-property property">formatter</span><span class="token operator">:</span> <span class="token string">'aaa{@product}bbb{@score}ccc{@[4]}ddd'</span><span class="token punctuation">;</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>Q: How to show the 2nd and 3rd column in the tooltip?</p> <p>A:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">encode</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">tooltip</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">]</span>
+      <span class="token comment">// ...</span>
+    <span class="token punctuation">}</span>
+    <span class="token comment">// ...</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>Q: How to define the dimension name if is not included in the dataset?</p> <p>A:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">var</span> option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">dataset</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">dimensions</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'score'</span><span class="token punctuation">,</span> <span class="token string">'amount'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token punctuation">[</span><span class="token number">89.3</span><span class="token punctuation">,</span> <span class="token number">3371</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token number">92.1</span><span class="token punctuation">,</span> <span class="token number">8123</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token number">94.4</span><span class="token punctuation">,</span> <span class="token number">1954</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token number">85.4</span><span class="token punctuation">,</span> <span class="token number">829</span><span class="token punctuation">]</span>
+    <span class="token punctuation">]</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>Q: How to map the 3rd column to the size of the scatter chart?</p> <p>A:</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">var option = {
+  dataset: {
+    source: [
+      [12, 323, 11.2],
+      [23, 167, 8.3],
+      [81, 284, 12],
+      [91, 413, 4.1],
+      [13, 287, 13.5]
+    ]
+  },
+  visualMap: {
+    show: false,
+    dimension: 2, // means the 3rd column
+    min: 2, // lower bound
+    max: 15, // higher bound
+    inRange: {
+      // Size of the bubble.
+      symbolSize: [5, 60]
+    }
+  },
+  xAxis: {},
+  yAxis: {},
+  series: {
+    type: 'scatter'
+  }
+};</textarea><pre data-testid="preview" class="prism-editor__editor"><span class="token keyword">var</span> option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">dataset</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token punctuation">[</span><span class="token number">12</span><span class="token punctuation">,</span> <span class="token number">323</span><span class="token punctuation">,</span> <span class="token number">11.2</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token number">23</span><span class="token punctuation">,</span> <span class="token number">167</span><span class="token punctuation">,</span> <span class="token number">8.3</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token number">81</span><span class="token punctuation">,</span> <span class="token number">284</span><span class="token punctuation">,</span> <span class="token number">12</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token number">91</span><span class="token punctuation">,</span> <span class="token number">413</span><span class="token punctuation">,</span> <span class="token number">4.1</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token number">13</span><span class="token punctuation">,</span> <span class="token number">287</span><span class="token punctuation">,</span> <span class="token number">13.5</span><span class="token punctuation">]</span>
+    <span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">visualMap</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">dimension</span><span class="token operator">:</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token comment">// means the 3rd column</span>
+    <span class="token literal-property property">min</span><span class="token operator">:</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token comment">// lower bound</span>
+    <span class="token literal-property property">max</span><span class="token operator">:</span> <span class="token number">15</span><span class="token punctuation">,</span> <span class="token comment">// higher bound</span>
+    <span class="token literal-property property">inRange</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token comment">// Size of the bubble.</span>
+      <span class="token literal-property property">symbolSize</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">60</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'scatter'</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>Q: I specified a mapping in encode, why it is not worked?</p> <p>A: Check your spelling, such as misspell the dimension name <code>'Life Expectancy'</code> to <code>'Life Expectency'</code> in encode.</p> <h2 id="visual-channel-mapping" tabindex="-1">Visual Channel Mapping</h2> <p>We can map visual channel by using <a href="https://echarts.apache.org/option.html#visualMap">visualMap</a>. Check details in the <a href="https://echarts.apache.org/option.html#visualMap">visualMap</a> document. Here is an <a href="https://echarts.apache.org/examples/en/editor.html?c=dataset-encode0">example</a>.</p> <h2 id="formats-of-charts" tabindex="-1">Formats of Charts</h2> <p>In most of the normal chart, the data is suitable to be described in the form of a two-dimensional table. That well-known software like 'MS Excel' and 'Numbers' all uses a two-dimensional table. Their data can be exported to JSON format and input to <code>dataset.source</code> and avoid some steps of data processing.</p> <blockquote><p>You can switch .csv file to JSON using tools like <a href="https://github.com/d3/d3-dsv">dsv</a> or <a href="https://github.com/mholt/PapaParse">PapaParse</a>.</p></blockquote> <p>As the example shown behind, in the data transmission of JavaScript, the two-dimensional data can be stored directly by two-dimensional array.</p> <p>Expect from the two-dimensional array, the dataset also supports using key-value which is also a common way. However, we don't support <a href="https://echarts.apache.org/option.html#series.seriesLayoutBy">seriesLayoutBy</a> in this format right now.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token literal-property property">dataset</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+  <span class="token punctuation">{</span>
+    <span class="token comment">// column by column key-value array is a normal format</span>
+    <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token punctuation">{</span> <span class="token literal-property property">product</span><span class="token operator">:</span> <span class="token string">'Matcha Latte'</span><span class="token punctuation">,</span> <span class="token literal-property property">count</span><span class="token operator">:</span> <span class="token number">823</span><span class="token punctuation">,</span> <span class="token literal-property property">score</span><span class="token operator">:</span> <span class="token number">95.8</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token punctuation">{</span> <span class="token literal-property property">product</span><span class="token operator">:</span> <span class="token string">'Milk Tea'</span><span class="token punctuation">,</span> <span class="token literal-property property">count</span><span class="token operator">:</span> <span class="token number">235</span><span class="token punctuation">,</span> <span class="token literal-property property">score</span><span class="token operator">:</span> <span class="token number">81.4</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token punctuation">{</span> <span class="token literal-property property">product</span><span class="token operator">:</span> <span class="token string">'Cheese Cocoa'</span><span class="token punctuation">,</span> <span class="token literal-property property">count</span><span class="token operator">:</span> <span class="token number">1042</span><span class="token punctuation">,</span> <span class="token literal-property property">score</span><span class="token operator">:</span> <span class="token number">91.2</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token punctuation">{</span> <span class="token literal-property property">product</span><span class="token operator">:</span> <span class="token string">'Walnut Brownie'</span><span class="token punctuation">,</span> <span class="token literal-property property">count</span><span class="token operator">:</span> <span class="token number">988</span><span class="token punctuation">,</span> <span class="token literal-property property">score</span><span class="token operator">:</span> <span class="token number">76.9</span> <span class="token punctuation">}</span>
+    <span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token punctuation">{</span>
+    <span class="token comment">// row by row key-value</span>
+    <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">product</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'Matcha Latte'</span><span class="token punctuation">,</span> <span class="token string">'Milk Tea'</span><span class="token punctuation">,</span> <span class="token string">'Cheese Cocoa'</span><span class="token punctuation">,</span> <span class="token string">'Walnut Brownie'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">count</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">823</span><span class="token punctuation">,</span> <span class="token number">235</span><span class="token punctuation">,</span> <span class="token number">1042</span><span class="token punctuation">,</span> <span class="token number">988</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">score</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">95.8</span><span class="token punctuation">,</span> <span class="token number">81.4</span><span class="token punctuation">,</span> <span class="token number">91.2</span><span class="token punctuation">,</span> <span class="token number">76.9</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">]</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="how-to-reference-several-datasets" tabindex="-1">How to Reference Several Datasets</h2> <p>ECharts support to define several datasets at the same moment. Series can assign the one to reference by <a href="https://echarts.apache.org/option.html#series.datasetIndex">series.datasetIndex</a>. For example:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">var</span> option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">dataset</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token comment">// 1st Dataset</span>
+      <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token comment">// 2nd Dataset</span>
+      <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token comment">// 3rd Dataset</span>
+      <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token comment">// Use 2nd dataset</span>
+      <span class="token literal-property property">datasetIndex</span><span class="token operator">:</span> <span class="token number">1</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token comment">// Use 1st dataset</span>
+      <span class="token literal-property property">datasetIndex</span><span class="token operator">:</span> <span class="token number">0</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="series.data-in-echarts-3" tabindex="-1">series.data in ECharts 3</h2> <p>ECharts 4 still supports the data declaration way in ECharts 3. If the series has already declared the <a href="https://echarts.apache.org/option.html#series.data">series.data</a>, then use <a href="https://echarts.apache.org/option.html#series.data">series.data</a> but not <code>dataset</code>.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'category'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'Matcha Latte'</span><span class="token punctuation">,</span> <span class="token string">'Milk Tea'</span><span class="token punctuation">,</span> <span class="token string">'Cheese Cocoa'</span><span class="token punctuation">,</span> <span class="token string">'Walnut Brownie'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'2015'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">89.3</span><span class="token punctuation">,</span> <span class="token number">92.1</span><span class="token punctuation">,</span> <span class="token number">94.4</span><span class="token punctuation">,</span> <span class="token number">85.4</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'2016'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">95.8</span><span class="token punctuation">,</span> <span class="token number">89.4</span><span class="token punctuation">,</span> <span class="token number">91.2</span><span class="token punctuation">,</span> <span class="token number">76.9</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'2017'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">97.7</span><span class="token punctuation">,</span> <span class="token number">83.1</span><span class="token punctuation">,</span> <span class="token number">92.5</span><span class="token punctuation">,</span> <span class="token number">78.1</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>In fact, <a href="https://echarts.apache.org/option.html#series.data">series.data</a> is an important setting method which will always exist. Some special non-table format chart like <a href="https://echarts.apache.org/option.html#series-treemap">treemap</a>, <a href="https://echarts.apache.org/option.html#series-graph">graph</a> and <a href="https://echarts.apache.org/option.html#series-lines">lines</a> still cannot be edit in dataset, you still need to use <a href="https://echarts.apache.org/option.html#series.data">series.data</a>. In another way, for render huge amount of data (over a million), you need to use <a href="https://echarts.apache.org/api.html#echartsInstance.appendData">appendData</a> which is not supported by <code>dataset</code>.</p> <h2 id="others" tabindex="-1">Others</h2> <p>The following charts now support dataset:
+<code>line</code>, <code>bar</code>, <code>pie</code>, <code>scatter</code>, <code>effectScatter</code>, <code>parallel</code>, <code>candlestick</code>, <code>map</code>, <code>funnel</code>, <code>custom</code>.
+ECharts will support more charts in the future.</p> <p>In the end, here is an <a href="https://echarts.apache.org/examples/en/editor.html?c=dataset-link">example</a> of several charts shared one <code>dataset</code> with linkage interaction.</p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">Contributors</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/en/concepts/dataset.md" title="Edit this Document" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">Edit this page on GitHub</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/plainheart" target="_blank" class="post-contributor has-avatar"><img alt="plainheart" src="https://echarts.apache.org/en/images/people/plainheart.jpg" loading="lazy" decoding="async" fetchpriority="low"> <span>plainheart</span></a><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a><a href="https://github.com/Ovilia" target="_blank" class="post-contributor has-avatar"><img alt="Ovilia" src="https://echarts.apache.org/en/images/people/羡辙.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>Ovilia</span></a><a href="https://github.com/100pah" target="_blank" class="post-contributor has-avatar"><img alt="100pah" src="https://echarts.apache.org/en/images/people/宿爽.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>100pah</span></a><a href="https://github.com/Hertz-Hu" target="_blank" class="post-contributor"><!----> <span>Hertz-Hu</span></a><a href="https://github.com/Bruce20190410" target="_blank" class="post-contributor"><!----> <span>Bruce20190410</span></a><a href="https://github.com/YuanyeChi" target="_blank" class="post-contributor"><!----> <span>YuanyeChi</span></a><a href="https://github.com/simonmcconnell" target="_blank" class="post-contributor"><!----> <span>simonmcconnell</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(e,t,i,a,o,d,s,n,l,g,c,r,I,h,C,p,A,m,u,b,y,B,w,f,G,Z,W,v,X,L,H,N,J,S,z,F,M,Y,x,D,V,R,k,j,O,E,T,Q,K,U,P,q,_,$,ee,te,ie,ae,oe,de,se,ne,le){return{layout:"default",data:[{html:'<h1 id="dataset" tabindex="-1">Dataset</h1>\n<p><code>dataset</code> is a component dedicated to manage data. Although you can set the data in <code>series.data</code> for every series, we recommend you use the <code>dataset</code> to manage the data since ECharts 4 so that the data can be reused by multiple components and convenient for the separation of &quot;data and configs&quot;. After all, data is the most common part to be changed while other configurations will mostly not change at runtime.</p>\n<h2 id="define-data-under-series" tabindex="-1">Define <strong>data</strong> under <strong>series</strong></h2>\n<p>If data is defined under <code>series</code>, for example:</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICB0eXBlOiAnY2F0ZWdvcnknLAogICAgZGF0YTogWydNYXRjaGEgTGF0dGUnLCAnTWlsayBUZWEnLCAnQ2hlZXNlIENvY29hJywgJ1dhbG51dCBCcm93bmllJ10KICB9LAogIHlBeGlzOiB7fSwKICBzZXJpZXM6IFsKICAgIHsKICAgICAgdHlwZTogJ2JhcicsCiAgICAgIG5hbWU6ICcyMDE1JywKICAgICAgZGF0YTogWzg5LjMsIDkyLjEsIDk0LjQsIDg1LjRdCiAgICB9LAogICAgewogICAgICB0eXBlOiAnYmFyJywKICAgICAgbmFtZTogJzIwMTYnLAogICAgICBkYXRhOiBbOTUuOCwgODkuNCwgOTEuMiwgNzYuOV0KICAgIH0sCiAgICB7CiAgICAgIHR5cGU6ICdiYXInLAogICAgICBuYW1lOiAnMjAxNycsCiAgICAgIGRhdGE6IFs5Ny43LCA4My4xLCA5Mi41LCA3OC4xXQogICAgfQogIF0KfTs\'" v-bind="{}" />\n<p>Defining <code>data</code> under <code>series</code> is suitable for customization for some special data structures such as &quot;tree&quot;, &quot;graph&quot; and large data.\nHowever, it is not conducive to the data sharing for multiple series as well as mapping arrangement of chart types and series based on the original data. The other disadvantage is that programmers always need to divide the data in separate series (and categories) first.</p>\n<h2 id="define-data-in-dataset" tabindex="-1">Define <strong>data</strong> in <strong>dataset</strong></h2>\n<p>Here are the advantages if you define <code>data</code> in <code>dataset</code>:</p>\n<ul>\n<li>Follow the ideas of data visualization: (I) Provide the data, (II)Mapping from data to visual to become a chart.</li>\n<li>Divide data from other configurations. The data often change but others not. It is\nEasy to manage separately.</li>\n<li>Data can be reused by several series or component, you don\'t need to create copies of a large amount of data for every series.</li>\n<li>Support more common data format, such as a 2D array, array of classes, etc., to avoid users from converting for data format to a certain extent.</li>\n</ul>\n<p>Here is a simple <code>dataset</code> example:</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIGxlZ2VuZDoge30sCiAgdG9vbHRpcDoge30sCiAgZGF0YXNldDogewogICAgLy8gUHJvdmlkZSBhIHNldCBvZiBkYXRhLgogICAgc291cmNlOiBbCiAgICAgIFsncHJvZHVjdCcsICcyMDE1JywgJzIwMTYnLCAnMjAxNyddLAogICAgICBbJ01hdGNoYSBMYXR0ZScsIDQzLjMsIDg1LjgsIDkzLjddLAogICAgICBbJ01pbGsgVGVhJywgODMuMSwgNzMuNCwgNTUuMV0sCiAgICAgIFsnQ2hlZXNlIENvY29hJywgODYuNCwgNjUuMiwgODIuNV0sCiAgICAgIFsnV2FsbnV0IEJyb3duaWUnLCA3Mi40LCA1My45LCAzOS4xXQogICAgXQogIH0sCiAgLy8gRGVjbGFyZSBhbiB4LWF4aXMgKGNhdGVnb3J5IGF4aXMpLgogIC8vIFRoZSBjYXRlZ29yeSBtYXAgdGhlIGZpcnN0IGNvbHVtbiBpbiB0aGUgZGF0YXNldCBieSBkZWZhdWx0LgogIHhBeGlzOiB7IHR5cGU6ICdjYXRlZ29yeScgfSwKICAvLyBEZWNsYXJlIGEgeS1heGlzICh2YWx1ZSBheGlzKS4KICB5QXhpczoge30sCiAgLy8gRGVjbGFyZSBzZXZlcmFsICdiYXInIHNlcmllcywKICAvLyBldmVyeSBzZXJpZXMgd2lsbCBhdXRvLW1hcCB0byBlYWNoIGNvbHVtbiBieSBkZWZhdWx0LgogIHNlcmllczogW3sgdHlwZTogJ2JhcicgfSwgeyB0eXBlOiAnYmFyJyB9LCB7IHR5cGU6ICdiYXInIH1dCn07\'" v-bind="{}" />\n<p>Or try to use the &quot;array of classes&quot; format:</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIGxlZ2VuZDoge30sCiAgdG9vbHRpcDoge30sCiAgZGF0YXNldDogewogICAgLy8gRGVmaW5lIHRoZSBkaW1lbnNpb24gb2YgYXJyYXkuIEluIGNhcnRlc2lhbiBjb29yZGluYXRlIHN5c3RlbSwKICAgIC8vIGlmIHRoZSB0eXBlIG9mIHgtYXhpcyBpcyBjYXRlZ29yeSwgbWFwIHRoZSBmaXJzdCBkaW1lbnNpb24gdG8KICAgIC8vIHgtYXhpcyBieSBkZWZhdWx0LCB0aGUgc2Vjb25kIGRpbWVuc2lvbiB0byB5LWF4aXMuCiAgICAvLyBZb3UgY2FuIGFsc28gc3BlY2lmeSAnc2VyaWVzLmVuY29kZScgdG8gY29tcGxldGUgdGhlIG1hcAogICAgLy8gd2l0aG91dCBzcGVjaWZ5IGRpbWVuc2lvbnMuIFBsZWFzZSBzZWUgYmVsb3cuCgogICAgZGltZW5zaW9uczogWydwcm9kdWN0JywgJzIwMTUnLCAnMjAxNicsICcyMDE3J10sCiAgICBzb3VyY2U6IFsKICAgICAgeyBwcm9kdWN0OiAnTWF0Y2hhIExhdHRlJywgJzIwMTUnOiA0My4zLCAnMjAxNic6IDg1LjgsICcyMDE3JzogOTMuNyB9LAogICAgICB7IHByb2R1Y3Q6ICdNaWxrIFRlYScsICcyMDE1JzogODMuMSwgJzIwMTYnOiA3My40LCAnMjAxNyc6IDU1LjEgfSwKICAgICAgeyBwcm9kdWN0OiAnQ2hlZXNlIENvY29hJywgJzIwMTUnOiA4Ni40LCAnMjAxNic6IDY1LjIsICcyMDE3JzogODIuNSB9LAogICAgICB7IHByb2R1Y3Q6ICdXYWxudXQgQnJvd25pZScsICcyMDE1JzogNzIuNCwgJzIwMTYnOiA1My45LCAnMjAxNyc6IDM5LjEgfQogICAgXQogIH0sCiAgeEF4aXM6IHsgdHlwZTogJ2NhdGVnb3J5JyB9LAogIHlBeGlzOiB7fSwKICBzZXJpZXM6IFt7IHR5cGU6ICdiYXInIH0sIHsgdHlwZTogJ2JhcicgfSwgeyB0eXBlOiAnYmFyJyB9XQp9Ow\'" v-bind="{}" />\n<h2 id="map-from-data-to-chart" tabindex="-1">Map from Data to Chart</h2>\n<p>The ideas of data visualization: (I) Provide the data, (II)Mapping from data to visual to become a chart.</p>\n<p>In short, you can set these configs of mapping:</p>\n<ul>\n<li>Specify \'column\' or \'row\' of <code>dataset</code> to map the <code>series</code>. You can use <a href="https://echarts.apache.org/option.html#series.seriesLayoutBy">series.seriesLayoutBy</a> to configure it. The default is to map according to the column.</li>\n<li>Rule of specifying dimension mapping: how to mapping from dimensions of \'dataset\' to <code>axis</code>, <code>tooltip</code>, <code>label</code> and <code>visualMap</code>. To configure the mapping, please use <a href="https://echarts.apache.org/option.html#series.encode">series.encode</a> and <a href="https://echarts.apache.org/option.html#visualMap">visualMap</a>. The previous case did not give the mapping configuration so that ECharts will follow the default: if x-axis is category, mapping to the first row in <code>dataset.source</code>; three-column chart mapping with each row in <code>dataset.source</code> one by one.</li>\n</ul>\n<p>The details of the configuration are shown below:</p>\n<h2 id="map-row-or-column-of-dataset-to-series" tabindex="-1">Map Row or Column of <strong>dataset</strong> to <strong>series</strong></h2>\n<p>Having the dataset, you can configure flexibly how the data map to the axis and series.</p>\n<p>You can use <code>seriesLayoutBy</code> to change the understanding of row and column of the chart. <code>seriesLayoutBy</code> can be:</p>\n<ul>\n<li><code>\'column\'</code>: Default value. The series are placed above the column of <code>dataset</code>.</li>\n<li><code>\'row\'</code>: The series are placed above the row of <code>dataset</code>.</li>\n</ul>\n<p>Check this case:</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIGxlZ2VuZDoge30sCiAgdG9vbHRpcDoge30sCiAgZGF0YXNldDogewogICAgc291cmNlOiBbCiAgICAgIFsncHJvZHVjdCcsICcyMDEyJywgJzIwMTMnLCAnMjAxNCcsICcyMDE1J10sCiAgICAgIFsnTWF0Y2hhIExhdHRlJywgNDEuMSwgMzAuNCwgNjUuMSwgNTMuM10sCiAgICAgIFsnTWlsayBUZWEnLCA4Ni41LCA5Mi4xLCA4NS43LCA4My4xXSwKICAgICAgWydDaGVlc2UgQ29jb2EnLCAyNC4xLCA2Ny4yLCA3OS41LCA4Ni40XQogICAgXQogIH0sCiAgeEF4aXM6IFsKICAgIHsgdHlwZTogJ2NhdGVnb3J5JywgZ3JpZEluZGV4OiAwIH0sCiAgICB7IHR5cGU6ICdjYXRlZ29yeScsIGdyaWRJbmRleDogMSB9CiAgXSwKICB5QXhpczogW3sgZ3JpZEluZGV4OiAwIH0sIHsgZ3JpZEluZGV4OiAxIH1dLAogIGdyaWQ6IFt7IGJvdHRvbTogJzU1JScgfSwgeyB0b3A6ICc1NSUnIH1dLAogIHNlcmllczogWwogICAgLy8gVGhlc2Ugc2VyaWVzIHdpbGwgc2hvdyBpbiB0aGUgZmlyc3QgY29vcmRpbmF0ZSwgZWFjaCBzZXJpZXMgbWFwIGEgcm93IGluIGRhdGFzZXQuCiAgICB7IHR5cGU6ICdiYXInLCBzZXJpZXNMYXlvdXRCeTogJ3JvdycsIHhBeGlzSW5kZXg6IDAsIHlBeGlzSW5kZXg6IDAgfSwKICAgIHsgdHlwZTogJ2JhcicsIHNlcmllc0xheW91dEJ5OiAncm93JywgeEF4aXNJbmRleDogMCwgeUF4aXNJbmRleDogMCB9LAogICAgeyB0eXBlOiAnYmFyJywgc2VyaWVzTGF5b3V0Qnk6ICdyb3cnLCB4QXhpc0luZGV4OiAwLCB5QXhpc0luZGV4OiAwIH0sCiAgICAvLyBUaGVzZSBzZXJpZXMgd2lsbCBzaG93IGluIHRoZSBzZWNvbmQgY29vcmRpbmF0ZSwgZWFjaCBzZXJpZXMgbWFwIGEgY29sdW1uIGluIGRhdGFzZXQuCiAgICB7IHR5cGU6ICdiYXInLCBzZXJpZXNMYXlvdXRCeTogJ2NvbHVtbicsIHhBeGlzSW5kZXg6IDEsIHlBeGlzSW5kZXg6IDEgfSwKICAgIHsgdHlwZTogJ2JhcicsIHNlcmllc0xheW91dEJ5OiAnY29sdW1uJywgeEF4aXNJbmRleDogMSwgeUF4aXNJbmRleDogMSB9LAogICAgeyB0eXBlOiAnYmFyJywgc2VyaWVzTGF5b3V0Qnk6ICdjb2x1bW4nLCB4QXhpc0luZGV4OiAxLCB5QXhpc0luZGV4OiAxIH0sCiAgICB7IHR5cGU6ICdiYXInLCBzZXJpZXNMYXlvdXRCeTogJ2NvbHVtbicsIHhBeGlzSW5kZXg6IDEsIHlBeGlzSW5kZXg6IDEgfQogIF0KfTs\'" v-bind="{}" />\n<p>The effect of configuration is shown in <a href="https://echarts.apache.org/examples/en/editor.html?c=dataset-series-layout-by">this case</a>.</p>\n<h2 id="dimension" tabindex="-1">Dimension</h2>\n<p>Most of the data described in commonly used charts is a &quot;two-dimensional table&quot; structure, in the previous case, we use a 2D array to contain a two-dimensional table. Now, when we map a series to a column, that column was called a &quot;dimension&quot; and each row was called &quot;item&quot;, vice versa.</p>\n<p>The dimension can have their name to display in the chart. Dimension name can be defined in the first column (row). In the <a href="en/concepts/dataset/#map-from-data-to-charts-(series.encode)">next case</a>, <code>\'score\'</code>, <code>\'amount\'</code>, <code>\'product\'</code> are the name of dimensions. The actual data locate from the second row. ECharts will automatically check if the first column (row) contained dimension name in <code>dataset.source</code>. You can also use <code>dataset.sourceHeader: true</code> to declare that the first column (row) represents the dimension name.</p>\n<p>Try to use single <code>dataset.dimensions</code> or some <code>series.dimensions</code> to define the dimensions, therefore you can specify the name and type together.</p>\n<md-code-block lang="js" code="\'dmFyIG9wdGlvbjEgPSB7CiAgZGF0YXNldDogewogICAgZGltZW5zaW9uczogWwogICAgICB7IG5hbWU6ICdzY29yZScgfSwKICAgICAgLy8gY2FuIGJlIGFiYnJldmlhdGVkIGFzICdzdHJpbmcnLCB0byBpbmRpY2F0ZSBkaW1lbnNpb24gbmFtZQogICAgICAnYW1vdW50JywKICAgICAgLy8gU3BlY2lmeSBkaW1lbnNpb25zIGluICd0eXBlJy4KICAgICAgeyBuYW1lOiAncHJvZHVjdCcsIHR5cGU6ICdvcmRpbmFsJyB9CiAgICBdLAogICAgc291cmNlOiBbXQogIH0KICAvLyAuLi4KfTsKCnZhciBvcHRpb24yID0gewogIGRhdGFzZXQ6IHsKICAgIHNvdXJjZTogW10KICB9LAogIHNlcmllczogewogICAgdHlwZTogJ2xpbmUnLAogICAgLy8gc2VyaWVzLmRpbWVuc2lvbnMgd2lsbCBjb3ZlciB0aGUgY29uZmlnIGluIGRhdGFzZXQuZGltZW5zaW9uCiAgICBkaW1lbnNpb25zOiBbCiAgICAgIG51bGwsIC8vIHVzZSBudWxsIGlmIHlvdSBkbyBub3Qgd2FudCBkaW1lbnNpb24gbmFtZS4KICAgICAgJ2Ftb3VudCcsCiAgICAgIHsgbmFtZTogJ3Byb2R1Y3QnLCB0eXBlOiAnb3JkaW5hbCcgfQogICAgXQogIH0KICAvLyAuLi4KfTs\'" line-highlights="\'\'" />\n<p>In most cases, you don\'t need to define the dimension type because the ECharts will automatically judge it. If the judgment is inaccurate, you can define it manually.</p>\n<p>Dimension type can be the following values:</p>\n<ul>\n<li><code>\'number\'</code>: Default, normal data.</li>\n<li><code>\'ordinal\'</code>: String types data like categories, text can be used on the axis only with the dimension type \'ordinal\'. ECharts will try to judge this type automatically but might be inaccurate, so you can specify manually.</li>\n<li><code>\'time\'</code>: To represent time data, ECharts can automatically analyze data as timestamp if the dimension type is defined as <code>\'time\'</code>. For instance, ECharts will auto-analyze if the data of this dimension is \'2017-05-10\'. If the dimension is used as time axis (<a href="https://echarts.apache.org/option.html#xAxis.type">axis.type</a> = <code>\'time\'</code>), the dimension type will also be <code>\'time\'</code>. See <a href="https://echarts.apache.org/option.html#series.data">data</a> for more time type support.</li>\n<li><code>\'float\'</code>: Use <code>TypedArray</code> to optimize the performance in <code>\'float\'</code> dimension.</li>\n<li><code>\'int\'</code>: Use <code>TypedArray</code> to optimize the performance in <code>\'int\'</code> dimension.</li>\n</ul>\n<h2 id="map-from-data-to-charts-(series.encode)" tabindex="-1">Map from Data to Charts (series.encode)</h2>\n<p>After understand the concept of dimension, you can use <a href="https://echarts.apache.org/option.html#series.encode">series.encode</a> to make a mapping:</p>\n<md-live lang="js" code="\'dmFyIG9wdGlvbiA9IHsKICBkYXRhc2V0OiB7CiAgICBzb3VyY2U6IFsKICAgICAgWydzY29yZScsICdhbW91bnQnLCAncHJvZHVjdCddLAogICAgICBbODkuMywgNTgyMTIsICdNYXRjaGEgTGF0dGUnXSwKICAgICAgWzU3LjEsIDc4MjU0LCAnTWlsayBUZWEnXSwKICAgICAgWzc0LjQsIDQxMDMyLCAnQ2hlZXNlIENvY29hJ10sCiAgICAgIFs1MC4xLCAxMjc1NSwgJ0NoZWVzZSBCcm93bmllJ10sCiAgICAgIFs4OS43LCAyMDE0NSwgJ01hdGNoYSBDb2NvYSddLAogICAgICBbNjguMSwgNzkxNDYsICdUZWEnXSwKICAgICAgWzE5LjYsIDkxODUyLCAnT3JhbmdlIEp1aWNlJ10sCiAgICAgIFsxMC42LCAxMDE4NTIsICdMZW1vbiBKdWljZSddLAogICAgICBbMzIuNywgMjAxMTIsICdXYWxudXQgQnJvd25pZSddCiAgICBdCiAgfSwKICB4QXhpczoge30sCiAgeUF4aXM6IHsgdHlwZTogJ2NhdGVnb3J5JyB9LAogIHNlcmllczogWwogICAgewogICAgICB0eXBlOiAnYmFyJywKICAgICAgZW5jb2RlOiB7CiAgICAgICAgLy8gTWFwICJhbW91bnQiIGNvbHVtbiB0byB4LWF4aXMuCiAgICAgICAgeDogJ2Ftb3VudCcsCiAgICAgICAgLy8gTWFwICJwcm9kdWN0IiByb3cgdG8geS1heGlzLgogICAgICAgIHk6ICdwcm9kdWN0JwogICAgICB9CiAgICB9CiAgXQp9Ow\'" v-bind="{}" />\n<p>The basic structure of <code>series.encode</code> declaration:</p>\n<ul>\n<li>To the left of the colon: Specific name of axis or label.</li>\n<li>To the right of the colon: Dimension name (string) or number(int, count from 0), to specify one or several dimensions (using array).</li>\n</ul>\n<p>Generally, the following info is not necessary to be defined. Fill in as needed.</p>\n<p>Attribute suggested by <code>series.encode</code></p>\n<md-code-block lang="js" code="\'Ly8gU3VwcG9ydGVkIGluIGV2ZXJ5IGNvb3JkaW5hdGUgYW5kIHNlcmllczoKZW5jb2RlOiB7CiAgLy8gRGlzcGxheSB0aGUgdmFsdWUgb2YgZGltZW5zaW9uIG5hbWVkICJwcm9kdWN0IiBhbmQgInNjb3JlIiBpbiB0b29sdGlwLgogIHRvb2x0aXA6IFsncHJvZHVjdCcsICdzY29yZSddCiAgLy8gQ29ubmVjdCBkaW1lbnNpb24gbmFtZSBvZiAiRGltZW5zaW9uIDEiIGFuZCAiRGltZW5zaW9uIDMiIGFzIHRoZSBzZXJpZXMgbmFtZS4gKEF2b2lkIHRvIHJlcGVhdCBsb25nZXIgbmFtZXMgaW4gc2VyaWVzLm5hbWUpCiAgc2VyaWVzTmFtZTogWzEsIDNdLAogIC8vIE1lYW5zIHRvIHVzZSB0aGUgdmFsdWUgaW4gIkRpbWVuc2lvbiAyIiBhcyB0aGUgaWQuIEl0IG1ha2VzIHRoZSBuZXcgYW5kIG9sZCBkYXRhIGNvcnJlc3BvbmQgYnkgaWQKCS8vIHdoZW4gdXNpbmcgc2V0T3B0aW9uIHRvIHVwZGF0ZSBkYXRhLCBzbyB0aGF0IGl0IGNhbiBzaG93IGFuaW1hdGlvbiBwcm9wZXJseS4KICBpdGVtSWQ6IDIsCiAgLy8gVGhlIGl0ZW1OYW1lIHdpbGwgc2hvdyBpbiB0aGUgbGVnZW5kIG9mIFBpZSBDaGFydHMuCiAgaXRlbU5hbWU6IDMKfQoKLy8gR3JpZC9jYXJ0ZXNpYW4gY29vcmRpbmF0ZSB1bmlxdWUgY29uZmlnczoKZW5jb2RlOiB7CiAgLy8gTWFwICJEaW1lbnNpb24gMSIsICJEaW1lbnNpb24gNSIgYW5kICJkaW1lbnNpb24gbmFtZWQgJ3Njb3JlJyIgdG8geC1heGlzOgogIHg6IFsxLCA1LCAnc2NvcmUnXSwKICAvLyBNYXAgIkRpbWVuc2lvbiAwIiB0byB5LWF4aXM6CiAgeTogMAp9CgovLyBzaW5nbGVBeGlzIHVuaXF1ZSBjb25maWdzOgplbmNvZGU6IHsKICBzaW5nbGU6IDMKfQoKLy8gUG9sYXIgY29vcmRpbmF0ZSB1bmlxdWUgY29uZmlnczoKZW5jb2RlOiB7CiAgcmFkaXVzOiAzLAogIGFuZ2xlOiAyCn0KCi8vIEdlby1jb29yZGluYXRlIHVuaXF1ZSBjb25maWdzOgplbmNvZGU6IHsKICBsbmc6IDMsCiAgbGF0OiAyCn0KCi8vIEZvciBzb21lIGNoYXJ0cyB3aXRob3V0IGNvb3JkaW5hdGUgbGlrZSBwaWUgY2hhcnQsIGZ1bm5lbCBjaGFydDoKZW5jb2RlOiB7CiAgdmFsdWU6IDMKfQ\'" line-highlights="\'\'" />\n<p>This is a richer <a href="https://echarts.apache.org/examples/en/editor.html?c=dataset-encode1">example</a> of <code>series.encode</code>.</p>\n<h2 id="default-series.encode" tabindex="-1">Default series.encode</h2>\n<p>It is worth mentioning that ECharts will use some default mapping rules for some general charts (line, bar, scatter, candlestick, etc.) if <code>series.encode</code> is not specified. The default rule is:</p>\n<ul>\n<li>In coordinate system (e.g. Cartesian, Polar):\n<ul>\n<li>If there is category axis (<a href="https://echarts.apache.org/option.html#xAxis.type">axis.type</a> = <code>\'category\'</code>), map the first column(row) to the axis and each subsequent column(row) to each series.</li>\n<li>If both axes is not the category, then map every two columns in one series to two axes.</li>\n</ul>\n</li>\n<li>Without axis (e.g. Pie Chart):\n<ul>\n<li>Use the first column(row) as the name, second column(row) as value. ECharts will not set the name if there is only one column(row).</li>\n</ul>\n</li>\n</ul>\n<p>While the default rule cannot fulfill the requirements, you can configure <code>encode</code> by yourself, which is not complicate. Here is an <a href="https://echarts.apache.org/examples/en/editor.html?c=dataset-default">example</a>.</p>\n<h2 id="some-normal-settings-of-series.encode" tabindex="-1">Some Normal Settings of series.encode</h2>\n<p>Q: How to set the 3rd column as x-axis, 5th column as y-axis?</p>\n<p>A:</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIHNlcmllczogewogICAgLy8gZGltZW5zaW9uSW5kZXggY291bnQgZnJvbSAwLCBzbyB0aGUgM3JkIGxpbmUgaXMgZGltZW5zaW9uc1syXS4KICAgIGVuY29kZTogeyB4OiAyLCB5OiA0IH0KICAgIC8vIC4uLgogIH0KfTs\'" line-highlights="\'\'" />\n<p>Q: How to set the 3rd row as x-axis, 5th row as y-axis?</p>\n<p>A:</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIHNlcmllczogewogICAgZW5jb2RlOiB7IHg6IDIsIHk6IDQgfSwKICAgIHNlcmllc0xheW91dEJ5OiAncm93JwogICAgLy8gLi4uCiAgfQp9Ow\'" line-highlights="\'\'" />\n<p>Q: How to set the 2nd column as a label?</p>\n<p>A:\nWe now support to trace value from specific dimension for <a href="https://echarts.apache.org/option.html#series.label.formatter">label.formatter</a>:</p>\n<md-code-block lang="js" code="\'c2VyaWVzOiB7CiAgbGFiZWw6IHsKICAgIC8vIGAne0BzY29yZX0nYCBtZWFucyB0aGUgdmFsdWUgaW4gdGhlIGRpbWVuc2lvbiBuYW1lZCAic2NvcmUiLgogICAgLy8gYCd7QFs0XX0nYCBtZWFucyB0aGUgdmFsdWUgaW4gZGltZW5zaW9uIDQuCiAgICBmb3JtYXR0ZXI6ICdhYWF7QHByb2R1Y3R9YmJie0BzY29yZX1jY2N7QFs0XX1kZGQnOwogIH0KfQ\'" line-highlights="\'\'" />\n<p>Q: How to show the 2nd and 3rd column in the tooltip?</p>\n<p>A:</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIHNlcmllczogewogICAgZW5jb2RlOiB7CiAgICAgIHRvb2x0aXA6IFsxLCAyXQogICAgICAvLyAuLi4KICAgIH0KICAgIC8vIC4uLgogIH0KfTs\'" line-highlights="\'\'" />\n<p>Q: How to define the dimension name if is not included in the dataset?</p>\n<p>A:</p>\n<md-code-block lang="js" code="\'dmFyIG9wdGlvbiA9IHsKICBkYXRhc2V0OiB7CiAgICBkaW1lbnNpb25zOiBbJ3Njb3JlJywgJ2Ftb3VudCddLAogICAgc291cmNlOiBbCiAgICAgIFs4OS4zLCAzMzcxXSwKICAgICAgWzkyLjEsIDgxMjNdLAogICAgICBbOTQuNCwgMTk1NF0sCiAgICAgIFs4NS40LCA4MjldCiAgICBdCiAgfQp9Ow\'" line-highlights="\'\'" />\n<p>Q: How to map the 3rd column to the size of the scatter chart?</p>\n<p>A:</p>\n<md-live lang="js" code="\'dmFyIG9wdGlvbiA9IHsKICBkYXRhc2V0OiB7CiAgICBzb3VyY2U6IFsKICAgICAgWzEyLCAzMjMsIDExLjJdLAogICAgICBbMjMsIDE2NywgOC4zXSwKICAgICAgWzgxLCAyODQsIDEyXSwKICAgICAgWzkxLCA0MTMsIDQuMV0sCiAgICAgIFsxMywgMjg3LCAxMy41XQogICAgXQogIH0sCiAgdmlzdWFsTWFwOiB7CiAgICBzaG93OiBmYWxzZSwKICAgIGRpbWVuc2lvbjogMiwgLy8gbWVhbnMgdGhlIDNyZCBjb2x1bW4KICAgIG1pbjogMiwgLy8gbG93ZXIgYm91bmQKICAgIG1heDogMTUsIC8vIGhpZ2hlciBib3VuZAogICAgaW5SYW5nZTogewogICAgICAvLyBTaXplIG9mIHRoZSBidWJibGUuCiAgICAgIHN5bWJvbFNpemU6IFs1LCA2MF0KICAgIH0KICB9LAogIHhBeGlzOiB7fSwKICB5QXhpczoge30sCiAgc2VyaWVzOiB7CiAgICB0eXBlOiAnc2NhdHRlcicKICB9Cn07\'" v-bind="{}" />\n<p>Q: I specified a mapping in encode, why it is not worked?</p>\n<p>A: Check your spelling, such as misspell the dimension name <code>\'Life Expectancy\'</code> to <code>\'Life Expectency\'</code> in encode.</p>\n<h2 id="visual-channel-mapping" tabindex="-1">Visual Channel Mapping</h2>\n<p>We can map visual channel by using <a href="https://echarts.apache.org/option.html#visualMap">visualMap</a>. Check details in the <a href="https://echarts.apache.org/option.html#visualMap">visualMap</a> document. Here is an <a href="https://echarts.apache.org/examples/en/editor.html?c=dataset-encode0">example</a>.</p>\n<h2 id="formats-of-charts" tabindex="-1">Formats of Charts</h2>\n<p>In most of the normal chart, the data is suitable to be described in the form of a two-dimensional table. That well-known software like \'MS Excel\' and \'Numbers\' all uses a two-dimensional table. Their data can be exported to JSON format and input to <code>dataset.source</code> and avoid some steps of data processing.</p>\n<blockquote>\n<p>You can switch .csv file to JSON using tools like <a href="https://github.com/d3/d3-dsv">dsv</a> or <a href="https://github.com/mholt/PapaParse">PapaParse</a>.</p>\n</blockquote>\n<p>As the example shown behind, in the data transmission of JavaScript, the two-dimensional data can be stored directly by two-dimensional array.</p>\n<p>Expect from the two-dimensional array, the dataset also supports using key-value which is also a common way. However, we don\'t support <a href="https://echarts.apache.org/option.html#series.seriesLayoutBy">seriesLayoutBy</a> in this format right now.</p>\n<md-code-block lang="js" code="\'ZGF0YXNldDogWwogIHsKICAgIC8vIGNvbHVtbiBieSBjb2x1bW4ga2V5LXZhbHVlIGFycmF5IGlzIGEgbm9ybWFsIGZvcm1hdAogICAgc291cmNlOiBbCiAgICAgIHsgcHJvZHVjdDogJ01hdGNoYSBMYXR0ZScsIGNvdW50OiA4MjMsIHNjb3JlOiA5NS44IH0sCiAgICAgIHsgcHJvZHVjdDogJ01pbGsgVGVhJywgY291bnQ6IDIzNSwgc2NvcmU6IDgxLjQgfSwKICAgICAgeyBwcm9kdWN0OiAnQ2hlZXNlIENvY29hJywgY291bnQ6IDEwNDIsIHNjb3JlOiA5MS4yIH0sCiAgICAgIHsgcHJvZHVjdDogJ1dhbG51dCBCcm93bmllJywgY291bnQ6IDk4OCwgc2NvcmU6IDc2LjkgfQogICAgXQogIH0sCiAgewogICAgLy8gcm93IGJ5IHJvdyBrZXktdmFsdWUKICAgIHNvdXJjZTogewogICAgICBwcm9kdWN0OiBbJ01hdGNoYSBMYXR0ZScsICdNaWxrIFRlYScsICdDaGVlc2UgQ29jb2EnLCAnV2FsbnV0IEJyb3duaWUnXSwKICAgICAgY291bnQ6IFs4MjMsIDIzNSwgMTA0MiwgOTg4XSwKICAgICAgc2NvcmU6IFs5NS44LCA4MS40LCA5MS4yLCA3Ni45XQogICAgfQogIH0KXTs\'" line-highlights="\'\'" />\n<h2 id="how-to-reference-several-datasets" tabindex="-1">How to Reference Several Datasets</h2>\n<p>ECharts support to define several datasets at the same moment. Series can assign the one to reference by <a href="https://echarts.apache.org/option.html#series.datasetIndex">series.datasetIndex</a>. For example:</p>\n<md-code-block lang="js" code="\'dmFyIG9wdGlvbiA9IHsKICBkYXRhc2V0OiBbCiAgICB7CiAgICAgIC8vIDFzdCBEYXRhc2V0CiAgICAgIHNvdXJjZTogW10KICAgIH0sCiAgICB7CiAgICAgIC8vIDJuZCBEYXRhc2V0CiAgICAgIHNvdXJjZTogW10KICAgIH0sCiAgICB7CiAgICAgIC8vIDNyZCBEYXRhc2V0CiAgICAgIHNvdXJjZTogW10KICAgIH0KICBdLAogIHNlcmllczogWwogICAgewogICAgICAvLyBVc2UgMm5kIGRhdGFzZXQKICAgICAgZGF0YXNldEluZGV4OiAxCiAgICB9LAogICAgewogICAgICAvLyBVc2UgMXN0IGRhdGFzZXQKICAgICAgZGF0YXNldEluZGV4OiAwCiAgICB9CiAgXQp9Ow\'" line-highlights="\'\'" />\n<h2 id="series.data-in-echarts-3" tabindex="-1">series.data in ECharts 3</h2>\n<p>ECharts 4 still supports the data declaration way in ECharts 3. If the series has already declared the <a href="https://echarts.apache.org/option.html#series.data">series.data</a>, then use <a href="https://echarts.apache.org/option.html#series.data">series.data</a> but not <code>dataset</code>.</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICB0eXBlOiAnY2F0ZWdvcnknLAogICAgZGF0YTogWydNYXRjaGEgTGF0dGUnLCAnTWlsayBUZWEnLCAnQ2hlZXNlIENvY29hJywgJ1dhbG51dCBCcm93bmllJ10KICB9LAogIHlBeGlzOiB7fSwKICBzZXJpZXM6IFsKICAgIHsKICAgICAgdHlwZTogJ2JhcicsCiAgICAgIG5hbWU6ICcyMDE1JywKICAgICAgZGF0YTogWzg5LjMsIDkyLjEsIDk0LjQsIDg1LjRdCiAgICB9LAogICAgewogICAgICB0eXBlOiAnYmFyJywKICAgICAgbmFtZTogJzIwMTYnLAogICAgICBkYXRhOiBbOTUuOCwgODkuNCwgOTEuMiwgNzYuOV0KICAgIH0sCiAgICB7CiAgICAgIHR5cGU6ICdiYXInLAogICAgICBuYW1lOiAnMjAxNycsCiAgICAgIGRhdGE6IFs5Ny43LCA4My4xLCA5Mi41LCA3OC4xXQogICAgfQogIF0KfTs\'" line-highlights="\'\'" />\n<p>In fact, <a href="https://echarts.apache.org/option.html#series.data">series.data</a> is an important setting method which will always exist. Some special non-table format chart like <a href="https://echarts.apache.org/option.html#series-treemap">treemap</a>, <a href="https://echarts.apache.org/option.html#series-graph">graph</a> and <a href="https://echarts.apache.org/option.html#series-lines">lines</a> still cannot be edit in dataset, you still need to use <a href="https://echarts.apache.org/option.html#series.data">series.data</a>. In another way, for render huge amount of data (over a million), you need to use <a href="https://echarts.apache.org/api.html#echartsInstance.appendData">appendData</a> which is not supported by <code>dataset</code>.</p>\n<h2 id="others" tabindex="-1">Others</h2>\n<p>The following charts now support dataset:\n<code>line</code>, <code>bar</code>, <code>pie</code>, <code>scatter</code>, <code>effectScatter</code>, <code>parallel</code>, <code>candlestick</code>, <code>map</code>, <code>funnel</code>, <code>custom</code>.\nECharts will support more charts in the future.</p>\n<p>In the end, here is an <a href="https://echarts.apache.org/examples/en/editor.html?c=dataset-link">example</a> of several charts shared one <code>dataset</code> with linkage interaction.</p>\n',postPath:"en/concepts/dataset",title:"Dataset - Concepts"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:a},{title:"入门篇",dir:o,children:[{title:"获取 ECharts",dir:d},{title:"在项目中引入 ECharts",dir:s},{title:"资源列表",dir:n,draft:e},{title:"寻求帮助",dir:l},{title:"版本特性",dir:g,children:[{title:"ECharts 6 特性介绍",dir:c},{title:"v5 升级 v6 指南",dir:r},{title:"5.0",dir:I},{title:"v4 升级 v5 指南",dir:h},{title:5.2,dir:C},{title:5.3,dir:p},{title:5.4,dir:A},{title:5.5,dir:m},{title:5.6,dir:u}]}]},{title:"概念篇",dir:b,children:[{title:"图表容器及大小",dir:y},{title:"配置项",dir:B,draft:e},{title:"系列",dir:w,draft:e},{title:"样式",dir:f},{title:"数据集",dir:G},{title:"数据转换",dir:Z},{title:"坐标系",dir:W,draft:e},{title:"坐标轴",dir:v},{title:"视觉映射",dir:i},{title:"图例",dir:X},{title:"事件与行为",dir:L}]},{title:"应用篇",dir:H,children:[{title:"常用图表类型",dir:N,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:J},{title:"堆叠柱状图",dir:S},{title:"动态排序柱状图",dir:z},{title:"极坐标系柱状图",dir:F,draft:e},{title:"阶梯瀑布图",dir:M},{title:"视觉映射的柱状图",dir:i,draft:e}]},{title:"折线图",dir:Y,children:[{title:"基础折线图",dir:x},{title:"堆叠折线图",dir:D},{title:"区域面积图",dir:V},{title:"平滑曲线图",dir:R},{title:"阶梯线图",dir:k}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:j},{title:"圆环图",dir:O},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:E,children:[{title:"基础散点图",dir:T}]}]},{title:"常用组件",dir:Q,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:K}]}]},{title:"移动端优化",dir:t,draft:e},{title:"跨平台方案",dir:U,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:P},{title:"数据下钻",dir:q,draft:e}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:_}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:ee}]},{title:"交互",dir:te,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:ie,draft:e},{title:"智能指针吸附",dir:ae}]}]},{title:"最佳实践",dir:oe,children:[{title:"移动端优化",dir:t,draft:e},{title:de,dir:se},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:ne}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:le}]}],en:[{title:"Get Started",dir:a},{title:"Basics",dir:o,children:[{title:"Download ECharts",dir:d},{title:"Import ECharts",dir:s},{title:"Resources",dir:n,draft:e},{title:"Get Help",dir:l},{title:"What's New",dir:g,children:[{title:"ECharts 6 Features",dir:c},{title:"Migration from v5 to v6",dir:r},{title:"5.0",dir:I},{title:"Migration from v4 to v5",dir:h},{title:5.2,dir:C},{title:5.3,dir:p},{title:5.4,dir:A},{title:5.5,dir:m},{title:5.6,dir:u}]}]},{title:"Concepts",dir:b,children:[{title:"Chart Container",dir:y},{title:"Chart Option",dir:B,draft:e},{title:"Series",dir:w,draft:e},{title:"Style",dir:f},{title:"Dataset",dir:G},{title:"Data Transform",dir:Z},{title:"Coordinate",dir:W,draft:e},{title:"Axis",dir:v},{title:"Visual Mapping",dir:i},{title:"Legend",dir:X},{title:"Event and Action",dir:L}]},{title:"How To Guides",dir:H,children:[{title:"Common Charts",dir:N,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:J},{title:"Stacked Bar",dir:S},{title:"Bar Racing",dir:z},{title:"Bar Polar",dir:F,draft:e},{title:"Waterfall",dir:M}]},{title:"Line",dir:Y,children:[{title:"Basic Line",dir:x},{title:"Stacked Line",dir:D},{title:"Area Chart",dir:V},{title:"Smoothed Line",dir:R},{title:"Step Line",dir:k}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:j},{title:"Ring Style",dir:O},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:E,children:[{title:"Basic Scatter",dir:T}]}]},{title:"Common Components",dir:Q,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:K}]}]},{title:"Mobile",dir:t,draft:e},{title:"Cross Platform",dir:U,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:P},{title:"Drilldown",dir:q,draft:e}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:_}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:ee}]},{title:"Interaction",dir:te,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:ie,draft:e},{title:"Intelligent Pointer Snapping",dir:ae}]}]},{title:"Best Practices",dir:oe,children:[{title:"Mobile Optimization",dir:t,draft:e},{title:de,dir:se},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:ne}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:le}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:e,routePath:"/en/concepts/dataset",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/en/concepts/event/index.html b/docs/en/concepts/event/index.html
new file mode 100644
index 0000000..a00c8d8
--- /dev/null
+++ b/docs/en/concepts/event/index.html
@@ -0,0 +1,321 @@
+<!doctype html>
+<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Event and Action - Concepts - Handbook - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="en"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/en/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/en/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/en/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/en/index.html" class="navbar-brand"><img src="https://echarts.apache.org/en/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/en/index.html">Home</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Docs<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/feature.html">Features</a></li><li><a href="https://echarts.apache.org/handbook/en/get-started/">Handbook</a></li><li><a href="https://echarts.apache.org/en/api.html">API</a></li><li><a href="https://echarts.apache.org/en/option.html">Chart Configuration</a></li><li><a href="https://echarts.apache.org/en/changelog.html">Changelog</a></li><li><a href="https://echarts.apache.org/en/faq.html">FAQ</a></li><li><a href="https://echarts.apache.org/handbook/en/basics/release-note/v6-upgrade-guide">V6 Upgrade Guide</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Download<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/download.html">Download</a></li><li><a href="https://echarts.apache.org/en/download-theme.html">Download Themes</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">Download Custom Series<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/download-extension.html">Download Extensions</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/en/index.html">Examples</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Resources<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/spreadsheet.html">Spread Sheet Tool</a></li><li><a href="https://echarts.apache.org/en/theme-builder.html">Theme Builder</a></li><li><a href="https://echarts.apache.org/en/cheat-sheet.html">Cheat Sheet</a></li><li><a href="https://echarts.apache.org/en/resources.html">More Resources</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/events.html">Events</a></li><li><a href="https://echarts.apache.org/en/committers.html">Committers</a></li><li><a href="https://echarts.apache.org/en/maillist.html">Mailing List</a></li><li><a href="https://echarts.apache.org/en/contributing.html">How to Contribute</a></li><li><a href="https://echarts.apache.org/en/dependencies.html">Dependencies</a></li><li><a href="https://echarts.apache.org/en/coding-standard.html">Code Standard</a></li><li><a href="https://github.com/apache/echarts" target="_blank">Source Code (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/security.html">Security</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">License<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">Events<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("zh")'>中文</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/en/get-started" class="nav-link"><span class="title">Get Started</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Basics</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/basics/download" class="nav-link"><span class="title">Download ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/import" class="nav-link"><span class="title">Import ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/basics/help" class="nav-link"><span class="title">Get Help</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">What's New</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 Features</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">Migration from v5 to v6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">Migration from v4 to v5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Concepts</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/concepts/chart-size" class="nav-link"><span class="title">Chart Container</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/style" class="nav-link"><span class="title">Style</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/dataset" class="nav-link"><span class="title">Dataset</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/data-transform" class="nav-link"><span class="title">Data Transform</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/axis" class="nav-link"><span class="title">Axis</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/visual-map" class="nav-link"><span class="title">Visual Mapping</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/legend" class="nav-link"><span class="title">Legend</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/event" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">Event and Action</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">How To Guides</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">Common Charts</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Bar</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">Basic Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">Stacked Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">Bar Racing</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">Waterfall</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Line</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">Basic Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">Stacked Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/area-line" class="nav-link"><span class="title">Area Chart</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">Smoothed Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/step-line" class="nav-link"><span class="title">Step Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Pie</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">Basic Pie</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">Ring Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/rose" class="nav-link"><span class="title">Rose Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Scatter</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">Basic Scatter</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Common Components</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Geo</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG Base Map</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">Cross Platform</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/cross-platform/server" class="nav-link"><span class="title">Server Side Rendering</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Data</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/data/dynamic-data" class="nav-link"><span class="title">Dynamic Data</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Label</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/label/rich-text" class="nav-link"><span class="title">Rich Text</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Animation</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/animation/transition" class="nav-link"><span class="title">Data Transition</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Interaction</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/drag" class="nav-link"><span class="title">Drag</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">Intelligent Pointer Snapping</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Best Practices</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/en/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/aria" class="nav-link"><span class="title">Aria</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/security" class="nav-link"><span class="title">Security Guidelines</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Edit Handbook</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/meta/edit-guide" class="nav-link"><span class="title">Edit Guide</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="event-and-action" tabindex="-1">Event and Action</h1> <p>Users can trigger corresponding events by their operation. The developer can handle the callback function by listening to these events, such as jump to a new website, pop-up a dialog box, or drill down the data.</p> <p>The name of the event and the DOM event is both lowercase string. Here is an example of binding listening to <code>click</code> event.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>myChart<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'click'</span><span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">params</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  <span class="token comment">// Print name in console</span>
+  console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>params<span class="token punctuation">.</span>name<span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>There are two kinds of event in ECharts, one happened when the user clicks the mouse or hover the elements in charts, the other happened while the user triggered some interactive actions. Such as <a href="https://echarts.apache.org/api.html#events.legendselectchanged">'legendselectchanged'</a> triggered while changing the legend selected (please notice that <code>legendselected</code> won't be triggered in this situation), <a href="https://echarts.apache.org/api.html#events.legendselectchanged">'datazoom'</a> triggered while zooming the data area.</p> <h2 id="handling-the-mouse-events" tabindex="-1">Handling the Mouse Events</h2> <p>ECharts support general mouse events: <code>'click'</code>, <code>'dblclick'</code>, <code>'mousedown'</code>, <code>'mousemove'</code>, <code>'mouseup'</code>, <code>'mouseover'</code>, <code>'mouseout'</code>, <code>'globalout'</code>, <code>'contextmenu'</code>. This is an example of opening the search result page after clicking the bar chart.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token comment">// Init the ECharts base on DOM</span>
+<span class="token keyword">var</span> myChart <span class="token operator">=</span> echarts<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span>document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span><span class="token string">'main'</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+<span class="token comment">// Config</span>
+<span class="token keyword">var</span> option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token string">'Shirt'</span><span class="token punctuation">,</span>
+      <span class="token string">'Wool sweater'</span><span class="token punctuation">,</span>
+      <span class="token string">'Chiffon shirt'</span><span class="token punctuation">,</span>
+      <span class="token string">'Pants'</span><span class="token punctuation">,</span>
+      <span class="token string">'High-heeled shoes'</span><span class="token punctuation">,</span>
+      <span class="token string">'socks'</span>
+    <span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Sales'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">20</span><span class="token punctuation">,</span> <span class="token number">36</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">20</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span>
+<span class="token comment">// Use the option and data to display the chart</span>
+myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span>option<span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token comment">// Click and jump to Baidu search website</span>
+myChart<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'click'</span><span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">params</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  window<span class="token punctuation">.</span><span class="token function">open</span><span class="token punctuation">(</span>
+    <span class="token string">'https://www.google.com/search?q='</span> <span class="token operator">+</span> <span class="token function">encodeURIComponent</span><span class="token punctuation">(</span>params<span class="token punctuation">.</span>name<span class="token punctuation">)</span>
+  <span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>All mouse events included <code>params</code> which contained the data of the object.</p> <p>Format:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>type EventParams <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token comment">// The component name clicked,</span>
+  <span class="token comment">// component type, could be 'series'、'markLine'、'markPoint'、'timeLine', etc..</span>
+  <span class="token literal-property property">componentType</span><span class="token operator">:</span> string<span class="token punctuation">,</span>
+  <span class="token comment">// series type, could be 'line'、'bar'、'pie', etc.. Works when componentType is 'series'.</span>
+  <span class="token literal-property property">seriesType</span><span class="token operator">:</span> string<span class="token punctuation">,</span>
+  <span class="token comment">// the index in option.series. Works when componentType is 'series'.</span>
+  <span class="token literal-property property">seriesIndex</span><span class="token operator">:</span> number<span class="token punctuation">,</span>
+  <span class="token comment">// series name, works when componentType is 'series'.</span>
+  <span class="token literal-property property">seriesName</span><span class="token operator">:</span> string<span class="token punctuation">,</span>
+  <span class="token comment">// name of data (categories).</span>
+  <span class="token literal-property property">name</span><span class="token operator">:</span> string<span class="token punctuation">,</span>
+  <span class="token comment">// the index in 'data' array.</span>
+  <span class="token literal-property property">dataIndex</span><span class="token operator">:</span> number<span class="token punctuation">,</span>
+  <span class="token comment">// incoming raw data item</span>
+  <span class="token literal-property property">data</span><span class="token operator">:</span> Object<span class="token punctuation">,</span>
+  <span class="token comment">// charts like 'sankey' and 'graph' included nodeData and edgeData as the same time.</span>
+  <span class="token comment">// dataType can be 'node' or 'edge', indicates whether the current click is on node or edge.</span>
+  <span class="token comment">// most of charts have one kind of data, the dataType is meaningless</span>
+  <span class="token literal-property property">dataType</span><span class="token operator">:</span> string<span class="token punctuation">,</span>
+  <span class="token comment">// incoming data value</span>
+  <span class="token literal-property property">value</span><span class="token operator">:</span> number <span class="token operator">|</span> Array<span class="token punctuation">,</span>
+  <span class="token comment">// color of the shape, works when componentType is 'series'.</span>
+  <span class="token literal-property property">color</span><span class="token operator">:</span> string
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>Identify where the mouse clicked.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>myChart<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'click'</span><span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">params</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  <span class="token keyword">if</span> <span class="token punctuation">(</span>params<span class="token punctuation">.</span>componentType <span class="token operator">===</span> <span class="token string">'markPoint'</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+    <span class="token comment">// Clicked on the markPoint</span>
+    <span class="token keyword">if</span> <span class="token punctuation">(</span>params<span class="token punctuation">.</span>seriesIndex <span class="token operator">===</span> <span class="token number">5</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+      <span class="token comment">// clicked on the markPoint of the series with index = 5</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>params<span class="token punctuation">.</span>componentType <span class="token operator">===</span> <span class="token string">'series'</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+    <span class="token keyword">if</span> <span class="token punctuation">(</span>params<span class="token punctuation">.</span>seriesType <span class="token operator">===</span> <span class="token string">'graph'</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+      <span class="token keyword">if</span> <span class="token punctuation">(</span>params<span class="token punctuation">.</span>dataType <span class="token operator">===</span> <span class="token string">'edge'</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+        <span class="token comment">// clicked at the edge of graph.</span>
+      <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span>
+        <span class="token comment">// clicked at the node of graph.</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>Use <code>query</code> to trigger callback of the specified component:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>chart<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span>eventName<span class="token punctuation">,</span> query<span class="token punctuation">,</span> handler<span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p><code>query</code> can be <code>string</code> or <code>Object</code>.</p> <p>If it is <code>string</code>, the format can be <code>mainType</code> or <code>mainType.subType</code>, such as:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>chart<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'click'</span><span class="token punctuation">,</span> <span class="token string">'series'</span><span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token operator">...</span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+chart<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'click'</span><span class="token punctuation">,</span> <span class="token string">'series.line'</span><span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token operator">...</span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+chart<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'click'</span><span class="token punctuation">,</span> <span class="token string">'dataZoom'</span><span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token operator">...</span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+chart<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'click'</span><span class="token punctuation">,</span> <span class="token string">'xAxis.category'</span><span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token operator">...</span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>If it is <code>Object</code>, <code>query</code> can include more than one attribute:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token punctuation">{</span>
+  $<span class="token punctuation">{</span>mainType<span class="token punctuation">}</span>Index<span class="token operator">:</span> number <span class="token comment">// component index</span>
+  $<span class="token punctuation">{</span>mainType<span class="token punctuation">}</span>Name<span class="token operator">:</span> string <span class="token comment">// component name</span>
+  $<span class="token punctuation">{</span>mainType<span class="token punctuation">}</span>Id<span class="token operator">:</span> string <span class="token comment">// component id</span>
+  <span class="token literal-property property">dataIndex</span><span class="token operator">:</span> number <span class="token comment">// data item index</span>
+  <span class="token literal-property property">name</span><span class="token operator">:</span> string <span class="token comment">// data item name</span>
+  <span class="token literal-property property">dataType</span><span class="token operator">:</span> string <span class="token comment">// date item type, such as 'node', 'edge'</span>
+  <span class="token literal-property property">element</span><span class="token operator">:</span> string <span class="token comment">// name of element in custom series.</span>
+<span class="token punctuation">}</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>Such as:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>chart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+  <span class="token comment">// ...</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'uuu'</span>
+      <span class="token comment">// ...</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+chart<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'mouseover'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token literal-property property">seriesName</span><span class="token operator">:</span> <span class="token string">'uuu'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  <span class="token comment">// when elements in series named 'uuu' triggered 'mouseover'</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>For example:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>chart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+  <span class="token comment">// ...</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token comment">// ...</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token comment">// ...</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">{</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'xx'</span><span class="token punctuation">,</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">121</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'yy'</span><span class="token punctuation">,</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">33</span> <span class="token punctuation">}</span>
+      <span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+chart<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'mouseover'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token literal-property property">seriesIndex</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'xx'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  <span class="token comment">// when data named 'xx' in series index 1 triggered 'mouseover'.</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>For example:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>chart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+  <span class="token comment">// ...</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'graph'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">nodes</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">{</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'a'</span><span class="token punctuation">,</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">10</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'b'</span><span class="token punctuation">,</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">20</span> <span class="token punctuation">}</span>
+      <span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">edges</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">{</span> <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token literal-property property">target</span><span class="token operator">:</span> <span class="token number">1</span> <span class="token punctuation">}</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+chart<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'click'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token literal-property property">dataType</span><span class="token operator">:</span> <span class="token string">'node'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  <span class="token comment">// call this method while the node of graph was clicked.</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+chart<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'click'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token literal-property property">dataType</span><span class="token operator">:</span> <span class="token string">'edge'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  <span class="token comment">// call this method while the edge of graph was clicked.</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>For example:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>chart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+  <span class="token comment">// ...</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token comment">// ...</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'custom'</span><span class="token punctuation">,</span>
+    <span class="token function-variable function">renderItem</span><span class="token operator">:</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">params<span class="token punctuation">,</span> api</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+      <span class="token keyword">return</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'group'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">children</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+          <span class="token punctuation">{</span>
+            <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'circle'</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'my_el'</span>
+            <span class="token comment">// ...</span>
+          <span class="token punctuation">}</span><span class="token punctuation">,</span>
+          <span class="token punctuation">{</span>
+            <span class="token comment">// ...</span>
+          <span class="token punctuation">}</span>
+        <span class="token punctuation">]</span>
+      <span class="token punctuation">}</span><span class="token punctuation">;</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">[</span><span class="token number">12</span><span class="token punctuation">,</span> <span class="token number">33</span><span class="token punctuation">]</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+chart<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'mouseup'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token literal-property property">element</span><span class="token operator">:</span> <span class="token string">'my_el'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  <span class="token comment">// when data named 'my_el' triggered 'mouseup'.</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>You can display a popup, update the charts using the query result from your database by the data name or series name in the callback function. Here is an example:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>myChart<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'click'</span><span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">parmas</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  $<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span><span class="token string">'detail?q='</span> <span class="token operator">+</span> params<span class="token punctuation">.</span>name<span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">detail</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+    myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+      <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'pie'</span><span class="token punctuation">,</span>
+          <span class="token comment">// using pie chart to show the data distribution in one column.</span>
+          <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>detail<span class="token punctuation">.</span>data<span class="token punctuation">]</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+  <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="event-of-component-interaction" tabindex="-1">Event of Component Interaction</h2> <p>All Component Interaction in ECharts will trigger a corresponding event. Normal events and parameters are listed in the <a href="https://echarts.apache.org//api.html#events">events</a> document.</p> <p>Here is an example of listening to legend event:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token comment">// Show/hide the legend only trigger legendselectchanged event</span>
+myChart<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'legendselectchanged'</span><span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">params</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  <span class="token comment">// State if legend is selected.</span>
+  <span class="token keyword">var</span> isSelected <span class="token operator">=</span> params<span class="token punctuation">.</span>selected<span class="token punctuation">[</span>params<span class="token punctuation">.</span>name<span class="token punctuation">]</span><span class="token punctuation">;</span>
+  <span class="token comment">// print in the console.</span>
+  console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>
+    <span class="token punctuation">(</span>isSelected <span class="token operator">?</span> <span class="token string">'Selected'</span> <span class="token operator">:</span> <span class="token string">'Not Selected'</span><span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token string">'legend'</span> <span class="token operator">+</span> params<span class="token punctuation">.</span>name
+  <span class="token punctuation">)</span><span class="token punctuation">;</span>
+  <span class="token comment">// print for all legends.</span>
+  console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>params<span class="token punctuation">.</span>selected<span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="writing-code-to-trigger-component-action-manually" tabindex="-1">Writing Code to Trigger Component Action Manually</h2> <p>You can trigger events such as <code>'legendselectchanged'</code> not only by the user but also with code manually. It can be used to display the tooltip, select the legend.</p> <p>In ECharts <code>myChart.dispatchAction({ type: '' })</code> is used to trigger the behavior. This manages all actions and can record the behaviors conveniently.</p> <p>Commonly used behavior and corresponding parameters are listed in <a href="https://echarts.apache.org//api.html#action">action</a>.</p> <p>The following example shows how to highlight each sector one by one in the pie chart using <code>dispatchAction</code>.</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  tooltip: {
+    trigger: 'item',
+    formatter: '{a} &lt;br/>{b} : {c} ({d}%)'
+  },
+  legend: {
+    orient: 'vertical',
+    left: 'left',
+    data: [
+      'Direct Access',
+      'Email Marketing',
+      'Affiliate Ads',
+      'Video Ads',
+      'Search Engines'
+    ]
+  },
+  series: [
+    {
+      name: 'Access Source',
+      type: 'pie',
+      radius: '55%',
+      center: ['50%', '60%'],
+      data: [
+        { value: 335, name: 'Direct Access' },
+        { value: 310, name: 'Email Marketing' },
+        { value: 234, name: 'Affiliate Ads' },
+        { value: 135, name: 'Video Ads' },
+        { value: 1548, name: 'Search Engines' }
+      ],
+      emphasis: {
+        itemStyle: {
+          shadowBlur: 10,
+          shadowOffsetX: 0,
+          shadowColor: 'rgba(0, 0, 0, 0.5)'
+        }
+      }
+    }
+  ]
+};
+
+let currentIndex = -1;
+
+setInterval(function() {
+  var dataLen = option.series[0].data.length;
+  myChart.dispatchAction({
+    type: 'downplay',
+    seriesIndex: 0,
+    dataIndex: currentIndex
+  });
+  currentIndex = (currentIndex + 1) % dataLen;
+  myChart.dispatchAction({
+    type: 'highlight',
+    seriesIndex: 0,
+    dataIndex: currentIndex
+  });
+  myChart.dispatchAction({
+    type: 'showTip',
+    seriesIndex: 0,
+    dataIndex: currentIndex
+  });
+}, 1000);</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">tooltip</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">trigger</span><span class="token operator">:</span> <span class="token string">'item'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">formatter</span><span class="token operator">:</span> <span class="token string">'{a} &lt;br/>{b} : {c} ({d}%)'</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">legend</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">orient</span><span class="token operator">:</span> <span class="token string">'vertical'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">left</span><span class="token operator">:</span> <span class="token string">'left'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token string">'Direct Access'</span><span class="token punctuation">,</span>
+      <span class="token string">'Email Marketing'</span><span class="token punctuation">,</span>
+      <span class="token string">'Affiliate Ads'</span><span class="token punctuation">,</span>
+      <span class="token string">'Video Ads'</span><span class="token punctuation">,</span>
+      <span class="token string">'Search Engines'</span>
+    <span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Access Source'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'pie'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">radius</span><span class="token operator">:</span> <span class="token string">'55%'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">center</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'50%'</span><span class="token punctuation">,</span> <span class="token string">'60%'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">{</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">335</span><span class="token punctuation">,</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Direct Access'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">310</span><span class="token punctuation">,</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Email Marketing'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">234</span><span class="token punctuation">,</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Affiliate Ads'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">135</span><span class="token punctuation">,</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Video Ads'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">1548</span><span class="token punctuation">,</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Search Engines'</span> <span class="token punctuation">}</span>
+      <span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">emphasis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">itemStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+          <span class="token literal-property property">shadowBlur</span><span class="token operator">:</span> <span class="token number">10</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">shadowOffsetX</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">shadowColor</span><span class="token operator">:</span> <span class="token string">'rgba(0, 0, 0, 0.5)'</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span>
+
+<span class="token keyword">let</span> currentIndex <span class="token operator">=</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">;</span>
+
+<span class="token function">setInterval</span><span class="token punctuation">(</span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  <span class="token keyword">var</span> dataLen <span class="token operator">=</span> option<span class="token punctuation">.</span>series<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">.</span>data<span class="token punctuation">.</span>length<span class="token punctuation">;</span>
+  myChart<span class="token punctuation">.</span><span class="token function">dispatchAction</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'downplay'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">seriesIndex</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">dataIndex</span><span class="token operator">:</span> currentIndex
+  <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+  currentIndex <span class="token operator">=</span> <span class="token punctuation">(</span>currentIndex <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">)</span> <span class="token operator">%</span> dataLen<span class="token punctuation">;</span>
+  myChart<span class="token punctuation">.</span><span class="token function">dispatchAction</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'highlight'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">seriesIndex</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">dataIndex</span><span class="token operator">:</span> currentIndex
+  <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+  myChart<span class="token punctuation">.</span><span class="token function">dispatchAction</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'showTip'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">seriesIndex</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">dataIndex</span><span class="token operator">:</span> currentIndex
+  <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token number">1000</span><span class="token punctuation">)</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <h2 id="listen-to-events-on-the-blank-area" tabindex="-1">Listen to Events on the Blank Area</h2> <p>Sometimes developers need to listen to the events that are triggered from the blank of the canvas. For example, need to reset the chart when users click on the blank area.</p> <p>Before we talk about this feature, we need to clarify two kinds of events: zrender events and echarts events.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>myChart<span class="token punctuation">.</span><span class="token function">getZr</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'click'</span><span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">event</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  <span class="token comment">// This listener is listening to a `zrender event`.</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+myChart<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'click'</span><span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">event</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  <span class="token comment">// This listener is listening to a `echarts event`.</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>zrender events are different from echarts events. The former one are triggered when mouse/pointer is at everywhere, while the latter one can only be triggered when mouse/pointer is at the graphic elements. In fact, echarts events are implemented based on zrender events, that is, when a zrender events is triggered at a graphic element, echarts will trigger a echarts event.</p> <p>Having zrender events, we can implement listen to events from the blank as follows:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>myChart<span class="token punctuation">.</span><span class="token function">getZr</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'click'</span><span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">event</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  <span class="token comment">// No "target" means that mouse/pointer is not on</span>
+  <span class="token comment">// any of the graphic elements, which is "blank".</span>
+  <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>event<span class="token punctuation">.</span>target<span class="token punctuation">)</span> <span class="token punctuation">{</span>
+    <span class="token comment">// Click on blank. Do something.</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">Contributors</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/en/concepts/event.md" title="Edit this Document" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">Edit this page on GitHub</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a><a href="https://github.com/Ovilia" target="_blank" class="post-contributor has-avatar"><img alt="Ovilia" src="https://echarts.apache.org/en/images/people/羡辙.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>Ovilia</span></a><a href="https://github.com/100pah" target="_blank" class="post-contributor has-avatar"><img alt="100pah" src="https://echarts.apache.org/en/images/people/宿爽.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>100pah</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(e,t,i,g,l,d,n,a,c,I,o,r,C,h,s,b,A,p,m,Z,G,B,u,y,W,v,w,X,Y,V,K,J,H,L,k,R,N,F,S,f,U,z,j,x,T,Q,M,E,D,O,P,_,q,$,ee,te,ie,ge,le,de,ne,ae,ce){return{layout:"default",data:[{html:'<h1 id="event-and-action" tabindex="-1">Event and Action</h1>\n<p>Users can trigger corresponding events by their operation. The developer can handle the callback function by listening to these events, such as jump to a new website, pop-up a dialog box, or drill down the data.</p>\n<p>The name of the event and the DOM event is both lowercase string. Here is an example of binding listening to <code>click</code> event.</p>\n<md-code-block lang="js" code="\'bXlDaGFydC5vbignY2xpY2snLCBmdW5jdGlvbihwYXJhbXMpIHsKICAvLyBQcmludCBuYW1lIGluIGNvbnNvbGUKICBjb25zb2xlLmxvZyhwYXJhbXMubmFtZSk7Cn0pOw\'" line-highlights="\'\'" />\n<p>There are two kinds of event in ECharts, one happened when the user clicks the mouse or hover the elements in charts, the other happened while the user triggered some interactive actions. Such as <a href="https://echarts.apache.org/api.html#events.legendselectchanged">\'legendselectchanged\'</a> triggered while changing the legend selected (please notice that <code>legendselected</code> won\'t be triggered in this situation), <a href="https://echarts.apache.org/api.html#events.legendselectchanged">\'datazoom\'</a> triggered while zooming the data area.</p>\n<h2 id="handling-the-mouse-events" tabindex="-1">Handling the Mouse Events</h2>\n<p>ECharts support general mouse events: <code>\'click\'</code>, <code>\'dblclick\'</code>, <code>\'mousedown\'</code>, <code>\'mousemove\'</code>, <code>\'mouseup\'</code>, <code>\'mouseover\'</code>, <code>\'mouseout\'</code>, <code>\'globalout\'</code>, <code>\'contextmenu\'</code>. This is an example of opening the search result page after clicking the bar chart.</p>\n<md-code-block lang="js" code="\'Ly8gSW5pdCB0aGUgRUNoYXJ0cyBiYXNlIG9uIERPTQp2YXIgbXlDaGFydCA9IGVjaGFydHMuaW5pdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFpbicpKTsKCi8vIENvbmZpZwp2YXIgb3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBkYXRhOiBbCiAgICAgICdTaGlydCcsCiAgICAgICdXb29sIHN3ZWF0ZXInLAogICAgICAnQ2hpZmZvbiBzaGlydCcsCiAgICAgICdQYW50cycsCiAgICAgICdIaWdoLWhlZWxlZCBzaG9lcycsCiAgICAgICdzb2NrcycKICAgIF0KICB9LAogIHlBeGlzOiB7fSwKICBzZXJpZXM6IFsKICAgIHsKICAgICAgbmFtZTogJ1NhbGVzJywKICAgICAgdHlwZTogJ2JhcicsCiAgICAgIGRhdGE6IFs1LCAyMCwgMzYsIDEwLCAxMCwgMjBdCiAgICB9CiAgXQp9OwovLyBVc2UgdGhlIG9wdGlvbiBhbmQgZGF0YSB0byBkaXNwbGF5IHRoZSBjaGFydApteUNoYXJ0LnNldE9wdGlvbihvcHRpb24pOwovLyBDbGljayBhbmQganVtcCB0byBCYWlkdSBzZWFyY2ggd2Vic2l0ZQpteUNoYXJ0Lm9uKCdjbGljaycsIGZ1bmN0aW9uKHBhcmFtcykgewogIHdpbmRvdy5vcGVuKAogICAgJ2h0dHBzOi8vd3d3Lmdvb2dsZS5jb20vc2VhcmNoP3E9JyArIGVuY29kZVVSSUNvbXBvbmVudChwYXJhbXMubmFtZSkKICApOwp9KTs\'" line-highlights="\'\'" />\n<p>All mouse events included <code>params</code> which contained the data of the object.</p>\n<p>Format:</p>\n<md-code-block lang="js" code="\'dHlwZSBFdmVudFBhcmFtcyA9IHsKICAvLyBUaGUgY29tcG9uZW50IG5hbWUgY2xpY2tlZCwKICAvLyBjb21wb25lbnQgdHlwZSwgY291bGQgYmUgJ3NlcmllcyfjgIEnbWFya0xpbmUn44CBJ21hcmtQb2ludCfjgIEndGltZUxpbmUnLCBldGMuLgogIGNvbXBvbmVudFR5cGU6IHN0cmluZywKICAvLyBzZXJpZXMgdHlwZSwgY291bGQgYmUgJ2xpbmUn44CBJ2JhcifjgIEncGllJywgZXRjLi4gV29ya3Mgd2hlbiBjb21wb25lbnRUeXBlIGlzICdzZXJpZXMnLgogIHNlcmllc1R5cGU6IHN0cmluZywKICAvLyB0aGUgaW5kZXggaW4gb3B0aW9uLnNlcmllcy4gV29ya3Mgd2hlbiBjb21wb25lbnRUeXBlIGlzICdzZXJpZXMnLgogIHNlcmllc0luZGV4OiBudW1iZXIsCiAgLy8gc2VyaWVzIG5hbWUsIHdvcmtzIHdoZW4gY29tcG9uZW50VHlwZSBpcyAnc2VyaWVzJy4KICBzZXJpZXNOYW1lOiBzdHJpbmcsCiAgLy8gbmFtZSBvZiBkYXRhIChjYXRlZ29yaWVzKS4KICBuYW1lOiBzdHJpbmcsCiAgLy8gdGhlIGluZGV4IGluICdkYXRhJyBhcnJheS4KICBkYXRhSW5kZXg6IG51bWJlciwKICAvLyBpbmNvbWluZyByYXcgZGF0YSBpdGVtCiAgZGF0YTogT2JqZWN0LAogIC8vIGNoYXJ0cyBsaWtlICdzYW5rZXknIGFuZCAnZ3JhcGgnIGluY2x1ZGVkIG5vZGVEYXRhIGFuZCBlZGdlRGF0YSBhcyB0aGUgc2FtZSB0aW1lLgogIC8vIGRhdGFUeXBlIGNhbiBiZSAnbm9kZScgb3IgJ2VkZ2UnLCBpbmRpY2F0ZXMgd2hldGhlciB0aGUgY3VycmVudCBjbGljayBpcyBvbiBub2RlIG9yIGVkZ2UuCiAgLy8gbW9zdCBvZiBjaGFydHMgaGF2ZSBvbmUga2luZCBvZiBkYXRhLCB0aGUgZGF0YVR5cGUgaXMgbWVhbmluZ2xlc3MKICBkYXRhVHlwZTogc3RyaW5nLAogIC8vIGluY29taW5nIGRhdGEgdmFsdWUKICB2YWx1ZTogbnVtYmVyIHwgQXJyYXksCiAgLy8gY29sb3Igb2YgdGhlIHNoYXBlLCB3b3JrcyB3aGVuIGNvbXBvbmVudFR5cGUgaXMgJ3NlcmllcycuCiAgY29sb3I6IHN0cmluZwp9Ow\'" line-highlights="\'\'" />\n<p>Identify where the mouse clicked.</p>\n<md-code-block lang="js" code="\'bXlDaGFydC5vbignY2xpY2snLCBmdW5jdGlvbihwYXJhbXMpIHsKICBpZiAocGFyYW1zLmNvbXBvbmVudFR5cGUgPT09ICdtYXJrUG9pbnQnKSB7CiAgICAvLyBDbGlja2VkIG9uIHRoZSBtYXJrUG9pbnQKICAgIGlmIChwYXJhbXMuc2VyaWVzSW5kZXggPT09IDUpIHsKICAgICAgLy8gY2xpY2tlZCBvbiB0aGUgbWFya1BvaW50IG9mIHRoZSBzZXJpZXMgd2l0aCBpbmRleCA9IDUKICAgIH0KICB9IGVsc2UgaWYgKHBhcmFtcy5jb21wb25lbnRUeXBlID09PSAnc2VyaWVzJykgewogICAgaWYgKHBhcmFtcy5zZXJpZXNUeXBlID09PSAnZ3JhcGgnKSB7CiAgICAgIGlmIChwYXJhbXMuZGF0YVR5cGUgPT09ICdlZGdlJykgewogICAgICAgIC8vIGNsaWNrZWQgYXQgdGhlIGVkZ2Ugb2YgZ3JhcGguCiAgICAgIH0gZWxzZSB7CiAgICAgICAgLy8gY2xpY2tlZCBhdCB0aGUgbm9kZSBvZiBncmFwaC4KICAgICAgfQogICAgfQogIH0KfSk7\'" line-highlights="\'\'" />\n<p>Use <code>query</code> to trigger callback of the specified component:</p>\n<md-code-block lang="js" code="\'Y2hhcnQub24oZXZlbnROYW1lLCBxdWVyeSwgaGFuZGxlcik7\'" line-highlights="\'\'" />\n<p><code>query</code> can be <code>string</code> or <code>Object</code>.</p>\n<p>If it is <code>string</code>, the format can be <code>mainType</code> or <code>mainType.subType</code>, such as:</p>\n<md-code-block lang="js" code="\'Y2hhcnQub24oJ2NsaWNrJywgJ3NlcmllcycsIGZ1bmN0aW9uICgpIHsuLi59KTsKY2hhcnQub24oJ2NsaWNrJywgJ3Nlcmllcy5saW5lJywgZnVuY3Rpb24gKCkgey4uLn0pOwpjaGFydC5vbignY2xpY2snLCAnZGF0YVpvb20nLCBmdW5jdGlvbiAoKSB7Li4ufSk7CmNoYXJ0Lm9uKCdjbGljaycsICd4QXhpcy5jYXRlZ29yeScsIGZ1bmN0aW9uICgpIHsuLi59KTs\'" line-highlights="\'\'" />\n<p>If it is <code>Object</code>, <code>query</code> can include more than one attribute:</p>\n<md-code-block lang="js" code="\'ewogICR7bWFpblR5cGV9SW5kZXg6IG51bWJlciAvLyBjb21wb25lbnQgaW5kZXgKICAke21haW5UeXBlfU5hbWU6IHN0cmluZyAvLyBjb21wb25lbnQgbmFtZQogICR7bWFpblR5cGV9SWQ6IHN0cmluZyAvLyBjb21wb25lbnQgaWQKICBkYXRhSW5kZXg6IG51bWJlciAvLyBkYXRhIGl0ZW0gaW5kZXgKICBuYW1lOiBzdHJpbmcgLy8gZGF0YSBpdGVtIG5hbWUKICBkYXRhVHlwZTogc3RyaW5nIC8vIGRhdGUgaXRlbSB0eXBlLCBzdWNoIGFzICdub2RlJywgJ2VkZ2UnCiAgZWxlbWVudDogc3RyaW5nIC8vIG5hbWUgb2YgZWxlbWVudCBpbiBjdXN0b20gc2VyaWVzLgp9\'" line-highlights="\'\'" />\n<p>Such as:</p>\n<md-code-block lang="js" code="\'Y2hhcnQuc2V0T3B0aW9uKHsKICAvLyAuLi4KICBzZXJpZXM6IFsKICAgIHsKICAgICAgbmFtZTogJ3V1dScKICAgICAgLy8gLi4uCiAgICB9CiAgXQp9KTsKY2hhcnQub24oJ21vdXNlb3ZlcicsIHsgc2VyaWVzTmFtZTogJ3V1dScgfSwgZnVuY3Rpb24oKSB7CiAgLy8gd2hlbiBlbGVtZW50cyBpbiBzZXJpZXMgbmFtZWQgJ3V1dScgdHJpZ2dlcmVkICdtb3VzZW92ZXInCn0pOw\'" line-highlights="\'\'" />\n<p>For example:</p>\n<md-code-block lang="js" code="\'Y2hhcnQuc2V0T3B0aW9uKHsKICAvLyAuLi4KICBzZXJpZXM6IFsKICAgIHsKICAgICAgLy8gLi4uCiAgICB9LAogICAgewogICAgICAvLyAuLi4KICAgICAgZGF0YTogWwogICAgICAgIHsgbmFtZTogJ3h4JywgdmFsdWU6IDEyMSB9LAogICAgICAgIHsgbmFtZTogJ3l5JywgdmFsdWU6IDMzIH0KICAgICAgXQogICAgfQogIF0KfSk7CmNoYXJ0Lm9uKCdtb3VzZW92ZXInLCB7IHNlcmllc0luZGV4OiAxLCBuYW1lOiAneHgnIH0sIGZ1bmN0aW9uKCkgewogIC8vIHdoZW4gZGF0YSBuYW1lZCAneHgnIGluIHNlcmllcyBpbmRleCAxIHRyaWdnZXJlZCAnbW91c2VvdmVyJy4KfSk7\'" line-highlights="\'\'" />\n<p>For example:</p>\n<md-code-block lang="js" code="\'Y2hhcnQuc2V0T3B0aW9uKHsKICAvLyAuLi4KICBzZXJpZXM6IFsKICAgIHsKICAgICAgdHlwZTogJ2dyYXBoJywKICAgICAgbm9kZXM6IFsKICAgICAgICB7IG5hbWU6ICdhJywgdmFsdWU6IDEwIH0sCiAgICAgICAgeyBuYW1lOiAnYicsIHZhbHVlOiAyMCB9CiAgICAgIF0sCiAgICAgIGVkZ2VzOiBbeyBzb3VyY2U6IDAsIHRhcmdldDogMSB9XQogICAgfQogIF0KfSk7CmNoYXJ0Lm9uKCdjbGljaycsIHsgZGF0YVR5cGU6ICdub2RlJyB9LCBmdW5jdGlvbigpIHsKICAvLyBjYWxsIHRoaXMgbWV0aG9kIHdoaWxlIHRoZSBub2RlIG9mIGdyYXBoIHdhcyBjbGlja2VkLgp9KTsKY2hhcnQub24oJ2NsaWNrJywgeyBkYXRhVHlwZTogJ2VkZ2UnIH0sIGZ1bmN0aW9uKCkgewogIC8vIGNhbGwgdGhpcyBtZXRob2Qgd2hpbGUgdGhlIGVkZ2Ugb2YgZ3JhcGggd2FzIGNsaWNrZWQuCn0pOw\'" line-highlights="\'\'" />\n<p>For example:</p>\n<md-code-block lang="js" code="\'Y2hhcnQuc2V0T3B0aW9uKHsKICAvLyAuLi4KICBzZXJpZXM6IHsKICAgIC8vIC4uLgogICAgdHlwZTogJ2N1c3RvbScsCiAgICByZW5kZXJJdGVtOiBmdW5jdGlvbihwYXJhbXMsIGFwaSkgewogICAgICByZXR1cm4gewogICAgICAgIHR5cGU6ICdncm91cCcsCiAgICAgICAgY2hpbGRyZW46IFsKICAgICAgICAgIHsKICAgICAgICAgICAgdHlwZTogJ2NpcmNsZScsCiAgICAgICAgICAgIG5hbWU6ICdteV9lbCcKICAgICAgICAgICAgLy8gLi4uCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAvLyAuLi4KICAgICAgICAgIH0KICAgICAgICBdCiAgICAgIH07CiAgICB9LAogICAgZGF0YTogW1sxMiwgMzNdXQogIH0KfSk7CmNoYXJ0Lm9uKCdtb3VzZXVwJywgeyBlbGVtZW50OiAnbXlfZWwnIH0sIGZ1bmN0aW9uKCkgewogIC8vIHdoZW4gZGF0YSBuYW1lZCAnbXlfZWwnIHRyaWdnZXJlZCAnbW91c2V1cCcuCn0pOw\'" line-highlights="\'\'" />\n<p>You can display a popup, update the charts using the query result from your database by the data name or series name in the callback function. Here is an example:</p>\n<md-code-block lang="js" code="\'bXlDaGFydC5vbignY2xpY2snLCBmdW5jdGlvbihwYXJtYXMpIHsKICAkLmdldCgnZGV0YWlsP3E9JyArIHBhcmFtcy5uYW1lLCBmdW5jdGlvbihkZXRhaWwpIHsKICAgIG15Q2hhcnQuc2V0T3B0aW9uKHsKICAgICAgc2VyaWVzOiBbCiAgICAgICAgewogICAgICAgICAgbmFtZTogJ3BpZScsCiAgICAgICAgICAvLyB1c2luZyBwaWUgY2hhcnQgdG8gc2hvdyB0aGUgZGF0YSBkaXN0cmlidXRpb24gaW4gb25lIGNvbHVtbi4KICAgICAgICAgIGRhdGE6IFtkZXRhaWwuZGF0YV0KICAgICAgICB9CiAgICAgIF0KICAgIH0pOwogIH0pOwp9KTs\'" line-highlights="\'\'" />\n<h2 id="event-of-component-interaction" tabindex="-1">Event of Component Interaction</h2>\n<p>All Component Interaction in ECharts will trigger a corresponding event. Normal events and parameters are listed in the <a href="https://echarts.apache.org//api.html#events">events</a> document.</p>\n<p>Here is an example of listening to legend event:</p>\n<md-code-block lang="js" code="\'Ly8gU2hvdy9oaWRlIHRoZSBsZWdlbmQgb25seSB0cmlnZ2VyIGxlZ2VuZHNlbGVjdGNoYW5nZWQgZXZlbnQKbXlDaGFydC5vbignbGVnZW5kc2VsZWN0Y2hhbmdlZCcsIGZ1bmN0aW9uKHBhcmFtcykgewogIC8vIFN0YXRlIGlmIGxlZ2VuZCBpcyBzZWxlY3RlZC4KICB2YXIgaXNTZWxlY3RlZCA9IHBhcmFtcy5zZWxlY3RlZFtwYXJhbXMubmFtZV07CiAgLy8gcHJpbnQgaW4gdGhlIGNvbnNvbGUuCiAgY29uc29sZS5sb2coCiAgICAoaXNTZWxlY3RlZCA_ICdTZWxlY3RlZCcgOiAnTm90IFNlbGVjdGVkJykgKyAnbGVnZW5kJyArIHBhcmFtcy5uYW1lCiAgKTsKICAvLyBwcmludCBmb3IgYWxsIGxlZ2VuZHMuCiAgY29uc29sZS5sb2cocGFyYW1zLnNlbGVjdGVkKTsKfSk7\'" line-highlights="\'\'" />\n<h2 id="writing-code-to-trigger-component-action-manually" tabindex="-1">Writing Code to Trigger Component Action Manually</h2>\n<p>You can trigger events such as <code>\'legendselectchanged\'</code> not only by the user but also with code manually. It can be used to display the tooltip, select the legend.</p>\n<p>In ECharts <code>myChart.dispatchAction({ type: \'\' })</code> is used to trigger the behavior. This manages all actions and can record the behaviors conveniently.</p>\n<p>Commonly used behavior and corresponding parameters are listed in <a href="https://echarts.apache.org//api.html#action">action</a>.</p>\n<p>The following example shows how to highlight each sector one by one in the pie chart using <code>dispatchAction</code>.</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHRvb2x0aXA6IHsKICAgIHRyaWdnZXI6ICdpdGVtJywKICAgIGZvcm1hdHRlcjogJ3thfSA8YnIvPntifSA6IHtjfSAoe2R9JSknCiAgfSwKICBsZWdlbmQ6IHsKICAgIG9yaWVudDogJ3ZlcnRpY2FsJywKICAgIGxlZnQ6ICdsZWZ0JywKICAgIGRhdGE6IFsKICAgICAgJ0RpcmVjdCBBY2Nlc3MnLAogICAgICAnRW1haWwgTWFya2V0aW5nJywKICAgICAgJ0FmZmlsaWF0ZSBBZHMnLAogICAgICAnVmlkZW8gQWRzJywKICAgICAgJ1NlYXJjaCBFbmdpbmVzJwogICAgXQogIH0sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIG5hbWU6ICdBY2Nlc3MgU291cmNlJywKICAgICAgdHlwZTogJ3BpZScsCiAgICAgIHJhZGl1czogJzU1JScsCiAgICAgIGNlbnRlcjogWyc1MCUnLCAnNjAlJ10sCiAgICAgIGRhdGE6IFsKICAgICAgICB7IHZhbHVlOiAzMzUsIG5hbWU6ICdEaXJlY3QgQWNjZXNzJyB9LAogICAgICAgIHsgdmFsdWU6IDMxMCwgbmFtZTogJ0VtYWlsIE1hcmtldGluZycgfSwKICAgICAgICB7IHZhbHVlOiAyMzQsIG5hbWU6ICdBZmZpbGlhdGUgQWRzJyB9LAogICAgICAgIHsgdmFsdWU6IDEzNSwgbmFtZTogJ1ZpZGVvIEFkcycgfSwKICAgICAgICB7IHZhbHVlOiAxNTQ4LCBuYW1lOiAnU2VhcmNoIEVuZ2luZXMnIH0KICAgICAgXSwKICAgICAgZW1waGFzaXM6IHsKICAgICAgICBpdGVtU3R5bGU6IHsKICAgICAgICAgIHNoYWRvd0JsdXI6IDEwLAogICAgICAgICAgc2hhZG93T2Zmc2V0WDogMCwKICAgICAgICAgIHNoYWRvd0NvbG9yOiAncmdiYSgwLCAwLCAwLCAwLjUpJwogICAgICAgIH0KICAgICAgfQogICAgfQogIF0KfTsKCmxldCBjdXJyZW50SW5kZXggPSAtMTsKCnNldEludGVydmFsKGZ1bmN0aW9uKCkgewogIHZhciBkYXRhTGVuID0gb3B0aW9uLnNlcmllc1swXS5kYXRhLmxlbmd0aDsKICBteUNoYXJ0LmRpc3BhdGNoQWN0aW9uKHsKICAgIHR5cGU6ICdkb3ducGxheScsCiAgICBzZXJpZXNJbmRleDogMCwKICAgIGRhdGFJbmRleDogY3VycmVudEluZGV4CiAgfSk7CiAgY3VycmVudEluZGV4ID0gKGN1cnJlbnRJbmRleCArIDEpICUgZGF0YUxlbjsKICBteUNoYXJ0LmRpc3BhdGNoQWN0aW9uKHsKICAgIHR5cGU6ICdoaWdobGlnaHQnLAogICAgc2VyaWVzSW5kZXg6IDAsCiAgICBkYXRhSW5kZXg6IGN1cnJlbnRJbmRleAogIH0pOwogIG15Q2hhcnQuZGlzcGF0Y2hBY3Rpb24oewogICAgdHlwZTogJ3Nob3dUaXAnLAogICAgc2VyaWVzSW5kZXg6IDAsCiAgICBkYXRhSW5kZXg6IGN1cnJlbnRJbmRleAogIH0pOwp9LCAxMDAwKTs\'" v-bind="{}" />\n<h2 id="listen-to-events-on-the-blank-area" tabindex="-1">Listen to Events on the Blank Area</h2>\n<p>Sometimes developers need to listen to the events that are triggered from the blank of the canvas. For example, need to reset the chart when users click on the blank area.</p>\n<p>Before we talk about this feature, we need to clarify two kinds of events: zrender events and echarts events.</p>\n<md-code-block lang="js" code="\'bXlDaGFydC5nZXRacigpLm9uKCdjbGljaycsIGZ1bmN0aW9uKGV2ZW50KSB7CiAgLy8gVGhpcyBsaXN0ZW5lciBpcyBsaXN0ZW5pbmcgdG8gYSBgenJlbmRlciBldmVudGAuCn0pOwpteUNoYXJ0Lm9uKCdjbGljaycsIGZ1bmN0aW9uKGV2ZW50KSB7CiAgLy8gVGhpcyBsaXN0ZW5lciBpcyBsaXN0ZW5pbmcgdG8gYSBgZWNoYXJ0cyBldmVudGAuCn0pOw\'" line-highlights="\'\'" />\n<p>zrender events are different from echarts events. The former one are triggered when mouse/pointer is at everywhere, while the latter one can only be triggered when mouse/pointer is at the graphic elements. In fact, echarts events are implemented based on zrender events, that is, when a zrender events is triggered at a graphic element, echarts will trigger a echarts event.</p>\n<p>Having zrender events, we can implement listen to events from the blank as follows:</p>\n<md-code-block lang="js" code="\'bXlDaGFydC5nZXRacigpLm9uKCdjbGljaycsIGZ1bmN0aW9uKGV2ZW50KSB7CiAgLy8gTm8gInRhcmdldCIgbWVhbnMgdGhhdCBtb3VzZS9wb2ludGVyIGlzIG5vdCBvbgogIC8vIGFueSBvZiB0aGUgZ3JhcGhpYyBlbGVtZW50cywgd2hpY2ggaXMgImJsYW5rIi4KICBpZiAoIWV2ZW50LnRhcmdldCkgewogICAgLy8gQ2xpY2sgb24gYmxhbmsuIERvIHNvbWV0aGluZy4KICB9Cn0pOw\'" line-highlights="\'\'" />\n',postPath:"en/concepts/event",title:"Event and Action - Concepts"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:g},{title:"入门篇",dir:l,children:[{title:"获取 ECharts",dir:d},{title:"在项目中引入 ECharts",dir:n},{title:"资源列表",dir:a,draft:e},{title:"寻求帮助",dir:c},{title:"版本特性",dir:I,children:[{title:"ECharts 6 特性介绍",dir:o},{title:"v5 升级 v6 指南",dir:r},{title:"5.0",dir:C},{title:"v4 升级 v5 指南",dir:h},{title:5.2,dir:s},{title:5.3,dir:b},{title:5.4,dir:A},{title:5.5,dir:p},{title:5.6,dir:m}]}]},{title:"概念篇",dir:Z,children:[{title:"图表容器及大小",dir:G},{title:"配置项",dir:B,draft:e},{title:"系列",dir:u,draft:e},{title:"样式",dir:y},{title:"数据集",dir:W},{title:"数据转换",dir:v},{title:"坐标系",dir:w,draft:e},{title:"坐标轴",dir:X},{title:"视觉映射",dir:i},{title:"图例",dir:Y},{title:"事件与行为",dir:V}]},{title:"应用篇",dir:K,children:[{title:"常用图表类型",dir:J,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:H},{title:"堆叠柱状图",dir:L},{title:"动态排序柱状图",dir:k},{title:"极坐标系柱状图",dir:R,draft:e},{title:"阶梯瀑布图",dir:N},{title:"视觉映射的柱状图",dir:i,draft:e}]},{title:"折线图",dir:F,children:[{title:"基础折线图",dir:S},{title:"堆叠折线图",dir:f},{title:"区域面积图",dir:U},{title:"平滑曲线图",dir:z},{title:"阶梯线图",dir:j}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:x},{title:"圆环图",dir:T},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:Q,children:[{title:"基础散点图",dir:M}]}]},{title:"常用组件",dir:E,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:D}]}]},{title:"移动端优化",dir:t,draft:e},{title:"跨平台方案",dir:O,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:P},{title:"数据下钻",dir:_,draft:e}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:q}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:ee}]},{title:"交互",dir:te,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:ie,draft:e},{title:"智能指针吸附",dir:ge}]}]},{title:"最佳实践",dir:le,children:[{title:"移动端优化",dir:t,draft:e},{title:de,dir:ne},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:ae}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:ce}]}],en:[{title:"Get Started",dir:g},{title:"Basics",dir:l,children:[{title:"Download ECharts",dir:d},{title:"Import ECharts",dir:n},{title:"Resources",dir:a,draft:e},{title:"Get Help",dir:c},{title:"What's New",dir:I,children:[{title:"ECharts 6 Features",dir:o},{title:"Migration from v5 to v6",dir:r},{title:"5.0",dir:C},{title:"Migration from v4 to v5",dir:h},{title:5.2,dir:s},{title:5.3,dir:b},{title:5.4,dir:A},{title:5.5,dir:p},{title:5.6,dir:m}]}]},{title:"Concepts",dir:Z,children:[{title:"Chart Container",dir:G},{title:"Chart Option",dir:B,draft:e},{title:"Series",dir:u,draft:e},{title:"Style",dir:y},{title:"Dataset",dir:W},{title:"Data Transform",dir:v},{title:"Coordinate",dir:w,draft:e},{title:"Axis",dir:X},{title:"Visual Mapping",dir:i},{title:"Legend",dir:Y},{title:"Event and Action",dir:V}]},{title:"How To Guides",dir:K,children:[{title:"Common Charts",dir:J,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:H},{title:"Stacked Bar",dir:L},{title:"Bar Racing",dir:k},{title:"Bar Polar",dir:R,draft:e},{title:"Waterfall",dir:N}]},{title:"Line",dir:F,children:[{title:"Basic Line",dir:S},{title:"Stacked Line",dir:f},{title:"Area Chart",dir:U},{title:"Smoothed Line",dir:z},{title:"Step Line",dir:j}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:x},{title:"Ring Style",dir:T},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:Q,children:[{title:"Basic Scatter",dir:M}]}]},{title:"Common Components",dir:E,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:D}]}]},{title:"Mobile",dir:t,draft:e},{title:"Cross Platform",dir:O,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:P},{title:"Drilldown",dir:_,draft:e}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:q}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:ee}]},{title:"Interaction",dir:te,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:ie,draft:e},{title:"Intelligent Pointer Snapping",dir:ge}]}]},{title:"Best Practices",dir:le,children:[{title:"Mobile Optimization",dir:t,draft:e},{title:de,dir:ne},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:ae}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:ce}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:e,routePath:"/en/concepts/event",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/en/concepts/legend/index.html b/docs/en/concepts/legend/index.html
new file mode 100644
index 0000000..2d480fd
--- /dev/null
+++ b/docs/en/concepts/legend/index.html
@@ -0,0 +1,124 @@
+<!doctype html>
+<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Legend - Concepts - Handbook - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="en"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/en/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/en/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/en/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/en/index.html" class="navbar-brand"><img src="https://echarts.apache.org/en/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/en/index.html">Home</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Docs<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/feature.html">Features</a></li><li><a href="https://echarts.apache.org/handbook/en/get-started/">Handbook</a></li><li><a href="https://echarts.apache.org/en/api.html">API</a></li><li><a href="https://echarts.apache.org/en/option.html">Chart Configuration</a></li><li><a href="https://echarts.apache.org/en/changelog.html">Changelog</a></li><li><a href="https://echarts.apache.org/en/faq.html">FAQ</a></li><li><a href="https://echarts.apache.org/handbook/en/basics/release-note/v6-upgrade-guide">V6 Upgrade Guide</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Download<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/download.html">Download</a></li><li><a href="https://echarts.apache.org/en/download-theme.html">Download Themes</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">Download Custom Series<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/download-extension.html">Download Extensions</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/en/index.html">Examples</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Resources<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/spreadsheet.html">Spread Sheet Tool</a></li><li><a href="https://echarts.apache.org/en/theme-builder.html">Theme Builder</a></li><li><a href="https://echarts.apache.org/en/cheat-sheet.html">Cheat Sheet</a></li><li><a href="https://echarts.apache.org/en/resources.html">More Resources</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/events.html">Events</a></li><li><a href="https://echarts.apache.org/en/committers.html">Committers</a></li><li><a href="https://echarts.apache.org/en/maillist.html">Mailing List</a></li><li><a href="https://echarts.apache.org/en/contributing.html">How to Contribute</a></li><li><a href="https://echarts.apache.org/en/dependencies.html">Dependencies</a></li><li><a href="https://echarts.apache.org/en/coding-standard.html">Code Standard</a></li><li><a href="https://github.com/apache/echarts" target="_blank">Source Code (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/security.html">Security</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">License<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">Events<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("zh")'>中文</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/en/get-started" class="nav-link"><span class="title">Get Started</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Basics</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/basics/download" class="nav-link"><span class="title">Download ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/import" class="nav-link"><span class="title">Import ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/basics/help" class="nav-link"><span class="title">Get Help</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">What's New</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 Features</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">Migration from v5 to v6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">Migration from v4 to v5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Concepts</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/concepts/chart-size" class="nav-link"><span class="title">Chart Container</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/style" class="nav-link"><span class="title">Style</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/dataset" class="nav-link"><span class="title">Dataset</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/data-transform" class="nav-link"><span class="title">Data Transform</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/axis" class="nav-link"><span class="title">Axis</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/visual-map" class="nav-link"><span class="title">Visual Mapping</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/legend" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">Legend</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/event" class="nav-link"><span class="title">Event and Action</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">How To Guides</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">Common Charts</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Bar</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">Basic Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">Stacked Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">Bar Racing</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">Waterfall</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Line</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">Basic Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">Stacked Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/area-line" class="nav-link"><span class="title">Area Chart</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">Smoothed Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/step-line" class="nav-link"><span class="title">Step Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Pie</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">Basic Pie</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">Ring Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/rose" class="nav-link"><span class="title">Rose Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Scatter</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">Basic Scatter</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Common Components</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Geo</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG Base Map</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">Cross Platform</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/cross-platform/server" class="nav-link"><span class="title">Server Side Rendering</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Data</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/data/dynamic-data" class="nav-link"><span class="title">Dynamic Data</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Label</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/label/rich-text" class="nav-link"><span class="title">Rich Text</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Animation</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/animation/transition" class="nav-link"><span class="title">Data Transition</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Interaction</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/drag" class="nav-link"><span class="title">Drag</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">Intelligent Pointer Snapping</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Best Practices</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/en/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/aria" class="nav-link"><span class="title">Aria</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/security" class="nav-link"><span class="title">Security Guidelines</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Edit Handbook</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/meta/edit-guide" class="nav-link"><span class="title">Edit Guide</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="legend" tabindex="-1">Legend</h1> <p>Legends are used to annotate the content in the chart using different colors, shapes and texts to indicate different categories. By clicking the legends, the user can show or hide the corresponding categories. Legend is one of the key to understand the chart.</p> <h2 id="layout" tabindex="-1">Layout</h2> <p>Legend is always placed at the upper right corner of the chart. All legends in the same page need to be consistent, align horizontally or vertically by considering the layout of the overall chart space. When the chart has little vertical space or the content area is crowded, it is also a good choice to put the legend on the bottom of the chart. Here are some layouts of legend:</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  legend: {
+    // Try 'horizontal'
+    orient: 'vertical',
+    right: 10,
+    top: 'center'
+  },
+  dataset: {
+    source: [
+      ['product', '2015', '2016', '2017'],
+      ['Matcha Latte', 43.3, 85.8, 93.7],
+      ['Milk Tea', 83.1, 73.4, 55.1],
+      ['Cheese Cocoa', 86.4, 65.2, 82.5],
+      ['Walnut Brownie', 72.4, 53.9, 39.1]
+    ]
+  },
+  xAxis: { type: 'category' },
+  yAxis: {},
+  series: [{ type: 'bar' }, { type: 'bar' }, { type: 'bar' }]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">legend</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token comment">// Try 'horizontal'</span>
+    <span class="token literal-property property">orient</span><span class="token operator">:</span> <span class="token string">'vertical'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">right</span><span class="token operator">:</span> <span class="token number">10</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">top</span><span class="token operator">:</span> <span class="token string">'center'</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">dataset</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token punctuation">[</span><span class="token string">'product'</span><span class="token punctuation">,</span> <span class="token string">'2015'</span><span class="token punctuation">,</span> <span class="token string">'2016'</span><span class="token punctuation">,</span> <span class="token string">'2017'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token string">'Matcha Latte'</span><span class="token punctuation">,</span> <span class="token number">43.3</span><span class="token punctuation">,</span> <span class="token number">85.8</span><span class="token punctuation">,</span> <span class="token number">93.7</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token string">'Milk Tea'</span><span class="token punctuation">,</span> <span class="token number">83.1</span><span class="token punctuation">,</span> <span class="token number">73.4</span><span class="token punctuation">,</span> <span class="token number">55.1</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token string">'Cheese Cocoa'</span><span class="token punctuation">,</span> <span class="token number">86.4</span><span class="token punctuation">,</span> <span class="token number">65.2</span><span class="token punctuation">,</span> <span class="token number">82.5</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token string">'Walnut Brownie'</span><span class="token punctuation">,</span> <span class="token number">72.4</span><span class="token punctuation">,</span> <span class="token number">53.9</span><span class="token punctuation">,</span> <span class="token number">39.1</span><span class="token punctuation">]</span>
+    <span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'category'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span> <span class="token punctuation">}</span><span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>Use scrollable control if there are many legends.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">legend</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'scroll'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">orient</span><span class="token operator">:</span> <span class="token string">'vertical'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">right</span><span class="token operator">:</span> <span class="token number">10</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">top</span><span class="token operator">:</span> <span class="token number">20</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">bottom</span><span class="token operator">:</span> <span class="token number">20</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'Legend A'</span><span class="token punctuation">,</span> <span class="token string">'Legend B'</span><span class="token punctuation">,</span> <span class="token string">'Legend C'</span> <span class="token comment">/* ... */</span><span class="token punctuation">,</span> <span class="token punctuation">,</span> <span class="token string">'Legend x'</span><span class="token punctuation">]</span>
+    <span class="token comment">// ...</span>
+  <span class="token punctuation">}</span>
+  <span class="token comment">// ...</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="style" tabindex="-1">Style</h2> <p>For dark color background, use a light color for the background layer and text while changing the background to translucent.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">legend</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'Legend A'</span><span class="token punctuation">,</span> <span class="token string">'Legend B'</span><span class="token punctuation">,</span> <span class="token string">'Legend C'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">backgroundColor</span><span class="token operator">:</span> <span class="token string">'#ccc'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">textStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'#ccc'</span>
+      <span class="token comment">// ...</span>
+    <span class="token punctuation">}</span>
+    <span class="token comment">// ...</span>
+  <span class="token punctuation">}</span>
+  <span class="token comment">// ...</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>The color of legend has many ways to design. For different charts, the legend style can be different.</p> <img max-width="830" width="80%" height="80%" src="images/design/legend/charts_sign_img04.png"> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">legend</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'Legend A'</span><span class="token punctuation">,</span> <span class="token string">'Legend B'</span><span class="token punctuation">,</span> <span class="token string">'Legend C'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">icon</span><span class="token operator">:</span> <span class="token string">'rect'</span>
+    <span class="token comment">// ...</span>
+  <span class="token punctuation">}</span>
+  <span class="token comment">// ...</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="interactive" tabindex="-1">Interactive</h2> <p>Depend on the environmental demand, the legend can support interactive operation. Click the legend to show or hide corresponding categories:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">legend</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'Legend A'</span><span class="token punctuation">,</span> <span class="token string">'Legend B'</span><span class="token punctuation">,</span> <span class="token string">'Legend C'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">selected</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token string-property property">'Legend A'</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+      <span class="token string-property property">'Legend B'</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+      <span class="token string-property property">'Legend C'</span><span class="token operator">:</span> <span class="token boolean">false</span>
+    <span class="token punctuation">}</span>
+    <span class="token comment">// ...</span>
+  <span class="token punctuation">}</span>
+  <span class="token comment">// ...</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="tips" tabindex="-1">Tips</h2> <p>The legend should be used according to the situation. Some dual-axis charts include multiple chart types. Different kinds of legend stypes should be distinguished.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">legend</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token punctuation">{</span>
+        <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Legend A'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">icon</span><span class="token operator">:</span> <span class="token string">'rect'</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token punctuation">{</span>
+        <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Legend B'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">icon</span><span class="token operator">:</span> <span class="token string">'circle'</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token punctuation">{</span>
+        <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Legend C'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">icon</span><span class="token operator">:</span> <span class="token string">'pin'</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">]</span>
+    <span class="token comment">//  ...</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Legend A'</span>
+      <span class="token comment">//  ...</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Legend B'</span>
+      <span class="token comment">//  ...</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Legend C'</span>
+      <span class="token comment">//  ...</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+  <span class="token comment">//  ...</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>While there is only one kind of data in the chart, use the chart title rather than the legend to explain it.</p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">Contributors</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/en/concepts/legend.md" title="Edit this Document" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">Edit this page on GitHub</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,i,e,d,r,l,a,g,n,o,s,c,h,C,I,A,p,u,b,m,w,y,f,Z,L,v,B,W,G,V,J,M,Q,S,D,x,k,H,T,K,N,j,E,Y,F,O,P,X,z,R,U,_,q,$,tt,it,et,dt,rt,lt,at,gt,nt){return{layout:"default",data:[{html:'<h1 id="legend" tabindex="-1">Legend</h1>\n<p>Legends are used to annotate the content in the chart using different colors, shapes and texts to indicate different categories. By clicking the legends, the user can show or hide the corresponding categories. Legend is one of the key to understand the chart.</p>\n<h2 id="layout" tabindex="-1">Layout</h2>\n<p>Legend is always placed at the upper right corner of the chart. All legends in the same page need to be consistent, align horizontally or vertically by considering the layout of the overall chart space. When the chart has little vertical space or the content area is crowded, it is also a good choice to put the legend on the bottom of the chart. Here are some layouts of legend:</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIGxlZ2VuZDogewogICAgLy8gVHJ5ICdob3Jpem9udGFsJwogICAgb3JpZW50OiAndmVydGljYWwnLAogICAgcmlnaHQ6IDEwLAogICAgdG9wOiAnY2VudGVyJwogIH0sCiAgZGF0YXNldDogewogICAgc291cmNlOiBbCiAgICAgIFsncHJvZHVjdCcsICcyMDE1JywgJzIwMTYnLCAnMjAxNyddLAogICAgICBbJ01hdGNoYSBMYXR0ZScsIDQzLjMsIDg1LjgsIDkzLjddLAogICAgICBbJ01pbGsgVGVhJywgODMuMSwgNzMuNCwgNTUuMV0sCiAgICAgIFsnQ2hlZXNlIENvY29hJywgODYuNCwgNjUuMiwgODIuNV0sCiAgICAgIFsnV2FsbnV0IEJyb3duaWUnLCA3Mi40LCA1My45LCAzOS4xXQogICAgXQogIH0sCiAgeEF4aXM6IHsgdHlwZTogJ2NhdGVnb3J5JyB9LAogIHlBeGlzOiB7fSwKICBzZXJpZXM6IFt7IHR5cGU6ICdiYXInIH0sIHsgdHlwZTogJ2JhcicgfSwgeyB0eXBlOiAnYmFyJyB9XQp9Ow\'" v-bind="{}" />\n<p>Use scrollable control if there are many legends.</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIGxlZ2VuZDogewogICAgdHlwZTogJ3Njcm9sbCcsCiAgICBvcmllbnQ6ICd2ZXJ0aWNhbCcsCiAgICByaWdodDogMTAsCiAgICB0b3A6IDIwLAogICAgYm90dG9tOiAyMCwKICAgIGRhdGE6IFsnTGVnZW5kIEEnLCAnTGVnZW5kIEInLCAnTGVnZW5kIEMnIC8qIC4uLiAqLywgLCAnTGVnZW5kIHgnXQogICAgLy8gLi4uCiAgfQogIC8vIC4uLgp9Ow\'" line-highlights="\'\'" />\n<h2 id="style" tabindex="-1">Style</h2>\n<p>For dark color background, use a light color for the background layer and text while changing the background to translucent.</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIGxlZ2VuZDogewogICAgZGF0YTogWydMZWdlbmQgQScsICdMZWdlbmQgQicsICdMZWdlbmQgQyddLAogICAgYmFja2dyb3VuZENvbG9yOiAnI2NjYycsCiAgICB0ZXh0U3R5bGU6IHsKICAgICAgY29sb3I6ICcjY2NjJwogICAgICAvLyAuLi4KICAgIH0KICAgIC8vIC4uLgogIH0KICAvLyAuLi4KfTs\'" line-highlights="\'\'" />\n<p>The color of legend has many ways to design. For different charts, the legend style can be different.</p>\n<img max-width="830" width="80%" height="80%" src="images/design/legend/charts_sign_img04.png" />\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIGxlZ2VuZDogewogICAgZGF0YTogWydMZWdlbmQgQScsICdMZWdlbmQgQicsICdMZWdlbmQgQyddLAogICAgaWNvbjogJ3JlY3QnCiAgICAvLyAuLi4KICB9CiAgLy8gLi4uCn07\'" line-highlights="\'\'" />\n<h2 id="interactive" tabindex="-1">Interactive</h2>\n<p>Depend on the environmental demand, the legend can support interactive operation. Click the legend to show or hide corresponding categories:</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIGxlZ2VuZDogewogICAgZGF0YTogWydMZWdlbmQgQScsICdMZWdlbmQgQicsICdMZWdlbmQgQyddLAogICAgc2VsZWN0ZWQ6IHsKICAgICAgJ0xlZ2VuZCBBJzogdHJ1ZSwKICAgICAgJ0xlZ2VuZCBCJzogdHJ1ZSwKICAgICAgJ0xlZ2VuZCBDJzogZmFsc2UKICAgIH0KICAgIC8vIC4uLgogIH0KICAvLyAuLi4KfTs\'" line-highlights="\'\'" />\n<h2 id="tips" tabindex="-1">Tips</h2>\n<p>The legend should be used according to the situation. Some dual-axis charts include multiple chart types. Different kinds of legend stypes should be distinguished.</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIGxlZ2VuZDogewogICAgZGF0YTogWwogICAgICB7CiAgICAgICAgbmFtZTogJ0xlZ2VuZCBBJywKICAgICAgICBpY29uOiAncmVjdCcKICAgICAgfSwKICAgICAgewogICAgICAgIG5hbWU6ICdMZWdlbmQgQicsCiAgICAgICAgaWNvbjogJ2NpcmNsZScKICAgICAgfSwKICAgICAgewogICAgICAgIG5hbWU6ICdMZWdlbmQgQycsCiAgICAgICAgaWNvbjogJ3BpbicKICAgICAgfQogICAgXQogICAgLy8gIC4uLgogIH0sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIG5hbWU6ICdMZWdlbmQgQScKICAgICAgLy8gIC4uLgogICAgfSwKICAgIHsKICAgICAgbmFtZTogJ0xlZ2VuZCBCJwogICAgICAvLyAgLi4uCiAgICB9LAogICAgewogICAgICBuYW1lOiAnTGVnZW5kIEMnCiAgICAgIC8vICAuLi4KICAgIH0KICBdCiAgLy8gIC4uLgp9Ow\'" line-highlights="\'\'" />\n<p>While there is only one kind of data in the chart, use the chart title rather than the legend to explain it.</p>\n',postPath:"en/concepts/legend",title:"Legend - Concepts"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:d},{title:"入门篇",dir:r,children:[{title:"获取 ECharts",dir:l},{title:"在项目中引入 ECharts",dir:a},{title:"资源列表",dir:g,draft:t},{title:"寻求帮助",dir:n},{title:"版本特性",dir:o,children:[{title:"ECharts 6 特性介绍",dir:s},{title:"v5 升级 v6 指南",dir:c},{title:"5.0",dir:h},{title:"v4 升级 v5 指南",dir:C},{title:5.2,dir:I},{title:5.3,dir:A},{title:5.4,dir:p},{title:5.5,dir:u},{title:5.6,dir:b}]}]},{title:"概念篇",dir:m,children:[{title:"图表容器及大小",dir:w},{title:"配置项",dir:y,draft:t},{title:"系列",dir:f,draft:t},{title:"样式",dir:Z},{title:"数据集",dir:L},{title:"数据转换",dir:v},{title:"坐标系",dir:B,draft:t},{title:"坐标轴",dir:W},{title:"视觉映射",dir:e},{title:"图例",dir:G},{title:"事件与行为",dir:V}]},{title:"应用篇",dir:J,children:[{title:"常用图表类型",dir:M,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:Q},{title:"堆叠柱状图",dir:S},{title:"动态排序柱状图",dir:D},{title:"极坐标系柱状图",dir:x,draft:t},{title:"阶梯瀑布图",dir:k},{title:"视觉映射的柱状图",dir:e,draft:t}]},{title:"折线图",dir:H,children:[{title:"基础折线图",dir:T},{title:"堆叠折线图",dir:K},{title:"区域面积图",dir:N},{title:"平滑曲线图",dir:j},{title:"阶梯线图",dir:E}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:Y},{title:"圆环图",dir:F},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:O,children:[{title:"基础散点图",dir:P}]}]},{title:"常用组件",dir:X,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:z}]}]},{title:"移动端优化",dir:i,draft:t},{title:"跨平台方案",dir:R,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:U},{title:"数据下钻",dir:_,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:q}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:it,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:et,draft:t},{title:"智能指针吸附",dir:dt}]}]},{title:"最佳实践",dir:rt,children:[{title:"移动端优化",dir:i,draft:t},{title:lt,dir:at},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:gt}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:nt}]}],en:[{title:"Get Started",dir:d},{title:"Basics",dir:r,children:[{title:"Download ECharts",dir:l},{title:"Import ECharts",dir:a},{title:"Resources",dir:g,draft:t},{title:"Get Help",dir:n},{title:"What's New",dir:o,children:[{title:"ECharts 6 Features",dir:s},{title:"Migration from v5 to v6",dir:c},{title:"5.0",dir:h},{title:"Migration from v4 to v5",dir:C},{title:5.2,dir:I},{title:5.3,dir:A},{title:5.4,dir:p},{title:5.5,dir:u},{title:5.6,dir:b}]}]},{title:"Concepts",dir:m,children:[{title:"Chart Container",dir:w},{title:"Chart Option",dir:y,draft:t},{title:"Series",dir:f,draft:t},{title:"Style",dir:Z},{title:"Dataset",dir:L},{title:"Data Transform",dir:v},{title:"Coordinate",dir:B,draft:t},{title:"Axis",dir:W},{title:"Visual Mapping",dir:e},{title:"Legend",dir:G},{title:"Event and Action",dir:V}]},{title:"How To Guides",dir:J,children:[{title:"Common Charts",dir:M,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:Q},{title:"Stacked Bar",dir:S},{title:"Bar Racing",dir:D},{title:"Bar Polar",dir:x,draft:t},{title:"Waterfall",dir:k}]},{title:"Line",dir:H,children:[{title:"Basic Line",dir:T},{title:"Stacked Line",dir:K},{title:"Area Chart",dir:N},{title:"Smoothed Line",dir:j},{title:"Step Line",dir:E}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:Y},{title:"Ring Style",dir:F},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:O,children:[{title:"Basic Scatter",dir:P}]}]},{title:"Common Components",dir:X,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:z}]}]},{title:"Mobile",dir:i,draft:t},{title:"Cross Platform",dir:R,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:U},{title:"Drilldown",dir:_,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:q}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:it,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:et,draft:t},{title:"Intelligent Pointer Snapping",dir:dt}]}]},{title:"Best Practices",dir:rt,children:[{title:"Mobile Optimization",dir:i,draft:t},{title:lt,dir:at},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:gt}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:nt}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/en/concepts/legend",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/en/concepts/style/index.html b/docs/en/concepts/style/index.html
new file mode 100644
index 0000000..382fa17
--- /dev/null
+++ b/docs/en/concepts/style/index.html
@@ -0,0 +1,453 @@
+<!doctype html>
+<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Style - Concepts - Handbook - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="en"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/en/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/en/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/en/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/en/index.html" class="navbar-brand"><img src="https://echarts.apache.org/en/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/en/index.html">Home</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Docs<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/feature.html">Features</a></li><li><a href="https://echarts.apache.org/handbook/en/get-started/">Handbook</a></li><li><a href="https://echarts.apache.org/en/api.html">API</a></li><li><a href="https://echarts.apache.org/en/option.html">Chart Configuration</a></li><li><a href="https://echarts.apache.org/en/changelog.html">Changelog</a></li><li><a href="https://echarts.apache.org/en/faq.html">FAQ</a></li><li><a href="https://echarts.apache.org/handbook/en/basics/release-note/v6-upgrade-guide">V6 Upgrade Guide</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Download<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/download.html">Download</a></li><li><a href="https://echarts.apache.org/en/download-theme.html">Download Themes</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">Download Custom Series<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/download-extension.html">Download Extensions</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/en/index.html">Examples</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Resources<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/spreadsheet.html">Spread Sheet Tool</a></li><li><a href="https://echarts.apache.org/en/theme-builder.html">Theme Builder</a></li><li><a href="https://echarts.apache.org/en/cheat-sheet.html">Cheat Sheet</a></li><li><a href="https://echarts.apache.org/en/resources.html">More Resources</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/events.html">Events</a></li><li><a href="https://echarts.apache.org/en/committers.html">Committers</a></li><li><a href="https://echarts.apache.org/en/maillist.html">Mailing List</a></li><li><a href="https://echarts.apache.org/en/contributing.html">How to Contribute</a></li><li><a href="https://echarts.apache.org/en/dependencies.html">Dependencies</a></li><li><a href="https://echarts.apache.org/en/coding-standard.html">Code Standard</a></li><li><a href="https://github.com/apache/echarts" target="_blank">Source Code (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/security.html">Security</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">License<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">Events<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("zh")'>中文</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/en/get-started" class="nav-link"><span class="title">Get Started</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Basics</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/basics/download" class="nav-link"><span class="title">Download ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/import" class="nav-link"><span class="title">Import ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/basics/help" class="nav-link"><span class="title">Get Help</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">What's New</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 Features</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">Migration from v5 to v6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">Migration from v4 to v5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Concepts</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/concepts/chart-size" class="nav-link"><span class="title">Chart Container</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/style" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">Style</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/dataset" class="nav-link"><span class="title">Dataset</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/data-transform" class="nav-link"><span class="title">Data Transform</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/axis" class="nav-link"><span class="title">Axis</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/visual-map" class="nav-link"><span class="title">Visual Mapping</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/legend" class="nav-link"><span class="title">Legend</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/event" class="nav-link"><span class="title">Event and Action</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">How To Guides</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">Common Charts</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Bar</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">Basic Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">Stacked Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">Bar Racing</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">Waterfall</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Line</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">Basic Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">Stacked Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/area-line" class="nav-link"><span class="title">Area Chart</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">Smoothed Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/step-line" class="nav-link"><span class="title">Step Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Pie</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">Basic Pie</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">Ring Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/rose" class="nav-link"><span class="title">Rose Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Scatter</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">Basic Scatter</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Common Components</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Geo</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG Base Map</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">Cross Platform</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/cross-platform/server" class="nav-link"><span class="title">Server Side Rendering</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Data</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/data/dynamic-data" class="nav-link"><span class="title">Dynamic Data</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Label</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/label/rich-text" class="nav-link"><span class="title">Rich Text</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Animation</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/animation/transition" class="nav-link"><span class="title">Data Transition</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Interaction</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/drag" class="nav-link"><span class="title">Drag</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">Intelligent Pointer Snapping</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Best Practices</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/en/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/aria" class="nav-link"><span class="title">Aria</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/security" class="nav-link"><span class="title">Security Guidelines</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Edit Handbook</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/meta/edit-guide" class="nav-link"><span class="title">Edit Guide</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="overview-of-style-customization" tabindex="-1">Overview of Style Customization</h1> <p>This article provides an overview of the different approaches about Apache ECharts<sup>TM</sup> style customization. For example, how to config the color, size, shadow of the graphic elements and labels.</p> <blockquote><p>The term "style" may not follow the convention of data visualization, but we use it in this article because it is popular and easy to understand.</p></blockquote> <p>These approaches below will be introduced. The functionalities of them might be overlapped, but they are suitable for different scenarios.</p> <ul><li>Theme</li> <li>Color Palette</li> <li>Customize style explicitly (itemStyle, lineStyle, areaStyle, label, ...)</li> <li>Visual encoding (visualMap component)</li></ul> <h2 id="theme" tabindex="-1">Theme</h2> <p>Setting a theme is the simplest way to change the color style. For example, in <a href="https://echarts.apache.org/examples">Examples page</a>, we can switch to dark mode and see the result of a different theme.</p> <p>In our project, we can switch to dark theme like:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">var</span> chart <span class="token operator">=</span> echarts<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span>dom<span class="token punctuation">,</span> <span class="token string">'dark'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>Other themes are not included by default, and need to load them ourselves if we want to use them. Themes can be visited and downloaded in the <a href="https://echarts.apache.org/theme-builder.html">theme builder</a>. Theme can also be created or edited in it. The downloaded theme can be used as follows:</p> <p>If a theme is downloaded as a JSON file, we should register it by ourselves, for example:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token comment">// Assume the theme name is "vintage".</span>
+<span class="token function">fetch</span><span class="token punctuation">(</span><span class="token string">'theme/vintage.json'</span><span class="token punctuation">)</span>
+  <span class="token punctuation">.</span><span class="token function">then</span><span class="token punctuation">(</span><span class="token parameter">r</span> <span class="token operator">=></span> r<span class="token punctuation">.</span><span class="token function">json</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
+  <span class="token punctuation">.</span><span class="token function">then</span><span class="token punctuation">(</span><span class="token parameter">theme</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
+    echarts<span class="token punctuation">.</span><span class="token function">registerTheme</span><span class="token punctuation">(</span><span class="token string">'vintage'</span><span class="token punctuation">,</span> theme<span class="token punctuation">)</span><span class="token punctuation">;</span>
+    <span class="token keyword">var</span> chart <span class="token operator">=</span> echarts<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span>dom<span class="token punctuation">,</span> <span class="token string">'vintage'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+  <span class="token punctuation">}</span><span class="token punctuation">)</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>If a theme is downloaded as a JS file, it will auto register itself:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token comment">// Import the `vintage.js` file in HTML, then:</span>
+<span class="token keyword">var</span> chart <span class="token operator">=</span> echarts<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span>dom<span class="token punctuation">,</span> <span class="token string">'vintage'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token comment">// ...</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="color-palette" tabindex="-1">Color Palette</h2> <p>Color palette can be given in option. They provide a group of colors, which will be auto picked by series and data. We can give a global palette, or exclusive pallette for certain series.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token comment">// Global palette:</span>
+  <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token string">'#c23531'</span><span class="token punctuation">,</span>
+    <span class="token string">'#2f4554'</span><span class="token punctuation">,</span>
+    <span class="token string">'#61a0a8'</span><span class="token punctuation">,</span>
+    <span class="token string">'#d48265'</span><span class="token punctuation">,</span>
+    <span class="token string">'#91c7ae'</span><span class="token punctuation">,</span>
+    <span class="token string">'#749f83'</span><span class="token punctuation">,</span>
+    <span class="token string">'#ca8622'</span><span class="token punctuation">,</span>
+    <span class="token string">'#bda29a'</span><span class="token punctuation">,</span>
+    <span class="token string">'#6e7074'</span><span class="token punctuation">,</span>
+    <span class="token string">'#546570'</span><span class="token punctuation">,</span>
+    <span class="token string">'#c4ccd3'</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token comment">// A palette only work for the series:</span>
+      <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token string">'#dd6b66'</span><span class="token punctuation">,</span>
+        <span class="token string">'#759aa0'</span><span class="token punctuation">,</span>
+        <span class="token string">'#e69d87'</span><span class="token punctuation">,</span>
+        <span class="token string">'#8dc1a9'</span><span class="token punctuation">,</span>
+        <span class="token string">'#ea7e53'</span><span class="token punctuation">,</span>
+        <span class="token string">'#eedd78'</span><span class="token punctuation">,</span>
+        <span class="token string">'#73a373'</span><span class="token punctuation">,</span>
+        <span class="token string">'#73b9bc'</span><span class="token punctuation">,</span>
+        <span class="token string">'#7289ab'</span><span class="token punctuation">,</span>
+        <span class="token string">'#91ca8c'</span><span class="token punctuation">,</span>
+        <span class="token string">'#f49f42'</span>
+      <span class="token punctuation">]</span>
+      <span class="token comment">// ...</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'pie'</span><span class="token punctuation">,</span>
+      <span class="token comment">// A palette only work for the series:</span>
+      <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token string">'#37A2DA'</span><span class="token punctuation">,</span>
+        <span class="token string">'#32C5E9'</span><span class="token punctuation">,</span>
+        <span class="token string">'#67E0E3'</span><span class="token punctuation">,</span>
+        <span class="token string">'#9FE6B8'</span><span class="token punctuation">,</span>
+        <span class="token string">'#FFDB5C'</span><span class="token punctuation">,</span>
+        <span class="token string">'#ff9f7f'</span><span class="token punctuation">,</span>
+        <span class="token string">'#fb7293'</span><span class="token punctuation">,</span>
+        <span class="token string">'#E062AE'</span><span class="token punctuation">,</span>
+        <span class="token string">'#E690D1'</span><span class="token punctuation">,</span>
+        <span class="token string">'#e7bcf3'</span><span class="token punctuation">,</span>
+        <span class="token string">'#9d96f5'</span><span class="token punctuation">,</span>
+        <span class="token string">'#8378EA'</span><span class="token punctuation">,</span>
+        <span class="token string">'#96BFFF'</span>
+      <span class="token punctuation">]</span>
+      <span class="token comment">// ...</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="customize-style-explicitly" tabindex="-1">Customize Style Explicitly</h2> <p>It is a common way to set style explicitly. Throughout ECharts <a href="https://echarts.apache.org/option.html#">option</a>, style related options can be set in various place, including <a href="https://echarts.apache.org/option.html#series.itemStyle">itemStyle</a>, <a href="https://echarts.apache.org/option.html#series-line.lineStyle">lineStyle</a>, <a href="https://echarts.apache.org/option.html#series-line.areaStyle">areaStyle</a>, <a href="https://echarts.apache.org/option.html#series.label">label</a>, etc.</p> <p>Generally speaking, all of the built-in components and series follow the naming convention like <code>itemStyle</code>, <code>lineStyle</code>, <code>areaStyle</code>, <code>label</code> etc, although they may occur in different place according to different series or components.</p> <p>In the following code we add shadow, gradient to bubble chart.</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">var data = [
+  [
+    [28604, 77, 17096869, 'Australia', 1990],
+    [31163, 77.4, 27662440, 'Canada', 1990],
+    [1516, 68, 1154605773, 'China', 1990],
+    [13670, 74.7, 10582082, 'Cuba', 1990],
+    [28599, 75, 4986705, 'Finland', 1990],
+    [29476, 77.1, 56943299, 'France', 1990],
+    [31476, 75.4, 78958237, 'Germany', 1990],
+    [28666, 78.1, 254830, 'Iceland', 1990],
+    [1777, 57.7, 870601776, 'India', 1990],
+    [29550, 79.1, 122249285, 'Japan', 1990],
+    [2076, 67.9, 20194354, 'North Korea', 1990],
+    [12087, 72, 42972254, 'South Korea', 1990],
+    [24021, 75.4, 3397534, 'New Zealand', 1990],
+    [43296, 76.8, 4240375, 'Norway', 1990],
+    [10088, 70.8, 38195258, 'Poland', 1990],
+    [19349, 69.6, 147568552, 'Russia', 1990],
+    [10670, 67.3, 53994605, 'Turkey', 1990],
+    [26424, 75.7, 57110117, 'United Kingdom', 1990],
+    [37062, 75.4, 252847810, 'United States', 1990]
+  ],
+  [
+    [44056, 81.8, 23968973, 'Australia', 2015],
+    [43294, 81.7, 35939927, 'Canada', 2015],
+    [13334, 76.9, 1376048943, 'China', 2015],
+    [21291, 78.5, 11389562, 'Cuba', 2015],
+    [38923, 80.8, 5503457, 'Finland', 2015],
+    [37599, 81.9, 64395345, 'France', 2015],
+    [44053, 81.1, 80688545, 'Germany', 2015],
+    [42182, 82.8, 329425, 'Iceland', 2015],
+    [5903, 66.8, 1311050527, 'India', 2015],
+    [36162, 83.5, 126573481, 'Japan', 2015],
+    [1390, 71.4, 25155317, 'North Korea', 2015],
+    [34644, 80.7, 50293439, 'South Korea', 2015],
+    [34186, 80.6, 4528526, 'New Zealand', 2015],
+    [64304, 81.6, 5210967, 'Norway', 2015],
+    [24787, 77.3, 38611794, 'Poland', 2015],
+    [23038, 73.13, 143456918, 'Russia', 2015],
+    [19360, 76.5, 78665830, 'Turkey', 2015],
+    [38225, 81.4, 64715810, 'United Kingdom', 2015],
+    [53354, 79.1, 321773631, 'United States', 2015]
+  ]
+];
+
+option = {
+  backgroundColor: {
+    type: 'radial',
+    x: 0.3,
+    y: 0.3,
+    r: 0.8,
+    colorStops: [
+      {
+        offset: 0,
+        color: '#f7f8fa'
+      },
+      {
+        offset: 1,
+        color: '#cdd0d5'
+      }
+    ]
+  },
+  grid: {
+    left: 10,
+    containLabel: true,
+    bottom: 10,
+    top: 10,
+    right: 30
+  },
+  xAxis: {
+    splitLine: {
+      show: false
+    }
+  },
+  yAxis: {
+    splitLine: {
+      show: false
+    },
+    scale: true
+  },
+  series: [
+    {
+      name: '1990',
+      data: data[0],
+      type: 'scatter',
+      symbolSize: function(data) {
+        return Math.sqrt(data[2]) / 5e2;
+      },
+      emphasis: {
+        focus: 'series',
+        label: {
+          show: true,
+          formatter: function(param) {
+            return param.data[3];
+          },
+          position: 'top'
+        }
+      },
+      itemStyle: {
+        shadowBlur: 10,
+        shadowColor: 'rgba(120, 36, 50, 0.5)',
+        shadowOffsetY: 5,
+        color: {
+          type: 'radial',
+          x: 0.4,
+          y: 0.3,
+          r: 1,
+          colorStops: [
+            {
+              offset: 0,
+              color: 'rgb(251, 118, 123)'
+            },
+            {
+              offset: 1,
+              color: 'rgb(204, 46, 72)'
+            }
+          ]
+        }
+      }
+    },
+    {
+      name: '2015',
+      data: data[1],
+      type: 'scatter',
+      symbolSize: function(data) {
+        return Math.sqrt(data[2]) / 5e2;
+      },
+      emphasis: {
+        focus: 'series',
+        label: {
+          show: true,
+          formatter: function(param) {
+            return param.data[3];
+          },
+          position: 'top'
+        }
+      },
+      itemStyle: {
+        shadowBlur: 10,
+        shadowColor: 'rgba(25, 100, 150, 0.5)',
+        shadowOffsetY: 5,
+        color: {
+          type: 'radial',
+          x: 0.4,
+          y: 0.3,
+          r: 1,
+          colorStops: [
+            {
+              offset: 0,
+              color: 'rgb(129, 227, 238)'
+            },
+            {
+              offset: 1,
+              color: 'rgb(25, 183, 207)'
+            }
+          ]
+        }
+      }
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor"><span class="token keyword">var</span> data <span class="token operator">=</span> <span class="token punctuation">[</span>
+  <span class="token punctuation">[</span>
+    <span class="token punctuation">[</span><span class="token number">28604</span><span class="token punctuation">,</span> <span class="token number">77</span><span class="token punctuation">,</span> <span class="token number">17096869</span><span class="token punctuation">,</span> <span class="token string">'Australia'</span><span class="token punctuation">,</span> <span class="token number">1990</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">31163</span><span class="token punctuation">,</span> <span class="token number">77.4</span><span class="token punctuation">,</span> <span class="token number">27662440</span><span class="token punctuation">,</span> <span class="token string">'Canada'</span><span class="token punctuation">,</span> <span class="token number">1990</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">1516</span><span class="token punctuation">,</span> <span class="token number">68</span><span class="token punctuation">,</span> <span class="token number">1154605773</span><span class="token punctuation">,</span> <span class="token string">'China'</span><span class="token punctuation">,</span> <span class="token number">1990</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">13670</span><span class="token punctuation">,</span> <span class="token number">74.7</span><span class="token punctuation">,</span> <span class="token number">10582082</span><span class="token punctuation">,</span> <span class="token string">'Cuba'</span><span class="token punctuation">,</span> <span class="token number">1990</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">28599</span><span class="token punctuation">,</span> <span class="token number">75</span><span class="token punctuation">,</span> <span class="token number">4986705</span><span class="token punctuation">,</span> <span class="token string">'Finland'</span><span class="token punctuation">,</span> <span class="token number">1990</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">29476</span><span class="token punctuation">,</span> <span class="token number">77.1</span><span class="token punctuation">,</span> <span class="token number">56943299</span><span class="token punctuation">,</span> <span class="token string">'France'</span><span class="token punctuation">,</span> <span class="token number">1990</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">31476</span><span class="token punctuation">,</span> <span class="token number">75.4</span><span class="token punctuation">,</span> <span class="token number">78958237</span><span class="token punctuation">,</span> <span class="token string">'Germany'</span><span class="token punctuation">,</span> <span class="token number">1990</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">28666</span><span class="token punctuation">,</span> <span class="token number">78.1</span><span class="token punctuation">,</span> <span class="token number">254830</span><span class="token punctuation">,</span> <span class="token string">'Iceland'</span><span class="token punctuation">,</span> <span class="token number">1990</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">1777</span><span class="token punctuation">,</span> <span class="token number">57.7</span><span class="token punctuation">,</span> <span class="token number">870601776</span><span class="token punctuation">,</span> <span class="token string">'India'</span><span class="token punctuation">,</span> <span class="token number">1990</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">29550</span><span class="token punctuation">,</span> <span class="token number">79.1</span><span class="token punctuation">,</span> <span class="token number">122249285</span><span class="token punctuation">,</span> <span class="token string">'Japan'</span><span class="token punctuation">,</span> <span class="token number">1990</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">2076</span><span class="token punctuation">,</span> <span class="token number">67.9</span><span class="token punctuation">,</span> <span class="token number">20194354</span><span class="token punctuation">,</span> <span class="token string">'North Korea'</span><span class="token punctuation">,</span> <span class="token number">1990</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">12087</span><span class="token punctuation">,</span> <span class="token number">72</span><span class="token punctuation">,</span> <span class="token number">42972254</span><span class="token punctuation">,</span> <span class="token string">'South Korea'</span><span class="token punctuation">,</span> <span class="token number">1990</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">24021</span><span class="token punctuation">,</span> <span class="token number">75.4</span><span class="token punctuation">,</span> <span class="token number">3397534</span><span class="token punctuation">,</span> <span class="token string">'New Zealand'</span><span class="token punctuation">,</span> <span class="token number">1990</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">43296</span><span class="token punctuation">,</span> <span class="token number">76.8</span><span class="token punctuation">,</span> <span class="token number">4240375</span><span class="token punctuation">,</span> <span class="token string">'Norway'</span><span class="token punctuation">,</span> <span class="token number">1990</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">10088</span><span class="token punctuation">,</span> <span class="token number">70.8</span><span class="token punctuation">,</span> <span class="token number">38195258</span><span class="token punctuation">,</span> <span class="token string">'Poland'</span><span class="token punctuation">,</span> <span class="token number">1990</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">19349</span><span class="token punctuation">,</span> <span class="token number">69.6</span><span class="token punctuation">,</span> <span class="token number">147568552</span><span class="token punctuation">,</span> <span class="token string">'Russia'</span><span class="token punctuation">,</span> <span class="token number">1990</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">10670</span><span class="token punctuation">,</span> <span class="token number">67.3</span><span class="token punctuation">,</span> <span class="token number">53994605</span><span class="token punctuation">,</span> <span class="token string">'Turkey'</span><span class="token punctuation">,</span> <span class="token number">1990</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">26424</span><span class="token punctuation">,</span> <span class="token number">75.7</span><span class="token punctuation">,</span> <span class="token number">57110117</span><span class="token punctuation">,</span> <span class="token string">'United Kingdom'</span><span class="token punctuation">,</span> <span class="token number">1990</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">37062</span><span class="token punctuation">,</span> <span class="token number">75.4</span><span class="token punctuation">,</span> <span class="token number">252847810</span><span class="token punctuation">,</span> <span class="token string">'United States'</span><span class="token punctuation">,</span> <span class="token number">1990</span><span class="token punctuation">]</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token punctuation">[</span>
+    <span class="token punctuation">[</span><span class="token number">44056</span><span class="token punctuation">,</span> <span class="token number">81.8</span><span class="token punctuation">,</span> <span class="token number">23968973</span><span class="token punctuation">,</span> <span class="token string">'Australia'</span><span class="token punctuation">,</span> <span class="token number">2015</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">43294</span><span class="token punctuation">,</span> <span class="token number">81.7</span><span class="token punctuation">,</span> <span class="token number">35939927</span><span class="token punctuation">,</span> <span class="token string">'Canada'</span><span class="token punctuation">,</span> <span class="token number">2015</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">13334</span><span class="token punctuation">,</span> <span class="token number">76.9</span><span class="token punctuation">,</span> <span class="token number">1376048943</span><span class="token punctuation">,</span> <span class="token string">'China'</span><span class="token punctuation">,</span> <span class="token number">2015</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">21291</span><span class="token punctuation">,</span> <span class="token number">78.5</span><span class="token punctuation">,</span> <span class="token number">11389562</span><span class="token punctuation">,</span> <span class="token string">'Cuba'</span><span class="token punctuation">,</span> <span class="token number">2015</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">38923</span><span class="token punctuation">,</span> <span class="token number">80.8</span><span class="token punctuation">,</span> <span class="token number">5503457</span><span class="token punctuation">,</span> <span class="token string">'Finland'</span><span class="token punctuation">,</span> <span class="token number">2015</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">37599</span><span class="token punctuation">,</span> <span class="token number">81.9</span><span class="token punctuation">,</span> <span class="token number">64395345</span><span class="token punctuation">,</span> <span class="token string">'France'</span><span class="token punctuation">,</span> <span class="token number">2015</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">44053</span><span class="token punctuation">,</span> <span class="token number">81.1</span><span class="token punctuation">,</span> <span class="token number">80688545</span><span class="token punctuation">,</span> <span class="token string">'Germany'</span><span class="token punctuation">,</span> <span class="token number">2015</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">42182</span><span class="token punctuation">,</span> <span class="token number">82.8</span><span class="token punctuation">,</span> <span class="token number">329425</span><span class="token punctuation">,</span> <span class="token string">'Iceland'</span><span class="token punctuation">,</span> <span class="token number">2015</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">5903</span><span class="token punctuation">,</span> <span class="token number">66.8</span><span class="token punctuation">,</span> <span class="token number">1311050527</span><span class="token punctuation">,</span> <span class="token string">'India'</span><span class="token punctuation">,</span> <span class="token number">2015</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">36162</span><span class="token punctuation">,</span> <span class="token number">83.5</span><span class="token punctuation">,</span> <span class="token number">126573481</span><span class="token punctuation">,</span> <span class="token string">'Japan'</span><span class="token punctuation">,</span> <span class="token number">2015</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">1390</span><span class="token punctuation">,</span> <span class="token number">71.4</span><span class="token punctuation">,</span> <span class="token number">25155317</span><span class="token punctuation">,</span> <span class="token string">'North Korea'</span><span class="token punctuation">,</span> <span class="token number">2015</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">34644</span><span class="token punctuation">,</span> <span class="token number">80.7</span><span class="token punctuation">,</span> <span class="token number">50293439</span><span class="token punctuation">,</span> <span class="token string">'South Korea'</span><span class="token punctuation">,</span> <span class="token number">2015</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">34186</span><span class="token punctuation">,</span> <span class="token number">80.6</span><span class="token punctuation">,</span> <span class="token number">4528526</span><span class="token punctuation">,</span> <span class="token string">'New Zealand'</span><span class="token punctuation">,</span> <span class="token number">2015</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">64304</span><span class="token punctuation">,</span> <span class="token number">81.6</span><span class="token punctuation">,</span> <span class="token number">5210967</span><span class="token punctuation">,</span> <span class="token string">'Norway'</span><span class="token punctuation">,</span> <span class="token number">2015</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">24787</span><span class="token punctuation">,</span> <span class="token number">77.3</span><span class="token punctuation">,</span> <span class="token number">38611794</span><span class="token punctuation">,</span> <span class="token string">'Poland'</span><span class="token punctuation">,</span> <span class="token number">2015</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">23038</span><span class="token punctuation">,</span> <span class="token number">73.13</span><span class="token punctuation">,</span> <span class="token number">143456918</span><span class="token punctuation">,</span> <span class="token string">'Russia'</span><span class="token punctuation">,</span> <span class="token number">2015</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">19360</span><span class="token punctuation">,</span> <span class="token number">76.5</span><span class="token punctuation">,</span> <span class="token number">78665830</span><span class="token punctuation">,</span> <span class="token string">'Turkey'</span><span class="token punctuation">,</span> <span class="token number">2015</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">38225</span><span class="token punctuation">,</span> <span class="token number">81.4</span><span class="token punctuation">,</span> <span class="token number">64715810</span><span class="token punctuation">,</span> <span class="token string">'United Kingdom'</span><span class="token punctuation">,</span> <span class="token number">2015</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">53354</span><span class="token punctuation">,</span> <span class="token number">79.1</span><span class="token punctuation">,</span> <span class="token number">321773631</span><span class="token punctuation">,</span> <span class="token string">'United States'</span><span class="token punctuation">,</span> <span class="token number">2015</span><span class="token punctuation">]</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">]</span><span class="token punctuation">;</span>
+
+option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">backgroundColor</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'radial'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token number">0.3</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">y</span><span class="token operator">:</span> <span class="token number">0.3</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">r</span><span class="token operator">:</span> <span class="token number">0.8</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">colorStops</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token punctuation">{</span>
+        <span class="token literal-property property">offset</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'#f7f8fa'</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token punctuation">{</span>
+        <span class="token literal-property property">offset</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'#cdd0d5'</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">grid</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">left</span><span class="token operator">:</span> <span class="token number">10</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">containLabel</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">bottom</span><span class="token operator">:</span> <span class="token number">10</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">top</span><span class="token operator">:</span> <span class="token number">10</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">right</span><span class="token operator">:</span> <span class="token number">30</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">splitLine</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">false</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">splitLine</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">false</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">scale</span><span class="token operator">:</span> <span class="token boolean">true</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'1990'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> data<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'scatter'</span><span class="token punctuation">,</span>
+      <span class="token function-variable function">symbolSize</span><span class="token operator">:</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">data</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+        <span class="token keyword">return</span> Math<span class="token punctuation">.</span><span class="token function">sqrt</span><span class="token punctuation">(</span>data<span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token operator">/</span> <span class="token number">5e2</span><span class="token punctuation">;</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">emphasis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">focus</span><span class="token operator">:</span> <span class="token string">'series'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+          <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+          <span class="token function-variable function">formatter</span><span class="token operator">:</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">param</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+            <span class="token keyword">return</span> param<span class="token punctuation">.</span>data<span class="token punctuation">[</span><span class="token number">3</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
+          <span class="token punctuation">}</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">position</span><span class="token operator">:</span> <span class="token string">'top'</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">itemStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">shadowBlur</span><span class="token operator">:</span> <span class="token number">10</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">shadowColor</span><span class="token operator">:</span> <span class="token string">'rgba(120, 36, 50, 0.5)'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">shadowOffsetY</span><span class="token operator">:</span> <span class="token number">5</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+          <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'radial'</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token number">0.4</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">y</span><span class="token operator">:</span> <span class="token number">0.3</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">r</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">colorStops</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+            <span class="token punctuation">{</span>
+              <span class="token literal-property property">offset</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+              <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'rgb(251, 118, 123)'</span>
+            <span class="token punctuation">}</span><span class="token punctuation">,</span>
+            <span class="token punctuation">{</span>
+              <span class="token literal-property property">offset</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+              <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'rgb(204, 46, 72)'</span>
+            <span class="token punctuation">}</span>
+          <span class="token punctuation">]</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'2015'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> data<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'scatter'</span><span class="token punctuation">,</span>
+      <span class="token function-variable function">symbolSize</span><span class="token operator">:</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">data</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+        <span class="token keyword">return</span> Math<span class="token punctuation">.</span><span class="token function">sqrt</span><span class="token punctuation">(</span>data<span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token operator">/</span> <span class="token number">5e2</span><span class="token punctuation">;</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">emphasis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">focus</span><span class="token operator">:</span> <span class="token string">'series'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+          <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+          <span class="token function-variable function">formatter</span><span class="token operator">:</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">param</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+            <span class="token keyword">return</span> param<span class="token punctuation">.</span>data<span class="token punctuation">[</span><span class="token number">3</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
+          <span class="token punctuation">}</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">position</span><span class="token operator">:</span> <span class="token string">'top'</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">itemStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">shadowBlur</span><span class="token operator">:</span> <span class="token number">10</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">shadowColor</span><span class="token operator">:</span> <span class="token string">'rgba(25, 100, 150, 0.5)'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">shadowOffsetY</span><span class="token operator">:</span> <span class="token number">5</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+          <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'radial'</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token number">0.4</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">y</span><span class="token operator">:</span> <span class="token number">0.3</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">r</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">colorStops</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+            <span class="token punctuation">{</span>
+              <span class="token literal-property property">offset</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+              <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'rgb(129, 227, 238)'</span>
+            <span class="token punctuation">}</span><span class="token punctuation">,</span>
+            <span class="token punctuation">{</span>
+              <span class="token literal-property property">offset</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+              <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'rgb(25, 183, 207)'</span>
+            <span class="token punctuation">}</span>
+          <span class="token punctuation">]</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <h2 id="style-of-emphasis-state" tabindex="-1">Style of Emphasis State</h2> <p>When mouse hovering a graphic elements, usually the emphasis style will be displayed. By default, the emphasis style is auto generated by the normal style. However they can be specified by <a href="https://echarts.apache.org/option.html#series-bar.emphasis">emphasis</a> property. The options in <a href="https://echarts.apache.org/option.html#series-bar.emphasis">emphasis</a> is the same as the ones for normal state, for example:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'scatter'</span><span class="token punctuation">,</span>
+
+    <span class="token comment">// Styles for normal state.</span>
+    <span class="token literal-property property">itemStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token comment">// Color of the point.</span>
+      <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'red'</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+      <span class="token comment">// Text of labels.</span>
+      <span class="token literal-property property">formatter</span><span class="token operator">:</span> <span class="token string">'This is a normal label.'</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+
+    <span class="token comment">// Styles for emphasis state.</span>
+    <span class="token literal-property property">emphasis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">itemStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token comment">// Color in emphasis state.</span>
+        <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'blue'</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+        <span class="token comment">// Text in emphasis.</span>
+        <span class="token literal-property property">formatter</span><span class="token operator">:</span> <span class="token string">'This is a emphasis label.'</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>Notice: Before ECharts4, the emphasis style should be written like this:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'scatter'</span><span class="token punctuation">,</span>
+
+    <span class="token literal-property property">itemStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token comment">// Styles for normal state.</span>
+      <span class="token literal-property property">normal</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'red'</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token comment">// Styles for emphasis state.</span>
+      <span class="token literal-property property">emphasis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'blue'</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+
+    <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token comment">// Styles for normal state.</span>
+      <span class="token literal-property property">normal</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">formatter</span><span class="token operator">:</span> <span class="token string">'This is a normal label.'</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token comment">// Styles for emphasis state.</span>
+      <span class="token literal-property property">emphasis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">formatter</span><span class="token operator">:</span> <span class="token string">'This is a emphasis label.'</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>The option format is still <strong>compatible</strong>, but not recommended. In fact, in most cases, users only set normal style, and use the default emphasis style. So since ECharts4, we support to write style without the "normal" term, which makes the option more simple and neat.</p> <h2 id="visual-encoding-by-visualmap-component" tabindex="-1">Visual Encoding by visualMap Component</h2> <p><a href="https://echarts.apache.org/option.html#visualMap">visualMap component</a> supports config the rule that mapping value to visual channel (color, size, ...). More details can be check in <a href="en/concepts/visual-map/">Visual Map of Data</a>.</p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">Contributors</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/en/concepts/style.md" title="Edit this Document" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">Edit this page on GitHub</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/plainheart" target="_blank" class="post-contributor has-avatar"><img alt="plainheart" src="https://echarts.apache.org/en/images/people/plainheart.jpg" loading="lazy" decoding="async" fetchpriority="low"> <span>plainheart</span></a><a href="https://github.com/KrzysztofMadejski" target="_blank" class="post-contributor"><!----> <span>KrzysztofMadejski</span></a><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a><a href="https://github.com/fuchunhui" target="_blank" class="post-contributor has-avatar"><img alt="fuchunhui" src="https://echarts.apache.org/en/images/people/付春辉.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>fuchunhui</span></a><a href="https://github.com/zachary-svoboda-accesso" target="_blank" class="post-contributor"><!----> <span>zachary-svoboda-accesso</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(i,e,g,t,I,C,A,l,a,o,s,d,r,n,c,h,w,p,y,m,b,M,N,u,B,z,L,Z,G,S,T,D,Y,O,J,v,W,f,x,X,K,j,k,H,F,E,R,V,U,Q,P,q,_,$,ii,ei,gi,ti,Ii,Ci,Ai,li,ai){return{layout:"default",data:[{html:'<h1 id="overview-of-style-customization" tabindex="-1">Overview of Style Customization</h1>\n<p>This article provides an overview of the different approaches about Apache ECharts<sup>TM</sup> style customization. For example, how to config the color, size, shadow of the graphic elements and labels.</p>\n<blockquote>\n<p>The term &quot;style&quot; may not follow the convention of data visualization, but we use it in this article because it is popular and easy to understand.</p>\n</blockquote>\n<p>These approaches below will be introduced. The functionalities of them might be overlapped, but they are suitable for different scenarios.</p>\n<ul>\n<li>Theme</li>\n<li>Color Palette</li>\n<li>Customize style explicitly (itemStyle, lineStyle, areaStyle, label, ...)</li>\n<li>Visual encoding (visualMap component)</li>\n</ul>\n<h2 id="theme" tabindex="-1">Theme</h2>\n<p>Setting a theme is the simplest way to change the color style. For example, in <a href="https://echarts.apache.org/examples">Examples page</a>, we can switch to dark mode and see the result of a different theme.</p>\n<p>In our project, we can switch to dark theme like:</p>\n<md-code-block lang="js" code="\'dmFyIGNoYXJ0ID0gZWNoYXJ0cy5pbml0KGRvbSwgJ2RhcmsnKTs\'" line-highlights="\'\'" />\n<p>Other themes are not included by default, and need to load them ourselves if we want to use them. Themes can be visited and downloaded in the <a href="https://echarts.apache.org/theme-builder.html">theme builder</a>. Theme can also be created or edited in it. The downloaded theme can be used as follows:</p>\n<p>If a theme is downloaded as a JSON file, we should register it by ourselves, for example:</p>\n<md-code-block lang="js" code="\'Ly8gQXNzdW1lIHRoZSB0aGVtZSBuYW1lIGlzICJ2aW50YWdlIi4KZmV0Y2goJ3RoZW1lL3ZpbnRhZ2UuanNvbicpCiAgLnRoZW4ociA9PiByLmpzb24oKSkKICAudGhlbih0aGVtZSA9PiB7CiAgICBlY2hhcnRzLnJlZ2lzdGVyVGhlbWUoJ3ZpbnRhZ2UnLCB0aGVtZSk7CiAgICB2YXIgY2hhcnQgPSBlY2hhcnRzLmluaXQoZG9tLCAndmludGFnZScpOwogIH0p\'" line-highlights="\'\'" />\n<p>If a theme is downloaded as a JS file, it will auto register itself:</p>\n<md-code-block lang="js" code="\'Ly8gSW1wb3J0IHRoZSBgdmludGFnZS5qc2AgZmlsZSBpbiBIVE1MLCB0aGVuOgp2YXIgY2hhcnQgPSBlY2hhcnRzLmluaXQoZG9tLCAndmludGFnZScpOwovLyAuLi4\'" line-highlights="\'\'" />\n<h2 id="color-palette" tabindex="-1">Color Palette</h2>\n<p>Color palette can be given in option. They provide a group of colors, which will be auto picked by series and data. We can give a global palette, or exclusive pallette for certain series.</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIC8vIEdsb2JhbCBwYWxldHRlOgogIGNvbG9yOiBbCiAgICAnI2MyMzUzMScsCiAgICAnIzJmNDU1NCcsCiAgICAnIzYxYTBhOCcsCiAgICAnI2Q0ODI2NScsCiAgICAnIzkxYzdhZScsCiAgICAnIzc0OWY4MycsCiAgICAnI2NhODYyMicsCiAgICAnI2JkYTI5YScsCiAgICAnIzZlNzA3NCcsCiAgICAnIzU0NjU3MCcsCiAgICAnI2M0Y2NkMycKICBdLAoKICBzZXJpZXM6IFsKICAgIHsKICAgICAgdHlwZTogJ2JhcicsCiAgICAgIC8vIEEgcGFsZXR0ZSBvbmx5IHdvcmsgZm9yIHRoZSBzZXJpZXM6CiAgICAgIGNvbG9yOiBbCiAgICAgICAgJyNkZDZiNjYnLAogICAgICAgICcjNzU5YWEwJywKICAgICAgICAnI2U2OWQ4NycsCiAgICAgICAgJyM4ZGMxYTknLAogICAgICAgICcjZWE3ZTUzJywKICAgICAgICAnI2VlZGQ3OCcsCiAgICAgICAgJyM3M2EzNzMnLAogICAgICAgICcjNzNiOWJjJywKICAgICAgICAnIzcyODlhYicsCiAgICAgICAgJyM5MWNhOGMnLAogICAgICAgICcjZjQ5ZjQyJwogICAgICBdCiAgICAgIC8vIC4uLgogICAgfSwKICAgIHsKICAgICAgdHlwZTogJ3BpZScsCiAgICAgIC8vIEEgcGFsZXR0ZSBvbmx5IHdvcmsgZm9yIHRoZSBzZXJpZXM6CiAgICAgIGNvbG9yOiBbCiAgICAgICAgJyMzN0EyREEnLAogICAgICAgICcjMzJDNUU5JywKICAgICAgICAnIzY3RTBFMycsCiAgICAgICAgJyM5RkU2QjgnLAogICAgICAgICcjRkZEQjVDJywKICAgICAgICAnI2ZmOWY3ZicsCiAgICAgICAgJyNmYjcyOTMnLAogICAgICAgICcjRTA2MkFFJywKICAgICAgICAnI0U2OTBEMScsCiAgICAgICAgJyNlN2JjZjMnLAogICAgICAgICcjOWQ5NmY1JywKICAgICAgICAnIzgzNzhFQScsCiAgICAgICAgJyM5NkJGRkYnCiAgICAgIF0KICAgICAgLy8gLi4uCiAgICB9CiAgXQp9Ow\'" line-highlights="\'\'" />\n<h2 id="customize-style-explicitly" tabindex="-1">Customize Style Explicitly</h2>\n<p>It is a common way to set style explicitly. Throughout ECharts <a href="https://echarts.apache.org/option.html#">option</a>, style related options can be set in various place, including <a href="https://echarts.apache.org/option.html#series.itemStyle">itemStyle</a>, <a href="https://echarts.apache.org/option.html#series-line.lineStyle">lineStyle</a>, <a href="https://echarts.apache.org/option.html#series-line.areaStyle">areaStyle</a>, <a href="https://echarts.apache.org/option.html#series.label">label</a>, etc.</p>\n<p>Generally speaking, all of the built-in components and series follow the naming convention like <code>itemStyle</code>, <code>lineStyle</code>, <code>areaStyle</code>, <code>label</code> etc, although they may occur in different place according to different series or components.</p>\n<p>In the following code we add shadow, gradient to bubble chart.</p>\n<md-live lang="js" code="\'dmFyIGRhdGEgPSBbCiAgWwogICAgWzI4NjA0LCA3NywgMTcwOTY4NjksICdBdXN0cmFsaWEnLCAxOTkwXSwKICAgIFszMTE2MywgNzcuNCwgMjc2NjI0NDAsICdDYW5hZGEnLCAxOTkwXSwKICAgIFsxNTE2LCA2OCwgMTE1NDYwNTc3MywgJ0NoaW5hJywgMTk5MF0sCiAgICBbMTM2NzAsIDc0LjcsIDEwNTgyMDgyLCAnQ3ViYScsIDE5OTBdLAogICAgWzI4NTk5LCA3NSwgNDk4NjcwNSwgJ0ZpbmxhbmQnLCAxOTkwXSwKICAgIFsyOTQ3NiwgNzcuMSwgNTY5NDMyOTksICdGcmFuY2UnLCAxOTkwXSwKICAgIFszMTQ3NiwgNzUuNCwgNzg5NTgyMzcsICdHZXJtYW55JywgMTk5MF0sCiAgICBbMjg2NjYsIDc4LjEsIDI1NDgzMCwgJ0ljZWxhbmQnLCAxOTkwXSwKICAgIFsxNzc3LCA1Ny43LCA4NzA2MDE3NzYsICdJbmRpYScsIDE5OTBdLAogICAgWzI5NTUwLCA3OS4xLCAxMjIyNDkyODUsICdKYXBhbicsIDE5OTBdLAogICAgWzIwNzYsIDY3LjksIDIwMTk0MzU0LCAnTm9ydGggS29yZWEnLCAxOTkwXSwKICAgIFsxMjA4NywgNzIsIDQyOTcyMjU0LCAnU291dGggS29yZWEnLCAxOTkwXSwKICAgIFsyNDAyMSwgNzUuNCwgMzM5NzUzNCwgJ05ldyBaZWFsYW5kJywgMTk5MF0sCiAgICBbNDMyOTYsIDc2LjgsIDQyNDAzNzUsICdOb3J3YXknLCAxOTkwXSwKICAgIFsxMDA4OCwgNzAuOCwgMzgxOTUyNTgsICdQb2xhbmQnLCAxOTkwXSwKICAgIFsxOTM0OSwgNjkuNiwgMTQ3NTY4NTUyLCAnUnVzc2lhJywgMTk5MF0sCiAgICBbMTA2NzAsIDY3LjMsIDUzOTk0NjA1LCAnVHVya2V5JywgMTk5MF0sCiAgICBbMjY0MjQsIDc1LjcsIDU3MTEwMTE3LCAnVW5pdGVkIEtpbmdkb20nLCAxOTkwXSwKICAgIFszNzA2MiwgNzUuNCwgMjUyODQ3ODEwLCAnVW5pdGVkIFN0YXRlcycsIDE5OTBdCiAgXSwKICBbCiAgICBbNDQwNTYsIDgxLjgsIDIzOTY4OTczLCAnQXVzdHJhbGlhJywgMjAxNV0sCiAgICBbNDMyOTQsIDgxLjcsIDM1OTM5OTI3LCAnQ2FuYWRhJywgMjAxNV0sCiAgICBbMTMzMzQsIDc2LjksIDEzNzYwNDg5NDMsICdDaGluYScsIDIwMTVdLAogICAgWzIxMjkxLCA3OC41LCAxMTM4OTU2MiwgJ0N1YmEnLCAyMDE1XSwKICAgIFszODkyMywgODAuOCwgNTUwMzQ1NywgJ0ZpbmxhbmQnLCAyMDE1XSwKICAgIFszNzU5OSwgODEuOSwgNjQzOTUzNDUsICdGcmFuY2UnLCAyMDE1XSwKICAgIFs0NDA1MywgODEuMSwgODA2ODg1NDUsICdHZXJtYW55JywgMjAxNV0sCiAgICBbNDIxODIsIDgyLjgsIDMyOTQyNSwgJ0ljZWxhbmQnLCAyMDE1XSwKICAgIFs1OTAzLCA2Ni44LCAxMzExMDUwNTI3LCAnSW5kaWEnLCAyMDE1XSwKICAgIFszNjE2MiwgODMuNSwgMTI2NTczNDgxLCAnSmFwYW4nLCAyMDE1XSwKICAgIFsxMzkwLCA3MS40LCAyNTE1NTMxNywgJ05vcnRoIEtvcmVhJywgMjAxNV0sCiAgICBbMzQ2NDQsIDgwLjcsIDUwMjkzNDM5LCAnU291dGggS29yZWEnLCAyMDE1XSwKICAgIFszNDE4NiwgODAuNiwgNDUyODUyNiwgJ05ldyBaZWFsYW5kJywgMjAxNV0sCiAgICBbNjQzMDQsIDgxLjYsIDUyMTA5NjcsICdOb3J3YXknLCAyMDE1XSwKICAgIFsyNDc4NywgNzcuMywgMzg2MTE3OTQsICdQb2xhbmQnLCAyMDE1XSwKICAgIFsyMzAzOCwgNzMuMTMsIDE0MzQ1NjkxOCwgJ1J1c3NpYScsIDIwMTVdLAogICAgWzE5MzYwLCA3Ni41LCA3ODY2NTgzMCwgJ1R1cmtleScsIDIwMTVdLAogICAgWzM4MjI1LCA4MS40LCA2NDcxNTgxMCwgJ1VuaXRlZCBLaW5nZG9tJywgMjAxNV0sCiAgICBbNTMzNTQsIDc5LjEsIDMyMTc3MzYzMSwgJ1VuaXRlZCBTdGF0ZXMnLCAyMDE1XQogIF0KXTsKCm9wdGlvbiA9IHsKICBiYWNrZ3JvdW5kQ29sb3I6IHsKICAgIHR5cGU6ICdyYWRpYWwnLAogICAgeDogMC4zLAogICAgeTogMC4zLAogICAgcjogMC44LAogICAgY29sb3JTdG9wczogWwogICAgICB7CiAgICAgICAgb2Zmc2V0OiAwLAogICAgICAgIGNvbG9yOiAnI2Y3ZjhmYScKICAgICAgfSwKICAgICAgewogICAgICAgIG9mZnNldDogMSwKICAgICAgICBjb2xvcjogJyNjZGQwZDUnCiAgICAgIH0KICAgIF0KICB9LAogIGdyaWQ6IHsKICAgIGxlZnQ6IDEwLAogICAgY29udGFpbkxhYmVsOiB0cnVlLAogICAgYm90dG9tOiAxMCwKICAgIHRvcDogMTAsCiAgICByaWdodDogMzAKICB9LAogIHhBeGlzOiB7CiAgICBzcGxpdExpbmU6IHsKICAgICAgc2hvdzogZmFsc2UKICAgIH0KICB9LAogIHlBeGlzOiB7CiAgICBzcGxpdExpbmU6IHsKICAgICAgc2hvdzogZmFsc2UKICAgIH0sCiAgICBzY2FsZTogdHJ1ZQogIH0sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIG5hbWU6ICcxOTkwJywKICAgICAgZGF0YTogZGF0YVswXSwKICAgICAgdHlwZTogJ3NjYXR0ZXInLAogICAgICBzeW1ib2xTaXplOiBmdW5jdGlvbihkYXRhKSB7CiAgICAgICAgcmV0dXJuIE1hdGguc3FydChkYXRhWzJdKSAvIDVlMjsKICAgICAgfSwKICAgICAgZW1waGFzaXM6IHsKICAgICAgICBmb2N1czogJ3NlcmllcycsCiAgICAgICAgbGFiZWw6IHsKICAgICAgICAgIHNob3c6IHRydWUsCiAgICAgICAgICBmb3JtYXR0ZXI6IGZ1bmN0aW9uKHBhcmFtKSB7CiAgICAgICAgICAgIHJldHVybiBwYXJhbS5kYXRhWzNdOwogICAgICAgICAgfSwKICAgICAgICAgIHBvc2l0aW9uOiAndG9wJwogICAgICAgIH0KICAgICAgfSwKICAgICAgaXRlbVN0eWxlOiB7CiAgICAgICAgc2hhZG93Qmx1cjogMTAsCiAgICAgICAgc2hhZG93Q29sb3I6ICdyZ2JhKDEyMCwgMzYsIDUwLCAwLjUpJywKICAgICAgICBzaGFkb3dPZmZzZXRZOiA1LAogICAgICAgIGNvbG9yOiB7CiAgICAgICAgICB0eXBlOiAncmFkaWFsJywKICAgICAgICAgIHg6IDAuNCwKICAgICAgICAgIHk6IDAuMywKICAgICAgICAgIHI6IDEsCiAgICAgICAgICBjb2xvclN0b3BzOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBvZmZzZXQ6IDAsCiAgICAgICAgICAgICAgY29sb3I6ICdyZ2IoMjUxLCAxMTgsIDEyMyknCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBvZmZzZXQ6IDEsCiAgICAgICAgICAgICAgY29sb3I6ICdyZ2IoMjA0LCA0NiwgNzIpJwogICAgICAgICAgICB9CiAgICAgICAgICBdCiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgewogICAgICBuYW1lOiAnMjAxNScsCiAgICAgIGRhdGE6IGRhdGFbMV0sCiAgICAgIHR5cGU6ICdzY2F0dGVyJywKICAgICAgc3ltYm9sU2l6ZTogZnVuY3Rpb24oZGF0YSkgewogICAgICAgIHJldHVybiBNYXRoLnNxcnQoZGF0YVsyXSkgLyA1ZTI7CiAgICAgIH0sCiAgICAgIGVtcGhhc2lzOiB7CiAgICAgICAgZm9jdXM6ICdzZXJpZXMnLAogICAgICAgIGxhYmVsOiB7CiAgICAgICAgICBzaG93OiB0cnVlLAogICAgICAgICAgZm9ybWF0dGVyOiBmdW5jdGlvbihwYXJhbSkgewogICAgICAgICAgICByZXR1cm4gcGFyYW0uZGF0YVszXTsKICAgICAgICAgIH0sCiAgICAgICAgICBwb3NpdGlvbjogJ3RvcCcKICAgICAgICB9CiAgICAgIH0sCiAgICAgIGl0ZW1TdHlsZTogewogICAgICAgIHNoYWRvd0JsdXI6IDEwLAogICAgICAgIHNoYWRvd0NvbG9yOiAncmdiYSgyNSwgMTAwLCAxNTAsIDAuNSknLAogICAgICAgIHNoYWRvd09mZnNldFk6IDUsCiAgICAgICAgY29sb3I6IHsKICAgICAgICAgIHR5cGU6ICdyYWRpYWwnLAogICAgICAgICAgeDogMC40LAogICAgICAgICAgeTogMC4zLAogICAgICAgICAgcjogMSwKICAgICAgICAgIGNvbG9yU3RvcHM6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgIG9mZnNldDogMCwKICAgICAgICAgICAgICBjb2xvcjogJ3JnYigxMjksIDIyNywgMjM4KScKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgIG9mZnNldDogMSwKICAgICAgICAgICAgICBjb2xvcjogJ3JnYigyNSwgMTgzLCAyMDcpJwogICAgICAgICAgICB9CiAgICAgICAgICBdCiAgICAgICAgfQogICAgICB9CiAgICB9CiAgXQp9Ow\'" v-bind="{}" />\n<h2 id="style-of-emphasis-state" tabindex="-1">Style of Emphasis State</h2>\n<p>When mouse hovering a graphic elements, usually the emphasis style will be displayed. By default, the emphasis style is auto generated by the normal style. However they can be specified by <a href="https://echarts.apache.org/option.html#series-bar.emphasis">emphasis</a> property. The options in <a href="https://echarts.apache.org/option.html#series-bar.emphasis">emphasis</a> is the same as the ones for normal state, for example:</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIHNlcmllczogewogICAgdHlwZTogJ3NjYXR0ZXInLAoKICAgIC8vIFN0eWxlcyBmb3Igbm9ybWFsIHN0YXRlLgogICAgaXRlbVN0eWxlOiB7CiAgICAgIC8vIENvbG9yIG9mIHRoZSBwb2ludC4KICAgICAgY29sb3I6ICdyZWQnCiAgICB9LAogICAgbGFiZWw6IHsKICAgICAgc2hvdzogdHJ1ZSwKICAgICAgLy8gVGV4dCBvZiBsYWJlbHMuCiAgICAgIGZvcm1hdHRlcjogJ1RoaXMgaXMgYSBub3JtYWwgbGFiZWwuJwogICAgfSwKCiAgICAvLyBTdHlsZXMgZm9yIGVtcGhhc2lzIHN0YXRlLgogICAgZW1waGFzaXM6IHsKICAgICAgaXRlbVN0eWxlOiB7CiAgICAgICAgLy8gQ29sb3IgaW4gZW1waGFzaXMgc3RhdGUuCiAgICAgICAgY29sb3I6ICdibHVlJwogICAgICB9LAogICAgICBsYWJlbDogewogICAgICAgIHNob3c6IHRydWUsCiAgICAgICAgLy8gVGV4dCBpbiBlbXBoYXNpcy4KICAgICAgICBmb3JtYXR0ZXI6ICdUaGlzIGlzIGEgZW1waGFzaXMgbGFiZWwuJwogICAgICB9CiAgICB9CiAgfQp9Ow\'" line-highlights="\'\'" />\n<p>Notice: Before ECharts4, the emphasis style should be written like this:</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIHNlcmllczogewogICAgdHlwZTogJ3NjYXR0ZXInLAoKICAgIGl0ZW1TdHlsZTogewogICAgICAvLyBTdHlsZXMgZm9yIG5vcm1hbCBzdGF0ZS4KICAgICAgbm9ybWFsOiB7CiAgICAgICAgY29sb3I6ICdyZWQnCiAgICAgIH0sCiAgICAgIC8vIFN0eWxlcyBmb3IgZW1waGFzaXMgc3RhdGUuCiAgICAgIGVtcGhhc2lzOiB7CiAgICAgICAgY29sb3I6ICdibHVlJwogICAgICB9CiAgICB9LAoKICAgIGxhYmVsOiB7CiAgICAgIC8vIFN0eWxlcyBmb3Igbm9ybWFsIHN0YXRlLgogICAgICBub3JtYWw6IHsKICAgICAgICBzaG93OiB0cnVlLAogICAgICAgIGZvcm1hdHRlcjogJ1RoaXMgaXMgYSBub3JtYWwgbGFiZWwuJwogICAgICB9LAogICAgICAvLyBTdHlsZXMgZm9yIGVtcGhhc2lzIHN0YXRlLgogICAgICBlbXBoYXNpczogewogICAgICAgIHNob3c6IHRydWUsCiAgICAgICAgZm9ybWF0dGVyOiAnVGhpcyBpcyBhIGVtcGhhc2lzIGxhYmVsLicKICAgICAgfQogICAgfQogIH0KfTs\'" line-highlights="\'\'" />\n<p>The option format is still <strong>compatible</strong>, but not recommended. In fact, in most cases, users only set normal style, and use the default emphasis style. So since ECharts4, we support to write style without the &quot;normal&quot; term, which makes the option more simple and neat.</p>\n<h2 id="visual-encoding-by-visualmap-component" tabindex="-1">Visual Encoding by visualMap Component</h2>\n<p><a href="https://echarts.apache.org/option.html#visualMap">visualMap component</a> supports config the rule that mapping value to visual channel (color, size, ...). More details can be check in <a href="en/concepts/visual-map/">Visual Map of Data</a>.</p>\n',postPath:"en/concepts/style",title:"Style - Concepts"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:t},{title:"入门篇",dir:I,children:[{title:"获取 ECharts",dir:C},{title:"在项目中引入 ECharts",dir:A},{title:"资源列表",dir:l,draft:i},{title:"寻求帮助",dir:a},{title:"版本特性",dir:o,children:[{title:"ECharts 6 特性介绍",dir:s},{title:"v5 升级 v6 指南",dir:d},{title:"5.0",dir:r},{title:"v4 升级 v5 指南",dir:n},{title:5.2,dir:c},{title:5.3,dir:h},{title:5.4,dir:w},{title:5.5,dir:p},{title:5.6,dir:y}]}]},{title:"概念篇",dir:m,children:[{title:"图表容器及大小",dir:b},{title:"配置项",dir:M,draft:i},{title:"系列",dir:N,draft:i},{title:"样式",dir:u},{title:"数据集",dir:B},{title:"数据转换",dir:z},{title:"坐标系",dir:L,draft:i},{title:"坐标轴",dir:Z},{title:"视觉映射",dir:g},{title:"图例",dir:G},{title:"事件与行为",dir:S}]},{title:"应用篇",dir:T,children:[{title:"常用图表类型",dir:D,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:Y},{title:"堆叠柱状图",dir:O},{title:"动态排序柱状图",dir:J},{title:"极坐标系柱状图",dir:v,draft:i},{title:"阶梯瀑布图",dir:W},{title:"视觉映射的柱状图",dir:g,draft:i}]},{title:"折线图",dir:f,children:[{title:"基础折线图",dir:x},{title:"堆叠折线图",dir:X},{title:"区域面积图",dir:K},{title:"平滑曲线图",dir:j},{title:"阶梯线图",dir:k}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:H},{title:"圆环图",dir:F},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:E,children:[{title:"基础散点图",dir:R}]}]},{title:"常用组件",dir:V,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:U}]}]},{title:"移动端优化",dir:e,draft:i},{title:"跨平台方案",dir:Q,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:P},{title:"数据下钻",dir:q,draft:i}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:_}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:ii}]},{title:"交互",dir:ei,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:gi,draft:i},{title:"智能指针吸附",dir:ti}]}]},{title:"最佳实践",dir:Ii,children:[{title:"移动端优化",dir:e,draft:i},{title:Ci,dir:Ai},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:li}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:ai}]}],en:[{title:"Get Started",dir:t},{title:"Basics",dir:I,children:[{title:"Download ECharts",dir:C},{title:"Import ECharts",dir:A},{title:"Resources",dir:l,draft:i},{title:"Get Help",dir:a},{title:"What's New",dir:o,children:[{title:"ECharts 6 Features",dir:s},{title:"Migration from v5 to v6",dir:d},{title:"5.0",dir:r},{title:"Migration from v4 to v5",dir:n},{title:5.2,dir:c},{title:5.3,dir:h},{title:5.4,dir:w},{title:5.5,dir:p},{title:5.6,dir:y}]}]},{title:"Concepts",dir:m,children:[{title:"Chart Container",dir:b},{title:"Chart Option",dir:M,draft:i},{title:"Series",dir:N,draft:i},{title:"Style",dir:u},{title:"Dataset",dir:B},{title:"Data Transform",dir:z},{title:"Coordinate",dir:L,draft:i},{title:"Axis",dir:Z},{title:"Visual Mapping",dir:g},{title:"Legend",dir:G},{title:"Event and Action",dir:S}]},{title:"How To Guides",dir:T,children:[{title:"Common Charts",dir:D,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:Y},{title:"Stacked Bar",dir:O},{title:"Bar Racing",dir:J},{title:"Bar Polar",dir:v,draft:i},{title:"Waterfall",dir:W}]},{title:"Line",dir:f,children:[{title:"Basic Line",dir:x},{title:"Stacked Line",dir:X},{title:"Area Chart",dir:K},{title:"Smoothed Line",dir:j},{title:"Step Line",dir:k}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:H},{title:"Ring Style",dir:F},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:E,children:[{title:"Basic Scatter",dir:R}]}]},{title:"Common Components",dir:V,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:U}]}]},{title:"Mobile",dir:e,draft:i},{title:"Cross Platform",dir:Q,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:P},{title:"Drilldown",dir:q,draft:i}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:_}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:ii}]},{title:"Interaction",dir:ei,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:gi,draft:i},{title:"Intelligent Pointer Snapping",dir:ti}]}]},{title:"Best Practices",dir:Ii,children:[{title:"Mobile Optimization",dir:e,draft:i},{title:Ci,dir:Ai},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:li}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:ai}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:i,routePath:"/en/concepts/style",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/en/concepts/visual-map/index.html b/docs/en/concepts/visual-map/index.html
new file mode 100644
index 0000000..c550f54
--- /dev/null
+++ b/docs/en/concepts/visual-map/index.html
@@ -0,0 +1,79 @@
+<!doctype html>
+<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Visual Mapping - Concepts - Handbook - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="en"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/en/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/en/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/en/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/en/index.html" class="navbar-brand"><img src="https://echarts.apache.org/en/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/en/index.html">Home</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Docs<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/feature.html">Features</a></li><li><a href="https://echarts.apache.org/handbook/en/get-started/">Handbook</a></li><li><a href="https://echarts.apache.org/en/api.html">API</a></li><li><a href="https://echarts.apache.org/en/option.html">Chart Configuration</a></li><li><a href="https://echarts.apache.org/en/changelog.html">Changelog</a></li><li><a href="https://echarts.apache.org/en/faq.html">FAQ</a></li><li><a href="https://echarts.apache.org/handbook/en/basics/release-note/v6-upgrade-guide">V6 Upgrade Guide</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Download<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/download.html">Download</a></li><li><a href="https://echarts.apache.org/en/download-theme.html">Download Themes</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">Download Custom Series<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/download-extension.html">Download Extensions</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/en/index.html">Examples</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Resources<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/spreadsheet.html">Spread Sheet Tool</a></li><li><a href="https://echarts.apache.org/en/theme-builder.html">Theme Builder</a></li><li><a href="https://echarts.apache.org/en/cheat-sheet.html">Cheat Sheet</a></li><li><a href="https://echarts.apache.org/en/resources.html">More Resources</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/events.html">Events</a></li><li><a href="https://echarts.apache.org/en/committers.html">Committers</a></li><li><a href="https://echarts.apache.org/en/maillist.html">Mailing List</a></li><li><a href="https://echarts.apache.org/en/contributing.html">How to Contribute</a></li><li><a href="https://echarts.apache.org/en/dependencies.html">Dependencies</a></li><li><a href="https://echarts.apache.org/en/coding-standard.html">Code Standard</a></li><li><a href="https://github.com/apache/echarts" target="_blank">Source Code (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/security.html">Security</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">License<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">Events<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("zh")'>中文</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/en/get-started" class="nav-link"><span class="title">Get Started</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Basics</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/basics/download" class="nav-link"><span class="title">Download ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/import" class="nav-link"><span class="title">Import ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/basics/help" class="nav-link"><span class="title">Get Help</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">What's New</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 Features</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">Migration from v5 to v6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">Migration from v4 to v5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Concepts</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/concepts/chart-size" class="nav-link"><span class="title">Chart Container</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/style" class="nav-link"><span class="title">Style</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/dataset" class="nav-link"><span class="title">Dataset</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/data-transform" class="nav-link"><span class="title">Data Transform</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/axis" class="nav-link"><span class="title">Axis</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/visual-map" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">Visual Mapping</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/legend" class="nav-link"><span class="title">Legend</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/event" class="nav-link"><span class="title">Event and Action</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">How To Guides</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">Common Charts</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Bar</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">Basic Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">Stacked Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">Bar Racing</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">Waterfall</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Line</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">Basic Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">Stacked Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/area-line" class="nav-link"><span class="title">Area Chart</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">Smoothed Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/step-line" class="nav-link"><span class="title">Step Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Pie</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">Basic Pie</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">Ring Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/rose" class="nav-link"><span class="title">Rose Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Scatter</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">Basic Scatter</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Common Components</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Geo</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG Base Map</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">Cross Platform</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/cross-platform/server" class="nav-link"><span class="title">Server Side Rendering</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Data</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/data/dynamic-data" class="nav-link"><span class="title">Dynamic Data</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Label</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/label/rich-text" class="nav-link"><span class="title">Rich Text</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Animation</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/animation/transition" class="nav-link"><span class="title">Data Transition</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Interaction</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/drag" class="nav-link"><span class="title">Drag</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">Intelligent Pointer Snapping</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Best Practices</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/en/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/aria" class="nav-link"><span class="title">Aria</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/security" class="nav-link"><span class="title">Security Guidelines</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Edit Handbook</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/meta/edit-guide" class="nav-link"><span class="title">Edit Guide</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="visual-map-of-data" tabindex="-1">Visual Map of Data</h1> <p>Data visualization is a procedure of mapping data into visual elements. This procedure can also be called visual coding, and visual elements can also be called visual channels.</p> <p>Every type of charts in Apache ECharts<sup>TM</sup> has this built-in mapping procedure. For example, line chart map data into <em>lines</em>, bar chart map data into <em>height</em>. Some more complicated charts, like <code>graph</code>, <code>themeRiver</code>, and <code>treemap</code> have their own built-in mapping.</p> <p>Besides, ECharts provides <a href="https://echarts.apache.org/option.html#visualMap">visualMap component</a> for general visual mapping. Visual elements allowed in <code>visualMap</code> component are:</p> <ul><li><code>symbol</code>, <code>symbolSize</code></li> <li><code>color</code>, <code>opacity</code>, <code>colorAlpha</code>,</li> <li><code>colorLightness</code>, <code>colorSaturation</code>, <code>colorHue</code></li></ul> <p>Next, we are going to introduce how to use <code>visualMap</code> component.</p> <h2 id="data-and-dimension" tabindex="-1">Data and Dimension</h2> <p>Data are usually stored in <a href="https://echarts.apache.org/option.html#series.data">series.data</a> in ECharts. Depending on chart types, like list, tree, graph, and so on, the form of data may vary somehow. But they have one common feature, that they are a collection of data items. Every data item contains data value, and other information if needed. Every data value can be a single value (one dimension) or an array (multiple dimensions).</p> <p>For example, <a href="https://echarts.apache.org/option.html#series.data">series.data</a> is the most common form, which is a <code>list</code>, a common array:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token comment">// every item here is a dataItem</span>
+      <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">2323</span><span class="token punctuation">,</span> <span class="token comment">// this is data value</span>
+      <span class="token literal-property property">itemStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token number">1212</span><span class="token punctuation">,</span> <span class="token comment">// it can also be a value of dataItem, which is a more common case</span>
+    <span class="token number">2323</span><span class="token punctuation">,</span> <span class="token comment">// every data value here is one dimension</span>
+    <span class="token number">4343</span><span class="token punctuation">,</span>
+    <span class="token number">3434</span>
+  <span class="token punctuation">]</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token comment">// every item here is a dataItem</span>
+      <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">3434</span><span class="token punctuation">,</span> <span class="token number">129</span><span class="token punctuation">,</span> <span class="token string">'San Marino'</span><span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token comment">// this is data value</span>
+      <span class="token literal-property property">itemStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">1212</span><span class="token punctuation">,</span> <span class="token number">5454</span><span class="token punctuation">,</span> <span class="token string">'Vatican'</span><span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token comment">// it can also be a value of dataItem, which is a more common case</span>
+    <span class="token punctuation">[</span><span class="token number">2323</span><span class="token punctuation">,</span> <span class="token number">3223</span><span class="token punctuation">,</span> <span class="token string">'Nauru'</span><span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token comment">// every data value here is three dimension</span>
+    <span class="token punctuation">[</span><span class="token number">4343</span><span class="token punctuation">,</span> <span class="token number">23</span><span class="token punctuation">,</span> <span class="token string">'Tuvalu'</span><span class="token punctuation">]</span> <span class="token comment">// If is scatter chart, usually map the first dimension to x axis,</span>
+    <span class="token comment">// the second dimension to y axis,</span>
+    <span class="token comment">// and the third dimension to symbolSize</span>
+  <span class="token punctuation">]</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>Usually the first one or two dimensions are used for mapping. For example, map the first dimension to x axis, and the second dimension to y axis. If you want to represent more dimensions, <code>visualMap</code> is what you need. Most likely, <a href="https://echarts.apache.org/option.html#series-scatter">scatter charts</a> use radius to represent the third dimension.</p> <h2 id="the-visualmap-component" tabindex="-1">The visualMap Component</h2> <p>visualMap component defines the mapping from <em>which dimension of data</em> to <em>what visual elements</em>.</p> <p>The following two types of visualMap components are supported, identified with <a href="https://echarts.apache.org/option.html#visualMap.type">visualMap.type</a>.</p> <p>Its structure is defined as:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">visualMap</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token comment">// can define multiple visualMap components at the same time</span>
+    <span class="token punctuation">{</span>
+      <span class="token comment">// the first visualMap component</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'continuous'</span> <span class="token comment">// defined as continuous visualMap</span>
+      <span class="token comment">// ...</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token comment">// the second visualMap component</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'piecewise'</span> <span class="token comment">// defined as discrete visualMap</span>
+      <span class="token comment">// ...</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+  <span class="token comment">// ...</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="continuous-and-piecewise-visual-mapping-components" tabindex="-1">Continuous and Piecewise Visual Mapping Components</h2> <p>The visual mapping component of ECharts is divided into continuous (<a href="https://echarts.apache.org/option.html#visualMap-continuous">visualMapContinuous</a>) and piecewise (<a href="https://echarts.apache.org/option.html#visualMap-piecewise">visualMapPiecewise</a>).</p> <p>Continuous means that the data dimension for visual mapping is a continuous value, while piecewise means that the data is divided into multiple segments or discrete data.</p> <h3 id="continuous-visual-mapping" tabindex="-1">Continuous Visual Mapping</h3> <p>Continuous type visual mapping can determine the range of visual mapping by specifying the maximum and minimum values.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">visualMap</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'continuous'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">min</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">max</span><span class="token operator">:</span> <span class="token number">5000</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">dimension</span><span class="token operator">:</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token comment">// the fourth dimension of series.data (i.e. value[3]) is mapped</span>
+      <span class="token literal-property property">seriesIndex</span><span class="token operator">:</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token comment">// The fourth series is mapped.</span>
+      <span class="token literal-property property">inRange</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token comment">// The visual configuration in the selected range</span>
+        <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'blue'</span><span class="token punctuation">,</span> <span class="token string">'#121122'</span><span class="token punctuation">,</span> <span class="token string">'red'</span><span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token comment">// A list of colors that defines the graph color mapping</span>
+        <span class="token comment">// the minimum value of the data is mapped to 'blue', and</span>
+        <span class="token comment">// the maximum value is mapped to 'red', // the maximum value is mapped to 'red', // the maximum value is mapped to 'red'.</span>
+        <span class="token comment">// The rest is automatically calculated linearly.</span>
+        <span class="token literal-property property">symbolSize</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">30</span><span class="token punctuation">,</span> <span class="token number">100</span><span class="token punctuation">]</span> <span class="token comment">// Defines the mapping range for the graphic size.</span>
+        <span class="token comment">// The minimum value of the data is mapped to 30, // and the maximum value is mapped to 100.</span>
+        <span class="token comment">// The maximum value is mapped to 100.</span>
+        <span class="token comment">// The rest is calculated linearly automatically.</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">outOfRange</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token comment">// Check the out of range visual configuration</span>
+        <span class="token literal-property property">symbolSize</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">30</span><span class="token punctuation">,</span> <span class="token number">100</span><span class="token punctuation">]</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+    <span class="token comment">// ...</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>where <a href="https://echarts.apache.org/option.html#visualMap.inRange">visualMap.inRange</a> indicates the style used for data within the data mapping range; while <a href="https://echarts.apache.org/option.html#visualMap.outOfRange">visualMap.outOfRange</a> specifies the style for data outside the mapping range.</p> <p><a href="~visualMap.dimension">visualMap.dimension</a> specifies which dimension of the data will be visually mapped.</p> <h3 id="piecewise-visual-mapping" tabindex="-1">Piecewise Visual Mapping</h3> <p>The piecewise visual mapping component has three modes.</p> <ul><li>Continuous data average segmentation: based on <a href="https://echarts.apache.org/option.html#visualMap-piecewise.splitNumber">visualMap-piecewise.splitNumber</a> to automatically split the data into pieces equally.</li> <li>Continuous data custom segmentation: define the range of each piece based on <a href="https://echarts.apache.org/option.html#visualMap-piecewise.pieces">visualMap-piecewise.pieces</a>.</li> <li>Discrete data (categorical data): categories are defined in <a href="https://echarts.apache.org/option.html#visualMap-piecewise.categories">visualMap-piecewise.categories</a>.</li></ul> <p>To use segmented visual map, you need to set <code>type</code> to <code>'piecewise'</code> and choose one of the above three configuration items.</p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">Contributors</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/en/concepts/visual-map.md" title="Edit this Document" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">Edit this page on GitHub</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/KrzysztofMadejski" target="_blank" class="post-contributor"><!----> <span>KrzysztofMadejski</span></a><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(e,i,t,a,d,l,r,o,n,s,g,c,h,p,m,I,u,C,b,v,A,B,G,y,W,w,f,Z,M,S,Y,V,X,R,F,H,L,x,k,z,N,E,U,T,D,Q,j,J,P,K,O,_,$,q,ee,ie,te,ae,de,le,re,oe,ne){return{layout:"default",data:[{html:'<h1 id="visual-map-of-data" tabindex="-1">Visual Map of Data</h1>\n<p>Data visualization is a procedure of mapping data into visual elements. This procedure can also be called visual coding, and visual elements can also be called visual channels.</p>\n<p>Every type of charts in Apache ECharts<sup>TM</sup> has this built-in mapping procedure. For example, line chart map data into <em>lines</em>, bar chart map data into <em>height</em>. Some more complicated charts, like <code>graph</code>, <code>themeRiver</code>, and <code>treemap</code> have their own built-in mapping.</p>\n<p>Besides, ECharts provides <a href="https://echarts.apache.org/option.html#visualMap">visualMap component</a> for general visual mapping. Visual elements allowed in <code>visualMap</code> component are:</p>\n<ul>\n<li><code>symbol</code>, <code>symbolSize</code></li>\n<li><code>color</code>, <code>opacity</code>, <code>colorAlpha</code>,</li>\n<li><code>colorLightness</code>, <code>colorSaturation</code>, <code>colorHue</code></li>\n</ul>\n<p>Next, we are going to introduce how to use <code>visualMap</code> component.</p>\n<h2 id="data-and-dimension" tabindex="-1">Data and Dimension</h2>\n<p>Data are usually stored in <a href="https://echarts.apache.org/option.html#series.data">series.data</a> in ECharts. Depending on chart types, like list, tree, graph, and so on, the form of data may vary somehow. But they have one common feature, that they are a collection of data items. Every data item contains data value, and other information if needed. Every data value can be a single value (one dimension) or an array (multiple dimensions).</p>\n<p>For example, <a href="https://echarts.apache.org/option.html#series.data">series.data</a> is the most common form, which is a <code>list</code>, a common array:</p>\n<md-code-block lang="js" code="\'c2VyaWVzOiB7CiAgZGF0YTogWwogICAgewogICAgICAvLyBldmVyeSBpdGVtIGhlcmUgaXMgYSBkYXRhSXRlbQogICAgICB2YWx1ZTogMjMyMywgLy8gdGhpcyBpcyBkYXRhIHZhbHVlCiAgICAgIGl0ZW1TdHlsZToge30KICAgIH0sCiAgICAxMjEyLCAvLyBpdCBjYW4gYWxzbyBiZSBhIHZhbHVlIG9mIGRhdGFJdGVtLCB3aGljaCBpcyBhIG1vcmUgY29tbW9uIGNhc2UKICAgIDIzMjMsIC8vIGV2ZXJ5IGRhdGEgdmFsdWUgaGVyZSBpcyBvbmUgZGltZW5zaW9uCiAgICA0MzQzLAogICAgMzQzNAogIF07Cn0\'" line-highlights="\'\'" />\n<md-code-block lang="js" code="\'c2VyaWVzOiB7CiAgZGF0YTogWwogICAgewogICAgICAvLyBldmVyeSBpdGVtIGhlcmUgaXMgYSBkYXRhSXRlbQogICAgICB2YWx1ZTogWzM0MzQsIDEyOSwgJ1NhbiBNYXJpbm8nXSwgLy8gdGhpcyBpcyBkYXRhIHZhbHVlCiAgICAgIGl0ZW1TdHlsZToge30KICAgIH0sCiAgICBbMTIxMiwgNTQ1NCwgJ1ZhdGljYW4nXSwgLy8gaXQgY2FuIGFsc28gYmUgYSB2YWx1ZSBvZiBkYXRhSXRlbSwgd2hpY2ggaXMgYSBtb3JlIGNvbW1vbiBjYXNlCiAgICBbMjMyMywgMzIyMywgJ05hdXJ1J10sIC8vIGV2ZXJ5IGRhdGEgdmFsdWUgaGVyZSBpcyB0aHJlZSBkaW1lbnNpb24KICAgIFs0MzQzLCAyMywgJ1R1dmFsdSddIC8vIElmIGlzIHNjYXR0ZXIgY2hhcnQsIHVzdWFsbHkgbWFwIHRoZSBmaXJzdCBkaW1lbnNpb24gdG8geCBheGlzLAogICAgLy8gdGhlIHNlY29uZCBkaW1lbnNpb24gdG8geSBheGlzLAogICAgLy8gYW5kIHRoZSB0aGlyZCBkaW1lbnNpb24gdG8gc3ltYm9sU2l6ZQogIF07Cn0\'" line-highlights="\'\'" />\n<p>Usually the first one or two dimensions are used for mapping. For example, map the first dimension to x axis, and the second dimension to y axis. If you want to represent more dimensions, <code>visualMap</code> is what you need. Most likely, <a href="https://echarts.apache.org/option.html#series-scatter">scatter charts</a> use radius to represent the third dimension.</p>\n<h2 id="the-visualmap-component" tabindex="-1">The visualMap Component</h2>\n<p>visualMap component defines the mapping from <em>which dimension of data</em> to <em>what visual elements</em>.</p>\n<p>The following two types of visualMap components are supported, identified with <a href="https://echarts.apache.org/option.html#visualMap.type">visualMap.type</a>.</p>\n<p>Its structure is defined as:</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIHZpc3VhbE1hcDogWwogICAgLy8gY2FuIGRlZmluZSBtdWx0aXBsZSB2aXN1YWxNYXAgY29tcG9uZW50cyBhdCB0aGUgc2FtZSB0aW1lCiAgICB7CiAgICAgIC8vIHRoZSBmaXJzdCB2aXN1YWxNYXAgY29tcG9uZW50CiAgICAgIHR5cGU6ICdjb250aW51b3VzJyAvLyBkZWZpbmVkIGFzIGNvbnRpbnVvdXMgdmlzdWFsTWFwCiAgICAgIC8vIC4uLgogICAgfSwKICAgIHsKICAgICAgLy8gdGhlIHNlY29uZCB2aXN1YWxNYXAgY29tcG9uZW50CiAgICAgIHR5cGU6ICdwaWVjZXdpc2UnIC8vIGRlZmluZWQgYXMgZGlzY3JldGUgdmlzdWFsTWFwCiAgICAgIC8vIC4uLgogICAgfQogIF0KICAvLyAuLi4KfTs\'" line-highlights="\'\'" />\n<h2 id="continuous-and-piecewise-visual-mapping-components" tabindex="-1">Continuous and Piecewise Visual Mapping Components</h2>\n<p>The visual mapping component of ECharts is divided into continuous (<a href="https://echarts.apache.org/option.html#visualMap-continuous">visualMapContinuous</a>) and piecewise (<a href="https://echarts.apache.org/option.html#visualMap-piecewise">visualMapPiecewise</a>).</p>\n<p>Continuous means that the data dimension for visual mapping is a continuous value, while piecewise means that the data is divided into multiple segments or discrete data.</p>\n<h3 id="continuous-visual-mapping" tabindex="-1">Continuous Visual Mapping</h3>\n<p>Continuous type visual mapping can determine the range of visual mapping by specifying the maximum and minimum values.</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIHZpc3VhbE1hcDogWwogICAgewogICAgICB0eXBlOiAnY29udGludW91cycsCiAgICAgIG1pbjogMCwKICAgICAgbWF4OiA1MDAwLAogICAgICBkaW1lbnNpb246IDMsIC8vIHRoZSBmb3VydGggZGltZW5zaW9uIG9mIHNlcmllcy5kYXRhIChpLmUuIHZhbHVlWzNdKSBpcyBtYXBwZWQKICAgICAgc2VyaWVzSW5kZXg6IDQsIC8vIFRoZSBmb3VydGggc2VyaWVzIGlzIG1hcHBlZC4KICAgICAgaW5SYW5nZTogewogICAgICAgIC8vIFRoZSB2aXN1YWwgY29uZmlndXJhdGlvbiBpbiB0aGUgc2VsZWN0ZWQgcmFuZ2UKICAgICAgICBjb2xvcjogWydibHVlJywgJyMxMjExMjInLCAncmVkJ10sIC8vIEEgbGlzdCBvZiBjb2xvcnMgdGhhdCBkZWZpbmVzIHRoZSBncmFwaCBjb2xvciBtYXBwaW5nCiAgICAgICAgLy8gdGhlIG1pbmltdW0gdmFsdWUgb2YgdGhlIGRhdGEgaXMgbWFwcGVkIHRvICdibHVlJywgYW5kCiAgICAgICAgLy8gdGhlIG1heGltdW0gdmFsdWUgaXMgbWFwcGVkIHRvICdyZWQnLCAvLyB0aGUgbWF4aW11bSB2YWx1ZSBpcyBtYXBwZWQgdG8gJ3JlZCcsIC8vIHRoZSBtYXhpbXVtIHZhbHVlIGlzIG1hcHBlZCB0byAncmVkJy4KICAgICAgICAvLyBUaGUgcmVzdCBpcyBhdXRvbWF0aWNhbGx5IGNhbGN1bGF0ZWQgbGluZWFybHkuCiAgICAgICAgc3ltYm9sU2l6ZTogWzMwLCAxMDBdIC8vIERlZmluZXMgdGhlIG1hcHBpbmcgcmFuZ2UgZm9yIHRoZSBncmFwaGljIHNpemUuCiAgICAgICAgLy8gVGhlIG1pbmltdW0gdmFsdWUgb2YgdGhlIGRhdGEgaXMgbWFwcGVkIHRvIDMwLCAvLyBhbmQgdGhlIG1heGltdW0gdmFsdWUgaXMgbWFwcGVkIHRvIDEwMC4KICAgICAgICAvLyBUaGUgbWF4aW11bSB2YWx1ZSBpcyBtYXBwZWQgdG8gMTAwLgogICAgICAgIC8vIFRoZSByZXN0IGlzIGNhbGN1bGF0ZWQgbGluZWFybHkgYXV0b21hdGljYWxseS4KICAgICAgfSwKICAgICAgb3V0T2ZSYW5nZTogewogICAgICAgIC8vIENoZWNrIHRoZSBvdXQgb2YgcmFuZ2UgdmlzdWFsIGNvbmZpZ3VyYXRpb24KICAgICAgICBzeW1ib2xTaXplOiBbMzAsIDEwMF0KICAgICAgfQogICAgfQogICAgLy8gLi4uCiAgXQp9Ow\'" line-highlights="\'\'" />\n<p>where <a href="https://echarts.apache.org/option.html#visualMap.inRange">visualMap.inRange</a> indicates the style used for data within the data mapping range; while <a href="https://echarts.apache.org/option.html#visualMap.outOfRange">visualMap.outOfRange</a> specifies the style for data outside the mapping range.</p>\n<p><a href="~visualMap.dimension">visualMap.dimension</a> specifies which dimension of the data will be visually mapped.</p>\n<h3 id="piecewise-visual-mapping" tabindex="-1">Piecewise Visual Mapping</h3>\n<p>The piecewise visual mapping component has three modes.</p>\n<ul>\n<li>Continuous data average segmentation: based on <a href="https://echarts.apache.org/option.html#visualMap-piecewise.splitNumber">visualMap-piecewise.splitNumber</a> to automatically split the data into pieces equally.</li>\n<li>Continuous data custom segmentation: define the range of each piece based on <a href="https://echarts.apache.org/option.html#visualMap-piecewise.pieces">visualMap-piecewise.pieces</a>.</li>\n<li>Discrete data (categorical data): categories are defined in <a href="https://echarts.apache.org/option.html#visualMap-piecewise.categories">visualMap-piecewise.categories</a>.</li>\n</ul>\n<p>To use segmented visual map, you need to set <code>type</code> to <code>\'piecewise\'</code> and choose one of the above three configuration items.</p>\n',postPath:"en/concepts/visual-map",title:"Visual Mapping - Concepts"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:a},{title:"入门篇",dir:d,children:[{title:"获取 ECharts",dir:l},{title:"在项目中引入 ECharts",dir:r},{title:"资源列表",dir:o,draft:e},{title:"寻求帮助",dir:n},{title:"版本特性",dir:s,children:[{title:"ECharts 6 特性介绍",dir:g},{title:"v5 升级 v6 指南",dir:c},{title:"5.0",dir:h},{title:"v4 升级 v5 指南",dir:p},{title:5.2,dir:m},{title:5.3,dir:I},{title:5.4,dir:u},{title:5.5,dir:C},{title:5.6,dir:b}]}]},{title:"概念篇",dir:v,children:[{title:"图表容器及大小",dir:A},{title:"配置项",dir:B,draft:e},{title:"系列",dir:G,draft:e},{title:"样式",dir:y},{title:"数据集",dir:W},{title:"数据转换",dir:w},{title:"坐标系",dir:f,draft:e},{title:"坐标轴",dir:Z},{title:"视觉映射",dir:t},{title:"图例",dir:M},{title:"事件与行为",dir:S}]},{title:"应用篇",dir:Y,children:[{title:"常用图表类型",dir:V,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:X},{title:"堆叠柱状图",dir:R},{title:"动态排序柱状图",dir:F},{title:"极坐标系柱状图",dir:H,draft:e},{title:"阶梯瀑布图",dir:L},{title:"视觉映射的柱状图",dir:t,draft:e}]},{title:"折线图",dir:x,children:[{title:"基础折线图",dir:k},{title:"堆叠折线图",dir:z},{title:"区域面积图",dir:N},{title:"平滑曲线图",dir:E},{title:"阶梯线图",dir:U}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:T},{title:"圆环图",dir:D},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:Q,children:[{title:"基础散点图",dir:j}]}]},{title:"常用组件",dir:J,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:P}]}]},{title:"移动端优化",dir:i,draft:e},{title:"跨平台方案",dir:K,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:O},{title:"数据下钻",dir:_,draft:e}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:$}]},{title:"动画",dir:q,children:[{title:"数据过渡动画",dir:ee}]},{title:"交互",dir:ie,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:te,draft:e},{title:"智能指针吸附",dir:ae}]}]},{title:"最佳实践",dir:de,children:[{title:"移动端优化",dir:i,draft:e},{title:le,dir:re},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:oe}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:ne}]}],en:[{title:"Get Started",dir:a},{title:"Basics",dir:d,children:[{title:"Download ECharts",dir:l},{title:"Import ECharts",dir:r},{title:"Resources",dir:o,draft:e},{title:"Get Help",dir:n},{title:"What's New",dir:s,children:[{title:"ECharts 6 Features",dir:g},{title:"Migration from v5 to v6",dir:c},{title:"5.0",dir:h},{title:"Migration from v4 to v5",dir:p},{title:5.2,dir:m},{title:5.3,dir:I},{title:5.4,dir:u},{title:5.5,dir:C},{title:5.6,dir:b}]}]},{title:"Concepts",dir:v,children:[{title:"Chart Container",dir:A},{title:"Chart Option",dir:B,draft:e},{title:"Series",dir:G,draft:e},{title:"Style",dir:y},{title:"Dataset",dir:W},{title:"Data Transform",dir:w},{title:"Coordinate",dir:f,draft:e},{title:"Axis",dir:Z},{title:"Visual Mapping",dir:t},{title:"Legend",dir:M},{title:"Event and Action",dir:S}]},{title:"How To Guides",dir:Y,children:[{title:"Common Charts",dir:V,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:X},{title:"Stacked Bar",dir:R},{title:"Bar Racing",dir:F},{title:"Bar Polar",dir:H,draft:e},{title:"Waterfall",dir:L}]},{title:"Line",dir:x,children:[{title:"Basic Line",dir:k},{title:"Stacked Line",dir:z},{title:"Area Chart",dir:N},{title:"Smoothed Line",dir:E},{title:"Step Line",dir:U}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:T},{title:"Ring Style",dir:D},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:Q,children:[{title:"Basic Scatter",dir:j}]}]},{title:"Common Components",dir:J,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:P}]}]},{title:"Mobile",dir:i,draft:e},{title:"Cross Platform",dir:K,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:O},{title:"Drilldown",dir:_,draft:e}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:$}]},{title:"Animation",dir:q,children:[{title:"Data Transition",dir:ee}]},{title:"Interaction",dir:ie,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:te,draft:e},{title:"Intelligent Pointer Snapping",dir:ae}]}]},{title:"Best Practices",dir:de,children:[{title:"Mobile Optimization",dir:i,draft:e},{title:le,dir:re},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:oe}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:ne}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:e,routePath:"/en/concepts/visual-map",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/en/get-started/index.html b/docs/en/get-started/index.html
new file mode 100644
index 0000000..b3af2f8
--- /dev/null
+++ b/docs/en/get-started/index.html
@@ -0,0 +1,64 @@
+<!doctype html>
+<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Get Started - Handbook - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="en"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/en/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/en/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/en/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/en/index.html" class="navbar-brand"><img src="https://echarts.apache.org/en/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/en/index.html">Home</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Docs<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/feature.html">Features</a></li><li><a href="https://echarts.apache.org/handbook/en/get-started/">Handbook</a></li><li><a href="https://echarts.apache.org/en/api.html">API</a></li><li><a href="https://echarts.apache.org/en/option.html">Chart Configuration</a></li><li><a href="https://echarts.apache.org/en/changelog.html">Changelog</a></li><li><a href="https://echarts.apache.org/en/faq.html">FAQ</a></li><li><a href="https://echarts.apache.org/handbook/en/basics/release-note/v6-upgrade-guide">V6 Upgrade Guide</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Download<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/download.html">Download</a></li><li><a href="https://echarts.apache.org/en/download-theme.html">Download Themes</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">Download Custom Series<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/download-extension.html">Download Extensions</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/en/index.html">Examples</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Resources<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/spreadsheet.html">Spread Sheet Tool</a></li><li><a href="https://echarts.apache.org/en/theme-builder.html">Theme Builder</a></li><li><a href="https://echarts.apache.org/en/cheat-sheet.html">Cheat Sheet</a></li><li><a href="https://echarts.apache.org/en/resources.html">More Resources</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/events.html">Events</a></li><li><a href="https://echarts.apache.org/en/committers.html">Committers</a></li><li><a href="https://echarts.apache.org/en/maillist.html">Mailing List</a></li><li><a href="https://echarts.apache.org/en/contributing.html">How to Contribute</a></li><li><a href="https://echarts.apache.org/en/dependencies.html">Dependencies</a></li><li><a href="https://echarts.apache.org/en/coding-standard.html">Code Standard</a></li><li><a href="https://github.com/apache/echarts" target="_blank">Source Code (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/security.html">Security</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">License<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">Events<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("zh")'>中文</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/en/get-started" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">Get Started</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Basics</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/basics/download" class="nav-link"><span class="title">Download ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/import" class="nav-link"><span class="title">Import ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/basics/help" class="nav-link"><span class="title">Get Help</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">What's New</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 Features</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">Migration from v5 to v6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">Migration from v4 to v5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Concepts</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/concepts/chart-size" class="nav-link"><span class="title">Chart Container</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/style" class="nav-link"><span class="title">Style</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/dataset" class="nav-link"><span class="title">Dataset</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/data-transform" class="nav-link"><span class="title">Data Transform</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/axis" class="nav-link"><span class="title">Axis</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/visual-map" class="nav-link"><span class="title">Visual Mapping</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/legend" class="nav-link"><span class="title">Legend</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/event" class="nav-link"><span class="title">Event and Action</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">How To Guides</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">Common Charts</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Bar</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">Basic Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">Stacked Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">Bar Racing</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">Waterfall</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Line</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">Basic Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">Stacked Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/area-line" class="nav-link"><span class="title">Area Chart</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">Smoothed Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/step-line" class="nav-link"><span class="title">Step Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Pie</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">Basic Pie</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">Ring Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/rose" class="nav-link"><span class="title">Rose Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Scatter</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">Basic Scatter</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Common Components</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Geo</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG Base Map</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">Cross Platform</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/cross-platform/server" class="nav-link"><span class="title">Server Side Rendering</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Data</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/data/dynamic-data" class="nav-link"><span class="title">Dynamic Data</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Label</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/label/rich-text" class="nav-link"><span class="title">Rich Text</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Animation</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/animation/transition" class="nav-link"><span class="title">Data Transition</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Interaction</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/drag" class="nav-link"><span class="title">Drag</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">Intelligent Pointer Snapping</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Best Practices</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/en/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/aria" class="nav-link"><span class="title">Aria</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/security" class="nav-link"><span class="title">Security Guidelines</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Edit Handbook</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/meta/edit-guide" class="nav-link"><span class="title">Edit Guide</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="get-started" tabindex="-1">Get Started</h1> <h2 id="getting-apache-echarts" tabindex="-1">Getting Apache ECharts</h2> <p>Apache ECharts supports several download methods, which are further explained in the next tutorial <a href="en/basics/download">Installation</a>. Here, we take the example of getting it from the <a href="https://www.jsdelivr.com/package/npm/echarts">jsDelivr</a> CDN and explain how to install it quickly.</p> <p>At <a href="https://www.jsdelivr.com/package/npm/echarts">https://www.jsdelivr.com/package/npm/echarts</a> select <code>dist/echarts.js</code>, click and save it as <code>echarts.js</code> file.</p> <blockquote><p>More information about these files can be found in the next tutorial <a href="en/basics/download">Installation</a>.</p></blockquote> <h2 id="including-echarts" tabindex="-1">Including ECharts</h2> <p>Create a new <code>index.html</code> file in the directory where you just saved <code>echarts.js</code>, with the following content:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-html line-numbers"><code><span class="token doctype"><span class="token punctuation">&lt;!</span><span class="token doctype-tag">DOCTYPE</span> <span class="token name">html</span><span class="token punctuation">></span></span>
+<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>html</span><span class="token punctuation">></span></span>
+  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>head</span><span class="token punctuation">></span></span>
+    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>meta</span> <span class="token attr-name">charset</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>utf-8<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>
+    <span class="token comment">&lt;!-- Include the ECharts file you just downloaded --></span>
+    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>echarts.js<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">></span></span>
+  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>head</span><span class="token punctuation">></span></span>
+<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>html</span><span class="token punctuation">></span></span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>When you open this <code>index.html</code>, you will see an empty page. But don't worry. Open the console and make sure that no error message is reported, then you can proceed to the next step.</p> <h2 id="plotting-a-simple-chart" tabindex="-1">Plotting a Simple Chart</h2> <p>Before drawing we need to prepare a DOM container for ECharts with a defined height and width. Add the following code after the <code>&lt;/head></code> tag introduced earlier.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-html line-numbers"><code><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>body</span><span class="token punctuation">></span></span>
+  <span class="token comment">&lt;!-- Prepare a DOM with a defined width and height for ECharts --></span>
+  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>main<span class="token punctuation">"</span></span> <span class="token special-attr"><span class="token attr-name">style</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token value css language-css"><span class="token property">width</span><span class="token punctuation">:</span> 600px<span class="token punctuation">;</span><span class="token property">height</span><span class="token punctuation">:</span>400px<span class="token punctuation">;</span></span><span class="token punctuation">"</span></span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">></span></span>
+<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>body</span><span class="token punctuation">></span></span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>Then you can initialize an echarts instance with the <a href="https://echarts.apache.org/api.html#echarts.init">echarts.init</a> method and set the echarts instance with <a href="https://echarts.apache.org/api.html#echartsInstance.setOption">setOption</a> method to generate a simple bar chart. Here is the complete code.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-html line-numbers"><code><span class="token doctype"><span class="token punctuation">&lt;!</span><span class="token doctype-tag">DOCTYPE</span> <span class="token name">html</span><span class="token punctuation">></span></span>
+<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>html</span><span class="token punctuation">></span></span>
+  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>head</span><span class="token punctuation">></span></span>
+    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>meta</span> <span class="token attr-name">charset</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>utf-8<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>
+    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>title</span><span class="token punctuation">></span></span>ECharts<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>title</span><span class="token punctuation">></span></span>
+    <span class="token comment">&lt;!-- Include the ECharts file you just downloaded --></span>
+    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>echarts.js<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">></span></span>
+  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>head</span><span class="token punctuation">></span></span>
+  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>body</span><span class="token punctuation">></span></span>
+    <span class="token comment">&lt;!-- Prepare a DOM with a defined width and height for ECharts --></span>
+    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>main<span class="token punctuation">"</span></span> <span class="token special-attr"><span class="token attr-name">style</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token value css language-css"><span class="token property">width</span><span class="token punctuation">:</span> 600px<span class="token punctuation">;</span><span class="token property">height</span><span class="token punctuation">:</span>400px<span class="token punctuation">;</span></span><span class="token punctuation">"</span></span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">></span></span>
+    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>text/javascript<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
+      // Initialize the echarts instance based on the prepared dom
+      var myChart = echarts.init(document.getElementById('main'));
+
+      // Specify the configuration items and data for the chart
+      var option = {
+        title: {
+          text: 'ECharts Getting Started Example'
+        },
+        tooltip: {},
+        legend: {
+          data: ['sales']
+        },
+        xAxis: {
+          data: ['Shirts', 'Cardigans', 'Chiffons', 'Pants', 'Heels', 'Socks']
+        },
+        yAxis: {},
+        series: [
+          {
+            name: 'sales',
+            type: 'bar',
+            data: [5, 20, 36, 10, 10, 20]
+          }
+        ]
+      };
+
+      // Display the chart using the configuration items and data just specified.
+      myChart.setOption(option);
+    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">></span></span>
+  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>body</span><span class="token punctuation">></span></span>
+<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>html</span><span class="token punctuation">></span></span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>And this is your first chart with Apache ECharts!</p> <p><iframe width="100%" height="350" src=""></iframe></p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">Contributors</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/en/get-started.md" title="Edit this Document" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">Edit this page on GitHub</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/plainheart" target="_blank" class="post-contributor has-avatar"><img alt="plainheart" src="https://echarts.apache.org/en/images/people/plainheart.jpg" loading="lazy" decoding="async" fetchpriority="low"> <span>plainheart</span></a><a href="https://github.com/Ovilia" target="_blank" class="post-contributor has-avatar"><img alt="Ovilia" src="https://echarts.apache.org/en/images/people/羡辙.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>Ovilia</span></a><a href="https://github.com/randyl" target="_blank" class="post-contributor"><!----> <span>randyl</span></a><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,i,e,r,d,a,l,n,o,h,c,g,s,p,C,I,A,m,b,G,B,w,u,f,Z,v,P,y,H,D,R,k,S,x,E,F,V,W,N,X,Y,M,L,U,j,J,z,K,T,O,Q,_,q,$,tt,it,et,rt,dt,at,lt,nt,ot,ht){return{layout:"default",data:[{html:'<h1 id="get-started" tabindex="-1">Get Started</h1>\n<h2 id="getting-apache-echarts" tabindex="-1">Getting Apache ECharts</h2>\n<p>Apache ECharts supports several download methods, which are further explained in the next tutorial <a href="en/basics/download">Installation</a>. Here, we take the example of getting it from the <a href="https://www.jsdelivr.com/package/npm/echarts">jsDelivr</a> CDN and explain how to install it quickly.</p>\n<p>At <a href="https://www.jsdelivr.com/package/npm/echarts">https://www.jsdelivr.com/package/npm/echarts</a> select <code>dist/echarts.js</code>, click and save it as <code>echarts.js</code> file.</p>\n<blockquote>\n<p>More information about these files can be found in the next tutorial <a href="en/basics/download">Installation</a>.</p>\n</blockquote>\n<h2 id="including-echarts" tabindex="-1">Including ECharts</h2>\n<p>Create a new <code>index.html</code> file in the directory where you just saved <code>echarts.js</code>, with the following content:</p>\n<md-code-block lang="html" code="\'PCFET0NUWVBFIGh0bWw-CjxodG1sPgogIDxoZWFkPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiIC8-CiAgICA8IS0tIEluY2x1ZGUgdGhlIEVDaGFydHMgZmlsZSB5b3UganVzdCBkb3dubG9hZGVkIC0tPgogICAgPHNjcmlwdCBzcmM9ImVjaGFydHMuanMiPjwvc2NyaXB0PgogIDwvaGVhZD4KPC9odG1sPg\'" line-highlights="\'\'" />\n<p>When you open this <code>index.html</code>, you will see an empty page. But don\'t worry. Open the console and make sure that no error message is reported, then you can proceed to the next step.</p>\n<h2 id="plotting-a-simple-chart" tabindex="-1">Plotting a Simple Chart</h2>\n<p>Before drawing we need to prepare a DOM container for ECharts with a defined height and width. Add the following code after the <code>&lt;/head&gt;</code> tag introduced earlier.</p>\n<md-code-block lang="html" code="\'PGJvZHk-CiAgPCEtLSBQcmVwYXJlIGEgRE9NIHdpdGggYSBkZWZpbmVkIHdpZHRoIGFuZCBoZWlnaHQgZm9yIEVDaGFydHMgLS0-CiAgPGRpdiBpZD0ibWFpbiIgc3R5bGU9IndpZHRoOiA2MDBweDtoZWlnaHQ6NDAwcHg7Ij48L2Rpdj4KPC9ib2R5Pg\'" line-highlights="\'\'" />\n<p>Then you can initialize an echarts instance with the <a href="https://echarts.apache.org/api.html#echarts.init">echarts.init</a> method and set the echarts instance with <a href="https://echarts.apache.org/api.html#echartsInstance.setOption">setOption</a> method to generate a simple bar chart. Here is the complete code.</p>\n<md-code-block lang="html" code="\'PCFET0NUWVBFIGh0bWw-CjxodG1sPgogIDxoZWFkPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiIC8-CiAgICA8dGl0bGU-RUNoYXJ0czwvdGl0bGU-CiAgICA8IS0tIEluY2x1ZGUgdGhlIEVDaGFydHMgZmlsZSB5b3UganVzdCBkb3dubG9hZGVkIC0tPgogICAgPHNjcmlwdCBzcmM9ImVjaGFydHMuanMiPjwvc2NyaXB0PgogIDwvaGVhZD4KICA8Ym9keT4KICAgIDwhLS0gUHJlcGFyZSBhIERPTSB3aXRoIGEgZGVmaW5lZCB3aWR0aCBhbmQgaGVpZ2h0IGZvciBFQ2hhcnRzIC0tPgogICAgPGRpdiBpZD0ibWFpbiIgc3R5bGU9IndpZHRoOiA2MDBweDtoZWlnaHQ6NDAwcHg7Ij48L2Rpdj4KICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgZWNoYXJ0cyBpbnN0YW5jZSBiYXNlZCBvbiB0aGUgcHJlcGFyZWQgZG9tCiAgICAgIHZhciBteUNoYXJ0ID0gZWNoYXJ0cy5pbml0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYWluJykpOwoKICAgICAgLy8gU3BlY2lmeSB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhbmQgZGF0YSBmb3IgdGhlIGNoYXJ0CiAgICAgIHZhciBvcHRpb24gPSB7CiAgICAgICAgdGl0bGU6IHsKICAgICAgICAgIHRleHQ6ICdFQ2hhcnRzIEdldHRpbmcgU3RhcnRlZCBFeGFtcGxlJwogICAgICAgIH0sCiAgICAgICAgdG9vbHRpcDoge30sCiAgICAgICAgbGVnZW5kOiB7CiAgICAgICAgICBkYXRhOiBbJ3NhbGVzJ10KICAgICAgICB9LAogICAgICAgIHhBeGlzOiB7CiAgICAgICAgICBkYXRhOiBbJ1NoaXJ0cycsICdDYXJkaWdhbnMnLCAnQ2hpZmZvbnMnLCAnUGFudHMnLCAnSGVlbHMnLCAnU29ja3MnXQogICAgICAgIH0sCiAgICAgICAgeUF4aXM6IHt9LAogICAgICAgIHNlcmllczogWwogICAgICAgICAgewogICAgICAgICAgICBuYW1lOiAnc2FsZXMnLAogICAgICAgICAgICB0eXBlOiAnYmFyJywKICAgICAgICAgICAgZGF0YTogWzUsIDIwLCAzNiwgMTAsIDEwLCAyMF0KICAgICAgICAgIH0KICAgICAgICBdCiAgICAgIH07CgogICAgICAvLyBEaXNwbGF5IHRoZSBjaGFydCB1c2luZyB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhbmQgZGF0YSBqdXN0IHNwZWNpZmllZC4KICAgICAgbXlDaGFydC5zZXRPcHRpb24ob3B0aW9uKTsKICAgIDwvc2NyaXB0PgogIDwvYm9keT4KPC9odG1sPg\'" line-highlights="\'\'" />\n<p>And this is your first chart with Apache ECharts!</p>\n<p><md-example src="doc-example/getting-started&reset=1&edit=1"></md-example></p>\n',postPath:"en/get-started",title:r}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:d},{title:"入门篇",dir:a,children:[{title:"获取 ECharts",dir:l},{title:"在项目中引入 ECharts",dir:n},{title:"资源列表",dir:o,draft:t},{title:"寻求帮助",dir:h},{title:"版本特性",dir:c,children:[{title:"ECharts 6 特性介绍",dir:g},{title:"v5 升级 v6 指南",dir:s},{title:"5.0",dir:p},{title:"v4 升级 v5 指南",dir:C},{title:5.2,dir:I},{title:5.3,dir:A},{title:5.4,dir:m},{title:5.5,dir:b},{title:5.6,dir:G}]}]},{title:"概念篇",dir:B,children:[{title:"图表容器及大小",dir:w},{title:"配置项",dir:u,draft:t},{title:"系列",dir:f,draft:t},{title:"样式",dir:Z},{title:"数据集",dir:v},{title:"数据转换",dir:P},{title:"坐标系",dir:y,draft:t},{title:"坐标轴",dir:H},{title:"视觉映射",dir:e},{title:"图例",dir:D},{title:"事件与行为",dir:R}]},{title:"应用篇",dir:k,children:[{title:"常用图表类型",dir:S,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:x},{title:"堆叠柱状图",dir:E},{title:"动态排序柱状图",dir:F},{title:"极坐标系柱状图",dir:V,draft:t},{title:"阶梯瀑布图",dir:W},{title:"视觉映射的柱状图",dir:e,draft:t}]},{title:"折线图",dir:N,children:[{title:"基础折线图",dir:X},{title:"堆叠折线图",dir:Y},{title:"区域面积图",dir:M},{title:"平滑曲线图",dir:L},{title:"阶梯线图",dir:U}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:j},{title:"圆环图",dir:J},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:z,children:[{title:"基础散点图",dir:K}]}]},{title:"常用组件",dir:T,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:O}]}]},{title:"移动端优化",dir:i,draft:t},{title:"跨平台方案",dir:Q,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:_},{title:"数据下钻",dir:q,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:$}]},{title:"动画",dir:tt,children:[{title:"数据过渡动画",dir:it}]},{title:"交互",dir:et,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:rt,draft:t},{title:"智能指针吸附",dir:dt}]}]},{title:"最佳实践",dir:at,children:[{title:"移动端优化",dir:i,draft:t},{title:lt,dir:nt},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:ot}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:ht}]}],en:[{title:r,dir:d},{title:"Basics",dir:a,children:[{title:"Download ECharts",dir:l},{title:"Import ECharts",dir:n},{title:"Resources",dir:o,draft:t},{title:"Get Help",dir:h},{title:"What's New",dir:c,children:[{title:"ECharts 6 Features",dir:g},{title:"Migration from v5 to v6",dir:s},{title:"5.0",dir:p},{title:"Migration from v4 to v5",dir:C},{title:5.2,dir:I},{title:5.3,dir:A},{title:5.4,dir:m},{title:5.5,dir:b},{title:5.6,dir:G}]}]},{title:"Concepts",dir:B,children:[{title:"Chart Container",dir:w},{title:"Chart Option",dir:u,draft:t},{title:"Series",dir:f,draft:t},{title:"Style",dir:Z},{title:"Dataset",dir:v},{title:"Data Transform",dir:P},{title:"Coordinate",dir:y,draft:t},{title:"Axis",dir:H},{title:"Visual Mapping",dir:e},{title:"Legend",dir:D},{title:"Event and Action",dir:R}]},{title:"How To Guides",dir:k,children:[{title:"Common Charts",dir:S,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:x},{title:"Stacked Bar",dir:E},{title:"Bar Racing",dir:F},{title:"Bar Polar",dir:V,draft:t},{title:"Waterfall",dir:W}]},{title:"Line",dir:N,children:[{title:"Basic Line",dir:X},{title:"Stacked Line",dir:Y},{title:"Area Chart",dir:M},{title:"Smoothed Line",dir:L},{title:"Step Line",dir:U}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:j},{title:"Ring Style",dir:J},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:z,children:[{title:"Basic Scatter",dir:K}]}]},{title:"Common Components",dir:T,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:O}]}]},{title:"Mobile",dir:i,draft:t},{title:"Cross Platform",dir:Q,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:_},{title:"Drilldown",dir:q,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:$}]},{title:"Animation",dir:tt,children:[{title:"Data Transition",dir:it}]},{title:"Interaction",dir:et,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:rt,draft:t},{title:"Intelligent Pointer Snapping",dir:dt}]}]},{title:"Best Practices",dir:at,children:[{title:"Mobile Optimization",dir:i,draft:t},{title:lt,dir:nt},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:ot}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:ht}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/en/get-started",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","Get Started","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/en/how-to/animation/transition/index.html b/docs/en/how-to/animation/transition/index.html
new file mode 100644
index 0000000..0b4fb18
--- /dev/null
+++ b/docs/en/how-to/animation/transition/index.html
@@ -0,0 +1,194 @@
+<!doctype html>
+<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Data Transition - Animation - How To Guides - Handbook - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="en"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/en/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/en/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/en/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/en/index.html" class="navbar-brand"><img src="https://echarts.apache.org/en/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/en/index.html">Home</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Docs<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/feature.html">Features</a></li><li><a href="https://echarts.apache.org/handbook/en/get-started/">Handbook</a></li><li><a href="https://echarts.apache.org/en/api.html">API</a></li><li><a href="https://echarts.apache.org/en/option.html">Chart Configuration</a></li><li><a href="https://echarts.apache.org/en/changelog.html">Changelog</a></li><li><a href="https://echarts.apache.org/en/faq.html">FAQ</a></li><li><a href="https://echarts.apache.org/handbook/en/basics/release-note/v6-upgrade-guide">V6 Upgrade Guide</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Download<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/download.html">Download</a></li><li><a href="https://echarts.apache.org/en/download-theme.html">Download Themes</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">Download Custom Series<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/download-extension.html">Download Extensions</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/en/index.html">Examples</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Resources<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/spreadsheet.html">Spread Sheet Tool</a></li><li><a href="https://echarts.apache.org/en/theme-builder.html">Theme Builder</a></li><li><a href="https://echarts.apache.org/en/cheat-sheet.html">Cheat Sheet</a></li><li><a href="https://echarts.apache.org/en/resources.html">More Resources</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/events.html">Events</a></li><li><a href="https://echarts.apache.org/en/committers.html">Committers</a></li><li><a href="https://echarts.apache.org/en/maillist.html">Mailing List</a></li><li><a href="https://echarts.apache.org/en/contributing.html">How to Contribute</a></li><li><a href="https://echarts.apache.org/en/dependencies.html">Dependencies</a></li><li><a href="https://echarts.apache.org/en/coding-standard.html">Code Standard</a></li><li><a href="https://github.com/apache/echarts" target="_blank">Source Code (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/security.html">Security</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">License<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">Events<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("zh")'>中文</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/en/get-started" class="nav-link"><span class="title">Get Started</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Basics</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/basics/download" class="nav-link"><span class="title">Download ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/import" class="nav-link"><span class="title">Import ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/basics/help" class="nav-link"><span class="title">Get Help</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">What's New</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 Features</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">Migration from v5 to v6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">Migration from v4 to v5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Concepts</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/concepts/chart-size" class="nav-link"><span class="title">Chart Container</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/style" class="nav-link"><span class="title">Style</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/dataset" class="nav-link"><span class="title">Dataset</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/data-transform" class="nav-link"><span class="title">Data Transform</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/axis" class="nav-link"><span class="title">Axis</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/visual-map" class="nav-link"><span class="title">Visual Mapping</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/legend" class="nav-link"><span class="title">Legend</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/event" class="nav-link"><span class="title">Event and Action</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">How To Guides</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">Common Charts</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Bar</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">Basic Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">Stacked Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">Bar Racing</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">Waterfall</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Line</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">Basic Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">Stacked Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/area-line" class="nav-link"><span class="title">Area Chart</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">Smoothed Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/step-line" class="nav-link"><span class="title">Step Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Pie</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">Basic Pie</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">Ring Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/rose" class="nav-link"><span class="title">Rose Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Scatter</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">Basic Scatter</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Common Components</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Geo</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG Base Map</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">Cross Platform</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/cross-platform/server" class="nav-link"><span class="title">Server Side Rendering</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Data</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/data/dynamic-data" class="nav-link"><span class="title">Dynamic Data</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Label</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/label/rich-text" class="nav-link"><span class="title">Rich Text</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Animation</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a href="/echarts-handbook/en/how-to/animation/transition" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">Data Transition</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Interaction</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/drag" class="nav-link"><span class="title">Drag</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">Intelligent Pointer Snapping</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Best Practices</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/en/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/aria" class="nav-link"><span class="title">Aria</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/security" class="nav-link"><span class="title">Security Guidelines</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Edit Handbook</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/meta/edit-guide" class="nav-link"><span class="title">Edit Guide</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="data-transition" tabindex="-1">Data Transition</h1> <p>Apache ECharts<sup>TM</sup> will apply transition on the position, scale, shape when adding, updating and removing data. It makes the chart smoother and shows relationships between data better. Often the developer does not need to worry about how to use the animations, but simply uses <code>setOption</code> to update the data, and ECharts will find the difference between the last data and automatically apply the most appropriate transition animation.</p> <p>For example, the following example shows the transition on a timed update of the pie chart data.</p> <div class="md-live layout-lr"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">function makeRandomData() {
+  return [
+    {
+      value: Math.random(),
+      name: 'A'
+    },
+    {
+      value: Math.random(),
+      name: 'B'
+    },
+    {
+      value: Math.random(),
+      name: 'C'
+    }
+  ];
+}
+option = {
+  series: [
+    {
+      type: 'pie',
+      radius: [0, '50%'],
+      data: makeRandomData()
+    }
+  ]
+};
+
+setInterval(() => {
+  myChart.setOption({
+    series: {
+      data: makeRandomData()
+    }
+  });
+}, 2000);</textarea><pre data-testid="preview" class="prism-editor__editor"><span class="token keyword">function</span> <span class="token function">makeRandomData</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  <span class="token keyword">return</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">value</span><span class="token operator">:</span> Math<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'A'</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">value</span><span class="token operator">:</span> Math<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'B'</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">value</span><span class="token operator">:</span> Math<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'C'</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span>
+option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'pie'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">radius</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token string">'50%'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token function">makeRandomData</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span>
+
+<span class="token function">setInterval</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
+  myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+    <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token function">makeRandomData</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token number">2000</span><span class="token punctuation">)</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <h2 id="configuration-of-transitions" tabindex="-1">Configuration of Transitions</h2> <p>Because adding and updating data will often require different animations, for example we would expect the data update animation to be shorter, ECharts distinguishes between the two animation configurations.</p> <ul><li>For adding data, we apply an enter animation, using <code>animationDuration</code>, <code>animationEasing</code>, and <code>animationDelay</code> to configure the duration, easing and delay of the animation respectively.</li> <li>For updating data, we will apply an update animation with <code>animationDurationUpdate</code>, <code>animationEasingUpdate</code>, and <code>animationDelayUpdate</code> configuring the duration, easing and delay of the animation respectively.</li></ul> <p>As you can see, the update animation configuration is the enter animation configuration with the <code>Update</code> suffix.</p> <blockquote><p>Each time using setOption in ECharts, the data will be diffed to the last updated data and three states are performed for the data based on the diff result: add, update and remove. This diff is based on the <code>name</code> of the data, for example, if the last update had three <code>names</code> of <code>'A'</code>, <code>'B'</code>, <code>'C'</code>, and the new update has become <code>'B'</code>, <code>'C'</code>, <code>'D'</code>, then the data <code>'B'</code>, <code>'C'</code> will be updated, the data <code>'A'</code> will be removed, and the data <code>' D'</code> will be added. If it is the first time <code>setOption</code>, because there is no old data, all data will be added. Depending on the three states ECharts will apply entry animation, update animation and leave animation respectively.</p></blockquote> <p>All these configurations can be set at the top level of <code>option</code> for all series and components, or separately for each series.</p> <p>If we want to turn off animations, we can simply set <code>option.animation</code> to <code>false</code>.</p> <h3 id="animation-duration" tabindex="-1">Animation Duration</h3> <p><code>animationDuration</code> and <code>animationDurationUpdate</code> are used to set the duration of the animation in <code>ms</code>. Setting a longer animation duration allows the user to see the effect of the transition animation more clearly, but we also need to be careful that too much time can make the user lose patience while waiting animation to be finished.</p> <p>A setting of <code>0</code> will turn the animation off, and this can be achieved by setting the corresponding configuration to <code>0</code> individually when we only want to turn off the enter animation or update animation.</p> <h3 id="animation-easing" tabindex="-1">Animation Easing</h3> <p>The <code>animationEasing</code> and <code>animationEasingUpdate</code> configuration items are used to set the animation's easing function, which is a function that inputs the animation time and outputs the animation progress.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code><span class="token punctuation">(</span>t<span class="token operator">:</span> <span class="token builtin">number</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token builtin">number</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>The common animation easing functions such as <code>'cubicIn'</code> and <code>'cubicOut'</code> are built into ECharts and can be used directly</p> <p>Built-in easing functions.</p> <iframe width="100%" height="400" src=""></iframe> <h3 id="animation-delay" tabindex="-1">Animation Delay</h3> <p>The <code>animationDelay</code> and <code>animationDelayUpdate</code> are used to set the time at which the animation delay starts, usually we will use a callback function to set different delays for different data to achieve the effect of staggered animations:</p> <div class="md-live layout-lr"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">var xAxisData = [];
+var data1 = [];
+var data2 = [];
+for (var i = 0; i &lt; 100; i++) {
+  xAxisData.push('A' + i);
+  data1.push((Math.sin(i / 5) * (i / 5 - 10) + i / 6) * 5);
+  data2.push((Math.cos(i / 5) * (i / 5 - 10) + i / 6) * 5);
+}
+option = {
+  legend: {
+    data: ['bar', 'bar2']
+  },
+  xAxis: {
+    data: xAxisData,
+    splitLine: {
+      show: false
+    }
+  },
+  yAxis: {},
+  series: [
+    {
+      name: 'bar',
+      type: 'bar',
+      data: data1,
+      emphasis: {
+        focus: 'series'
+      },
+      animationDelay: function(idx) {
+        return idx * 10;
+      }
+    },
+    {
+      name: 'bar2',
+      type: 'bar',
+      data: data2,
+      emphasis: {
+        focus: 'series'
+      },
+      animationDelay: function(idx) {
+        return idx * 10 + 100;
+      }
+    }
+  ],
+  animationEasing: 'elasticOut',
+  animationDelayUpdate: function(idx) {
+    return idx * 5;
+  }
+};</textarea><pre data-testid="preview" class="prism-editor__editor"><span class="token keyword">var</span> xAxisData <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
+<span class="token keyword">var</span> data1 <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
+<span class="token keyword">var</span> data2 <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
+<span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">var</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator">&lt;</span> <span class="token number">100</span><span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  xAxisData<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token string">'A'</span> <span class="token operator">+</span> i<span class="token punctuation">)</span><span class="token punctuation">;</span>
+  data1<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token punctuation">(</span>Math<span class="token punctuation">.</span><span class="token function">sin</span><span class="token punctuation">(</span>i <span class="token operator">/</span> <span class="token number">5</span><span class="token punctuation">)</span> <span class="token operator">*</span> <span class="token punctuation">(</span>i <span class="token operator">/</span> <span class="token number">5</span> <span class="token operator">-</span> <span class="token number">10</span><span class="token punctuation">)</span> <span class="token operator">+</span> i <span class="token operator">/</span> <span class="token number">6</span><span class="token punctuation">)</span> <span class="token operator">*</span> <span class="token number">5</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+  data2<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token punctuation">(</span>Math<span class="token punctuation">.</span><span class="token function">cos</span><span class="token punctuation">(</span>i <span class="token operator">/</span> <span class="token number">5</span><span class="token punctuation">)</span> <span class="token operator">*</span> <span class="token punctuation">(</span>i <span class="token operator">/</span> <span class="token number">5</span> <span class="token operator">-</span> <span class="token number">10</span><span class="token punctuation">)</span> <span class="token operator">+</span> i <span class="token operator">/</span> <span class="token number">6</span><span class="token punctuation">)</span> <span class="token operator">*</span> <span class="token number">5</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span>
+option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">legend</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'bar'</span><span class="token punctuation">,</span> <span class="token string">'bar2'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> xAxisData<span class="token punctuation">,</span>
+    <span class="token literal-property property">splitLine</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">false</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> data1<span class="token punctuation">,</span>
+      <span class="token literal-property property">emphasis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">focus</span><span class="token operator">:</span> <span class="token string">'series'</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token function-variable function">animationDelay</span><span class="token operator">:</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">idx</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+        <span class="token keyword">return</span> idx <span class="token operator">*</span> <span class="token number">10</span><span class="token punctuation">;</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'bar2'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> data2<span class="token punctuation">,</span>
+      <span class="token literal-property property">emphasis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">focus</span><span class="token operator">:</span> <span class="token string">'series'</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token function-variable function">animationDelay</span><span class="token operator">:</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">idx</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+        <span class="token keyword">return</span> idx <span class="token operator">*</span> <span class="token number">10</span> <span class="token operator">+</span> <span class="token number">100</span><span class="token punctuation">;</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">animationEasing</span><span class="token operator">:</span> <span class="token string">'elasticOut'</span><span class="token punctuation">,</span>
+  <span class="token function-variable function">animationDelayUpdate</span><span class="token operator">:</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">idx</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+    <span class="token keyword">return</span> idx <span class="token operator">*</span> <span class="token number">5</span><span class="token punctuation">;</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <h2 id="performance-optimization-of-animations" tabindex="-1">Performance Optimization of Animations</h2> <p>When the amount of data is particularly large, running animation can have performance issue, so we can set <code>animation: false</code> to turn off animation.</p> <p>For charts where the amount of data changes dynamically, we recommend using the <code>animationThreshold</code> configuration, which allows ECharts to automatically turn off animation when the number of graphs in the canvas exceeds this threshold to improve drawing performance. This is often an empirical value, and ECharts is usually capable of rendering thousands of graphs in real time (our default value is also given as 2000), but if your charts are complex, or your user environment is harsh and there is a lot of other complex code running on the page at the same time, it may be appropriate to adjust this value downwards to ensure the smoothness of the whole application.</p> <h2 id="listening-to-the-end-of-animation" tabindex="-1">Listening to the End of Animation</h2> <p>Sometimes we want to get the result of the current rendering, if no animation is used, ECharts will perform the rendering directly after <code>setOption</code> and we can use <code>getDataURL</code> method to get the rendering result synchronisely.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code><span class="token keyword">const</span> chart <span class="token operator">=</span> echarts<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span>dom<span class="token punctuation">)</span><span class="token punctuation">;</span>
+chart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+  animation<span class="token operator">:</span> <span class="token boolean">false</span>
+  <span class="token comment">//...</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token comment">// can be executed directly and synchronously</span>
+<span class="token keyword">const</span> dataUrl <span class="token operator">=</span> chart<span class="token punctuation">.</span><span class="token function">getDataURL</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>But if the chart is animated, executing <code>getDataURL</code> right away will give us the picture at the beginning of the animation, not the final result. So we need to know when the animation has finished and then execute <code>getDataURL</code> to get the result.</p> <p>If you are sure of the duration of the animation, a simpler and more brutal way is to delay the execution with <code>setTimeout</code> depending on the duration of the animation:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code>chart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+  animationDuration<span class="token operator">:</span> <span class="token number">1000</span>
+  <span class="token comment">//...</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token function">setTimeout</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
+  <span class="token keyword">const</span> dataUrl <span class="token operator">=</span> chart<span class="token punctuation">.</span><span class="token function">getDataURL</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token number">1000</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>Alternatively, we can use the <code>rendered</code> event provided by ECharts to determine that the ECharts have finished animating and stopped rendering</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code>chart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+  animationDuration<span class="token operator">:</span> <span class="token number">1000</span>
+  <span class="token comment">//...</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+<span class="token keyword">function</span> <span class="token function">onRendered</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  <span class="token keyword">const</span> dataUrl <span class="token operator">=</span> chart<span class="token punctuation">.</span><span class="token function">getDataURL</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+  <span class="token comment">// ...</span>
+  <span class="token comment">// This event will also be triggered if there is a subsequent interaction and the interaction is redrawn, so it needs to be removed when you're done using it</span>
+  chart<span class="token punctuation">.</span><span class="token function">off</span><span class="token punctuation">(</span><span class="token string">'rendered'</span><span class="token punctuation">,</span> onRendered<span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span>
+chart<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'rendered'</span><span class="token punctuation">,</span> onRendered<span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">Contributors</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/en/how-to/animation/transition.md" title="Edit this Document" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">Edit this page on GitHub</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,e,i,a,n,d,o,r,l,s,h,c,g,p,m,u,C,I,f,b,A,w,B,y,v,K,G,k,X,R,Z,S,Y,H,V,W,F,J,D,T,E,x,O,L,M,U,z,N,Q,P,j,_,q,$,tt,et,it,at,nt,dt,ot,rt,lt){return{layout:"default",data:[{html:'<h1 id="data-transition" tabindex="-1">Data Transition</h1>\n<p>Apache ECharts<sup>TM</sup> will apply transition on the position, scale, shape when adding, updating and removing data. It makes the chart smoother and shows relationships between data better. Often the developer does not need to worry about how to use the animations, but simply uses <code>setOption</code> to update the data, and ECharts will find the difference between the last data and automatically apply the most appropriate transition animation.</p>\n<p>For example, the following example shows the transition on a timed update of the pie chart data.</p>\n<md-live lang="js" code="\'ZnVuY3Rpb24gbWFrZVJhbmRvbURhdGEoKSB7CiAgcmV0dXJuIFsKICAgIHsKICAgICAgdmFsdWU6IE1hdGgucmFuZG9tKCksCiAgICAgIG5hbWU6ICdBJwogICAgfSwKICAgIHsKICAgICAgdmFsdWU6IE1hdGgucmFuZG9tKCksCiAgICAgIG5hbWU6ICdCJwogICAgfSwKICAgIHsKICAgICAgdmFsdWU6IE1hdGgucmFuZG9tKCksCiAgICAgIG5hbWU6ICdDJwogICAgfQogIF07Cn0Kb3B0aW9uID0gewogIHNlcmllczogWwogICAgewogICAgICB0eXBlOiAncGllJywKICAgICAgcmFkaXVzOiBbMCwgJzUwJSddLAogICAgICBkYXRhOiBtYWtlUmFuZG9tRGF0YSgpCiAgICB9CiAgXQp9OwoKc2V0SW50ZXJ2YWwoKCkgPT4gewogIG15Q2hhcnQuc2V0T3B0aW9uKHsKICAgIHNlcmllczogewogICAgICBkYXRhOiBtYWtlUmFuZG9tRGF0YSgpCiAgICB9CiAgfSk7Cn0sIDIwMDApOw\'" v-bind="{layout: \'lr\'}" />\n<h2 id="configuration-of-transitions" tabindex="-1">Configuration of Transitions</h2>\n<p>Because adding and updating data will often require different animations, for example we would expect the data update animation to be shorter, ECharts distinguishes between the two animation configurations.</p>\n<ul>\n<li>For adding data, we apply an enter animation, using <code>animationDuration</code>, <code>animationEasing</code>, and <code>animationDelay</code> to configure the duration, easing and delay of the animation respectively.</li>\n<li>For updating data, we will apply an update animation with <code>animationDurationUpdate</code>, <code>animationEasingUpdate</code>, and <code>animationDelayUpdate</code> configuring the duration, easing and delay of the animation respectively.</li>\n</ul>\n<p>As you can see, the update animation configuration is the enter animation configuration with the <code>Update</code> suffix.</p>\n<blockquote>\n<p>Each time using setOption in ECharts, the data will be diffed to the last updated data and three states are performed for the data based on the diff result: add, update and remove. This diff is based on the <code>name</code> of the data, for example, if the last update had three <code>names</code> of <code>\'A\'</code>, <code>\'B\'</code>, <code>\'C\'</code>, and the new update has become <code>\'B\'</code>, <code>\'C\'</code>, <code>\'D\'</code>, then the data <code>\'B\'</code>, <code>\'C\'</code> will be updated, the data <code>\'A\'</code> will be removed, and the data <code>\' D\'</code> will be added. If it is the first time <code>setOption</code>, because there is no old data, all data will be added. Depending on the three states ECharts will apply entry animation, update animation and leave animation respectively.</p>\n</blockquote>\n<p>All these configurations can be set at the top level of <code>option</code> for all series and components, or separately for each series.</p>\n<p>If we want to turn off animations, we can simply set <code>option.animation</code> to <code>false</code>.</p>\n<h3 id="animation-duration" tabindex="-1">Animation Duration</h3>\n<p><code>animationDuration</code> and <code>animationDurationUpdate</code> are used to set the duration of the animation in <code>ms</code>. Setting a longer animation duration allows the user to see the effect of the transition animation more clearly, but we also need to be careful that too much time can make the user lose patience while waiting animation to be finished.</p>\n<p>A setting of <code>0</code> will turn the animation off, and this can be achieved by setting the corresponding configuration to <code>0</code> individually when we only want to turn off the enter animation or update animation.</p>\n<h3 id="animation-easing" tabindex="-1">Animation Easing</h3>\n<p>The <code>animationEasing</code> and <code>animationEasingUpdate</code> configuration items are used to set the animation\'s easing function, which is a function that inputs the animation time and outputs the animation progress.</p>\n<md-code-block lang="ts" code="\'KHQ6IG51bWJlcikgPT4gbnVtYmVyOw\'" line-highlights="\'\'" />\n<p>The common animation easing functions such as <code>\'cubicIn\'</code> and <code>\'cubicOut\'</code> are built into ECharts and can be used directly</p>\n<p>Built-in easing functions.</p>\n<md-example src="line-easing" width="100%" height="400" />\n<h3 id="animation-delay" tabindex="-1">Animation Delay</h3>\n<p>The <code>animationDelay</code> and <code>animationDelayUpdate</code> are used to set the time at which the animation delay starts, usually we will use a callback function to set different delays for different data to achieve the effect of staggered animations:</p>\n<md-live lang="ts" code="\'dmFyIHhBeGlzRGF0YSA9IFtdOwp2YXIgZGF0YTEgPSBbXTsKdmFyIGRhdGEyID0gW107CmZvciAodmFyIGkgPSAwOyBpIDwgMTAwOyBpKyspIHsKICB4QXhpc0RhdGEucHVzaCgnQScgKyBpKTsKICBkYXRhMS5wdXNoKChNYXRoLnNpbihpIC8gNSkgKiAoaSAvIDUgLSAxMCkgKyBpIC8gNikgKiA1KTsKICBkYXRhMi5wdXNoKChNYXRoLmNvcyhpIC8gNSkgKiAoaSAvIDUgLSAxMCkgKyBpIC8gNikgKiA1KTsKfQpvcHRpb24gPSB7CiAgbGVnZW5kOiB7CiAgICBkYXRhOiBbJ2JhcicsICdiYXIyJ10KICB9LAogIHhBeGlzOiB7CiAgICBkYXRhOiB4QXhpc0RhdGEsCiAgICBzcGxpdExpbmU6IHsKICAgICAgc2hvdzogZmFsc2UKICAgIH0KICB9LAogIHlBeGlzOiB7fSwKICBzZXJpZXM6IFsKICAgIHsKICAgICAgbmFtZTogJ2JhcicsCiAgICAgIHR5cGU6ICdiYXInLAogICAgICBkYXRhOiBkYXRhMSwKICAgICAgZW1waGFzaXM6IHsKICAgICAgICBmb2N1czogJ3NlcmllcycKICAgICAgfSwKICAgICAgYW5pbWF0aW9uRGVsYXk6IGZ1bmN0aW9uKGlkeCkgewogICAgICAgIHJldHVybiBpZHggKiAxMDsKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgbmFtZTogJ2JhcjInLAogICAgICB0eXBlOiAnYmFyJywKICAgICAgZGF0YTogZGF0YTIsCiAgICAgIGVtcGhhc2lzOiB7CiAgICAgICAgZm9jdXM6ICdzZXJpZXMnCiAgICAgIH0sCiAgICAgIGFuaW1hdGlvbkRlbGF5OiBmdW5jdGlvbihpZHgpIHsKICAgICAgICByZXR1cm4gaWR4ICogMTAgKyAxMDA7CiAgICAgIH0KICAgIH0KICBdLAogIGFuaW1hdGlvbkVhc2luZzogJ2VsYXN0aWNPdXQnLAogIGFuaW1hdGlvbkRlbGF5VXBkYXRlOiBmdW5jdGlvbihpZHgpIHsKICAgIHJldHVybiBpZHggKiA1OwogIH0KfTs\'" v-bind="{ layout: \'lr\' }" />\n<h2 id="performance-optimization-of-animations" tabindex="-1">Performance Optimization of Animations</h2>\n<p>When the amount of data is particularly large, running animation can have performance issue, so we can set <code>animation: false</code> to turn off animation.</p>\n<p>For charts where the amount of data changes dynamically, we recommend using the <code>animationThreshold</code> configuration, which allows ECharts to automatically turn off animation when the number of graphs in the canvas exceeds this threshold to improve drawing performance. This is often an empirical value, and ECharts is usually capable of rendering thousands of graphs in real time (our default value is also given as 2000), but if your charts are complex, or your user environment is harsh and there is a lot of other complex code running on the page at the same time, it may be appropriate to adjust this value downwards to ensure the smoothness of the whole application.</p>\n<h2 id="listening-to-the-end-of-animation" tabindex="-1">Listening to the End of Animation</h2>\n<p>Sometimes we want to get the result of the current rendering, if no animation is used, ECharts will perform the rendering directly after <code>setOption</code> and we can use <code>getDataURL</code> method to get the rendering result synchronisely.</p>\n<md-code-block lang="ts" code="\'Y29uc3QgY2hhcnQgPSBlY2hhcnRzLmluaXQoZG9tKTsKY2hhcnQuc2V0T3B0aW9uKHsKICBhbmltYXRpb246IGZhbHNlCiAgLy8uLi4KfSk7Ci8vIGNhbiBiZSBleGVjdXRlZCBkaXJlY3RseSBhbmQgc3luY2hyb25vdXNseQpjb25zdCBkYXRhVXJsID0gY2hhcnQuZ2V0RGF0YVVSTCgpOw\'" line-highlights="\'\'" />\n<p>But if the chart is animated, executing <code>getDataURL</code> right away will give us the picture at the beginning of the animation, not the final result. So we need to know when the animation has finished and then execute <code>getDataURL</code> to get the result.</p>\n<p>If you are sure of the duration of the animation, a simpler and more brutal way is to delay the execution with <code>setTimeout</code> depending on the duration of the animation:</p>\n<md-code-block lang="ts" code="\'Y2hhcnQuc2V0T3B0aW9uKHsKICBhbmltYXRpb25EdXJhdGlvbjogMTAwMAogIC8vLi4uCn0pOwpzZXRUaW1lb3V0KCgpID0-IHsKICBjb25zdCBkYXRhVXJsID0gY2hhcnQuZ2V0RGF0YVVSTCgpOwp9LCAxMDAwKTs\'" line-highlights="\'\'" />\n<p>Alternatively, we can use the <code>rendered</code> event provided by ECharts to determine that the ECharts have finished animating and stopped rendering</p>\n<md-code-block lang="ts" code="\'Y2hhcnQuc2V0T3B0aW9uKHsKICBhbmltYXRpb25EdXJhdGlvbjogMTAwMAogIC8vLi4uCn0pOwoKZnVuY3Rpb24gb25SZW5kZXJlZCgpIHsKICBjb25zdCBkYXRhVXJsID0gY2hhcnQuZ2V0RGF0YVVSTCgpOwogIC8vIC4uLgogIC8vIFRoaXMgZXZlbnQgd2lsbCBhbHNvIGJlIHRyaWdnZXJlZCBpZiB0aGVyZSBpcyBhIHN1YnNlcXVlbnQgaW50ZXJhY3Rpb24gYW5kIHRoZSBpbnRlcmFjdGlvbiBpcyByZWRyYXduLCBzbyBpdCBuZWVkcyB0byBiZSByZW1vdmVkIHdoZW4geW91J3JlIGRvbmUgdXNpbmcgaXQKICBjaGFydC5vZmYoJ3JlbmRlcmVkJywgb25SZW5kZXJlZCk7Cn0KY2hhcnQub24oJ3JlbmRlcmVkJywgb25SZW5kZXJlZCk7\'" line-highlights="\'\'" />\n',postPath:"en/how-to/animation/transition",title:"Data Transition - Animation - How To Guides"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:a},{title:"入门篇",dir:n,children:[{title:"获取 ECharts",dir:d},{title:"在项目中引入 ECharts",dir:o},{title:"资源列表",dir:r,draft:t},{title:"寻求帮助",dir:l},{title:"版本特性",dir:s,children:[{title:"ECharts 6 特性介绍",dir:h},{title:"v5 升级 v6 指南",dir:c},{title:"5.0",dir:g},{title:"v4 升级 v5 指南",dir:p},{title:5.2,dir:m},{title:5.3,dir:u},{title:5.4,dir:C},{title:5.5,dir:I},{title:5.6,dir:f}]}]},{title:"概念篇",dir:b,children:[{title:"图表容器及大小",dir:A},{title:"配置项",dir:w,draft:t},{title:"系列",dir:B,draft:t},{title:"样式",dir:y},{title:"数据集",dir:v},{title:"数据转换",dir:K},{title:"坐标系",dir:G,draft:t},{title:"坐标轴",dir:k},{title:"视觉映射",dir:i},{title:"图例",dir:X},{title:"事件与行为",dir:R}]},{title:"应用篇",dir:Z,children:[{title:"常用图表类型",dir:S,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:Y},{title:"堆叠柱状图",dir:H},{title:"动态排序柱状图",dir:V},{title:"极坐标系柱状图",dir:W,draft:t},{title:"阶梯瀑布图",dir:F},{title:"视觉映射的柱状图",dir:i,draft:t}]},{title:"折线图",dir:J,children:[{title:"基础折线图",dir:D},{title:"堆叠折线图",dir:T},{title:"区域面积图",dir:E},{title:"平滑曲线图",dir:x},{title:"阶梯线图",dir:O}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:L},{title:"圆环图",dir:M},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:U,children:[{title:"基础散点图",dir:z}]}]},{title:"常用组件",dir:N,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:Q}]}]},{title:"移动端优化",dir:e,draft:t},{title:"跨平台方案",dir:P,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:j},{title:"数据下钻",dir:_,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:q}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:et,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:it,draft:t},{title:"智能指针吸附",dir:at}]}]},{title:"最佳实践",dir:nt,children:[{title:"移动端优化",dir:e,draft:t},{title:dt,dir:ot},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:rt}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:lt}]}],en:[{title:"Get Started",dir:a},{title:"Basics",dir:n,children:[{title:"Download ECharts",dir:d},{title:"Import ECharts",dir:o},{title:"Resources",dir:r,draft:t},{title:"Get Help",dir:l},{title:"What's New",dir:s,children:[{title:"ECharts 6 Features",dir:h},{title:"Migration from v5 to v6",dir:c},{title:"5.0",dir:g},{title:"Migration from v4 to v5",dir:p},{title:5.2,dir:m},{title:5.3,dir:u},{title:5.4,dir:C},{title:5.5,dir:I},{title:5.6,dir:f}]}]},{title:"Concepts",dir:b,children:[{title:"Chart Container",dir:A},{title:"Chart Option",dir:w,draft:t},{title:"Series",dir:B,draft:t},{title:"Style",dir:y},{title:"Dataset",dir:v},{title:"Data Transform",dir:K},{title:"Coordinate",dir:G,draft:t},{title:"Axis",dir:k},{title:"Visual Mapping",dir:i},{title:"Legend",dir:X},{title:"Event and Action",dir:R}]},{title:"How To Guides",dir:Z,children:[{title:"Common Charts",dir:S,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:Y},{title:"Stacked Bar",dir:H},{title:"Bar Racing",dir:V},{title:"Bar Polar",dir:W,draft:t},{title:"Waterfall",dir:F}]},{title:"Line",dir:J,children:[{title:"Basic Line",dir:D},{title:"Stacked Line",dir:T},{title:"Area Chart",dir:E},{title:"Smoothed Line",dir:x},{title:"Step Line",dir:O}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:L},{title:"Ring Style",dir:M},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:U,children:[{title:"Basic Scatter",dir:z}]}]},{title:"Common Components",dir:N,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:Q}]}]},{title:"Mobile",dir:e,draft:t},{title:"Cross Platform",dir:P,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:j},{title:"Drilldown",dir:_,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:q}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:et,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:it,draft:t},{title:"Intelligent Pointer Snapping",dir:at}]}]},{title:"Best Practices",dir:nt,children:[{title:"Mobile Optimization",dir:e,draft:t},{title:dt,dir:ot},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:rt}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:lt}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/en/how-to/animation/transition",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/en/how-to/chart-types/bar/bar-race/index.html b/docs/en/how-to/chart-types/bar/bar-race/index.html
new file mode 100644
index 0000000..aade5c3
--- /dev/null
+++ b/docs/en/how-to/chart-types/bar/bar-race/index.html
@@ -0,0 +1,125 @@
+<!doctype html>
+<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Bar Racing - Bar - Common Charts - How To Guides - Handbook - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="en"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/en/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/en/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/en/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/en/index.html" class="navbar-brand"><img src="https://echarts.apache.org/en/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/en/index.html">Home</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Docs<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/feature.html">Features</a></li><li><a href="https://echarts.apache.org/handbook/en/get-started/">Handbook</a></li><li><a href="https://echarts.apache.org/en/api.html">API</a></li><li><a href="https://echarts.apache.org/en/option.html">Chart Configuration</a></li><li><a href="https://echarts.apache.org/en/changelog.html">Changelog</a></li><li><a href="https://echarts.apache.org/en/faq.html">FAQ</a></li><li><a href="https://echarts.apache.org/handbook/en/basics/release-note/v6-upgrade-guide">V6 Upgrade Guide</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Download<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/download.html">Download</a></li><li><a href="https://echarts.apache.org/en/download-theme.html">Download Themes</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">Download Custom Series<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/download-extension.html">Download Extensions</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/en/index.html">Examples</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Resources<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/spreadsheet.html">Spread Sheet Tool</a></li><li><a href="https://echarts.apache.org/en/theme-builder.html">Theme Builder</a></li><li><a href="https://echarts.apache.org/en/cheat-sheet.html">Cheat Sheet</a></li><li><a href="https://echarts.apache.org/en/resources.html">More Resources</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/events.html">Events</a></li><li><a href="https://echarts.apache.org/en/committers.html">Committers</a></li><li><a href="https://echarts.apache.org/en/maillist.html">Mailing List</a></li><li><a href="https://echarts.apache.org/en/contributing.html">How to Contribute</a></li><li><a href="https://echarts.apache.org/en/dependencies.html">Dependencies</a></li><li><a href="https://echarts.apache.org/en/coding-standard.html">Code Standard</a></li><li><a href="https://github.com/apache/echarts" target="_blank">Source Code (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/security.html">Security</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">License<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">Events<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("zh")'>中文</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/en/get-started" class="nav-link"><span class="title">Get Started</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Basics</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/basics/download" class="nav-link"><span class="title">Download ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/import" class="nav-link"><span class="title">Import ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/basics/help" class="nav-link"><span class="title">Get Help</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">What's New</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 Features</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">Migration from v5 to v6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">Migration from v4 to v5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Concepts</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/concepts/chart-size" class="nav-link"><span class="title">Chart Container</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/style" class="nav-link"><span class="title">Style</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/dataset" class="nav-link"><span class="title">Dataset</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/data-transform" class="nav-link"><span class="title">Data Transform</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/axis" class="nav-link"><span class="title">Axis</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/visual-map" class="nav-link"><span class="title">Visual Mapping</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/legend" class="nav-link"><span class="title">Legend</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/event" class="nav-link"><span class="title">Event and Action</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">How To Guides</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">Common Charts</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a class="nav-link"><span class="title">Bar</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level3"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">Basic Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">Stacked Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/bar-race" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">Bar Racing</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">Waterfall</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Line</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">Basic Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">Stacked Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/area-line" class="nav-link"><span class="title">Area Chart</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">Smoothed Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/step-line" class="nav-link"><span class="title">Step Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Pie</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">Basic Pie</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">Ring Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/rose" class="nav-link"><span class="title">Rose Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Scatter</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">Basic Scatter</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Common Components</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Geo</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG Base Map</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">Cross Platform</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/cross-platform/server" class="nav-link"><span class="title">Server Side Rendering</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Data</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/data/dynamic-data" class="nav-link"><span class="title">Dynamic Data</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Label</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/label/rich-text" class="nav-link"><span class="title">Rich Text</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Animation</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/animation/transition" class="nav-link"><span class="title">Data Transition</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Interaction</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/drag" class="nav-link"><span class="title">Drag</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">Intelligent Pointer Snapping</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Best Practices</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/en/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/aria" class="nav-link"><span class="title">Aria</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/security" class="nav-link"><span class="title">Security Guidelines</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Edit Handbook</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/meta/edit-guide" class="nav-link"><span class="title">Edit Guide</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="dynamic-sorting-bar-chart" tabindex="-1">Dynamic Sorting Bar Chart</h1> <h2 id="related-options" tabindex="-1">Related Options</h2> <p>Bar race is a chart that shows changes in the ranking of data over time and it is supported by default since ECharts 5.</p> <blockquote><p>Bar race charts usually use horizontal bars. If you want to use vertical bars, just take the X axis and Y axis in this tutorial to the opposite.</p></blockquote> <ol><li>Set <code>realtimeSort</code> of the bar series to be <code>true</code> to enable bar race</li> <li>Set <code>yAxis.inverse</code> to be <code>true</code> to display longer bars at top</li> <li><code>yAxis.animationDuration</code> is suggested to be set to be <code>300</code> for bar reordering animation for the first time</li> <li><code>yAxis.animationDurationUpdate</code> is suggested to be set to be <code>300</code> for bar reordering animation for later times</li> <li>Set <code>yAxis.max</code> to be <em>n - 1</em> where <em>n</em> is the number of bars to be displayed; otherwise, all bars are displayed</li> <li><code>xAxis.max</code> is suggested to be set to be <code>'dataMax'</code> so that the maximum of data is used as X maximum.</li> <li>If realtime label changing is required, set <code>series.label.valueAnimation</code> to be <code>true</code></li> <li>Set <code>animationDuration</code> to be <code>0</code> so that the first animation doesn't start from 0; if you wish otherwise, set it to be the same value as <code>animationDurationUpdate</code></li> <li><code>animationDurationUpdate</code> is suggested to be set to be <code>3000</code> for animation update duration, which should be the same as the frequency of calling <code>setOption</code></li> <li>Call <code>setOption</code> to update data to be of next time with <code>setInterval</code> at the frequency of <code>animationDurationUpdate</code></li></ol> <h2 id="demo" tabindex="-1">Demo</h2> <p>A complete demo:</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">var data = [];
+for (let i = 0; i &lt; 5; ++i) {
+  data.push(Math.round(Math.random() * 200));
+}
+
+option = {
+  xAxis: {
+    max: 'dataMax'
+  },
+  yAxis: {
+    type: 'category',
+    data: ['A', 'B', 'C', 'D', 'E'],
+    inverse: true,
+    animationDuration: 300,
+    animationDurationUpdate: 300,
+    max: 2 // only the largest 3 bars will be displayed
+  },
+  series: [
+    {
+      realtimeSort: true,
+      name: 'X',
+      type: 'bar',
+      data: data,
+      label: {
+        show: true,
+        position: 'right',
+        valueAnimation: true
+      }
+    }
+  ],
+  legend: {
+    show: true
+  },
+  animationDuration: 0,
+  animationDurationUpdate: 3000,
+  animationEasing: 'linear',
+  animationEasingUpdate: 'linear'
+};
+
+function run() {
+  var data = option.series[0].data;
+  for (var i = 0; i &lt; data.length; ++i) {
+    if (Math.random() > 0.9) {
+      data[i] += Math.round(Math.random() * 2000);
+    } else {
+      data[i] += Math.round(Math.random() * 200);
+    }
+  }
+  myChart.setOption(option);
+}
+
+setTimeout(function() {
+  run();
+}, 0);
+setInterval(function() {
+  run();
+}, 3000);</textarea><pre data-testid="preview" class="prism-editor__editor"><span class="token keyword">var</span> data <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
+<span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">let</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator">&lt;</span> <span class="token number">5</span><span class="token punctuation">;</span> <span class="token operator">++</span>i<span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  data<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span>Math<span class="token punctuation">.</span><span class="token function">round</span><span class="token punctuation">(</span>Math<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">*</span> <span class="token number">200</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span>
+
+option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">max</span><span class="token operator">:</span> <span class="token string">'dataMax'</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'category'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'A'</span><span class="token punctuation">,</span> <span class="token string">'B'</span><span class="token punctuation">,</span> <span class="token string">'C'</span><span class="token punctuation">,</span> <span class="token string">'D'</span><span class="token punctuation">,</span> <span class="token string">'E'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">inverse</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">animationDuration</span><span class="token operator">:</span> <span class="token number">300</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">animationDurationUpdate</span><span class="token operator">:</span> <span class="token number">300</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">max</span><span class="token operator">:</span> <span class="token number">2</span> <span class="token comment">// only the largest 3 bars will be displayed</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">realtimeSort</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'X'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> data<span class="token punctuation">,</span>
+      <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">position</span><span class="token operator">:</span> <span class="token string">'right'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">valueAnimation</span><span class="token operator">:</span> <span class="token boolean">true</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">legend</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">true</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">animationDuration</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">animationDurationUpdate</span><span class="token operator">:</span> <span class="token number">3000</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">animationEasing</span><span class="token operator">:</span> <span class="token string">'linear'</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">animationEasingUpdate</span><span class="token operator">:</span> <span class="token string">'linear'</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span>
+
+<span class="token keyword">function</span> <span class="token function">run</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  <span class="token keyword">var</span> data <span class="token operator">=</span> option<span class="token punctuation">.</span>series<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">.</span>data<span class="token punctuation">;</span>
+  <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">var</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator">&lt;</span> data<span class="token punctuation">.</span>length<span class="token punctuation">;</span> <span class="token operator">++</span>i<span class="token punctuation">)</span> <span class="token punctuation">{</span>
+    <span class="token keyword">if</span> <span class="token punctuation">(</span>Math<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">></span> <span class="token number">0.9</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+      data<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">+=</span> Math<span class="token punctuation">.</span><span class="token function">round</span><span class="token punctuation">(</span>Math<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">*</span> <span class="token number">2000</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+    <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span>
+      data<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">+=</span> Math<span class="token punctuation">.</span><span class="token function">round</span><span class="token punctuation">(</span>Math<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">*</span> <span class="token number">200</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span>
+  myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span>option<span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span>
+
+<span class="token function">setTimeout</span><span class="token punctuation">(</span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  <span class="token function">run</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token function">setInterval</span><span class="token punctuation">(</span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  <span class="token function">run</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token number">3000</span><span class="token punctuation">)</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">Contributors</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/en/how-to/chart-types/bar/bar-race.md" title="Edit this Document" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">Edit this page on GitHub</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/Ovilia" target="_blank" class="post-contributor has-avatar"><img alt="Ovilia" src="https://echarts.apache.org/en/images/people/羡辙.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>Ovilia</span></a><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a><a href="https://github.com/Shofol" target="_blank" class="post-contributor"><!----> <span>Shofol</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,i,e,r,d,a,l,o,n,s,c,h,g,p,b,m,C,I,u,A,f,y,B,w,v,G,W,S,R,D,Y,x,K,k,H,X,V,Z,F,L,P,O,M,E,J,U,z,T,N,Q,q,_,j,$,tt,it,et,rt,dt,at,lt,ot,nt){return{layout:"default",data:[{html:'<h1 id="dynamic-sorting-bar-chart" tabindex="-1">Dynamic Sorting Bar Chart</h1>\n<h2 id="related-options" tabindex="-1">Related Options</h2>\n<p>Bar race is a chart that shows changes in the ranking of data over time and it is supported by default since ECharts 5.</p>\n<blockquote>\n<p>Bar race charts usually use horizontal bars. If you want to use vertical bars, just take the X axis and Y axis in this tutorial to the opposite.</p>\n</blockquote>\n<ol>\n<li>Set <code>realtimeSort</code> of the bar series to be <code>true</code> to enable bar race</li>\n<li>Set <code>yAxis.inverse</code> to be <code>true</code> to display longer bars at top</li>\n<li><code>yAxis.animationDuration</code> is suggested to be set to be <code>300</code> for bar reordering animation for the first time</li>\n<li><code>yAxis.animationDurationUpdate</code> is suggested to be set to be <code>300</code> for bar reordering animation for later times</li>\n<li>Set <code>yAxis.max</code> to be <em>n - 1</em> where <em>n</em> is the number of bars to be displayed; otherwise, all bars are displayed</li>\n<li><code>xAxis.max</code> is suggested to be set to be <code>\'dataMax\'</code> so that the maximum of data is used as X maximum.</li>\n<li>If realtime label changing is required, set <code>series.label.valueAnimation</code> to be <code>true</code></li>\n<li>Set <code>animationDuration</code> to be <code>0</code> so that the first animation doesn\'t start from 0; if you wish otherwise, set it to be the same value as <code>animationDurationUpdate</code></li>\n<li><code>animationDurationUpdate</code> is suggested to be set to be <code>3000</code> for animation update duration, which should be the same as the frequency of calling <code>setOption</code></li>\n<li>Call <code>setOption</code> to update data to be of next time with <code>setInterval</code> at the frequency of <code>animationDurationUpdate</code></li>\n</ol>\n<h2 id="demo" tabindex="-1">Demo</h2>\n<p>A complete demo:</p>\n<md-live lang="js" code="\'dmFyIGRhdGEgPSBbXTsKZm9yIChsZXQgaSA9IDA7IGkgPCA1OyArK2kpIHsKICBkYXRhLnB1c2goTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogMjAwKSk7Cn0KCm9wdGlvbiA9IHsKICB4QXhpczogewogICAgbWF4OiAnZGF0YU1heCcKICB9LAogIHlBeGlzOiB7CiAgICB0eXBlOiAnY2F0ZWdvcnknLAogICAgZGF0YTogWydBJywgJ0InLCAnQycsICdEJywgJ0UnXSwKICAgIGludmVyc2U6IHRydWUsCiAgICBhbmltYXRpb25EdXJhdGlvbjogMzAwLAogICAgYW5pbWF0aW9uRHVyYXRpb25VcGRhdGU6IDMwMCwKICAgIG1heDogMiAvLyBvbmx5IHRoZSBsYXJnZXN0IDMgYmFycyB3aWxsIGJlIGRpc3BsYXllZAogIH0sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIHJlYWx0aW1lU29ydDogdHJ1ZSwKICAgICAgbmFtZTogJ1gnLAogICAgICB0eXBlOiAnYmFyJywKICAgICAgZGF0YTogZGF0YSwKICAgICAgbGFiZWw6IHsKICAgICAgICBzaG93OiB0cnVlLAogICAgICAgIHBvc2l0aW9uOiAncmlnaHQnLAogICAgICAgIHZhbHVlQW5pbWF0aW9uOiB0cnVlCiAgICAgIH0KICAgIH0KICBdLAogIGxlZ2VuZDogewogICAgc2hvdzogdHJ1ZQogIH0sCiAgYW5pbWF0aW9uRHVyYXRpb246IDAsCiAgYW5pbWF0aW9uRHVyYXRpb25VcGRhdGU6IDMwMDAsCiAgYW5pbWF0aW9uRWFzaW5nOiAnbGluZWFyJywKICBhbmltYXRpb25FYXNpbmdVcGRhdGU6ICdsaW5lYXInCn07CgpmdW5jdGlvbiBydW4oKSB7CiAgdmFyIGRhdGEgPSBvcHRpb24uc2VyaWVzWzBdLmRhdGE7CiAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgKytpKSB7CiAgICBpZiAoTWF0aC5yYW5kb20oKSA-IDAuOSkgewogICAgICBkYXRhW2ldICs9IE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDIwMDApOwogICAgfSBlbHNlIHsKICAgICAgZGF0YVtpXSArPSBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiAyMDApOwogICAgfQogIH0KICBteUNoYXJ0LnNldE9wdGlvbihvcHRpb24pOwp9CgpzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogIHJ1bigpOwp9LCAwKTsKc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CiAgcnVuKCk7Cn0sIDMwMDApOw\'" v-bind="{}" />\n',postPath:"en/how-to/chart-types/bar/bar-race",title:"Bar Racing - Bar - Common Charts - How To Guides"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:r},{title:"入门篇",dir:d,children:[{title:"获取 ECharts",dir:a},{title:"在项目中引入 ECharts",dir:l},{title:"资源列表",dir:o,draft:t},{title:"寻求帮助",dir:n},{title:"版本特性",dir:s,children:[{title:"ECharts 6 特性介绍",dir:c},{title:"v5 升级 v6 指南",dir:h},{title:"5.0",dir:g},{title:"v4 升级 v5 指南",dir:p},{title:5.2,dir:b},{title:5.3,dir:m},{title:5.4,dir:C},{title:5.5,dir:I},{title:5.6,dir:u}]}]},{title:"概念篇",dir:A,children:[{title:"图表容器及大小",dir:f},{title:"配置项",dir:y,draft:t},{title:"系列",dir:B,draft:t},{title:"样式",dir:w},{title:"数据集",dir:v},{title:"数据转换",dir:G},{title:"坐标系",dir:W,draft:t},{title:"坐标轴",dir:S},{title:"视觉映射",dir:e},{title:"图例",dir:R},{title:"事件与行为",dir:D}]},{title:"应用篇",dir:Y,children:[{title:"常用图表类型",dir:x,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:K},{title:"堆叠柱状图",dir:k},{title:"动态排序柱状图",dir:H},{title:"极坐标系柱状图",dir:X,draft:t},{title:"阶梯瀑布图",dir:V},{title:"视觉映射的柱状图",dir:e,draft:t}]},{title:"折线图",dir:Z,children:[{title:"基础折线图",dir:F},{title:"堆叠折线图",dir:L},{title:"区域面积图",dir:P},{title:"平滑曲线图",dir:O},{title:"阶梯线图",dir:M}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:E},{title:"圆环图",dir:J},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:U,children:[{title:"基础散点图",dir:z}]}]},{title:"常用组件",dir:T,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:N}]}]},{title:"移动端优化",dir:i,draft:t},{title:"跨平台方案",dir:Q,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:q},{title:"数据下钻",dir:_,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:j}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:it,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:et,draft:t},{title:"智能指针吸附",dir:rt}]}]},{title:"最佳实践",dir:dt,children:[{title:"移动端优化",dir:i,draft:t},{title:at,dir:lt},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:ot}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:nt}]}],en:[{title:"Get Started",dir:r},{title:"Basics",dir:d,children:[{title:"Download ECharts",dir:a},{title:"Import ECharts",dir:l},{title:"Resources",dir:o,draft:t},{title:"Get Help",dir:n},{title:"What's New",dir:s,children:[{title:"ECharts 6 Features",dir:c},{title:"Migration from v5 to v6",dir:h},{title:"5.0",dir:g},{title:"Migration from v4 to v5",dir:p},{title:5.2,dir:b},{title:5.3,dir:m},{title:5.4,dir:C},{title:5.5,dir:I},{title:5.6,dir:u}]}]},{title:"Concepts",dir:A,children:[{title:"Chart Container",dir:f},{title:"Chart Option",dir:y,draft:t},{title:"Series",dir:B,draft:t},{title:"Style",dir:w},{title:"Dataset",dir:v},{title:"Data Transform",dir:G},{title:"Coordinate",dir:W,draft:t},{title:"Axis",dir:S},{title:"Visual Mapping",dir:e},{title:"Legend",dir:R},{title:"Event and Action",dir:D}]},{title:"How To Guides",dir:Y,children:[{title:"Common Charts",dir:x,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:K},{title:"Stacked Bar",dir:k},{title:"Bar Racing",dir:H},{title:"Bar Polar",dir:X,draft:t},{title:"Waterfall",dir:V}]},{title:"Line",dir:Z,children:[{title:"Basic Line",dir:F},{title:"Stacked Line",dir:L},{title:"Area Chart",dir:P},{title:"Smoothed Line",dir:O},{title:"Step Line",dir:M}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:E},{title:"Ring Style",dir:J},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:U,children:[{title:"Basic Scatter",dir:z}]}]},{title:"Common Components",dir:T,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:N}]}]},{title:"Mobile",dir:i,draft:t},{title:"Cross Platform",dir:Q,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:q},{title:"Drilldown",dir:_,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:j}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:it,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:et,draft:t},{title:"Intelligent Pointer Snapping",dir:rt}]}]},{title:"Best Practices",dir:dt,children:[{title:"Mobile Optimization",dir:i,draft:t},{title:at,dir:lt},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:ot}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:nt}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/en/how-to/chart-types/bar/bar-race",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/en/how-to/chart-types/bar/basic-bar/index.html b/docs/en/how-to/chart-types/bar/basic-bar/index.html
new file mode 100644
index 0000000..b986590
--- /dev/null
+++ b/docs/en/how-to/chart-types/bar/basic-bar/index.html
@@ -0,0 +1,227 @@
+<!doctype html>
+<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Basic Bar - Bar - Common Charts - How To Guides - Handbook - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="en"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/en/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/en/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/en/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/en/index.html" class="navbar-brand"><img src="https://echarts.apache.org/en/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/en/index.html">Home</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Docs<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/feature.html">Features</a></li><li><a href="https://echarts.apache.org/handbook/en/get-started/">Handbook</a></li><li><a href="https://echarts.apache.org/en/api.html">API</a></li><li><a href="https://echarts.apache.org/en/option.html">Chart Configuration</a></li><li><a href="https://echarts.apache.org/en/changelog.html">Changelog</a></li><li><a href="https://echarts.apache.org/en/faq.html">FAQ</a></li><li><a href="https://echarts.apache.org/handbook/en/basics/release-note/v6-upgrade-guide">V6 Upgrade Guide</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Download<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/download.html">Download</a></li><li><a href="https://echarts.apache.org/en/download-theme.html">Download Themes</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">Download Custom Series<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/download-extension.html">Download Extensions</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/en/index.html">Examples</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Resources<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/spreadsheet.html">Spread Sheet Tool</a></li><li><a href="https://echarts.apache.org/en/theme-builder.html">Theme Builder</a></li><li><a href="https://echarts.apache.org/en/cheat-sheet.html">Cheat Sheet</a></li><li><a href="https://echarts.apache.org/en/resources.html">More Resources</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/events.html">Events</a></li><li><a href="https://echarts.apache.org/en/committers.html">Committers</a></li><li><a href="https://echarts.apache.org/en/maillist.html">Mailing List</a></li><li><a href="https://echarts.apache.org/en/contributing.html">How to Contribute</a></li><li><a href="https://echarts.apache.org/en/dependencies.html">Dependencies</a></li><li><a href="https://echarts.apache.org/en/coding-standard.html">Code Standard</a></li><li><a href="https://github.com/apache/echarts" target="_blank">Source Code (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/security.html">Security</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">License<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">Events<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("zh")'>中文</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/en/get-started" class="nav-link"><span class="title">Get Started</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Basics</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/basics/download" class="nav-link"><span class="title">Download ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/import" class="nav-link"><span class="title">Import ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/basics/help" class="nav-link"><span class="title">Get Help</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">What's New</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 Features</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">Migration from v5 to v6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">Migration from v4 to v5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Concepts</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/concepts/chart-size" class="nav-link"><span class="title">Chart Container</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/style" class="nav-link"><span class="title">Style</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/dataset" class="nav-link"><span class="title">Dataset</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/data-transform" class="nav-link"><span class="title">Data Transform</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/axis" class="nav-link"><span class="title">Axis</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/visual-map" class="nav-link"><span class="title">Visual Mapping</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/legend" class="nav-link"><span class="title">Legend</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/event" class="nav-link"><span class="title">Event and Action</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">How To Guides</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">Common Charts</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a class="nav-link"><span class="title">Bar</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level3"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/basic-bar" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">Basic Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">Stacked Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">Bar Racing</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">Waterfall</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Line</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">Basic Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">Stacked Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/area-line" class="nav-link"><span class="title">Area Chart</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">Smoothed Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/step-line" class="nav-link"><span class="title">Step Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Pie</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">Basic Pie</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">Ring Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/rose" class="nav-link"><span class="title">Rose Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Scatter</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">Basic Scatter</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Common Components</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Geo</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG Base Map</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">Cross Platform</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/cross-platform/server" class="nav-link"><span class="title">Server Side Rendering</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Data</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/data/dynamic-data" class="nav-link"><span class="title">Dynamic Data</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Label</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/label/rich-text" class="nav-link"><span class="title">Rich Text</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Animation</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/animation/transition" class="nav-link"><span class="title">Data Transition</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Interaction</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/drag" class="nav-link"><span class="title">Drag</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">Intelligent Pointer Snapping</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Best Practices</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/en/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/aria" class="nav-link"><span class="title">Aria</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/security" class="nav-link"><span class="title">Security Guidelines</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Edit Handbook</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/meta/edit-guide" class="nav-link"><span class="title">Edit Guide</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="basic-bar-chart" tabindex="-1">Basic Bar Chart</h1> <p>Bar Chart, is a chart that presents the comparisons among discrete data. The length of the bars is proportionally related to the categorical data.</p> <p>To set the bar chart, you need to set the <code>type</code> of <code>series</code> as <code>'bar'</code>.</p> <p><a href="https://echarts.apache.org/option.html#series-bar">[Option]</a></p> <h2 id="simple-example" tabindex="-1">Simple Example</h2> <p>Let's begin with a basic bar chart:</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
+  },
+  yAxis: {},
+  series: [
+    {
+      type: 'bar',
+      data: [23, 24, 18, 25, 27, 28, 25]
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'Mon'</span><span class="token punctuation">,</span> <span class="token string">'Tue'</span><span class="token punctuation">,</span> <span class="token string">'Wed'</span><span class="token punctuation">,</span> <span class="token string">'Thu'</span><span class="token punctuation">,</span> <span class="token string">'Fri'</span><span class="token punctuation">,</span> <span class="token string">'Sat'</span><span class="token punctuation">,</span> <span class="token string">'Sun'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">23</span><span class="token punctuation">,</span> <span class="token number">24</span><span class="token punctuation">,</span> <span class="token number">18</span><span class="token punctuation">,</span> <span class="token number">25</span><span class="token punctuation">,</span> <span class="token number">27</span><span class="token punctuation">,</span> <span class="token number">28</span><span class="token punctuation">,</span> <span class="token number">25</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>In this case, the x-axis is under the category type. Therefore, you should define some corresponding values for <code>'xAxis'</code>. Meanwhile, the data type of the y-axis is numerical. The range of the y-axis will be generated automatically by the <code>data</code> in <code>'series'</code>.</p> <h2 id="multi-series-bar-chart" tabindex="-1">Multi-series Bar Chart</h2> <p>You may use a series to represent a group of related data. To show multiple series in the same chart, you need to add one more array under the <code>series</code>.</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
+  },
+  yAxis: {},
+  series: [
+    {
+      type: 'bar',
+      data: [23, 24, 18, 25, 27, 28, 25]
+    },
+    {
+      type: 'bar',
+      data: [26, 24, 18, 22, 23, 20, 27]
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'Mon'</span><span class="token punctuation">,</span> <span class="token string">'Tue'</span><span class="token punctuation">,</span> <span class="token string">'Wed'</span><span class="token punctuation">,</span> <span class="token string">'Thu'</span><span class="token punctuation">,</span> <span class="token string">'Fri'</span><span class="token punctuation">,</span> <span class="token string">'Sat'</span><span class="token punctuation">,</span> <span class="token string">'Sun'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">23</span><span class="token punctuation">,</span> <span class="token number">24</span><span class="token punctuation">,</span> <span class="token number">18</span><span class="token punctuation">,</span> <span class="token number">25</span><span class="token punctuation">,</span> <span class="token number">27</span><span class="token punctuation">,</span> <span class="token number">28</span><span class="token punctuation">,</span> <span class="token number">25</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">26</span><span class="token punctuation">,</span> <span class="token number">24</span><span class="token punctuation">,</span> <span class="token number">18</span><span class="token punctuation">,</span> <span class="token number">22</span><span class="token punctuation">,</span> <span class="token number">23</span><span class="token punctuation">,</span> <span class="token number">20</span><span class="token punctuation">,</span> <span class="token number">27</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <h2 id="customized-bar-chart" tabindex="-1">Customized Bar Chart</h2> <h3 id="styles" tabindex="-1">Styles</h3> <p>It is a good idea to install the style of Bar Chart by using <a href="https://echarts.apache.org/option.html#series-bar.itemStyle">'series.itemStyle'</a>. Description of the SCI:</p> <ul><li>Color of column(<code>'color'</code>);</li> <li>Outline color(<code>'borderColor'</code>), width(<code>'borderWidth'</code>), type(<code>'borderType'</code>) of column;</li> <li>Border radius of column(<code>'barBorderRadius'</code>);</li> <li>Transparency(<code>'opacity'</code>);</li> <li>Shadow type(<code>'shadowBlur'</code>, <code>'shadowColor'</code>, <code>'shadowOffsetX'</code>, <code>'shadowOffsetY'</code>)</li></ul> <p>Here is a example:</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    data: ['A', 'B', 'C', 'D', 'E']
+  },
+  yAxis: {},
+  series: [
+    {
+      type: 'bar',
+      data: [
+        10,
+        22,
+        28,
+        {
+          value: 43,
+          // Specify the style for single bar
+          itemStyle: {
+            color: '#91cc75',
+            shadowColor: '#91cc75',
+            borderType: 'dashed',
+            opacity: 0.5
+          }
+        },
+        49
+      ],
+      itemStyle: {
+        barBorderRadius: 5,
+        borderWidth: 1,
+        borderType: 'solid',
+        borderColor: '#73c0de',
+        shadowColor: '#5470c6',
+        shadowBlur: 3
+      }
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'A'</span><span class="token punctuation">,</span> <span class="token string">'B'</span><span class="token punctuation">,</span> <span class="token string">'C'</span><span class="token punctuation">,</span> <span class="token string">'D'</span><span class="token punctuation">,</span> <span class="token string">'E'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token number">10</span><span class="token punctuation">,</span>
+        <span class="token number">22</span><span class="token punctuation">,</span>
+        <span class="token number">28</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">43</span><span class="token punctuation">,</span>
+          <span class="token comment">// Specify the style for single bar</span>
+          <span class="token literal-property property">itemStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+            <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'#91cc75'</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">shadowColor</span><span class="token operator">:</span> <span class="token string">'#91cc75'</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">borderType</span><span class="token operator">:</span> <span class="token string">'dashed'</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">opacity</span><span class="token operator">:</span> <span class="token number">0.5</span>
+          <span class="token punctuation">}</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token number">49</span>
+      <span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">itemStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">barBorderRadius</span><span class="token operator">:</span> <span class="token number">5</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">borderWidth</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">borderType</span><span class="token operator">:</span> <span class="token string">'solid'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">borderColor</span><span class="token operator">:</span> <span class="token string">'#73c0de'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">shadowColor</span><span class="token operator">:</span> <span class="token string">'#5470c6'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">shadowBlur</span><span class="token operator">:</span> <span class="token number">3</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>In this case, we defined the style of the bar chart by <code>'itemStyle'</code> of corresponding <code>series</code>. For complete configuration items and their usage, please check the configuration item manual: <a href="https://echarts.apache.org/option.html#series-bar.itemStyle"><code>series.itemStyle</code></a>。</p> <h3 id="width-and-height-of-column" tabindex="-1">Width and Height of Column</h3> <p>You can use <a href="https://echarts.apache.org/option.html##series-bar.barWidth"><code>barWidth</code></a> to change the width of the bar. For instance, the <code>'barWidth'</code> in the following case was set to <code>'20%'</code>. It indicates that width of each bar is 20% of the category width. As there are 5 data in every series, 20% <code>'barWidth'</code> means 4% for the entire x-axis.</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    data: ['A', 'B', 'C', 'D', 'E']
+  },
+  yAxis: {},
+  series: [
+    {
+      type: 'bar',
+      data: [10, 22, 28, 43, 49],
+      barWidth: '20%'
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'A'</span><span class="token punctuation">,</span> <span class="token string">'B'</span><span class="token punctuation">,</span> <span class="token string">'C'</span><span class="token punctuation">,</span> <span class="token string">'D'</span><span class="token punctuation">,</span> <span class="token string">'E'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">22</span><span class="token punctuation">,</span> <span class="token number">28</span><span class="token punctuation">,</span> <span class="token number">43</span><span class="token punctuation">,</span> <span class="token number">49</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">barWidth</span><span class="token operator">:</span> <span class="token string">'20%'</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>In addition, <a href="https://echarts.apache.org/option.html#series-bar.barMaxWidth"><code>barMaxWidth</code></a> has limited the maximum width of the bar. For some small value, you can declare a minimum height for the bar: <a href="https://echarts.apache.org/option.html#series-bar.barMinHeight"><code>barMinHeight</code></a>. When the corresponding height of data is smaller than the limit, ECharts will take 'barMinHeight' as the replaced height.</p> <h3 id="column-spacing" tabindex="-1">Column Spacing</h3> <p>There are two kinds of column spacing. One is the spacing between different series under the same category: <a href="https://echarts.apache.org/option.html#series-bar.barGap"><code>barGap</code></a>. The other is the spacing between categories: <a href="https://echarts.apache.org/option.html#series-bar.barCategoryGap"><code>barCategoryGap</code></a>.</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    data: ['A', 'B', 'C', 'D', 'E']
+  },
+  yAxis: {},
+  series: [
+    {
+      type: 'bar',
+      data: [23, 24, 18, 25, 18],
+      barGap: '20%',
+      barCategoryGap: '40%'
+    },
+    {
+      type: 'bar',
+      data: [12, 14, 9, 9, 11]
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'A'</span><span class="token punctuation">,</span> <span class="token string">'B'</span><span class="token punctuation">,</span> <span class="token string">'C'</span><span class="token punctuation">,</span> <span class="token string">'D'</span><span class="token punctuation">,</span> <span class="token string">'E'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">23</span><span class="token punctuation">,</span> <span class="token number">24</span><span class="token punctuation">,</span> <span class="token number">18</span><span class="token punctuation">,</span> <span class="token number">25</span><span class="token punctuation">,</span> <span class="token number">18</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">barGap</span><span class="token operator">:</span> <span class="token string">'20%'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">barCategoryGap</span><span class="token operator">:</span> <span class="token string">'40%'</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">12</span><span class="token punctuation">,</span> <span class="token number">14</span><span class="token punctuation">,</span> <span class="token number">9</span><span class="token punctuation">,</span> <span class="token number">9</span><span class="token punctuation">,</span> <span class="token number">11</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>In this case, the <code>barGap</code> is <code>'20%'</code>. That means the distance between bars under the same category is 20% of the bar width. For instance, if we set the <code>barCategoryGap</code> to <code>'40%'</code>, the gap on each side of the bar will take 40% place in categories (compared with the width of the column).</p> <p>Usually, <code>barWidth</code> is not necessary to be clarified if <code>'barGap'</code> and <code>barCategoryGap</code> was set. If you need to make sure the bar is not too wide while the graph is large, try to use <code>barMaxWidth</code> to limit the maximum width of bars.</p> <blockquote><p>In the same cartesian coordinate system, the property will be shared by several column series. To make sure it takes effect on the graph, please set the property on the last bar chart series of the system.</p></blockquote> <h3 id="add-background-color-for-bars" tabindex="-1">Add Background Color for Bars</h3> <p>You might want to change the background color of bars sometimes. After ECharts v4.7.0, this function can be enabled by <a href="https://echarts.apache.org/option.html#series-bar.showBackground">'showBackground'</a> and configured by <a href="https://echarts.apache.org/option.html#series-bar.backgroundStyle">'backgroundStyle'</a>.</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    type: 'category',
+    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
+  },
+  yAxis: {
+    type: 'value'
+  },
+  series: [
+    {
+      data: [120, 200, 150, 80, 70, 110, 130],
+      type: 'bar',
+      showBackground: true,
+      backgroundStyle: {
+        color: 'rgba(220, 220, 220, 0.8)'
+      }
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'category'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'Mon'</span><span class="token punctuation">,</span> <span class="token string">'Tue'</span><span class="token punctuation">,</span> <span class="token string">'Wed'</span><span class="token punctuation">,</span> <span class="token string">'Thu'</span><span class="token punctuation">,</span> <span class="token string">'Fri'</span><span class="token punctuation">,</span> <span class="token string">'Sat'</span><span class="token punctuation">,</span> <span class="token string">'Sun'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'value'</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">120</span><span class="token punctuation">,</span> <span class="token number">200</span><span class="token punctuation">,</span> <span class="token number">150</span><span class="token punctuation">,</span> <span class="token number">80</span><span class="token punctuation">,</span> <span class="token number">70</span><span class="token punctuation">,</span> <span class="token number">110</span><span class="token punctuation">,</span> <span class="token number">130</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">showBackground</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">backgroundStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'rgba(220, 220, 220, 0.8)'</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">Contributors</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/en/how-to/chart-types/bar/basic-bar.md" title="Edit this Document" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">Edit this page on GitHub</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/plainheart" target="_blank" class="post-contributor has-avatar"><img alt="plainheart" src="https://echarts.apache.org/en/images/people/plainheart.jpg" loading="lazy" decoding="async" fetchpriority="low"> <span>plainheart</span></a><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(e,t,i,r,a,d,o,l,n,s,c,h,g,C,I,A,p,b,m,y,B,w,f,u,M,v,G,k,O,S,L,x,X,D,J,Y,W,R,H,U,V,z,T,j,F,Q,Z,K,E,N,P,_,q,$,ee,te,ie,re,ae,de,oe,le,ne){return{layout:"default",data:[{html:'<h1 id="basic-bar-chart" tabindex="-1">Basic Bar Chart</h1>\n<p>Bar Chart, is a chart that presents the comparisons among discrete data. The length of the bars is proportionally related to the categorical data.</p>\n<p>To set the bar chart, you need to set the <code>type</code> of <code>series</code> as <code>\'bar\'</code>.</p>\n<p><a href="https://echarts.apache.org/option.html#series-bar">[Option]</a></p>\n<h2 id="simple-example" tabindex="-1">Simple Example</h2>\n<p>Let\'s begin with a basic bar chart:</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBkYXRhOiBbJ01vbicsICdUdWUnLCAnV2VkJywgJ1RodScsICdGcmknLCAnU2F0JywgJ1N1biddCiAgfSwKICB5QXhpczoge30sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIHR5cGU6ICdiYXInLAogICAgICBkYXRhOiBbMjMsIDI0LCAxOCwgMjUsIDI3LCAyOCwgMjVdCiAgICB9CiAgXQp9Ow\'" v-bind="{}" />\n<p>In this case, the x-axis is under the category type. Therefore, you should define some corresponding values for <code>\'xAxis\'</code>. Meanwhile, the data type of the y-axis is numerical. The range of the y-axis will be generated automatically by the <code>data</code> in <code>\'series\'</code>.</p>\n<h2 id="multi-series-bar-chart" tabindex="-1">Multi-series Bar Chart</h2>\n<p>You may use a series to represent a group of related data. To show multiple series in the same chart, you need to add one more array under the <code>series</code>.</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBkYXRhOiBbJ01vbicsICdUdWUnLCAnV2VkJywgJ1RodScsICdGcmknLCAnU2F0JywgJ1N1biddCiAgfSwKICB5QXhpczoge30sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIHR5cGU6ICdiYXInLAogICAgICBkYXRhOiBbMjMsIDI0LCAxOCwgMjUsIDI3LCAyOCwgMjVdCiAgICB9LAogICAgewogICAgICB0eXBlOiAnYmFyJywKICAgICAgZGF0YTogWzI2LCAyNCwgMTgsIDIyLCAyMywgMjAsIDI3XQogICAgfQogIF0KfTs\'" v-bind="{}" />\n<h2 id="customized-bar-chart" tabindex="-1">Customized Bar Chart</h2>\n<h3 id="styles" tabindex="-1">Styles</h3>\n<p>It is a good idea to install the style of Bar Chart by using <a href="https://echarts.apache.org/option.html#series-bar.itemStyle">\'series.itemStyle\'</a>. Description of the SCI:</p>\n<ul>\n<li>Color of column(<code>\'color\'</code>);</li>\n<li>Outline color(<code>\'borderColor\'</code>), width(<code>\'borderWidth\'</code>), type(<code>\'borderType\'</code>) of column;</li>\n<li>Border radius of column(<code>\'barBorderRadius\'</code>);</li>\n<li>Transparency(<code>\'opacity\'</code>);</li>\n<li>Shadow type(<code>\'shadowBlur\'</code>, <code>\'shadowColor\'</code>, <code>\'shadowOffsetX\'</code>, <code>\'shadowOffsetY\'</code>)</li>\n</ul>\n<p>Here is a example:</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBkYXRhOiBbJ0EnLCAnQicsICdDJywgJ0QnLCAnRSddCiAgfSwKICB5QXhpczoge30sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIHR5cGU6ICdiYXInLAogICAgICBkYXRhOiBbCiAgICAgICAgMTAsCiAgICAgICAgMjIsCiAgICAgICAgMjgsCiAgICAgICAgewogICAgICAgICAgdmFsdWU6IDQzLAogICAgICAgICAgLy8gU3BlY2lmeSB0aGUgc3R5bGUgZm9yIHNpbmdsZSBiYXIKICAgICAgICAgIGl0ZW1TdHlsZTogewogICAgICAgICAgICBjb2xvcjogJyM5MWNjNzUnLAogICAgICAgICAgICBzaGFkb3dDb2xvcjogJyM5MWNjNzUnLAogICAgICAgICAgICBib3JkZXJUeXBlOiAnZGFzaGVkJywKICAgICAgICAgICAgb3BhY2l0eTogMC41CiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICA0OQogICAgICBdLAogICAgICBpdGVtU3R5bGU6IHsKICAgICAgICBiYXJCb3JkZXJSYWRpdXM6IDUsCiAgICAgICAgYm9yZGVyV2lkdGg6IDEsCiAgICAgICAgYm9yZGVyVHlwZTogJ3NvbGlkJywKICAgICAgICBib3JkZXJDb2xvcjogJyM3M2MwZGUnLAogICAgICAgIHNoYWRvd0NvbG9yOiAnIzU0NzBjNicsCiAgICAgICAgc2hhZG93Qmx1cjogMwogICAgICB9CiAgICB9CiAgXQp9Ow\'" v-bind="{}" />\n<p>In this case, we defined the style of the bar chart by <code>\'itemStyle\'</code> of corresponding <code>series</code>. For complete configuration items and their usage, please check the configuration item manual: <a href="https://echarts.apache.org/option.html#series-bar.itemStyle"><code>series.itemStyle</code></a>。</p>\n<h3 id="width-and-height-of-column" tabindex="-1">Width and Height of Column</h3>\n<p>You can use <a href="https://echarts.apache.org/option.html##series-bar.barWidth"><code>barWidth</code></a> to change the width of the bar. For instance, the <code>\'barWidth\'</code> in the following case was set to <code>\'20%\'</code>. It indicates that width of each bar is 20% of the category width. As there are 5 data in every series, 20% <code>\'barWidth\'</code> means 4% for the entire x-axis.</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBkYXRhOiBbJ0EnLCAnQicsICdDJywgJ0QnLCAnRSddCiAgfSwKICB5QXhpczoge30sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIHR5cGU6ICdiYXInLAogICAgICBkYXRhOiBbMTAsIDIyLCAyOCwgNDMsIDQ5XSwKICAgICAgYmFyV2lkdGg6ICcyMCUnCiAgICB9CiAgXQp9Ow\'" v-bind="{}" />\n<p>In addition, <a href="https://echarts.apache.org/option.html#series-bar.barMaxWidth"><code>barMaxWidth</code></a> has limited the maximum width of the bar. For some small value, you can declare a minimum height for the bar: <a href="https://echarts.apache.org/option.html#series-bar.barMinHeight"><code>barMinHeight</code></a>. When the corresponding height of data is smaller than the limit, ECharts will take \'barMinHeight\' as the replaced height.</p>\n<h3 id="column-spacing" tabindex="-1">Column Spacing</h3>\n<p>There are two kinds of column spacing. One is the spacing between different series under the same category: <a href="https://echarts.apache.org/option.html#series-bar.barGap"><code>barGap</code></a>. The other is the spacing between categories: <a href="https://echarts.apache.org/option.html#series-bar.barCategoryGap"><code>barCategoryGap</code></a>.</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBkYXRhOiBbJ0EnLCAnQicsICdDJywgJ0QnLCAnRSddCiAgfSwKICB5QXhpczoge30sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIHR5cGU6ICdiYXInLAogICAgICBkYXRhOiBbMjMsIDI0LCAxOCwgMjUsIDE4XSwKICAgICAgYmFyR2FwOiAnMjAlJywKICAgICAgYmFyQ2F0ZWdvcnlHYXA6ICc0MCUnCiAgICB9LAogICAgewogICAgICB0eXBlOiAnYmFyJywKICAgICAgZGF0YTogWzEyLCAxNCwgOSwgOSwgMTFdCiAgICB9CiAgXQp9Ow\'" v-bind="{}" />\n<p>In this case, the <code>barGap</code> is <code>\'20%\'</code>. That means the distance between bars under the same category is 20% of the bar width. For instance, if we set the <code>barCategoryGap</code> to <code>\'40%\'</code>, the gap on each side of the bar will take 40% place in categories (compared with the width of the column).</p>\n<p>Usually, <code>barWidth</code> is not necessary to be clarified if <code>\'barGap\'</code> and <code>barCategoryGap</code> was set. If you need to make sure the bar is not too wide while the graph is large, try to use <code>barMaxWidth</code> to limit the maximum width of bars.</p>\n<blockquote>\n<p>In the same cartesian coordinate system, the property will be shared by several column series. To make sure it takes effect on the graph, please set the property on the last bar chart series of the system.</p>\n</blockquote>\n<h3 id="add-background-color-for-bars" tabindex="-1">Add Background Color for Bars</h3>\n<p>You might want to change the background color of bars sometimes. After ECharts v4.7.0, this function can be enabled by <a href="https://echarts.apache.org/option.html#series-bar.showBackground">\'showBackground\'</a> and configured by <a href="https://echarts.apache.org/option.html#series-bar.backgroundStyle">\'backgroundStyle\'</a>.</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICB0eXBlOiAnY2F0ZWdvcnknLAogICAgZGF0YTogWydNb24nLCAnVHVlJywgJ1dlZCcsICdUaHUnLCAnRnJpJywgJ1NhdCcsICdTdW4nXQogIH0sCiAgeUF4aXM6IHsKICAgIHR5cGU6ICd2YWx1ZScKICB9LAogIHNlcmllczogWwogICAgewogICAgICBkYXRhOiBbMTIwLCAyMDAsIDE1MCwgODAsIDcwLCAxMTAsIDEzMF0sCiAgICAgIHR5cGU6ICdiYXInLAogICAgICBzaG93QmFja2dyb3VuZDogdHJ1ZSwKICAgICAgYmFja2dyb3VuZFN0eWxlOiB7CiAgICAgICAgY29sb3I6ICdyZ2JhKDIyMCwgMjIwLCAyMjAsIDAuOCknCiAgICAgIH0KICAgIH0KICBdCn07\'" v-bind="{}" />\n',postPath:"en/how-to/chart-types/bar/basic-bar",title:"Basic Bar - Bar - Common Charts - How To Guides"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:r},{title:"入门篇",dir:a,children:[{title:"获取 ECharts",dir:d},{title:"在项目中引入 ECharts",dir:o},{title:"资源列表",dir:l,draft:e},{title:"寻求帮助",dir:n},{title:"版本特性",dir:s,children:[{title:"ECharts 6 特性介绍",dir:c},{title:"v5 升级 v6 指南",dir:h},{title:"5.0",dir:g},{title:"v4 升级 v5 指南",dir:C},{title:5.2,dir:I},{title:5.3,dir:A},{title:5.4,dir:p},{title:5.5,dir:b},{title:5.6,dir:m}]}]},{title:"概念篇",dir:y,children:[{title:"图表容器及大小",dir:B},{title:"配置项",dir:w,draft:e},{title:"系列",dir:f,draft:e},{title:"样式",dir:u},{title:"数据集",dir:M},{title:"数据转换",dir:v},{title:"坐标系",dir:G,draft:e},{title:"坐标轴",dir:k},{title:"视觉映射",dir:i},{title:"图例",dir:O},{title:"事件与行为",dir:S}]},{title:"应用篇",dir:L,children:[{title:"常用图表类型",dir:x,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:X},{title:"堆叠柱状图",dir:D},{title:"动态排序柱状图",dir:J},{title:"极坐标系柱状图",dir:Y,draft:e},{title:"阶梯瀑布图",dir:W},{title:"视觉映射的柱状图",dir:i,draft:e}]},{title:"折线图",dir:R,children:[{title:"基础折线图",dir:H},{title:"堆叠折线图",dir:U},{title:"区域面积图",dir:V},{title:"平滑曲线图",dir:z},{title:"阶梯线图",dir:T}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:j},{title:"圆环图",dir:F},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:Q,children:[{title:"基础散点图",dir:Z}]}]},{title:"常用组件",dir:K,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:E}]}]},{title:"移动端优化",dir:t,draft:e},{title:"跨平台方案",dir:N,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:P},{title:"数据下钻",dir:_,draft:e}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:q}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:ee}]},{title:"交互",dir:te,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:ie,draft:e},{title:"智能指针吸附",dir:re}]}]},{title:"最佳实践",dir:ae,children:[{title:"移动端优化",dir:t,draft:e},{title:de,dir:oe},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:le}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:ne}]}],en:[{title:"Get Started",dir:r},{title:"Basics",dir:a,children:[{title:"Download ECharts",dir:d},{title:"Import ECharts",dir:o},{title:"Resources",dir:l,draft:e},{title:"Get Help",dir:n},{title:"What's New",dir:s,children:[{title:"ECharts 6 Features",dir:c},{title:"Migration from v5 to v6",dir:h},{title:"5.0",dir:g},{title:"Migration from v4 to v5",dir:C},{title:5.2,dir:I},{title:5.3,dir:A},{title:5.4,dir:p},{title:5.5,dir:b},{title:5.6,dir:m}]}]},{title:"Concepts",dir:y,children:[{title:"Chart Container",dir:B},{title:"Chart Option",dir:w,draft:e},{title:"Series",dir:f,draft:e},{title:"Style",dir:u},{title:"Dataset",dir:M},{title:"Data Transform",dir:v},{title:"Coordinate",dir:G,draft:e},{title:"Axis",dir:k},{title:"Visual Mapping",dir:i},{title:"Legend",dir:O},{title:"Event and Action",dir:S}]},{title:"How To Guides",dir:L,children:[{title:"Common Charts",dir:x,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:X},{title:"Stacked Bar",dir:D},{title:"Bar Racing",dir:J},{title:"Bar Polar",dir:Y,draft:e},{title:"Waterfall",dir:W}]},{title:"Line",dir:R,children:[{title:"Basic Line",dir:H},{title:"Stacked Line",dir:U},{title:"Area Chart",dir:V},{title:"Smoothed Line",dir:z},{title:"Step Line",dir:T}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:j},{title:"Ring Style",dir:F},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:Q,children:[{title:"Basic Scatter",dir:Z}]}]},{title:"Common Components",dir:K,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:E}]}]},{title:"Mobile",dir:t,draft:e},{title:"Cross Platform",dir:N,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:P},{title:"Drilldown",dir:_,draft:e}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:q}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:ee}]},{title:"Interaction",dir:te,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:ie,draft:e},{title:"Intelligent Pointer Snapping",dir:re}]}]},{title:"Best Practices",dir:ae,children:[{title:"Mobile Optimization",dir:t,draft:e},{title:de,dir:oe},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:le}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:ne}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:e,routePath:"/en/how-to/chart-types/bar/basic-bar",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/en/how-to/chart-types/bar/stacked-bar/index.html b/docs/en/how-to/chart-types/bar/stacked-bar/index.html
new file mode 100644
index 0000000..eea76bb
--- /dev/null
+++ b/docs/en/how-to/chart-types/bar/stacked-bar/index.html
@@ -0,0 +1,47 @@
+<!doctype html>
+<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Stacked Bar - Bar - Common Charts - How To Guides - Handbook - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="en"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/en/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/en/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/en/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/en/index.html" class="navbar-brand"><img src="https://echarts.apache.org/en/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/en/index.html">Home</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Docs<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/feature.html">Features</a></li><li><a href="https://echarts.apache.org/handbook/en/get-started/">Handbook</a></li><li><a href="https://echarts.apache.org/en/api.html">API</a></li><li><a href="https://echarts.apache.org/en/option.html">Chart Configuration</a></li><li><a href="https://echarts.apache.org/en/changelog.html">Changelog</a></li><li><a href="https://echarts.apache.org/en/faq.html">FAQ</a></li><li><a href="https://echarts.apache.org/handbook/en/basics/release-note/v6-upgrade-guide">V6 Upgrade Guide</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Download<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/download.html">Download</a></li><li><a href="https://echarts.apache.org/en/download-theme.html">Download Themes</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">Download Custom Series<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/download-extension.html">Download Extensions</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/en/index.html">Examples</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Resources<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/spreadsheet.html">Spread Sheet Tool</a></li><li><a href="https://echarts.apache.org/en/theme-builder.html">Theme Builder</a></li><li><a href="https://echarts.apache.org/en/cheat-sheet.html">Cheat Sheet</a></li><li><a href="https://echarts.apache.org/en/resources.html">More Resources</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/events.html">Events</a></li><li><a href="https://echarts.apache.org/en/committers.html">Committers</a></li><li><a href="https://echarts.apache.org/en/maillist.html">Mailing List</a></li><li><a href="https://echarts.apache.org/en/contributing.html">How to Contribute</a></li><li><a href="https://echarts.apache.org/en/dependencies.html">Dependencies</a></li><li><a href="https://echarts.apache.org/en/coding-standard.html">Code Standard</a></li><li><a href="https://github.com/apache/echarts" target="_blank">Source Code (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/security.html">Security</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">License<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">Events<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("zh")'>中文</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/en/get-started" class="nav-link"><span class="title">Get Started</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Basics</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/basics/download" class="nav-link"><span class="title">Download ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/import" class="nav-link"><span class="title">Import ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/basics/help" class="nav-link"><span class="title">Get Help</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">What's New</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 Features</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">Migration from v5 to v6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">Migration from v4 to v5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Concepts</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/concepts/chart-size" class="nav-link"><span class="title">Chart Container</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/style" class="nav-link"><span class="title">Style</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/dataset" class="nav-link"><span class="title">Dataset</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/data-transform" class="nav-link"><span class="title">Data Transform</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/axis" class="nav-link"><span class="title">Axis</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/visual-map" class="nav-link"><span class="title">Visual Mapping</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/legend" class="nav-link"><span class="title">Legend</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/event" class="nav-link"><span class="title">Event and Action</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">How To Guides</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">Common Charts</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a class="nav-link"><span class="title">Bar</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level3"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">Basic Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/stacked-bar" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">Stacked Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">Bar Racing</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">Waterfall</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Line</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">Basic Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">Stacked Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/area-line" class="nav-link"><span class="title">Area Chart</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">Smoothed Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/step-line" class="nav-link"><span class="title">Step Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Pie</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">Basic Pie</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">Ring Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/rose" class="nav-link"><span class="title">Rose Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Scatter</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">Basic Scatter</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Common Components</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Geo</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG Base Map</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">Cross Platform</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/cross-platform/server" class="nav-link"><span class="title">Server Side Rendering</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Data</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/data/dynamic-data" class="nav-link"><span class="title">Dynamic Data</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Label</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/label/rich-text" class="nav-link"><span class="title">Rich Text</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Animation</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/animation/transition" class="nav-link"><span class="title">Data Transition</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Interaction</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/drag" class="nav-link"><span class="title">Drag</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">Intelligent Pointer Snapping</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Best Practices</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/en/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/aria" class="nav-link"><span class="title">Aria</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/security" class="nav-link"><span class="title">Security Guidelines</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Edit Handbook</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/meta/edit-guide" class="nav-link"><span class="title">Edit Guide</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="stacked-bar-chart" tabindex="-1">Stacked Bar Chart</h1> <p>Sometimes, we hope to not only figure series separately but also the trend of the sum. It's a good choice to implement it by using the stacked bar chart. As the name suggests, in the stacked bar chart, data in the same category will be stacked up in one column. The overall height of the bar explained the change of total.</p> <p>There is a simple way to implement a stacked bar chart by ECharts. You need to set the same string type value for a group of series in <code>stack</code>. The series with the same <code>stack</code> value will be in the same category.</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    data: ['A', 'B', 'C', 'D', 'E']
+  },
+  yAxis: {},
+  series: [
+    {
+      data: [10, 22, 28, 43, 49],
+      type: 'bar',
+      stack: 'x'
+    },
+    {
+      data: [5, 4, 3, 5, 10],
+      type: 'bar',
+      stack: 'x'
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'A'</span><span class="token punctuation">,</span> <span class="token string">'B'</span><span class="token punctuation">,</span> <span class="token string">'C'</span><span class="token punctuation">,</span> <span class="token string">'D'</span><span class="token punctuation">,</span> <span class="token string">'E'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">22</span><span class="token punctuation">,</span> <span class="token number">28</span><span class="token punctuation">,</span> <span class="token number">43</span><span class="token punctuation">,</span> <span class="token number">49</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">stack</span><span class="token operator">:</span> <span class="token string">'x'</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">stack</span><span class="token operator">:</span> <span class="token string">'x'</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>In this case, the position of the second series is based on the position of the first series, the height increased is corresponding to the first series' height. Therefore, from the position of the second series, you can find the changing trend of the sum of the two.</p> <blockquote><p>The value of <code>stack</code> explained what series will be stacked up together. Theoretically, the specific value of 'stack' is meaningless. However, we prefer some suggestive strings for the convenience of reading.</p> <p>For instance, here is a chart with 4 series that counted the amount of male and female. "adult male" and "boy" need to be stacked while "adult female" and "girl" need to be stacked. In this case, the suggestive value of <code>stack</code> is <code>'male'</code> and <code>'female'</code>. Although meaningless strings like <code>'a'</code> and <code>'b'</code> can achieve the same effect but the code will have worse readability.</p></blockquote></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">Contributors</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/en/how-to/chart-types/bar/stacked-bar.md" title="Edit this Document" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">Edit this page on GitHub</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,e,i,r,d,a,l,o,s,n,c,h,g,p,f,m,u,b,C,v,w,I,k,A,y,B,S,D,P,G,x,E,T,R,L,M,q,H,V,z,J,K,O,W,Y,_,F,N,X,Q,U,j,Z,$,tt,et,it,rt,dt,at,lt,ot,st){return{layout:"default",data:[{html:"<h1 id=\"stacked-bar-chart\" tabindex=\"-1\">Stacked Bar Chart</h1>\n<p>Sometimes, we hope to not only figure series separately but also the trend of the sum. It's a good choice to implement it by using the stacked bar chart. As the name suggests, in the stacked bar chart, data in the same category will be stacked up in one column. The overall height of the bar explained the change of total.</p>\n<p>There is a simple way to implement a stacked bar chart by ECharts. You need to set the same string type value for a group of series in <code>stack</code>. The series with the same <code>stack</code> value will be in the same category.</p>\n<md-live lang=\"js\" code=\"'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBkYXRhOiBbJ0EnLCAnQicsICdDJywgJ0QnLCAnRSddCiAgfSwKICB5QXhpczoge30sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIGRhdGE6IFsxMCwgMjIsIDI4LCA0MywgNDldLAogICAgICB0eXBlOiAnYmFyJywKICAgICAgc3RhY2s6ICd4JwogICAgfSwKICAgIHsKICAgICAgZGF0YTogWzUsIDQsIDMsIDUsIDEwXSwKICAgICAgdHlwZTogJ2JhcicsCiAgICAgIHN0YWNrOiAneCcKICAgIH0KICBdCn07'\" v-bind=\"{}\" />\n<p>In this case, the position of the second series is based on the position of the first series, the height increased is corresponding to the first series' height. Therefore, from the position of the second series, you can find the changing trend of the sum of the two.</p>\n<blockquote>\n<p>The value of <code>stack</code> explained what series will be stacked up together. Theoretically, the specific value of 'stack' is meaningless. However, we prefer some suggestive strings for the convenience of reading.</p>\n<p>For instance, here is a chart with 4 series that counted the amount of male and female. &quot;adult male&quot; and &quot;boy&quot; need to be stacked while &quot;adult female&quot; and &quot;girl&quot; need to be stacked. In this case, the suggestive value of <code>stack</code> is <code>'male'</code> and <code>'female'</code>. Although meaningless strings like <code>'a'</code> and <code>'b'</code> can achieve the same effect but the code will have worse readability.</p>\n</blockquote>\n",postPath:"en/how-to/chart-types/bar/stacked-bar",title:"Stacked Bar - Bar - Common Charts - How To Guides"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:r},{title:"入门篇",dir:d,children:[{title:"获取 ECharts",dir:a},{title:"在项目中引入 ECharts",dir:l},{title:"资源列表",dir:o,draft:t},{title:"寻求帮助",dir:s},{title:"版本特性",dir:n,children:[{title:"ECharts 6 特性介绍",dir:c},{title:"v5 升级 v6 指南",dir:h},{title:"5.0",dir:g},{title:"v4 升级 v5 指南",dir:p},{title:5.2,dir:f},{title:5.3,dir:m},{title:5.4,dir:u},{title:5.5,dir:b},{title:5.6,dir:C}]}]},{title:"概念篇",dir:v,children:[{title:"图表容器及大小",dir:w},{title:"配置项",dir:I,draft:t},{title:"系列",dir:k,draft:t},{title:"样式",dir:A},{title:"数据集",dir:y},{title:"数据转换",dir:B},{title:"坐标系",dir:S,draft:t},{title:"坐标轴",dir:D},{title:"视觉映射",dir:i},{title:"图例",dir:P},{title:"事件与行为",dir:G}]},{title:"应用篇",dir:x,children:[{title:"常用图表类型",dir:E,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:T},{title:"堆叠柱状图",dir:R},{title:"动态排序柱状图",dir:L},{title:"极坐标系柱状图",dir:M,draft:t},{title:"阶梯瀑布图",dir:q},{title:"视觉映射的柱状图",dir:i,draft:t}]},{title:"折线图",dir:H,children:[{title:"基础折线图",dir:V},{title:"堆叠折线图",dir:z},{title:"区域面积图",dir:J},{title:"平滑曲线图",dir:K},{title:"阶梯线图",dir:O}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:W},{title:"圆环图",dir:Y},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:_,children:[{title:"基础散点图",dir:F}]}]},{title:"常用组件",dir:N,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:X}]}]},{title:"移动端优化",dir:e,draft:t},{title:"跨平台方案",dir:Q,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:U},{title:"数据下钻",dir:j,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:Z}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:et,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:it,draft:t},{title:"智能指针吸附",dir:rt}]}]},{title:"最佳实践",dir:dt,children:[{title:"移动端优化",dir:e,draft:t},{title:at,dir:lt},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:ot}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:st}]}],en:[{title:"Get Started",dir:r},{title:"Basics",dir:d,children:[{title:"Download ECharts",dir:a},{title:"Import ECharts",dir:l},{title:"Resources",dir:o,draft:t},{title:"Get Help",dir:s},{title:"What's New",dir:n,children:[{title:"ECharts 6 Features",dir:c},{title:"Migration from v5 to v6",dir:h},{title:"5.0",dir:g},{title:"Migration from v4 to v5",dir:p},{title:5.2,dir:f},{title:5.3,dir:m},{title:5.4,dir:u},{title:5.5,dir:b},{title:5.6,dir:C}]}]},{title:"Concepts",dir:v,children:[{title:"Chart Container",dir:w},{title:"Chart Option",dir:I,draft:t},{title:"Series",dir:k,draft:t},{title:"Style",dir:A},{title:"Dataset",dir:y},{title:"Data Transform",dir:B},{title:"Coordinate",dir:S,draft:t},{title:"Axis",dir:D},{title:"Visual Mapping",dir:i},{title:"Legend",dir:P},{title:"Event and Action",dir:G}]},{title:"How To Guides",dir:x,children:[{title:"Common Charts",dir:E,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:T},{title:"Stacked Bar",dir:R},{title:"Bar Racing",dir:L},{title:"Bar Polar",dir:M,draft:t},{title:"Waterfall",dir:q}]},{title:"Line",dir:H,children:[{title:"Basic Line",dir:V},{title:"Stacked Line",dir:z},{title:"Area Chart",dir:J},{title:"Smoothed Line",dir:K},{title:"Step Line",dir:O}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:W},{title:"Ring Style",dir:Y},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:_,children:[{title:"Basic Scatter",dir:F}]}]},{title:"Common Components",dir:N,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:X}]}]},{title:"Mobile",dir:e,draft:t},{title:"Cross Platform",dir:Q,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:U},{title:"Drilldown",dir:j,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:Z}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:et,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:it,draft:t},{title:"Intelligent Pointer Snapping",dir:rt}]}]},{title:"Best Practices",dir:dt,children:[{title:"Mobile Optimization",dir:e,draft:t},{title:at,dir:lt},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:ot}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:st}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/en/how-to/chart-types/bar/stacked-bar",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/en/how-to/chart-types/bar/waterfall/index.html b/docs/en/how-to/chart-types/bar/waterfall/index.html
new file mode 100644
index 0000000..c6b5a33
--- /dev/null
+++ b/docs/en/how-to/chart-types/bar/waterfall/index.html
@@ -0,0 +1,175 @@
+<!doctype html>
+<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Waterfall - Bar - Common Charts - How To Guides - Handbook - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="en"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/en/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/en/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/en/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/en/index.html" class="navbar-brand"><img src="https://echarts.apache.org/en/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/en/index.html">Home</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Docs<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/feature.html">Features</a></li><li><a href="https://echarts.apache.org/handbook/en/get-started/">Handbook</a></li><li><a href="https://echarts.apache.org/en/api.html">API</a></li><li><a href="https://echarts.apache.org/en/option.html">Chart Configuration</a></li><li><a href="https://echarts.apache.org/en/changelog.html">Changelog</a></li><li><a href="https://echarts.apache.org/en/faq.html">FAQ</a></li><li><a href="https://echarts.apache.org/handbook/en/basics/release-note/v6-upgrade-guide">V6 Upgrade Guide</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Download<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/download.html">Download</a></li><li><a href="https://echarts.apache.org/en/download-theme.html">Download Themes</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">Download Custom Series<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/download-extension.html">Download Extensions</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/en/index.html">Examples</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Resources<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/spreadsheet.html">Spread Sheet Tool</a></li><li><a href="https://echarts.apache.org/en/theme-builder.html">Theme Builder</a></li><li><a href="https://echarts.apache.org/en/cheat-sheet.html">Cheat Sheet</a></li><li><a href="https://echarts.apache.org/en/resources.html">More Resources</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/events.html">Events</a></li><li><a href="https://echarts.apache.org/en/committers.html">Committers</a></li><li><a href="https://echarts.apache.org/en/maillist.html">Mailing List</a></li><li><a href="https://echarts.apache.org/en/contributing.html">How to Contribute</a></li><li><a href="https://echarts.apache.org/en/dependencies.html">Dependencies</a></li><li><a href="https://echarts.apache.org/en/coding-standard.html">Code Standard</a></li><li><a href="https://github.com/apache/echarts" target="_blank">Source Code (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/security.html">Security</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">License<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">Events<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("zh")'>中文</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/en/get-started" class="nav-link"><span class="title">Get Started</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Basics</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/basics/download" class="nav-link"><span class="title">Download ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/import" class="nav-link"><span class="title">Import ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/basics/help" class="nav-link"><span class="title">Get Help</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">What's New</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 Features</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">Migration from v5 to v6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">Migration from v4 to v5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Concepts</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/concepts/chart-size" class="nav-link"><span class="title">Chart Container</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/style" class="nav-link"><span class="title">Style</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/dataset" class="nav-link"><span class="title">Dataset</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/data-transform" class="nav-link"><span class="title">Data Transform</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/axis" class="nav-link"><span class="title">Axis</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/visual-map" class="nav-link"><span class="title">Visual Mapping</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/legend" class="nav-link"><span class="title">Legend</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/event" class="nav-link"><span class="title">Event and Action</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">How To Guides</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">Common Charts</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a class="nav-link"><span class="title">Bar</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level3"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">Basic Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">Stacked Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">Bar Racing</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/waterfall" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">Waterfall</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Line</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">Basic Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">Stacked Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/area-line" class="nav-link"><span class="title">Area Chart</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">Smoothed Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/step-line" class="nav-link"><span class="title">Step Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Pie</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">Basic Pie</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">Ring Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/rose" class="nav-link"><span class="title">Rose Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Scatter</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">Basic Scatter</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Common Components</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Geo</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG Base Map</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">Cross Platform</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/cross-platform/server" class="nav-link"><span class="title">Server Side Rendering</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Data</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/data/dynamic-data" class="nav-link"><span class="title">Dynamic Data</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Label</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/label/rich-text" class="nav-link"><span class="title">Rich Text</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Animation</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/animation/transition" class="nav-link"><span class="title">Data Transition</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Interaction</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/drag" class="nav-link"><span class="title">Drag</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">Intelligent Pointer Snapping</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Best Practices</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/en/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/aria" class="nav-link"><span class="title">Aria</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/security" class="nav-link"><span class="title">Security Guidelines</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Edit Handbook</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/meta/edit-guide" class="nav-link"><span class="title">Edit Guide</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="waterfall" tabindex="-1">Waterfall</h1> <p>There is no waterfall series in Apache ECharts, but we can simulate the effect using a stacked bar chart.</p> <p>Assuming that the values in the data array represent an increase or decrease from the previous value.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">var</span> data <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token number">900</span><span class="token punctuation">,</span> <span class="token number">345</span><span class="token punctuation">,</span> <span class="token number">393</span><span class="token punctuation">,</span> <span class="token operator">-</span><span class="token number">108</span><span class="token punctuation">,</span> <span class="token operator">-</span><span class="token number">154</span><span class="token punctuation">,</span> <span class="token number">135</span><span class="token punctuation">,</span> <span class="token number">178</span><span class="token punctuation">,</span> <span class="token number">286</span><span class="token punctuation">,</span> <span class="token operator">-</span><span class="token number">119</span><span class="token punctuation">,</span> <span class="token operator">-</span><span class="token number">361</span><span class="token punctuation">,</span> <span class="token operator">-</span><span class="token number">203</span><span class="token punctuation">]</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>That is, the first data is <code>900</code> and the second data <code>345</code> represents the addition of <code>345</code> to <code>900</code>, etc. When presenting this data as a stepped waterfall chart, we can use three series: the first is a non-interactive transparent series to implement the suspension bar effect, the second series is used to represent positive numbers, and the third series is used to represent negative numbers.</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">var data = [900, 345, 393, -108, -154, 135, 178, 286, -119, -361, -203];
+var help = [];
+var positive = [];
+var negative = [];
+for (var i = 0, sum = 0; i &lt; data.length; ++i) {
+  if (data[i] >= 0) {
+    positive.push(data[i]);
+    negative.push('-');
+  } else {
+    positive.push('-');
+    negative.push(-data[i]);
+  }
+
+  if (i === 0) {
+    help.push(0);
+  } else {
+    sum += data[i - 1];
+    if (data[i] &lt; 0) {
+      help.push(sum + data[i]);
+    } else {
+      help.push(sum);
+    }
+  }
+}
+
+option = {
+  title: {
+    text: 'Waterfall'
+  },
+  grid: {
+    left: '3%',
+    right: '4%',
+    bottom: '3%',
+    containLabel: true
+  },
+  xAxis: {
+    type: 'category',
+    splitLine: { show: false },
+    data: (function() {
+      var list = [];
+      for (var i = 1; i &lt;= 11; i++) {
+        list.push('Oct/' + i);
+      }
+      return list;
+    })()
+  },
+  yAxis: {
+    type: 'value'
+  },
+  series: [
+    {
+      type: 'bar',
+      stack: 'all',
+      itemStyle: {
+        normal: {
+          barBorderColor: 'rgba(0,0,0,0)',
+          color: 'rgba(0,0,0,0)'
+        },
+        emphasis: {
+          barBorderColor: 'rgba(0,0,0,0)',
+          color: 'rgba(0,0,0,0)'
+        }
+      },
+      data: help
+    },
+    {
+      name: 'positive',
+      type: 'bar',
+      stack: 'all',
+      data: positive
+    },
+    {
+      name: 'negative',
+      type: 'bar',
+      stack: 'all',
+      data: negative,
+      itemStyle: {
+        color: '#f33'
+      }
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor"><span class="token keyword">var</span> data <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token number">900</span><span class="token punctuation">,</span> <span class="token number">345</span><span class="token punctuation">,</span> <span class="token number">393</span><span class="token punctuation">,</span> <span class="token operator">-</span><span class="token number">108</span><span class="token punctuation">,</span> <span class="token operator">-</span><span class="token number">154</span><span class="token punctuation">,</span> <span class="token number">135</span><span class="token punctuation">,</span> <span class="token number">178</span><span class="token punctuation">,</span> <span class="token number">286</span><span class="token punctuation">,</span> <span class="token operator">-</span><span class="token number">119</span><span class="token punctuation">,</span> <span class="token operator">-</span><span class="token number">361</span><span class="token punctuation">,</span> <span class="token operator">-</span><span class="token number">203</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
+<span class="token keyword">var</span> help <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
+<span class="token keyword">var</span> positive <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
+<span class="token keyword">var</span> negative <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
+<span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">var</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">,</span> sum <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator">&lt;</span> data<span class="token punctuation">.</span>length<span class="token punctuation">;</span> <span class="token operator">++</span>i<span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  <span class="token keyword">if</span> <span class="token punctuation">(</span>data<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">>=</span> <span class="token number">0</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+    positive<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span>data<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+    negative<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token string">'-'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+  <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span>
+    positive<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token string">'-'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+    negative<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token operator">-</span>data<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+  <span class="token punctuation">}</span>
+
+  <span class="token keyword">if</span> <span class="token punctuation">(</span>i <span class="token operator">===</span> <span class="token number">0</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+    help<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+  <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span>
+    sum <span class="token operator">+=</span> data<span class="token punctuation">[</span>i <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
+    <span class="token keyword">if</span> <span class="token punctuation">(</span>data<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">&lt;</span> <span class="token number">0</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+      help<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span>sum <span class="token operator">+</span> data<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+    <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span>
+      help<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span>sum<span class="token punctuation">)</span><span class="token punctuation">;</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span>
+
+option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">title</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'Waterfall'</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">grid</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">left</span><span class="token operator">:</span> <span class="token string">'3%'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">right</span><span class="token operator">:</span> <span class="token string">'4%'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">bottom</span><span class="token operator">:</span> <span class="token string">'3%'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">containLabel</span><span class="token operator">:</span> <span class="token boolean">true</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'category'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">splitLine</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">false</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">(</span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+      <span class="token keyword">var</span> list <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
+      <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">var</span> i <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span> i <span class="token operator">&lt;=</span> <span class="token number">11</span><span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+        list<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token string">'Oct/'</span> <span class="token operator">+</span> i<span class="token punctuation">)</span><span class="token punctuation">;</span>
+      <span class="token punctuation">}</span>
+      <span class="token keyword">return</span> list<span class="token punctuation">;</span>
+    <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'value'</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">stack</span><span class="token operator">:</span> <span class="token string">'all'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">itemStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">normal</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+          <span class="token literal-property property">barBorderColor</span><span class="token operator">:</span> <span class="token string">'rgba(0,0,0,0)'</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'rgba(0,0,0,0)'</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">emphasis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+          <span class="token literal-property property">barBorderColor</span><span class="token operator">:</span> <span class="token string">'rgba(0,0,0,0)'</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'rgba(0,0,0,0)'</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> help
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'positive'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">stack</span><span class="token operator">:</span> <span class="token string">'all'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> positive
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'negative'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">stack</span><span class="token operator">:</span> <span class="token string">'all'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> negative<span class="token punctuation">,</span>
+      <span class="token literal-property property">itemStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'#f33'</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">Contributors</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/en/how-to/chart-types/bar/waterfall.md" title="Edit this Document" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">Edit this page on GitHub</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/plainheart" target="_blank" class="post-contributor has-avatar"><img alt="plainheart" src="https://echarts.apache.org/en/images/people/plainheart.jpg" loading="lazy" decoding="async" fetchpriority="low"> <span>plainheart</span></a><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,i,e,r,d,a,l,g,s,n,o,c,C,I,h,A,p,w,b,m,B,G,f,u,S,v,H,Z,K,y,L,T,M,D,R,X,V,k,z,N,Y,P,x,J,O,W,E,F,U,j,Q,_,$,q,tt,it,et,rt,dt,at,lt,gt,st){return{layout:"default",data:[{html:'<h1 id="waterfall" tabindex="-1">Waterfall</h1>\n<p>There is no waterfall series in Apache ECharts, but we can simulate the effect using a stacked bar chart.</p>\n<p>Assuming that the values in the data array represent an increase or decrease from the previous value.</p>\n<md-code-block lang="js" code="\'dmFyIGRhdGEgPSBbOTAwLCAzNDUsIDM5MywgLTEwOCwgLTE1NCwgMTM1LCAxNzgsIDI4NiwgLTExOSwgLTM2MSwgLTIwM107\'" line-highlights="\'\'" />\n<p>That is, the first data is <code>900</code> and the second data <code>345</code> represents the addition of <code>345</code> to <code>900</code>, etc. When presenting this data as a stepped waterfall chart, we can use three series: the first is a non-interactive transparent series to implement the suspension bar effect, the second series is used to represent positive numbers, and the third series is used to represent negative numbers.</p>\n<md-live lang="js" code="\'dmFyIGRhdGEgPSBbOTAwLCAzNDUsIDM5MywgLTEwOCwgLTE1NCwgMTM1LCAxNzgsIDI4NiwgLTExOSwgLTM2MSwgLTIwM107CnZhciBoZWxwID0gW107CnZhciBwb3NpdGl2ZSA9IFtdOwp2YXIgbmVnYXRpdmUgPSBbXTsKZm9yICh2YXIgaSA9IDAsIHN1bSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgKytpKSB7CiAgaWYgKGRhdGFbaV0gPj0gMCkgewogICAgcG9zaXRpdmUucHVzaChkYXRhW2ldKTsKICAgIG5lZ2F0aXZlLnB1c2goJy0nKTsKICB9IGVsc2UgewogICAgcG9zaXRpdmUucHVzaCgnLScpOwogICAgbmVnYXRpdmUucHVzaCgtZGF0YVtpXSk7CiAgfQoKICBpZiAoaSA9PT0gMCkgewogICAgaGVscC5wdXNoKDApOwogIH0gZWxzZSB7CiAgICBzdW0gKz0gZGF0YVtpIC0gMV07CiAgICBpZiAoZGF0YVtpXSA8IDApIHsKICAgICAgaGVscC5wdXNoKHN1bSArIGRhdGFbaV0pOwogICAgfSBlbHNlIHsKICAgICAgaGVscC5wdXNoKHN1bSk7CiAgICB9CiAgfQp9CgpvcHRpb24gPSB7CiAgdGl0bGU6IHsKICAgIHRleHQ6ICdXYXRlcmZhbGwnCiAgfSwKICBncmlkOiB7CiAgICBsZWZ0OiAnMyUnLAogICAgcmlnaHQ6ICc0JScsCiAgICBib3R0b206ICczJScsCiAgICBjb250YWluTGFiZWw6IHRydWUKICB9LAogIHhBeGlzOiB7CiAgICB0eXBlOiAnY2F0ZWdvcnknLAogICAgc3BsaXRMaW5lOiB7IHNob3c6IGZhbHNlIH0sCiAgICBkYXRhOiAoZnVuY3Rpb24oKSB7CiAgICAgIHZhciBsaXN0ID0gW107CiAgICAgIGZvciAodmFyIGkgPSAxOyBpIDw9IDExOyBpKyspIHsKICAgICAgICBsaXN0LnB1c2goJ09jdC8nICsgaSk7CiAgICAgIH0KICAgICAgcmV0dXJuIGxpc3Q7CiAgICB9KSgpCiAgfSwKICB5QXhpczogewogICAgdHlwZTogJ3ZhbHVlJwogIH0sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIHR5cGU6ICdiYXInLAogICAgICBzdGFjazogJ2FsbCcsCiAgICAgIGl0ZW1TdHlsZTogewogICAgICAgIG5vcm1hbDogewogICAgICAgICAgYmFyQm9yZGVyQ29sb3I6ICdyZ2JhKDAsMCwwLDApJywKICAgICAgICAgIGNvbG9yOiAncmdiYSgwLDAsMCwwKScKICAgICAgICB9LAogICAgICAgIGVtcGhhc2lzOiB7CiAgICAgICAgICBiYXJCb3JkZXJDb2xvcjogJ3JnYmEoMCwwLDAsMCknLAogICAgICAgICAgY29sb3I6ICdyZ2JhKDAsMCwwLDApJwogICAgICAgIH0KICAgICAgfSwKICAgICAgZGF0YTogaGVscAogICAgfSwKICAgIHsKICAgICAgbmFtZTogJ3Bvc2l0aXZlJywKICAgICAgdHlwZTogJ2JhcicsCiAgICAgIHN0YWNrOiAnYWxsJywKICAgICAgZGF0YTogcG9zaXRpdmUKICAgIH0sCiAgICB7CiAgICAgIG5hbWU6ICduZWdhdGl2ZScsCiAgICAgIHR5cGU6ICdiYXInLAogICAgICBzdGFjazogJ2FsbCcsCiAgICAgIGRhdGE6IG5lZ2F0aXZlLAogICAgICBpdGVtU3R5bGU6IHsKICAgICAgICBjb2xvcjogJyNmMzMnCiAgICAgIH0KICAgIH0KICBdCn07\'" v-bind="{}" />\n',postPath:"en/how-to/chart-types/bar/waterfall",title:"Waterfall - Bar - Common Charts - How To Guides"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:r},{title:"入门篇",dir:d,children:[{title:"获取 ECharts",dir:a},{title:"在项目中引入 ECharts",dir:l},{title:"资源列表",dir:g,draft:t},{title:"寻求帮助",dir:s},{title:"版本特性",dir:n,children:[{title:"ECharts 6 特性介绍",dir:o},{title:"v5 升级 v6 指南",dir:c},{title:"5.0",dir:C},{title:"v4 升级 v5 指南",dir:I},{title:5.2,dir:h},{title:5.3,dir:A},{title:5.4,dir:p},{title:5.5,dir:w},{title:5.6,dir:b}]}]},{title:"概念篇",dir:m,children:[{title:"图表容器及大小",dir:B},{title:"配置项",dir:G,draft:t},{title:"系列",dir:f,draft:t},{title:"样式",dir:u},{title:"数据集",dir:S},{title:"数据转换",dir:v},{title:"坐标系",dir:H,draft:t},{title:"坐标轴",dir:Z},{title:"视觉映射",dir:e},{title:"图例",dir:K},{title:"事件与行为",dir:y}]},{title:"应用篇",dir:L,children:[{title:"常用图表类型",dir:T,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:M},{title:"堆叠柱状图",dir:D},{title:"动态排序柱状图",dir:R},{title:"极坐标系柱状图",dir:X,draft:t},{title:"阶梯瀑布图",dir:V},{title:"视觉映射的柱状图",dir:e,draft:t}]},{title:"折线图",dir:k,children:[{title:"基础折线图",dir:z},{title:"堆叠折线图",dir:N},{title:"区域面积图",dir:Y},{title:"平滑曲线图",dir:P},{title:"阶梯线图",dir:x}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:J},{title:"圆环图",dir:O},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:W,children:[{title:"基础散点图",dir:E}]}]},{title:"常用组件",dir:F,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:U}]}]},{title:"移动端优化",dir:i,draft:t},{title:"跨平台方案",dir:j,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:Q},{title:"数据下钻",dir:_,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:$}]},{title:"动画",dir:q,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:it,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:et,draft:t},{title:"智能指针吸附",dir:rt}]}]},{title:"最佳实践",dir:dt,children:[{title:"移动端优化",dir:i,draft:t},{title:at,dir:lt},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:gt}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:st}]}],en:[{title:"Get Started",dir:r},{title:"Basics",dir:d,children:[{title:"Download ECharts",dir:a},{title:"Import ECharts",dir:l},{title:"Resources",dir:g,draft:t},{title:"Get Help",dir:s},{title:"What's New",dir:n,children:[{title:"ECharts 6 Features",dir:o},{title:"Migration from v5 to v6",dir:c},{title:"5.0",dir:C},{title:"Migration from v4 to v5",dir:I},{title:5.2,dir:h},{title:5.3,dir:A},{title:5.4,dir:p},{title:5.5,dir:w},{title:5.6,dir:b}]}]},{title:"Concepts",dir:m,children:[{title:"Chart Container",dir:B},{title:"Chart Option",dir:G,draft:t},{title:"Series",dir:f,draft:t},{title:"Style",dir:u},{title:"Dataset",dir:S},{title:"Data Transform",dir:v},{title:"Coordinate",dir:H,draft:t},{title:"Axis",dir:Z},{title:"Visual Mapping",dir:e},{title:"Legend",dir:K},{title:"Event and Action",dir:y}]},{title:"How To Guides",dir:L,children:[{title:"Common Charts",dir:T,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:M},{title:"Stacked Bar",dir:D},{title:"Bar Racing",dir:R},{title:"Bar Polar",dir:X,draft:t},{title:"Waterfall",dir:V}]},{title:"Line",dir:k,children:[{title:"Basic Line",dir:z},{title:"Stacked Line",dir:N},{title:"Area Chart",dir:Y},{title:"Smoothed Line",dir:P},{title:"Step Line",dir:x}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:J},{title:"Ring Style",dir:O},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:W,children:[{title:"Basic Scatter",dir:E}]}]},{title:"Common Components",dir:F,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:U}]}]},{title:"Mobile",dir:i,draft:t},{title:"Cross Platform",dir:j,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:Q},{title:"Drilldown",dir:_,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:$}]},{title:"Animation",dir:q,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:it,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:et,draft:t},{title:"Intelligent Pointer Snapping",dir:rt}]}]},{title:"Best Practices",dir:dt,children:[{title:"Mobile Optimization",dir:i,draft:t},{title:at,dir:lt},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:gt}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:st}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/en/how-to/chart-types/bar/waterfall",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/en/how-to/chart-types/line/area-line/index.html b/docs/en/how-to/chart-types/line/area-line/index.html
new file mode 100644
index 0000000..e5cf1ae
--- /dev/null
+++ b/docs/en/how-to/chart-types/line/area-line/index.html
@@ -0,0 +1,53 @@
+<!doctype html>
+<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Area Chart - Line - Common Charts - How To Guides - Handbook - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="en"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/en/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/en/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/en/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/en/index.html" class="navbar-brand"><img src="https://echarts.apache.org/en/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/en/index.html">Home</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Docs<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/feature.html">Features</a></li><li><a href="https://echarts.apache.org/handbook/en/get-started/">Handbook</a></li><li><a href="https://echarts.apache.org/en/api.html">API</a></li><li><a href="https://echarts.apache.org/en/option.html">Chart Configuration</a></li><li><a href="https://echarts.apache.org/en/changelog.html">Changelog</a></li><li><a href="https://echarts.apache.org/en/faq.html">FAQ</a></li><li><a href="https://echarts.apache.org/handbook/en/basics/release-note/v6-upgrade-guide">V6 Upgrade Guide</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Download<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/download.html">Download</a></li><li><a href="https://echarts.apache.org/en/download-theme.html">Download Themes</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">Download Custom Series<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/download-extension.html">Download Extensions</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/en/index.html">Examples</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Resources<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/spreadsheet.html">Spread Sheet Tool</a></li><li><a href="https://echarts.apache.org/en/theme-builder.html">Theme Builder</a></li><li><a href="https://echarts.apache.org/en/cheat-sheet.html">Cheat Sheet</a></li><li><a href="https://echarts.apache.org/en/resources.html">More Resources</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/events.html">Events</a></li><li><a href="https://echarts.apache.org/en/committers.html">Committers</a></li><li><a href="https://echarts.apache.org/en/maillist.html">Mailing List</a></li><li><a href="https://echarts.apache.org/en/contributing.html">How to Contribute</a></li><li><a href="https://echarts.apache.org/en/dependencies.html">Dependencies</a></li><li><a href="https://echarts.apache.org/en/coding-standard.html">Code Standard</a></li><li><a href="https://github.com/apache/echarts" target="_blank">Source Code (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/security.html">Security</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">License<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">Events<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("zh")'>中文</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/en/get-started" class="nav-link"><span class="title">Get Started</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Basics</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/basics/download" class="nav-link"><span class="title">Download ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/import" class="nav-link"><span class="title">Import ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/basics/help" class="nav-link"><span class="title">Get Help</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">What's New</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 Features</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">Migration from v5 to v6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">Migration from v4 to v5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Concepts</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/concepts/chart-size" class="nav-link"><span class="title">Chart Container</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/style" class="nav-link"><span class="title">Style</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/dataset" class="nav-link"><span class="title">Dataset</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/data-transform" class="nav-link"><span class="title">Data Transform</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/axis" class="nav-link"><span class="title">Axis</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/visual-map" class="nav-link"><span class="title">Visual Mapping</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/legend" class="nav-link"><span class="title">Legend</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/event" class="nav-link"><span class="title">Event and Action</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">How To Guides</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">Common Charts</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a class="nav-link"><span class="title">Bar</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">Basic Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">Stacked Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">Bar Racing</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">Waterfall</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Line</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level3"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">Basic Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">Stacked Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/area-line" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">Area Chart</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">Smoothed Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/step-line" class="nav-link"><span class="title">Step Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Pie</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">Basic Pie</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">Ring Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/rose" class="nav-link"><span class="title">Rose Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Scatter</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">Basic Scatter</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Common Components</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Geo</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG Base Map</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">Cross Platform</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/cross-platform/server" class="nav-link"><span class="title">Server Side Rendering</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Data</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/data/dynamic-data" class="nav-link"><span class="title">Dynamic Data</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Label</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/label/rich-text" class="nav-link"><span class="title">Rich Text</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Animation</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/animation/transition" class="nav-link"><span class="title">Data Transition</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Interaction</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/drag" class="nav-link"><span class="title">Drag</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">Intelligent Pointer Snapping</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Best Practices</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/en/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/aria" class="nav-link"><span class="title">Aria</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/security" class="nav-link"><span class="title">Security Guidelines</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Edit Handbook</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/meta/edit-guide" class="nav-link"><span class="title">Edit Guide</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="area-chart" tabindex="-1">Area Chart</h1> <p>The area chart fills the space between the line and axis with the background color, to express the data by the size of the area. Compared with the normal line chart, the area chart has more intuitive visual effects. It is especially suitable for the scenario with a few series.</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    data: ['A', 'B', 'C', 'D', 'E']
+  },
+  yAxis: {},
+  series: [
+    {
+      data: [10, 22, 28, 23, 19],
+      type: 'line',
+      areaStyle: {}
+    },
+    {
+      data: [25, 14, 23, 35, 10],
+      type: 'line',
+      areaStyle: {
+        color: '#ff0',
+        opacity: 0.5
+      }
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'A'</span><span class="token punctuation">,</span> <span class="token string">'B'</span><span class="token punctuation">,</span> <span class="token string">'C'</span><span class="token punctuation">,</span> <span class="token string">'D'</span><span class="token punctuation">,</span> <span class="token string">'E'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">22</span><span class="token punctuation">,</span> <span class="token number">28</span><span class="token punctuation">,</span> <span class="token number">23</span><span class="token punctuation">,</span> <span class="token number">19</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">areaStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">25</span><span class="token punctuation">,</span> <span class="token number">14</span><span class="token punctuation">,</span> <span class="token number">23</span><span class="token punctuation">,</span> <span class="token number">35</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">areaStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'#ff0'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">opacity</span><span class="token operator">:</span> <span class="token number">0.5</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>If you want to change the area style of the line chart, try to use <a href="https://echarts.apache.org/option.html#series-line.areaStyle"><code>areaStyle</code></a>. Set <code>'areaStyle'</code> to <code>{}</code> to use the default type: use the color of series to fill the area in translucent. If you want to change the style, try to override the configuration items in <code>'areaStyle'</code>. For example, the color of the second series was changed to yellow with 50% opacity.</p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">Contributors</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/en/how-to/chart-types/line/area-line.md" title="Edit this Document" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">Edit this page on GitHub</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,i,e,r,d,l,a,n,o,s,h,c,g,p,C,f,m,u,I,b,A,y,w,v,B,S,G,P,x,L,M,T,k,D,E,R,H,z,V,F,O,Z,W,_,N,X,K,Q,J,j,U,Y,$,q,tt,it,et,rt,dt,lt,at,nt,ot){return{layout:"default",data:[{html:'<h1 id="area-chart" tabindex="-1">Area Chart</h1>\n<p>The area chart fills the space between the line and axis with the background color, to express the data by the size of the area. Compared with the normal line chart, the area chart has more intuitive visual effects. It is especially suitable for the scenario with a few series.</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBkYXRhOiBbJ0EnLCAnQicsICdDJywgJ0QnLCAnRSddCiAgfSwKICB5QXhpczoge30sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIGRhdGE6IFsxMCwgMjIsIDI4LCAyMywgMTldLAogICAgICB0eXBlOiAnbGluZScsCiAgICAgIGFyZWFTdHlsZToge30KICAgIH0sCiAgICB7CiAgICAgIGRhdGE6IFsyNSwgMTQsIDIzLCAzNSwgMTBdLAogICAgICB0eXBlOiAnbGluZScsCiAgICAgIGFyZWFTdHlsZTogewogICAgICAgIGNvbG9yOiAnI2ZmMCcsCiAgICAgICAgb3BhY2l0eTogMC41CiAgICAgIH0KICAgIH0KICBdCn07\'" v-bind="{}" />\n<p>If you want to change the area style of the line chart, try to use <a href="https://echarts.apache.org/option.html#series-line.areaStyle"><code>areaStyle</code></a>. Set <code>\'areaStyle\'</code> to <code>{}</code> to use the default type: use the color of series to fill the area in translucent. If you want to change the style, try to override the configuration items in <code>\'areaStyle\'</code>. For example, the color of the second series was changed to yellow with 50% opacity.</p>\n',postPath:"en/how-to/chart-types/line/area-line",title:"Area Chart - Line - Common Charts - How To Guides"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:r},{title:"入门篇",dir:d,children:[{title:"获取 ECharts",dir:l},{title:"在项目中引入 ECharts",dir:a},{title:"资源列表",dir:n,draft:t},{title:"寻求帮助",dir:o},{title:"版本特性",dir:s,children:[{title:"ECharts 6 特性介绍",dir:h},{title:"v5 升级 v6 指南",dir:c},{title:"5.0",dir:g},{title:"v4 升级 v5 指南",dir:p},{title:5.2,dir:C},{title:5.3,dir:f},{title:5.4,dir:m},{title:5.5,dir:u},{title:5.6,dir:I}]}]},{title:"概念篇",dir:b,children:[{title:"图表容器及大小",dir:A},{title:"配置项",dir:y,draft:t},{title:"系列",dir:w,draft:t},{title:"样式",dir:v},{title:"数据集",dir:B},{title:"数据转换",dir:S},{title:"坐标系",dir:G,draft:t},{title:"坐标轴",dir:P},{title:"视觉映射",dir:e},{title:"图例",dir:x},{title:"事件与行为",dir:L}]},{title:"应用篇",dir:M,children:[{title:"常用图表类型",dir:T,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:k},{title:"堆叠柱状图",dir:D},{title:"动态排序柱状图",dir:E},{title:"极坐标系柱状图",dir:R,draft:t},{title:"阶梯瀑布图",dir:H},{title:"视觉映射的柱状图",dir:e,draft:t}]},{title:"折线图",dir:z,children:[{title:"基础折线图",dir:V},{title:"堆叠折线图",dir:F},{title:"区域面积图",dir:O},{title:"平滑曲线图",dir:Z},{title:"阶梯线图",dir:W}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:_},{title:"圆环图",dir:N},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:X,children:[{title:"基础散点图",dir:K}]}]},{title:"常用组件",dir:Q,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:J}]}]},{title:"移动端优化",dir:i,draft:t},{title:"跨平台方案",dir:j,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:U},{title:"数据下钻",dir:Y,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:$}]},{title:"动画",dir:q,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:it,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:et,draft:t},{title:"智能指针吸附",dir:rt}]}]},{title:"最佳实践",dir:dt,children:[{title:"移动端优化",dir:i,draft:t},{title:lt,dir:at},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:nt}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:ot}]}],en:[{title:"Get Started",dir:r},{title:"Basics",dir:d,children:[{title:"Download ECharts",dir:l},{title:"Import ECharts",dir:a},{title:"Resources",dir:n,draft:t},{title:"Get Help",dir:o},{title:"What's New",dir:s,children:[{title:"ECharts 6 Features",dir:h},{title:"Migration from v5 to v6",dir:c},{title:"5.0",dir:g},{title:"Migration from v4 to v5",dir:p},{title:5.2,dir:C},{title:5.3,dir:f},{title:5.4,dir:m},{title:5.5,dir:u},{title:5.6,dir:I}]}]},{title:"Concepts",dir:b,children:[{title:"Chart Container",dir:A},{title:"Chart Option",dir:y,draft:t},{title:"Series",dir:w,draft:t},{title:"Style",dir:v},{title:"Dataset",dir:B},{title:"Data Transform",dir:S},{title:"Coordinate",dir:G,draft:t},{title:"Axis",dir:P},{title:"Visual Mapping",dir:e},{title:"Legend",dir:x},{title:"Event and Action",dir:L}]},{title:"How To Guides",dir:M,children:[{title:"Common Charts",dir:T,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:k},{title:"Stacked Bar",dir:D},{title:"Bar Racing",dir:E},{title:"Bar Polar",dir:R,draft:t},{title:"Waterfall",dir:H}]},{title:"Line",dir:z,children:[{title:"Basic Line",dir:V},{title:"Stacked Line",dir:F},{title:"Area Chart",dir:O},{title:"Smoothed Line",dir:Z},{title:"Step Line",dir:W}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:_},{title:"Ring Style",dir:N},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:X,children:[{title:"Basic Scatter",dir:K}]}]},{title:"Common Components",dir:Q,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:J}]}]},{title:"Mobile",dir:i,draft:t},{title:"Cross Platform",dir:j,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:U},{title:"Drilldown",dir:Y,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:$}]},{title:"Animation",dir:q,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:it,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:et,draft:t},{title:"Intelligent Pointer Snapping",dir:rt}]}]},{title:"Best Practices",dir:dt,children:[{title:"Mobile Optimization",dir:i,draft:t},{title:lt,dir:at},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:nt}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:ot}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/en/how-to/chart-types/line/area-line",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/en/how-to/chart-types/line/basic-line/index.html b/docs/en/how-to/chart-types/line/basic-line/index.html
new file mode 100644
index 0000000..522af22
--- /dev/null
+++ b/docs/en/how-to/chart-types/line/basic-line/index.html
@@ -0,0 +1,161 @@
+<!doctype html>
+<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Basic Line - Line - Common Charts - How To Guides - Handbook - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="en"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/en/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/en/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/en/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/en/index.html" class="navbar-brand"><img src="https://echarts.apache.org/en/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/en/index.html">Home</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Docs<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/feature.html">Features</a></li><li><a href="https://echarts.apache.org/handbook/en/get-started/">Handbook</a></li><li><a href="https://echarts.apache.org/en/api.html">API</a></li><li><a href="https://echarts.apache.org/en/option.html">Chart Configuration</a></li><li><a href="https://echarts.apache.org/en/changelog.html">Changelog</a></li><li><a href="https://echarts.apache.org/en/faq.html">FAQ</a></li><li><a href="https://echarts.apache.org/handbook/en/basics/release-note/v6-upgrade-guide">V6 Upgrade Guide</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Download<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/download.html">Download</a></li><li><a href="https://echarts.apache.org/en/download-theme.html">Download Themes</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">Download Custom Series<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/download-extension.html">Download Extensions</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/en/index.html">Examples</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Resources<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/spreadsheet.html">Spread Sheet Tool</a></li><li><a href="https://echarts.apache.org/en/theme-builder.html">Theme Builder</a></li><li><a href="https://echarts.apache.org/en/cheat-sheet.html">Cheat Sheet</a></li><li><a href="https://echarts.apache.org/en/resources.html">More Resources</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/events.html">Events</a></li><li><a href="https://echarts.apache.org/en/committers.html">Committers</a></li><li><a href="https://echarts.apache.org/en/maillist.html">Mailing List</a></li><li><a href="https://echarts.apache.org/en/contributing.html">How to Contribute</a></li><li><a href="https://echarts.apache.org/en/dependencies.html">Dependencies</a></li><li><a href="https://echarts.apache.org/en/coding-standard.html">Code Standard</a></li><li><a href="https://github.com/apache/echarts" target="_blank">Source Code (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/security.html">Security</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">License<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">Events<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("zh")'>中文</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/en/get-started" class="nav-link"><span class="title">Get Started</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Basics</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/basics/download" class="nav-link"><span class="title">Download ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/import" class="nav-link"><span class="title">Import ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/basics/help" class="nav-link"><span class="title">Get Help</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">What's New</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 Features</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">Migration from v5 to v6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">Migration from v4 to v5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Concepts</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/concepts/chart-size" class="nav-link"><span class="title">Chart Container</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/style" class="nav-link"><span class="title">Style</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/dataset" class="nav-link"><span class="title">Dataset</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/data-transform" class="nav-link"><span class="title">Data Transform</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/axis" class="nav-link"><span class="title">Axis</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/visual-map" class="nav-link"><span class="title">Visual Mapping</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/legend" class="nav-link"><span class="title">Legend</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/event" class="nav-link"><span class="title">Event and Action</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">How To Guides</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">Common Charts</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a class="nav-link"><span class="title">Bar</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">Basic Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">Stacked Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">Bar Racing</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">Waterfall</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Line</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level3"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/basic-line" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">Basic Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">Stacked Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/area-line" class="nav-link"><span class="title">Area Chart</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">Smoothed Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/step-line" class="nav-link"><span class="title">Step Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Pie</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">Basic Pie</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">Ring Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/rose" class="nav-link"><span class="title">Rose Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Scatter</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">Basic Scatter</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Common Components</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Geo</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG Base Map</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">Cross Platform</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/cross-platform/server" class="nav-link"><span class="title">Server Side Rendering</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Data</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/data/dynamic-data" class="nav-link"><span class="title">Dynamic Data</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Label</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/label/rich-text" class="nav-link"><span class="title">Rich Text</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Animation</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/animation/transition" class="nav-link"><span class="title">Data Transition</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Interaction</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/drag" class="nav-link"><span class="title">Drag</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">Intelligent Pointer Snapping</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Best Practices</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/en/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/aria" class="nav-link"><span class="title">Aria</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/security" class="nav-link"><span class="title">Security Guidelines</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Edit Handbook</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/meta/edit-guide" class="nav-link"><span class="title">Edit Guide</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="basic-line-chart" tabindex="-1">Basic Line Chart</h1> <h2 id="simple-example" tabindex="-1">Simple Example</h2> <p>We can use the following code to build a line chart which has x-axis as <code>category</code>, y-axis as <code>value</code>:</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    type: 'category',
+    data: ['A', 'B', 'C']
+  },
+  yAxis: {
+    type: 'value'
+  },
+  series: [
+    {
+      data: [120, 200, 150],
+      type: 'line'
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'category'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'A'</span><span class="token punctuation">,</span> <span class="token string">'B'</span><span class="token punctuation">,</span> <span class="token string">'C'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'value'</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">120</span><span class="token punctuation">,</span> <span class="token number">200</span><span class="token punctuation">,</span> <span class="token number">150</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>In this case, we set the type of axis to <code>category</code> and <code>value</code> under <code>xAxis</code> and <code>yAxis</code>. We also clarified the content on the x-axis through <code>data</code>. In <code>series</code>, we set the type to <code>line</code>, and specify the values of three points through <code>data</code>. In this way, we got a simple line chart.</p> <blockquote><p>The <code>type</code> here can be omitted because the defaults of the axis are <code>value</code> while <code>xAxis</code> has specified the category's <code>data</code>. In this case, <code>ECharts</code> can recognize that this is a category axis.</p></blockquote> <h2 id="line-chart-in-cartesian-coordinate-system" tabindex="-1">Line Chart in Cartesian Coordinate System</h2> <p>How to implement if we want the line chart to be continuous? The answer is simple, as long as every value in <code>data</code> of the <code>series</code> is represented by an array containing two elements.</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {},
+  yAxis: {},
+  series: [
+    {
+      data: [
+        [20, 120],
+        [50, 200],
+        [40, 50]
+      ],
+      type: 'line'
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">[</span><span class="token number">20</span><span class="token punctuation">,</span> <span class="token number">120</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token number">50</span><span class="token punctuation">,</span> <span class="token number">200</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token number">40</span><span class="token punctuation">,</span> <span class="token number">50</span><span class="token punctuation">]</span>
+      <span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <h2 id="customized-line-chart" tabindex="-1">Customized Line Chart</h2> <h3 id="line-style" tabindex="-1">Line Style</h3> <p>Line style can be changed by <code>lineStyle</code> setting. You can specify color, line width, polyline type and opacity etc.. For details, please see the handbook <a href="https://echarts.apache.org/option.html#series-line.lineStyle"><code>series.lineStyle</code></a> to figure out.</p> <p>Here is an example of setting color, line width and type.</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    data: ['A', 'B', 'C', 'D', 'E']
+  },
+  yAxis: {},
+  series: [
+    {
+      data: [10, 22, 28, 23, 19],
+      type: 'line',
+      lineStyle: {
+        normal: {
+          color: 'green',
+          width: 4,
+          type: 'dashed'
+        }
+      }
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'A'</span><span class="token punctuation">,</span> <span class="token string">'B'</span><span class="token punctuation">,</span> <span class="token string">'C'</span><span class="token punctuation">,</span> <span class="token string">'D'</span><span class="token punctuation">,</span> <span class="token string">'E'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">22</span><span class="token punctuation">,</span> <span class="token number">28</span><span class="token punctuation">,</span> <span class="token number">23</span><span class="token punctuation">,</span> <span class="token number">19</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">lineStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">normal</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+          <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'green'</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">width</span><span class="token operator">:</span> <span class="token number">4</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'dashed'</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>When we set the line width here, the line width of items will not change. The line style of items needs to be set separately.</p> <h3 id="item-style" tabindex="-1">Item Style</h3> <p>Item style can be change by <a href="https://echarts.apache.org/option.html#series-line.itemStyle"><code>series.itemStyle</code></a>. It included <code>color</code>, <code>borderColor</code>, <code>borderStyle</code>, <code>borderWidth</code>, <code>borderType</code>, <code>shadowColor</code>, <code>opacity</code> and so on. It works the same as the <code>lineType</code>, so we will not do further discuss.</p> <h2 id="display-value-on-items." tabindex="-1">Display Value on Items.</h2> <p>In the series, the label of the item was specified by <a href="https://echarts.apache.org/option.html#series-line.label"><code>series.label</code></a>. If we change the <code>show</code> under <code>label</code> to <code>true</code>, the value will be displayed by default. Otherwise, if <a href="https://echarts.apache.org/option.html#series-line.emphasis.label.show"><code>series.emphasis.label.show</code></a> is <code>true</code>, the label will show only if the mouse moved across the item.</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    data: ['A', 'B', 'C', 'D', 'E']
+  },
+  yAxis: {},
+  series: [
+    {
+      data: [10, 22, 28, 23, 19],
+      type: 'line',
+      label: {
+        show: true,
+        position: 'bottom',
+        textStyle: {
+          fontSize: 20
+        }
+      }
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'A'</span><span class="token punctuation">,</span> <span class="token string">'B'</span><span class="token punctuation">,</span> <span class="token string">'C'</span><span class="token punctuation">,</span> <span class="token string">'D'</span><span class="token punctuation">,</span> <span class="token string">'E'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">22</span><span class="token punctuation">,</span> <span class="token number">28</span><span class="token punctuation">,</span> <span class="token number">23</span><span class="token punctuation">,</span> <span class="token number">19</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">position</span><span class="token operator">:</span> <span class="token string">'bottom'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">textStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+          <span class="token literal-property property">fontSize</span><span class="token operator">:</span> <span class="token number">20</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <h2 id="empty-data" tabindex="-1">Empty Data</h2> <p>In a <code>series</code>, there are empty data. It has some difference with <code>0</code>. While there are empty elements, the lines chart will ignore that point without pass through it----empty elements will not be connected by the points next by.</p> <p>In ECharts, we use <code>'-'</code> to represent null data, It is applicable for data in other series.</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    data: ['A', 'B', 'C', 'D', 'E']
+  },
+  yAxis: {},
+  series: [
+    {
+      data: [0, 22, '-', 23, 19],
+      type: 'line'
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'A'</span><span class="token punctuation">,</span> <span class="token string">'B'</span><span class="token punctuation">,</span> <span class="token string">'C'</span><span class="token punctuation">,</span> <span class="token string">'D'</span><span class="token punctuation">,</span> <span class="token string">'E'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">22</span><span class="token punctuation">,</span> <span class="token string">'-'</span><span class="token punctuation">,</span> <span class="token number">23</span><span class="token punctuation">,</span> <span class="token number">19</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <blockquote><p>Please note the difference between the empty data and 0.</p></blockquote></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">Contributors</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/en/how-to/chart-types/line/basic-line.md" title="Edit this Document" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">Edit this page on GitHub</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(e,t,i,d,r,a,l,o,n,s,c,h,g,C,p,I,A,b,m,w,y,u,f,B,v,S,x,G,L,D,M,O,R,W,z,E,H,T,V,k,J,P,Q,X,K,F,Z,j,Y,U,N,_,q,$,ee,te,ie,de,re,ae,le,oe,ne){return{layout:"default",data:[{html:'<h1 id="basic-line-chart" tabindex="-1">Basic Line Chart</h1>\n<h2 id="simple-example" tabindex="-1">Simple Example</h2>\n<p>We can use the following code to build a line chart which has x-axis as <code>category</code>, y-axis as <code>value</code>:</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICB0eXBlOiAnY2F0ZWdvcnknLAogICAgZGF0YTogWydBJywgJ0InLCAnQyddCiAgfSwKICB5QXhpczogewogICAgdHlwZTogJ3ZhbHVlJwogIH0sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIGRhdGE6IFsxMjAsIDIwMCwgMTUwXSwKICAgICAgdHlwZTogJ2xpbmUnCiAgICB9CiAgXQp9Ow\'" v-bind="{}" />\n<p>In this case, we set the type of axis to <code>category</code> and <code>value</code> under <code>xAxis</code> and <code>yAxis</code>. We also clarified the content on the x-axis through <code>data</code>. In <code>series</code>, we set the type to <code>line</code>, and specify the values of three points through <code>data</code>. In this way, we got a simple line chart.</p>\n<blockquote>\n<p>The <code>type</code> here can be omitted because the defaults of the axis are <code>value</code> while <code>xAxis</code> has specified the category\'s <code>data</code>. In this case, <code>ECharts</code> can recognize that this is a category axis.</p>\n</blockquote>\n<h2 id="line-chart-in-cartesian-coordinate-system" tabindex="-1">Line Chart in Cartesian Coordinate System</h2>\n<p>How to implement if we want the line chart to be continuous? The answer is simple, as long as every value in <code>data</code> of the <code>series</code> is represented by an array containing two elements.</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7fSwKICB5QXhpczoge30sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIGRhdGE6IFsKICAgICAgICBbMjAsIDEyMF0sCiAgICAgICAgWzUwLCAyMDBdLAogICAgICAgIFs0MCwgNTBdCiAgICAgIF0sCiAgICAgIHR5cGU6ICdsaW5lJwogICAgfQogIF0KfTs\'" v-bind="{}" />\n<h2 id="customized-line-chart" tabindex="-1">Customized Line Chart</h2>\n<h3 id="line-style" tabindex="-1">Line Style</h3>\n<p>Line style can be changed by <code>lineStyle</code> setting. You can specify color, line width, polyline type and opacity etc.. For details, please see the handbook <a href="https://echarts.apache.org/option.html#series-line.lineStyle"><code>series.lineStyle</code></a> to figure out.</p>\n<p>Here is an example of setting color, line width and type.</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBkYXRhOiBbJ0EnLCAnQicsICdDJywgJ0QnLCAnRSddCiAgfSwKICB5QXhpczoge30sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIGRhdGE6IFsxMCwgMjIsIDI4LCAyMywgMTldLAogICAgICB0eXBlOiAnbGluZScsCiAgICAgIGxpbmVTdHlsZTogewogICAgICAgIG5vcm1hbDogewogICAgICAgICAgY29sb3I6ICdncmVlbicsCiAgICAgICAgICB3aWR0aDogNCwKICAgICAgICAgIHR5cGU6ICdkYXNoZWQnCiAgICAgICAgfQogICAgICB9CiAgICB9CiAgXQp9Ow\'" v-bind="{}" />\n<p>When we set the line width here, the line width of items will not change. The line style of items needs to be set separately.</p>\n<h3 id="item-style" tabindex="-1">Item Style</h3>\n<p>Item style can be change by <a href="https://echarts.apache.org/option.html#series-line.itemStyle"><code>series.itemStyle</code></a>. It included <code>color</code>, <code>borderColor</code>, <code>borderStyle</code>, <code>borderWidth</code>, <code>borderType</code>, <code>shadowColor</code>, <code>opacity</code> and so on. It works the same as the <code>lineType</code>, so we will not do further discuss.</p>\n<h2 id="display-value-on-items." tabindex="-1">Display Value on Items.</h2>\n<p>In the series, the label of the item was specified by <a href="https://echarts.apache.org/option.html#series-line.label"><code>series.label</code></a>. If we change the <code>show</code> under <code>label</code> to <code>true</code>, the value will be displayed by default. Otherwise, if <a href="https://echarts.apache.org/option.html#series-line.emphasis.label.show"><code>series.emphasis.label.show</code></a> is <code>true</code>, the label will show only if the mouse moved across the item.</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBkYXRhOiBbJ0EnLCAnQicsICdDJywgJ0QnLCAnRSddCiAgfSwKICB5QXhpczoge30sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIGRhdGE6IFsxMCwgMjIsIDI4LCAyMywgMTldLAogICAgICB0eXBlOiAnbGluZScsCiAgICAgIGxhYmVsOiB7CiAgICAgICAgc2hvdzogdHJ1ZSwKICAgICAgICBwb3NpdGlvbjogJ2JvdHRvbScsCiAgICAgICAgdGV4dFN0eWxlOiB7CiAgICAgICAgICBmb250U2l6ZTogMjAKICAgICAgICB9CiAgICAgIH0KICAgIH0KICBdCn07\'" v-bind="{}" />\n<h2 id="empty-data" tabindex="-1">Empty Data</h2>\n<p>In a <code>series</code>, there are empty data. It has some difference with <code>0</code>. While there are empty elements, the lines chart will ignore that point without pass through it----empty elements will not be connected by the points next by.</p>\n<p>In ECharts, we use <code>\'-\'</code> to represent null data, It is applicable for data in other series.</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBkYXRhOiBbJ0EnLCAnQicsICdDJywgJ0QnLCAnRSddCiAgfSwKICB5QXhpczoge30sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIGRhdGE6IFswLCAyMiwgJy0nLCAyMywgMTldLAogICAgICB0eXBlOiAnbGluZScKICAgIH0KICBdCn07\'" v-bind="{}" />\n<blockquote>\n<p>Please note the difference between the empty data and 0.</p>\n</blockquote>\n',postPath:"en/how-to/chart-types/line/basic-line",title:"Basic Line - Line - Common Charts - How To Guides"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:d},{title:"入门篇",dir:r,children:[{title:"获取 ECharts",dir:a},{title:"在项目中引入 ECharts",dir:l},{title:"资源列表",dir:o,draft:e},{title:"寻求帮助",dir:n},{title:"版本特性",dir:s,children:[{title:"ECharts 6 特性介绍",dir:c},{title:"v5 升级 v6 指南",dir:h},{title:"5.0",dir:g},{title:"v4 升级 v5 指南",dir:C},{title:5.2,dir:p},{title:5.3,dir:I},{title:5.4,dir:A},{title:5.5,dir:b},{title:5.6,dir:m}]}]},{title:"概念篇",dir:w,children:[{title:"图表容器及大小",dir:y},{title:"配置项",dir:u,draft:e},{title:"系列",dir:f,draft:e},{title:"样式",dir:B},{title:"数据集",dir:v},{title:"数据转换",dir:S},{title:"坐标系",dir:x,draft:e},{title:"坐标轴",dir:G},{title:"视觉映射",dir:i},{title:"图例",dir:L},{title:"事件与行为",dir:D}]},{title:"应用篇",dir:M,children:[{title:"常用图表类型",dir:O,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:R},{title:"堆叠柱状图",dir:W},{title:"动态排序柱状图",dir:z},{title:"极坐标系柱状图",dir:E,draft:e},{title:"阶梯瀑布图",dir:H},{title:"视觉映射的柱状图",dir:i,draft:e}]},{title:"折线图",dir:T,children:[{title:"基础折线图",dir:V},{title:"堆叠折线图",dir:k},{title:"区域面积图",dir:J},{title:"平滑曲线图",dir:P},{title:"阶梯线图",dir:Q}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:X},{title:"圆环图",dir:K},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:F,children:[{title:"基础散点图",dir:Z}]}]},{title:"常用组件",dir:j,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:Y}]}]},{title:"移动端优化",dir:t,draft:e},{title:"跨平台方案",dir:U,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:N},{title:"数据下钻",dir:_,draft:e}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:q}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:ee}]},{title:"交互",dir:te,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:ie,draft:e},{title:"智能指针吸附",dir:de}]}]},{title:"最佳实践",dir:re,children:[{title:"移动端优化",dir:t,draft:e},{title:ae,dir:le},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:oe}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:ne}]}],en:[{title:"Get Started",dir:d},{title:"Basics",dir:r,children:[{title:"Download ECharts",dir:a},{title:"Import ECharts",dir:l},{title:"Resources",dir:o,draft:e},{title:"Get Help",dir:n},{title:"What's New",dir:s,children:[{title:"ECharts 6 Features",dir:c},{title:"Migration from v5 to v6",dir:h},{title:"5.0",dir:g},{title:"Migration from v4 to v5",dir:C},{title:5.2,dir:p},{title:5.3,dir:I},{title:5.4,dir:A},{title:5.5,dir:b},{title:5.6,dir:m}]}]},{title:"Concepts",dir:w,children:[{title:"Chart Container",dir:y},{title:"Chart Option",dir:u,draft:e},{title:"Series",dir:f,draft:e},{title:"Style",dir:B},{title:"Dataset",dir:v},{title:"Data Transform",dir:S},{title:"Coordinate",dir:x,draft:e},{title:"Axis",dir:G},{title:"Visual Mapping",dir:i},{title:"Legend",dir:L},{title:"Event and Action",dir:D}]},{title:"How To Guides",dir:M,children:[{title:"Common Charts",dir:O,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:R},{title:"Stacked Bar",dir:W},{title:"Bar Racing",dir:z},{title:"Bar Polar",dir:E,draft:e},{title:"Waterfall",dir:H}]},{title:"Line",dir:T,children:[{title:"Basic Line",dir:V},{title:"Stacked Line",dir:k},{title:"Area Chart",dir:J},{title:"Smoothed Line",dir:P},{title:"Step Line",dir:Q}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:X},{title:"Ring Style",dir:K},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:F,children:[{title:"Basic Scatter",dir:Z}]}]},{title:"Common Components",dir:j,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:Y}]}]},{title:"Mobile",dir:t,draft:e},{title:"Cross Platform",dir:U,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:N},{title:"Drilldown",dir:_,draft:e}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:q}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:ee}]},{title:"Interaction",dir:te,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:ie,draft:e},{title:"Intelligent Pointer Snapping",dir:de}]}]},{title:"Best Practices",dir:re,children:[{title:"Mobile Optimization",dir:t,draft:e},{title:ae,dir:le},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:oe}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:ne}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:e,routePath:"/en/how-to/chart-types/line/basic-line",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/en/how-to/chart-types/line/smooth-line/index.html b/docs/en/how-to/chart-types/line/smooth-line/index.html
new file mode 100644
index 0000000..f6f8c14
--- /dev/null
+++ b/docs/en/how-to/chart-types/line/smooth-line/index.html
@@ -0,0 +1,37 @@
+<!doctype html>
+<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Smoothed Line - Line - Common Charts - How To Guides - Handbook - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="en"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/en/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/en/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/en/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/en/index.html" class="navbar-brand"><img src="https://echarts.apache.org/en/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/en/index.html">Home</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Docs<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/feature.html">Features</a></li><li><a href="https://echarts.apache.org/handbook/en/get-started/">Handbook</a></li><li><a href="https://echarts.apache.org/en/api.html">API</a></li><li><a href="https://echarts.apache.org/en/option.html">Chart Configuration</a></li><li><a href="https://echarts.apache.org/en/changelog.html">Changelog</a></li><li><a href="https://echarts.apache.org/en/faq.html">FAQ</a></li><li><a href="https://echarts.apache.org/handbook/en/basics/release-note/v6-upgrade-guide">V6 Upgrade Guide</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Download<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/download.html">Download</a></li><li><a href="https://echarts.apache.org/en/download-theme.html">Download Themes</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">Download Custom Series<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/download-extension.html">Download Extensions</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/en/index.html">Examples</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Resources<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/spreadsheet.html">Spread Sheet Tool</a></li><li><a href="https://echarts.apache.org/en/theme-builder.html">Theme Builder</a></li><li><a href="https://echarts.apache.org/en/cheat-sheet.html">Cheat Sheet</a></li><li><a href="https://echarts.apache.org/en/resources.html">More Resources</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/events.html">Events</a></li><li><a href="https://echarts.apache.org/en/committers.html">Committers</a></li><li><a href="https://echarts.apache.org/en/maillist.html">Mailing List</a></li><li><a href="https://echarts.apache.org/en/contributing.html">How to Contribute</a></li><li><a href="https://echarts.apache.org/en/dependencies.html">Dependencies</a></li><li><a href="https://echarts.apache.org/en/coding-standard.html">Code Standard</a></li><li><a href="https://github.com/apache/echarts" target="_blank">Source Code (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/security.html">Security</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">License<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">Events<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("zh")'>中文</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/en/get-started" class="nav-link"><span class="title">Get Started</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Basics</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/basics/download" class="nav-link"><span class="title">Download ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/import" class="nav-link"><span class="title">Import ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/basics/help" class="nav-link"><span class="title">Get Help</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">What's New</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 Features</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">Migration from v5 to v6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">Migration from v4 to v5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Concepts</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/concepts/chart-size" class="nav-link"><span class="title">Chart Container</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/style" class="nav-link"><span class="title">Style</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/dataset" class="nav-link"><span class="title">Dataset</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/data-transform" class="nav-link"><span class="title">Data Transform</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/axis" class="nav-link"><span class="title">Axis</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/visual-map" class="nav-link"><span class="title">Visual Mapping</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/legend" class="nav-link"><span class="title">Legend</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/event" class="nav-link"><span class="title">Event and Action</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">How To Guides</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">Common Charts</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a class="nav-link"><span class="title">Bar</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">Basic Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">Stacked Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">Bar Racing</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">Waterfall</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Line</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level3"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">Basic Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">Stacked Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/area-line" class="nav-link"><span class="title">Area Chart</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/smooth-line" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">Smoothed Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/step-line" class="nav-link"><span class="title">Step Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Pie</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">Basic Pie</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">Ring Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/rose" class="nav-link"><span class="title">Rose Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Scatter</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">Basic Scatter</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Common Components</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Geo</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG Base Map</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">Cross Platform</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/cross-platform/server" class="nav-link"><span class="title">Server Side Rendering</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Data</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/data/dynamic-data" class="nav-link"><span class="title">Dynamic Data</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Label</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/label/rich-text" class="nav-link"><span class="title">Rich Text</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Animation</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/animation/transition" class="nav-link"><span class="title">Data Transition</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Interaction</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/drag" class="nav-link"><span class="title">Drag</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">Intelligent Pointer Snapping</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Best Practices</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/en/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/aria" class="nav-link"><span class="title">Aria</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/security" class="nav-link"><span class="title">Security Guidelines</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Edit Handbook</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/meta/edit-guide" class="nav-link"><span class="title">Edit Guide</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="smooth-line-chart" tabindex="-1">Smooth Line Chart</h1> <p>The smooth line chart is also a variant of the basic line graph. It is a better choice for you to perform a comfort visual experience. While using the ECharts, you only need to change the <code>smooth</code> to <code>true</code> to achieve this effect.</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    data: ['A', 'B', 'C', 'D', 'E']
+  },
+  yAxis: {},
+  series: [
+    {
+      data: [10, 22, 28, 23, 19],
+      type: 'line',
+      smooth: true
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'A'</span><span class="token punctuation">,</span> <span class="token string">'B'</span><span class="token punctuation">,</span> <span class="token string">'C'</span><span class="token punctuation">,</span> <span class="token string">'D'</span><span class="token punctuation">,</span> <span class="token string">'E'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">22</span><span class="token punctuation">,</span> <span class="token number">28</span><span class="token punctuation">,</span> <span class="token number">23</span><span class="token punctuation">,</span> <span class="token number">19</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">smooth</span><span class="token operator">:</span> <span class="token boolean">true</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">Contributors</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/en/how-to/chart-types/line/smooth-line.md" title="Edit this Document" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">Edit this page on GitHub</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,i,e,r,d,l,a,o,n,h,s,c,p,g,m,f,C,u,b,v,B,S,I,w,A,y,P,G,L,x,D,E,k,R,M,T,V,H,z,O,_,Q,W,J,X,F,N,j,K,U,Z,$,Y,q,tt,it,et,rt,dt,lt,at,ot,nt){return{layout:"default",data:[{html:'<h1 id="smooth-line-chart" tabindex="-1">Smooth Line Chart</h1>\n<p>The smooth line chart is also a variant of the basic line graph. It is a better choice for you to perform a comfort visual experience. While using the ECharts, you only need to change the <code>smooth</code> to <code>true</code> to achieve this effect.</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBkYXRhOiBbJ0EnLCAnQicsICdDJywgJ0QnLCAnRSddCiAgfSwKICB5QXhpczoge30sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIGRhdGE6IFsxMCwgMjIsIDI4LCAyMywgMTldLAogICAgICB0eXBlOiAnbGluZScsCiAgICAgIHNtb290aDogdHJ1ZQogICAgfQogIF0KfTs\'" v-bind="{}" />\n',postPath:"en/how-to/chart-types/line/smooth-line",title:"Smoothed Line - Line - Common Charts - How To Guides"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:r},{title:"入门篇",dir:d,children:[{title:"获取 ECharts",dir:l},{title:"在项目中引入 ECharts",dir:a},{title:"资源列表",dir:o,draft:t},{title:"寻求帮助",dir:n},{title:"版本特性",dir:h,children:[{title:"ECharts 6 特性介绍",dir:s},{title:"v5 升级 v6 指南",dir:c},{title:"5.0",dir:p},{title:"v4 升级 v5 指南",dir:g},{title:5.2,dir:m},{title:5.3,dir:f},{title:5.4,dir:C},{title:5.5,dir:u},{title:5.6,dir:b}]}]},{title:"概念篇",dir:v,children:[{title:"图表容器及大小",dir:B},{title:"配置项",dir:S,draft:t},{title:"系列",dir:I,draft:t},{title:"样式",dir:w},{title:"数据集",dir:A},{title:"数据转换",dir:y},{title:"坐标系",dir:P,draft:t},{title:"坐标轴",dir:G},{title:"视觉映射",dir:e},{title:"图例",dir:L},{title:"事件与行为",dir:x}]},{title:"应用篇",dir:D,children:[{title:"常用图表类型",dir:E,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:k},{title:"堆叠柱状图",dir:R},{title:"动态排序柱状图",dir:M},{title:"极坐标系柱状图",dir:T,draft:t},{title:"阶梯瀑布图",dir:V},{title:"视觉映射的柱状图",dir:e,draft:t}]},{title:"折线图",dir:H,children:[{title:"基础折线图",dir:z},{title:"堆叠折线图",dir:O},{title:"区域面积图",dir:_},{title:"平滑曲线图",dir:Q},{title:"阶梯线图",dir:W}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:J},{title:"圆环图",dir:X},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:F,children:[{title:"基础散点图",dir:N}]}]},{title:"常用组件",dir:j,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:K}]}]},{title:"移动端优化",dir:i,draft:t},{title:"跨平台方案",dir:U,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:Z},{title:"数据下钻",dir:$,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:Y}]},{title:"动画",dir:q,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:it,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:et,draft:t},{title:"智能指针吸附",dir:rt}]}]},{title:"最佳实践",dir:dt,children:[{title:"移动端优化",dir:i,draft:t},{title:lt,dir:at},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:ot}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:nt}]}],en:[{title:"Get Started",dir:r},{title:"Basics",dir:d,children:[{title:"Download ECharts",dir:l},{title:"Import ECharts",dir:a},{title:"Resources",dir:o,draft:t},{title:"Get Help",dir:n},{title:"What's New",dir:h,children:[{title:"ECharts 6 Features",dir:s},{title:"Migration from v5 to v6",dir:c},{title:"5.0",dir:p},{title:"Migration from v4 to v5",dir:g},{title:5.2,dir:m},{title:5.3,dir:f},{title:5.4,dir:C},{title:5.5,dir:u},{title:5.6,dir:b}]}]},{title:"Concepts",dir:v,children:[{title:"Chart Container",dir:B},{title:"Chart Option",dir:S,draft:t},{title:"Series",dir:I,draft:t},{title:"Style",dir:w},{title:"Dataset",dir:A},{title:"Data Transform",dir:y},{title:"Coordinate",dir:P,draft:t},{title:"Axis",dir:G},{title:"Visual Mapping",dir:e},{title:"Legend",dir:L},{title:"Event and Action",dir:x}]},{title:"How To Guides",dir:D,children:[{title:"Common Charts",dir:E,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:k},{title:"Stacked Bar",dir:R},{title:"Bar Racing",dir:M},{title:"Bar Polar",dir:T,draft:t},{title:"Waterfall",dir:V}]},{title:"Line",dir:H,children:[{title:"Basic Line",dir:z},{title:"Stacked Line",dir:O},{title:"Area Chart",dir:_},{title:"Smoothed Line",dir:Q},{title:"Step Line",dir:W}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:J},{title:"Ring Style",dir:X},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:F,children:[{title:"Basic Scatter",dir:N}]}]},{title:"Common Components",dir:j,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:K}]}]},{title:"Mobile",dir:i,draft:t},{title:"Cross Platform",dir:U,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:Z},{title:"Drilldown",dir:$,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:Y}]},{title:"Animation",dir:q,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:it,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:et,draft:t},{title:"Intelligent Pointer Snapping",dir:rt}]}]},{title:"Best Practices",dir:dt,children:[{title:"Mobile Optimization",dir:i,draft:t},{title:lt,dir:at},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:ot}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:nt}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/en/how-to/chart-types/line/smooth-line",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/en/how-to/chart-types/line/stacked-line/index.html b/docs/en/how-to/chart-types/line/stacked-line/index.html
new file mode 100644
index 0000000..e4bd4cd
--- /dev/null
+++ b/docs/en/how-to/chart-types/line/stacked-line/index.html
@@ -0,0 +1,85 @@
+<!doctype html>
+<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Stacked Line - Line - Common Charts - How To Guides - Handbook - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="en"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/en/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/en/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/en/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/en/index.html" class="navbar-brand"><img src="https://echarts.apache.org/en/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/en/index.html">Home</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Docs<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/feature.html">Features</a></li><li><a href="https://echarts.apache.org/handbook/en/get-started/">Handbook</a></li><li><a href="https://echarts.apache.org/en/api.html">API</a></li><li><a href="https://echarts.apache.org/en/option.html">Chart Configuration</a></li><li><a href="https://echarts.apache.org/en/changelog.html">Changelog</a></li><li><a href="https://echarts.apache.org/en/faq.html">FAQ</a></li><li><a href="https://echarts.apache.org/handbook/en/basics/release-note/v6-upgrade-guide">V6 Upgrade Guide</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Download<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/download.html">Download</a></li><li><a href="https://echarts.apache.org/en/download-theme.html">Download Themes</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">Download Custom Series<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/download-extension.html">Download Extensions</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/en/index.html">Examples</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Resources<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/spreadsheet.html">Spread Sheet Tool</a></li><li><a href="https://echarts.apache.org/en/theme-builder.html">Theme Builder</a></li><li><a href="https://echarts.apache.org/en/cheat-sheet.html">Cheat Sheet</a></li><li><a href="https://echarts.apache.org/en/resources.html">More Resources</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/events.html">Events</a></li><li><a href="https://echarts.apache.org/en/committers.html">Committers</a></li><li><a href="https://echarts.apache.org/en/maillist.html">Mailing List</a></li><li><a href="https://echarts.apache.org/en/contributing.html">How to Contribute</a></li><li><a href="https://echarts.apache.org/en/dependencies.html">Dependencies</a></li><li><a href="https://echarts.apache.org/en/coding-standard.html">Code Standard</a></li><li><a href="https://github.com/apache/echarts" target="_blank">Source Code (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/security.html">Security</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">License<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">Events<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("zh")'>中文</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/en/get-started" class="nav-link"><span class="title">Get Started</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Basics</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/basics/download" class="nav-link"><span class="title">Download ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/import" class="nav-link"><span class="title">Import ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/basics/help" class="nav-link"><span class="title">Get Help</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">What's New</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 Features</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">Migration from v5 to v6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">Migration from v4 to v5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Concepts</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/concepts/chart-size" class="nav-link"><span class="title">Chart Container</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/style" class="nav-link"><span class="title">Style</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/dataset" class="nav-link"><span class="title">Dataset</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/data-transform" class="nav-link"><span class="title">Data Transform</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/axis" class="nav-link"><span class="title">Axis</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/visual-map" class="nav-link"><span class="title">Visual Mapping</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/legend" class="nav-link"><span class="title">Legend</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/event" class="nav-link"><span class="title">Event and Action</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">How To Guides</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">Common Charts</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a class="nav-link"><span class="title">Bar</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">Basic Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">Stacked Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">Bar Racing</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">Waterfall</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Line</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level3"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">Basic Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/stacked-line" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">Stacked Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/area-line" class="nav-link"><span class="title">Area Chart</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">Smoothed Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/step-line" class="nav-link"><span class="title">Step Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Pie</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">Basic Pie</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">Ring Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/rose" class="nav-link"><span class="title">Rose Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Scatter</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">Basic Scatter</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Common Components</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Geo</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG Base Map</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">Cross Platform</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/cross-platform/server" class="nav-link"><span class="title">Server Side Rendering</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Data</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/data/dynamic-data" class="nav-link"><span class="title">Dynamic Data</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Label</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/label/rich-text" class="nav-link"><span class="title">Rich Text</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Animation</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/animation/transition" class="nav-link"><span class="title">Data Transition</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Interaction</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/drag" class="nav-link"><span class="title">Drag</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">Intelligent Pointer Snapping</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Best Practices</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/en/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/aria" class="nav-link"><span class="title">Aria</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/security" class="nav-link"><span class="title">Security Guidelines</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Edit Handbook</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/meta/edit-guide" class="nav-link"><span class="title">Edit Guide</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="stacked-line-chart" tabindex="-1">Stacked Line Chart</h1> <p>Similar to the <a href="en/how-to/chart-types/bar/stacked-bar">Stacked Bar Chart</a>, Stacked Line Chart use the <code>'stack'</code> in <code>series</code> to decide which series should be stacked together.</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    data: ['A', 'B', 'C', 'D', 'E']
+  },
+  yAxis: {},
+  series: [
+    {
+      data: [10, 22, 28, 43, 49],
+      type: 'line',
+      stack: 'x'
+    },
+    {
+      data: [5, 4, 3, 5, 10],
+      type: 'line',
+      stack: 'x'
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'A'</span><span class="token punctuation">,</span> <span class="token string">'B'</span><span class="token punctuation">,</span> <span class="token string">'C'</span><span class="token punctuation">,</span> <span class="token string">'D'</span><span class="token punctuation">,</span> <span class="token string">'E'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">22</span><span class="token punctuation">,</span> <span class="token number">28</span><span class="token punctuation">,</span> <span class="token number">43</span><span class="token punctuation">,</span> <span class="token number">49</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">stack</span><span class="token operator">:</span> <span class="token string">'x'</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">stack</span><span class="token operator">:</span> <span class="token string">'x'</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>However, without clarification, it is hard for us to judge whether it is a stacked line chart or normal line chart. Therefore, filling color for the area under the line is recommended to indicate for a stacked line chart.</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    data: ['A', 'B', 'C', 'D', 'E']
+  },
+  yAxis: {},
+  series: [
+    {
+      data: [10, 22, 28, 43, 49],
+      type: 'line',
+      stack: 'x',
+      areaStyle: {}
+    },
+    {
+      data: [5, 4, 3, 5, 10],
+      type: 'line',
+      stack: 'x',
+      areaStyle: {}
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'A'</span><span class="token punctuation">,</span> <span class="token string">'B'</span><span class="token punctuation">,</span> <span class="token string">'C'</span><span class="token punctuation">,</span> <span class="token string">'D'</span><span class="token punctuation">,</span> <span class="token string">'E'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">22</span><span class="token punctuation">,</span> <span class="token number">28</span><span class="token punctuation">,</span> <span class="token number">43</span><span class="token punctuation">,</span> <span class="token number">49</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">stack</span><span class="token operator">:</span> <span class="token string">'x'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">areaStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">stack</span><span class="token operator">:</span> <span class="token string">'x'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">areaStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">Contributors</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/en/how-to/chart-types/line/stacked-line.md" title="Edit this Document" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">Edit this page on GitHub</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/vincentbernat" target="_blank" class="post-contributor"><!----> <span>vincentbernat</span></a><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a><a href="https://github.com/omkar787" target="_blank" class="post-contributor"><!----> <span>omkar787</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,i,e,r,d,l,a,n,o,s,c,h,g,C,p,I,A,f,m,b,u,B,w,v,S,L,G,k,y,R,D,P,x,E,M,H,O,V,W,z,F,J,T,K,N,Q,X,Y,_,j,U,Z,$,q,tt,it,et,rt,dt,lt,at,nt,ot){return{layout:"default",data:[{html:'<h1 id="stacked-line-chart" tabindex="-1">Stacked Line Chart</h1>\n<p>Similar to the <a href="en/how-to/chart-types/bar/stacked-bar">Stacked Bar Chart</a>, Stacked Line Chart use the <code>\'stack\'</code> in <code>series</code> to decide which series should be stacked together.</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBkYXRhOiBbJ0EnLCAnQicsICdDJywgJ0QnLCAnRSddCiAgfSwKICB5QXhpczoge30sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIGRhdGE6IFsxMCwgMjIsIDI4LCA0MywgNDldLAogICAgICB0eXBlOiAnbGluZScsCiAgICAgIHN0YWNrOiAneCcKICAgIH0sCiAgICB7CiAgICAgIGRhdGE6IFs1LCA0LCAzLCA1LCAxMF0sCiAgICAgIHR5cGU6ICdsaW5lJywKICAgICAgc3RhY2s6ICd4JwogICAgfQogIF0KfTs\'" v-bind="{}" />\n<p>However, without clarification, it is hard for us to judge whether it is a stacked line chart or normal line chart. Therefore, filling color for the area under the line is recommended to indicate for a stacked line chart.</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBkYXRhOiBbJ0EnLCAnQicsICdDJywgJ0QnLCAnRSddCiAgfSwKICB5QXhpczoge30sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIGRhdGE6IFsxMCwgMjIsIDI4LCA0MywgNDldLAogICAgICB0eXBlOiAnbGluZScsCiAgICAgIHN0YWNrOiAneCcsCiAgICAgIGFyZWFTdHlsZToge30KICAgIH0sCiAgICB7CiAgICAgIGRhdGE6IFs1LCA0LCAzLCA1LCAxMF0sCiAgICAgIHR5cGU6ICdsaW5lJywKICAgICAgc3RhY2s6ICd4JywKICAgICAgYXJlYVN0eWxlOiB7fQogICAgfQogIF0KfTs\'" v-bind="{}" />\n',postPath:"en/how-to/chart-types/line/stacked-line",title:"Stacked Line - Line - Common Charts - How To Guides"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:r},{title:"入门篇",dir:d,children:[{title:"获取 ECharts",dir:l},{title:"在项目中引入 ECharts",dir:a},{title:"资源列表",dir:n,draft:t},{title:"寻求帮助",dir:o},{title:"版本特性",dir:s,children:[{title:"ECharts 6 特性介绍",dir:c},{title:"v5 升级 v6 指南",dir:h},{title:"5.0",dir:g},{title:"v4 升级 v5 指南",dir:C},{title:5.2,dir:p},{title:5.3,dir:I},{title:5.4,dir:A},{title:5.5,dir:f},{title:5.6,dir:m}]}]},{title:"概念篇",dir:b,children:[{title:"图表容器及大小",dir:u},{title:"配置项",dir:B,draft:t},{title:"系列",dir:w,draft:t},{title:"样式",dir:v},{title:"数据集",dir:S},{title:"数据转换",dir:L},{title:"坐标系",dir:G,draft:t},{title:"坐标轴",dir:k},{title:"视觉映射",dir:e},{title:"图例",dir:y},{title:"事件与行为",dir:R}]},{title:"应用篇",dir:D,children:[{title:"常用图表类型",dir:P,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:x},{title:"堆叠柱状图",dir:E},{title:"动态排序柱状图",dir:M},{title:"极坐标系柱状图",dir:H,draft:t},{title:"阶梯瀑布图",dir:O},{title:"视觉映射的柱状图",dir:e,draft:t}]},{title:"折线图",dir:V,children:[{title:"基础折线图",dir:W},{title:"堆叠折线图",dir:z},{title:"区域面积图",dir:F},{title:"平滑曲线图",dir:J},{title:"阶梯线图",dir:T}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:K},{title:"圆环图",dir:N},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:Q,children:[{title:"基础散点图",dir:X}]}]},{title:"常用组件",dir:Y,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:_}]}]},{title:"移动端优化",dir:i,draft:t},{title:"跨平台方案",dir:j,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:U},{title:"数据下钻",dir:Z,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:$}]},{title:"动画",dir:q,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:it,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:et,draft:t},{title:"智能指针吸附",dir:rt}]}]},{title:"最佳实践",dir:dt,children:[{title:"移动端优化",dir:i,draft:t},{title:lt,dir:at},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:nt}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:ot}]}],en:[{title:"Get Started",dir:r},{title:"Basics",dir:d,children:[{title:"Download ECharts",dir:l},{title:"Import ECharts",dir:a},{title:"Resources",dir:n,draft:t},{title:"Get Help",dir:o},{title:"What's New",dir:s,children:[{title:"ECharts 6 Features",dir:c},{title:"Migration from v5 to v6",dir:h},{title:"5.0",dir:g},{title:"Migration from v4 to v5",dir:C},{title:5.2,dir:p},{title:5.3,dir:I},{title:5.4,dir:A},{title:5.5,dir:f},{title:5.6,dir:m}]}]},{title:"Concepts",dir:b,children:[{title:"Chart Container",dir:u},{title:"Chart Option",dir:B,draft:t},{title:"Series",dir:w,draft:t},{title:"Style",dir:v},{title:"Dataset",dir:S},{title:"Data Transform",dir:L},{title:"Coordinate",dir:G,draft:t},{title:"Axis",dir:k},{title:"Visual Mapping",dir:e},{title:"Legend",dir:y},{title:"Event and Action",dir:R}]},{title:"How To Guides",dir:D,children:[{title:"Common Charts",dir:P,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:x},{title:"Stacked Bar",dir:E},{title:"Bar Racing",dir:M},{title:"Bar Polar",dir:H,draft:t},{title:"Waterfall",dir:O}]},{title:"Line",dir:V,children:[{title:"Basic Line",dir:W},{title:"Stacked Line",dir:z},{title:"Area Chart",dir:F},{title:"Smoothed Line",dir:J},{title:"Step Line",dir:T}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:K},{title:"Ring Style",dir:N},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:Q,children:[{title:"Basic Scatter",dir:X}]}]},{title:"Common Components",dir:Y,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:_}]}]},{title:"Mobile",dir:i,draft:t},{title:"Cross Platform",dir:j,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:U},{title:"Drilldown",dir:Z,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:$}]},{title:"Animation",dir:q,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:it,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:et,draft:t},{title:"Intelligent Pointer Snapping",dir:rt}]}]},{title:"Best Practices",dir:dt,children:[{title:"Mobile Optimization",dir:i,draft:t},{title:lt,dir:at},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:nt}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:ot}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/en/how-to/chart-types/line/stacked-line",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/en/how-to/chart-types/line/step-line/index.html b/docs/en/how-to/chart-types/line/step-line/index.html
new file mode 100644
index 0000000..ffb40ad
--- /dev/null
+++ b/docs/en/how-to/chart-types/line/step-line/index.html
@@ -0,0 +1,71 @@
+<!doctype html>
+<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Step Line - Line - Common Charts - How To Guides - Handbook - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="en"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/en/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/en/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/en/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/en/index.html" class="navbar-brand"><img src="https://echarts.apache.org/en/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/en/index.html">Home</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Docs<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/feature.html">Features</a></li><li><a href="https://echarts.apache.org/handbook/en/get-started/">Handbook</a></li><li><a href="https://echarts.apache.org/en/api.html">API</a></li><li><a href="https://echarts.apache.org/en/option.html">Chart Configuration</a></li><li><a href="https://echarts.apache.org/en/changelog.html">Changelog</a></li><li><a href="https://echarts.apache.org/en/faq.html">FAQ</a></li><li><a href="https://echarts.apache.org/handbook/en/basics/release-note/v6-upgrade-guide">V6 Upgrade Guide</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Download<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/download.html">Download</a></li><li><a href="https://echarts.apache.org/en/download-theme.html">Download Themes</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">Download Custom Series<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/download-extension.html">Download Extensions</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/en/index.html">Examples</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Resources<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/spreadsheet.html">Spread Sheet Tool</a></li><li><a href="https://echarts.apache.org/en/theme-builder.html">Theme Builder</a></li><li><a href="https://echarts.apache.org/en/cheat-sheet.html">Cheat Sheet</a></li><li><a href="https://echarts.apache.org/en/resources.html">More Resources</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/events.html">Events</a></li><li><a href="https://echarts.apache.org/en/committers.html">Committers</a></li><li><a href="https://echarts.apache.org/en/maillist.html">Mailing List</a></li><li><a href="https://echarts.apache.org/en/contributing.html">How to Contribute</a></li><li><a href="https://echarts.apache.org/en/dependencies.html">Dependencies</a></li><li><a href="https://echarts.apache.org/en/coding-standard.html">Code Standard</a></li><li><a href="https://github.com/apache/echarts" target="_blank">Source Code (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/security.html">Security</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">License<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">Events<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("zh")'>中文</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/en/get-started" class="nav-link"><span class="title">Get Started</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Basics</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/basics/download" class="nav-link"><span class="title">Download ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/import" class="nav-link"><span class="title">Import ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/basics/help" class="nav-link"><span class="title">Get Help</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">What's New</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 Features</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">Migration from v5 to v6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">Migration from v4 to v5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Concepts</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/concepts/chart-size" class="nav-link"><span class="title">Chart Container</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/style" class="nav-link"><span class="title">Style</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/dataset" class="nav-link"><span class="title">Dataset</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/data-transform" class="nav-link"><span class="title">Data Transform</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/axis" class="nav-link"><span class="title">Axis</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/visual-map" class="nav-link"><span class="title">Visual Mapping</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/legend" class="nav-link"><span class="title">Legend</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/event" class="nav-link"><span class="title">Event and Action</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">How To Guides</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">Common Charts</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a class="nav-link"><span class="title">Bar</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">Basic Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">Stacked Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">Bar Racing</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">Waterfall</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Line</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level3"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">Basic Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">Stacked Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/area-line" class="nav-link"><span class="title">Area Chart</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">Smoothed Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/step-line" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">Step Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Pie</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">Basic Pie</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">Ring Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/rose" class="nav-link"><span class="title">Rose Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Scatter</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">Basic Scatter</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Common Components</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Geo</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG Base Map</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">Cross Platform</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/cross-platform/server" class="nav-link"><span class="title">Server Side Rendering</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Data</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/data/dynamic-data" class="nav-link"><span class="title">Dynamic Data</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Label</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/label/rich-text" class="nav-link"><span class="title">Rich Text</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Animation</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/animation/transition" class="nav-link"><span class="title">Data Transition</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Interaction</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/drag" class="nav-link"><span class="title">Drag</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">Intelligent Pointer Snapping</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Best Practices</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/en/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/aria" class="nav-link"><span class="title">Aria</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/security" class="nav-link"><span class="title">Security Guidelines</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Edit Handbook</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/meta/edit-guide" class="nav-link"><span class="title">Edit Guide</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="step-line-chart" tabindex="-1">Step Line Chart</h1> <p>The normal line chart connects two points by straight line directly, while the step line chart, also known as square wave chart, uses only horizontal and vertical lines to connect the nearby items together. Compared with the normal line chart, the step line chart significantly shows the sudden changes of analyzed data.</p> <p>In ECharts, <code>step</code> is used to characterize the connection type of the step line chart. It has three available values: <code>'start'</code>, <code>'end'</code>, and <code>'middle'</code>. For item A and B, these values corresponded that the corner occurred at A, B, and mid-point between A and B.</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  legend: {},
+  xAxis: {
+    type: 'category',
+    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
+  },
+  yAxis: {
+    type: 'value'
+  },
+  series: [
+    {
+      name: 'Step Start',
+      type: 'line',
+      step: 'start',
+      data: [120, 132, 101, 134, 90, 230, 210]
+    },
+    {
+      name: 'Step Middle',
+      type: 'line',
+      step: 'middle',
+      data: [220, 282, 201, 234, 290, 430, 410]
+    },
+    {
+      name: 'Step End',
+      type: 'line',
+      step: 'end',
+      data: [450, 432, 401, 454, 590, 530, 510]
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">legend</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'category'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'Mon'</span><span class="token punctuation">,</span> <span class="token string">'Tue'</span><span class="token punctuation">,</span> <span class="token string">'Wed'</span><span class="token punctuation">,</span> <span class="token string">'Thu'</span><span class="token punctuation">,</span> <span class="token string">'Fri'</span><span class="token punctuation">,</span> <span class="token string">'Sat'</span><span class="token punctuation">,</span> <span class="token string">'Sun'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'value'</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Step Start'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">step</span><span class="token operator">:</span> <span class="token string">'start'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">120</span><span class="token punctuation">,</span> <span class="token number">132</span><span class="token punctuation">,</span> <span class="token number">101</span><span class="token punctuation">,</span> <span class="token number">134</span><span class="token punctuation">,</span> <span class="token number">90</span><span class="token punctuation">,</span> <span class="token number">230</span><span class="token punctuation">,</span> <span class="token number">210</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Step Middle'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">step</span><span class="token operator">:</span> <span class="token string">'middle'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">220</span><span class="token punctuation">,</span> <span class="token number">282</span><span class="token punctuation">,</span> <span class="token number">201</span><span class="token punctuation">,</span> <span class="token number">234</span><span class="token punctuation">,</span> <span class="token number">290</span><span class="token punctuation">,</span> <span class="token number">430</span><span class="token punctuation">,</span> <span class="token number">410</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Step End'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">step</span><span class="token operator">:</span> <span class="token string">'end'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">450</span><span class="token punctuation">,</span> <span class="token number">432</span><span class="token punctuation">,</span> <span class="token number">401</span><span class="token punctuation">,</span> <span class="token number">454</span><span class="token punctuation">,</span> <span class="token number">590</span><span class="token punctuation">,</span> <span class="token number">530</span><span class="token punctuation">,</span> <span class="token number">510</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <blockquote><p>Please focus on the difference of line between three separate types.</p></blockquote></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">Contributors</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/en/how-to/chart-types/line/step-line.md" title="Edit this Document" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">Edit this page on GitHub</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,i,e,r,d,l,a,n,o,s,c,h,g,p,C,I,A,w,b,m,f,u,B,v,y,S,M,L,k,G,D,R,P,T,x,V,E,z,H,J,U,Z,O,W,X,N,K,F,Y,Q,_,j,q,$,tt,it,et,rt,dt,lt,at,nt,ot){return{layout:"default",data:[{html:'<h1 id="step-line-chart" tabindex="-1">Step Line Chart</h1>\n<p>The normal line chart connects two points by straight line directly, while the step line chart, also known as square wave chart, uses only horizontal and vertical lines to connect the nearby items together. Compared with the normal line chart, the step line chart significantly shows the sudden changes of analyzed data.</p>\n<p>In ECharts, <code>step</code> is used to characterize the connection type of the step line chart. It has three available values: <code>\'start\'</code>, <code>\'end\'</code>, and <code>\'middle\'</code>. For item A and B, these values corresponded that the corner occurred at A, B, and mid-point between A and B.</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIGxlZ2VuZDoge30sCiAgeEF4aXM6IHsKICAgIHR5cGU6ICdjYXRlZ29yeScsCiAgICBkYXRhOiBbJ01vbicsICdUdWUnLCAnV2VkJywgJ1RodScsICdGcmknLCAnU2F0JywgJ1N1biddCiAgfSwKICB5QXhpczogewogICAgdHlwZTogJ3ZhbHVlJwogIH0sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIG5hbWU6ICdTdGVwIFN0YXJ0JywKICAgICAgdHlwZTogJ2xpbmUnLAogICAgICBzdGVwOiAnc3RhcnQnLAogICAgICBkYXRhOiBbMTIwLCAxMzIsIDEwMSwgMTM0LCA5MCwgMjMwLCAyMTBdCiAgICB9LAogICAgewogICAgICBuYW1lOiAnU3RlcCBNaWRkbGUnLAogICAgICB0eXBlOiAnbGluZScsCiAgICAgIHN0ZXA6ICdtaWRkbGUnLAogICAgICBkYXRhOiBbMjIwLCAyODIsIDIwMSwgMjM0LCAyOTAsIDQzMCwgNDEwXQogICAgfSwKICAgIHsKICAgICAgbmFtZTogJ1N0ZXAgRW5kJywKICAgICAgdHlwZTogJ2xpbmUnLAogICAgICBzdGVwOiAnZW5kJywKICAgICAgZGF0YTogWzQ1MCwgNDMyLCA0MDEsIDQ1NCwgNTkwLCA1MzAsIDUxMF0KICAgIH0KICBdCn07\'" v-bind="{}" />\n<blockquote>\n<p>Please focus on the difference of line between three separate types.</p>\n</blockquote>\n',postPath:"en/how-to/chart-types/line/step-line",title:"Step Line - Line - Common Charts - How To Guides"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:r},{title:"入门篇",dir:d,children:[{title:"获取 ECharts",dir:l},{title:"在项目中引入 ECharts",dir:a},{title:"资源列表",dir:n,draft:t},{title:"寻求帮助",dir:o},{title:"版本特性",dir:s,children:[{title:"ECharts 6 特性介绍",dir:c},{title:"v5 升级 v6 指南",dir:h},{title:"5.0",dir:g},{title:"v4 升级 v5 指南",dir:p},{title:5.2,dir:C},{title:5.3,dir:I},{title:5.4,dir:A},{title:5.5,dir:w},{title:5.6,dir:b}]}]},{title:"概念篇",dir:m,children:[{title:"图表容器及大小",dir:f},{title:"配置项",dir:u,draft:t},{title:"系列",dir:B,draft:t},{title:"样式",dir:v},{title:"数据集",dir:y},{title:"数据转换",dir:S},{title:"坐标系",dir:M,draft:t},{title:"坐标轴",dir:L},{title:"视觉映射",dir:e},{title:"图例",dir:k},{title:"事件与行为",dir:G}]},{title:"应用篇",dir:D,children:[{title:"常用图表类型",dir:R,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:P},{title:"堆叠柱状图",dir:T},{title:"动态排序柱状图",dir:x},{title:"极坐标系柱状图",dir:V,draft:t},{title:"阶梯瀑布图",dir:E},{title:"视觉映射的柱状图",dir:e,draft:t}]},{title:"折线图",dir:z,children:[{title:"基础折线图",dir:H},{title:"堆叠折线图",dir:J},{title:"区域面积图",dir:U},{title:"平滑曲线图",dir:Z},{title:"阶梯线图",dir:O}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:W},{title:"圆环图",dir:X},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:N,children:[{title:"基础散点图",dir:K}]}]},{title:"常用组件",dir:F,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:Y}]}]},{title:"移动端优化",dir:i,draft:t},{title:"跨平台方案",dir:Q,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:_},{title:"数据下钻",dir:j,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:q}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:it,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:et,draft:t},{title:"智能指针吸附",dir:rt}]}]},{title:"最佳实践",dir:dt,children:[{title:"移动端优化",dir:i,draft:t},{title:lt,dir:at},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:nt}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:ot}]}],en:[{title:"Get Started",dir:r},{title:"Basics",dir:d,children:[{title:"Download ECharts",dir:l},{title:"Import ECharts",dir:a},{title:"Resources",dir:n,draft:t},{title:"Get Help",dir:o},{title:"What's New",dir:s,children:[{title:"ECharts 6 Features",dir:c},{title:"Migration from v5 to v6",dir:h},{title:"5.0",dir:g},{title:"Migration from v4 to v5",dir:p},{title:5.2,dir:C},{title:5.3,dir:I},{title:5.4,dir:A},{title:5.5,dir:w},{title:5.6,dir:b}]}]},{title:"Concepts",dir:m,children:[{title:"Chart Container",dir:f},{title:"Chart Option",dir:u,draft:t},{title:"Series",dir:B,draft:t},{title:"Style",dir:v},{title:"Dataset",dir:y},{title:"Data Transform",dir:S},{title:"Coordinate",dir:M,draft:t},{title:"Axis",dir:L},{title:"Visual Mapping",dir:e},{title:"Legend",dir:k},{title:"Event and Action",dir:G}]},{title:"How To Guides",dir:D,children:[{title:"Common Charts",dir:R,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:P},{title:"Stacked Bar",dir:T},{title:"Bar Racing",dir:x},{title:"Bar Polar",dir:V,draft:t},{title:"Waterfall",dir:E}]},{title:"Line",dir:z,children:[{title:"Basic Line",dir:H},{title:"Stacked Line",dir:J},{title:"Area Chart",dir:U},{title:"Smoothed Line",dir:Z},{title:"Step Line",dir:O}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:W},{title:"Ring Style",dir:X},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:N,children:[{title:"Basic Scatter",dir:K}]}]},{title:"Common Components",dir:F,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:Y}]}]},{title:"Mobile",dir:i,draft:t},{title:"Cross Platform",dir:Q,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:_},{title:"Drilldown",dir:j,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:q}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:it,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:et,draft:t},{title:"Intelligent Pointer Snapping",dir:rt}]}]},{title:"Best Practices",dir:dt,children:[{title:"Mobile Optimization",dir:i,draft:t},{title:lt,dir:at},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:nt}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:ot}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/en/how-to/chart-types/line/step-line",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/en/how-to/chart-types/pie/basic-pie/index.html b/docs/en/how-to/chart-types/pie/basic-pie/index.html
new file mode 100644
index 0000000..9b5a5d8
--- /dev/null
+++ b/docs/en/how-to/chart-types/pie/basic-pie/index.html
@@ -0,0 +1,173 @@
+<!doctype html>
+<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Basic Pie - Pie - Common Charts - How To Guides - Handbook - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="en"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/en/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/en/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/en/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/en/index.html" class="navbar-brand"><img src="https://echarts.apache.org/en/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/en/index.html">Home</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Docs<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/feature.html">Features</a></li><li><a href="https://echarts.apache.org/handbook/en/get-started/">Handbook</a></li><li><a href="https://echarts.apache.org/en/api.html">API</a></li><li><a href="https://echarts.apache.org/en/option.html">Chart Configuration</a></li><li><a href="https://echarts.apache.org/en/changelog.html">Changelog</a></li><li><a href="https://echarts.apache.org/en/faq.html">FAQ</a></li><li><a href="https://echarts.apache.org/handbook/en/basics/release-note/v6-upgrade-guide">V6 Upgrade Guide</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Download<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/download.html">Download</a></li><li><a href="https://echarts.apache.org/en/download-theme.html">Download Themes</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">Download Custom Series<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/download-extension.html">Download Extensions</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/en/index.html">Examples</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Resources<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/spreadsheet.html">Spread Sheet Tool</a></li><li><a href="https://echarts.apache.org/en/theme-builder.html">Theme Builder</a></li><li><a href="https://echarts.apache.org/en/cheat-sheet.html">Cheat Sheet</a></li><li><a href="https://echarts.apache.org/en/resources.html">More Resources</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/events.html">Events</a></li><li><a href="https://echarts.apache.org/en/committers.html">Committers</a></li><li><a href="https://echarts.apache.org/en/maillist.html">Mailing List</a></li><li><a href="https://echarts.apache.org/en/contributing.html">How to Contribute</a></li><li><a href="https://echarts.apache.org/en/dependencies.html">Dependencies</a></li><li><a href="https://echarts.apache.org/en/coding-standard.html">Code Standard</a></li><li><a href="https://github.com/apache/echarts" target="_blank">Source Code (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/security.html">Security</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">License<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">Events<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("zh")'>中文</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/en/get-started" class="nav-link"><span class="title">Get Started</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Basics</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/basics/download" class="nav-link"><span class="title">Download ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/import" class="nav-link"><span class="title">Import ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/basics/help" class="nav-link"><span class="title">Get Help</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">What's New</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 Features</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">Migration from v5 to v6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">Migration from v4 to v5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Concepts</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/concepts/chart-size" class="nav-link"><span class="title">Chart Container</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/style" class="nav-link"><span class="title">Style</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/dataset" class="nav-link"><span class="title">Dataset</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/data-transform" class="nav-link"><span class="title">Data Transform</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/axis" class="nav-link"><span class="title">Axis</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/visual-map" class="nav-link"><span class="title">Visual Mapping</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/legend" class="nav-link"><span class="title">Legend</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/event" class="nav-link"><span class="title">Event and Action</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">How To Guides</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">Common Charts</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a class="nav-link"><span class="title">Bar</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">Basic Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">Stacked Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">Bar Racing</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">Waterfall</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Line</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">Basic Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">Stacked Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/area-line" class="nav-link"><span class="title">Area Chart</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">Smoothed Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/step-line" class="nav-link"><span class="title">Step Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Pie</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level3"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/basic-pie" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">Basic Pie</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">Ring Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/rose" class="nav-link"><span class="title">Rose Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Scatter</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">Basic Scatter</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Common Components</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Geo</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG Base Map</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">Cross Platform</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/cross-platform/server" class="nav-link"><span class="title">Server Side Rendering</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Data</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/data/dynamic-data" class="nav-link"><span class="title">Dynamic Data</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Label</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/label/rich-text" class="nav-link"><span class="title">Rich Text</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Animation</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/animation/transition" class="nav-link"><span class="title">Data Transition</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Interaction</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/drag" class="nav-link"><span class="title">Drag</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">Intelligent Pointer Snapping</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Best Practices</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/en/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/aria" class="nav-link"><span class="title">Aria</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/security" class="nav-link"><span class="title">Security Guidelines</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Edit Handbook</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/meta/edit-guide" class="nav-link"><span class="title">Edit Guide</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="basic-pie-chart" tabindex="-1">Basic Pie Chart</h1> <p>Pie charts are mainly used to show the proportion of several categories compared with the total. The radians represent the proportion of each category.</p> <h2 id="simple-example" tabindex="-1">Simple Example</h2> <p>The config of the pie chart is not completely the same as the line chart and bar chart. There is no need to configure the axis. The name and value of data need to be defined in the series. Let's begin with a basic pie chart:</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  series: [
+    {
+      type: 'pie',
+      data: [
+        {
+          value: 335,
+          name: 'Direct Visit'
+        },
+        {
+          value: 234,
+          name: 'Union Ad'
+        },
+        {
+          value: 1548,
+          name: 'Search Engine'
+        }
+      ]
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'pie'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">335</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Direct Visit'</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">234</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Union Ad'</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">1548</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Search Engine'</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>To be mentioned, the <code>value</code> here does not need to be percentage data. ECharts will proportionately distribute their corresponding radians in the pie chart depending on all the data.</p> <h2 id="customized-pie-chart" tabindex="-1">Customized Pie Chart</h2> <h3 id="radius-of-pie-chart" tabindex="-1">Radius of Pie Chart</h3> <p>The radius of pie chart can be defined by <a href="https://echarts.apache.org/option.html#series-pie.radius"><code>series.radius</code></a>. Both percent string(<code>'60%'</code>) and absolute pixel string(<code>'200'</code>) are available. While it is a percent string, it is proportional related to the shorter container(<code>'div'</code>) edge.</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  series: [
+    {
+      type: 'pie',
+      data: [
+        {
+          value: 335,
+          name: 'Direct Visit'
+        },
+        {
+          value: 234,
+          name: 'Union Ad'
+        },
+        {
+          value: 1548,
+          name: 'Search Engine'
+        }
+      ],
+      radius: '50%'
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'pie'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">335</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Direct Visit'</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">234</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Union Ad'</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">1548</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Search Engine'</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">radius</span><span class="token operator">:</span> <span class="token string">'50%'</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <h2 id="hide-chart-while-data-sum-is-0" tabindex="-1">Hide Chart While Data Sum is 0</h2> <p>By default, if the data sum is 0, the series will divide the shape equally. For instance, if you don't want to show any shape while all 4 series have value equals 0, you could define <a href="https://echarts.apache.org/option.html#series-pie.stillShowZeroSum"><code>series.stillShowZeroSum</code></a> to <code>false</code>.</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  series: [
+    {
+      type: 'pie',
+      stillShowZeroSum: false,
+      data: [
+        {
+          value: 0,
+          name: 'Direct Visit'
+        },
+        {
+          value: 0,
+          name: 'Union Ad'
+        },
+        {
+          value: 0,
+          name: 'Search Engine'
+        }
+      ]
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'pie'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">stillShowZeroSum</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Direct Visit'</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Union Ad'</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Search Engine'</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>If you are willing to hide the label as well, define the <a href="https://echarts.apache.org/option.html#series-pie.label.show"><code>series.label.show</code></a> to <code>false</code> as well.</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+    series: [{
+        type: 'pie',
+        stillShowZeroSum: false,
+        label: {
+            show: false
+        }
+        data: [{
+            value: 0,
+            name: 'Direct Visit'
+        }, {
+            value: 0,
+            name: 'Union Ad'
+        }, {
+            value: 0,
+            name: 'Search Engine'
+        }]
+    }]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">{</span>
+        <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'pie'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">stillShowZeroSum</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+            <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">false</span>
+        <span class="token punctuation">}</span>
+        <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">{</span>
+            <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Direct Visit'</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
+            <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Union Ad'</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
+            <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Search Engine'</span>
+        <span class="token punctuation">}</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">Contributors</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/en/how-to/chart-types/pie/basic-pie.md" title="Edit this Document" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">Edit this page on GitHub</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(i,t,e,r,d,l,a,g,o,C,n,I,s,h,c,A,p,b,m,u,f,w,B,v,H,W,G,y,Z,S,x,V,T,P,K,L,N,O,U,F,R,D,z,E,X,Y,J,M,Q,k,j,_,q,$,ii,ti,ei,ri,di,li,ai,gi,oi){return{layout:"default",data:[{html:'<h1 id="basic-pie-chart" tabindex="-1">Basic Pie Chart</h1>\n<p>Pie charts are mainly used to show the proportion of several categories compared with the total. The radians represent the proportion of each category.</p>\n<h2 id="simple-example" tabindex="-1">Simple Example</h2>\n<p>The config of the pie chart is not completely the same as the line chart and bar chart. There is no need to configure the axis. The name and value of data need to be defined in the series. Let\'s begin with a basic pie chart:</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHNlcmllczogWwogICAgewogICAgICB0eXBlOiAncGllJywKICAgICAgZGF0YTogWwogICAgICAgIHsKICAgICAgICAgIHZhbHVlOiAzMzUsCiAgICAgICAgICBuYW1lOiAnRGlyZWN0IFZpc2l0JwogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgdmFsdWU6IDIzNCwKICAgICAgICAgIG5hbWU6ICdVbmlvbiBBZCcKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgIHZhbHVlOiAxNTQ4LAogICAgICAgICAgbmFtZTogJ1NlYXJjaCBFbmdpbmUnCiAgICAgICAgfQogICAgICBdCiAgICB9CiAgXQp9Ow\'" v-bind="{}" />\n<p>To be mentioned, the <code>value</code> here does not need to be percentage data. ECharts will proportionately distribute their corresponding radians in the pie chart depending on all the data.</p>\n<h2 id="customized-pie-chart" tabindex="-1">Customized Pie Chart</h2>\n<h3 id="radius-of-pie-chart" tabindex="-1">Radius of Pie Chart</h3>\n<p>The radius of pie chart can be defined by <a href="https://echarts.apache.org/option.html#series-pie.radius"><code>series.radius</code></a>. Both percent string(<code>\'60%\'</code>) and absolute pixel string(<code>\'200\'</code>) are available. While it is a percent string, it is proportional related to the shorter container(<code>\'div\'</code>) edge.</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHNlcmllczogWwogICAgewogICAgICB0eXBlOiAncGllJywKICAgICAgZGF0YTogWwogICAgICAgIHsKICAgICAgICAgIHZhbHVlOiAzMzUsCiAgICAgICAgICBuYW1lOiAnRGlyZWN0IFZpc2l0JwogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgdmFsdWU6IDIzNCwKICAgICAgICAgIG5hbWU6ICdVbmlvbiBBZCcKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgIHZhbHVlOiAxNTQ4LAogICAgICAgICAgbmFtZTogJ1NlYXJjaCBFbmdpbmUnCiAgICAgICAgfQogICAgICBdLAogICAgICByYWRpdXM6ICc1MCUnCiAgICB9CiAgXQp9Ow\'" v-bind="{}" />\n<h2 id="hide-chart-while-data-sum-is-0" tabindex="-1">Hide Chart While Data Sum is 0</h2>\n<p>By default, if the data sum is 0, the series will divide the shape equally. For instance, if you don\'t want to show any shape while all 4 series have value equals 0, you could define <a href="https://echarts.apache.org/option.html#series-pie.stillShowZeroSum"><code>series.stillShowZeroSum</code></a> to <code>false</code>.</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHNlcmllczogWwogICAgewogICAgICB0eXBlOiAncGllJywKICAgICAgc3RpbGxTaG93WmVyb1N1bTogZmFsc2UsCiAgICAgIGRhdGE6IFsKICAgICAgICB7CiAgICAgICAgICB2YWx1ZTogMCwKICAgICAgICAgIG5hbWU6ICdEaXJlY3QgVmlzaXQnCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICB2YWx1ZTogMCwKICAgICAgICAgIG5hbWU6ICdVbmlvbiBBZCcKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgIHZhbHVlOiAwLAogICAgICAgICAgbmFtZTogJ1NlYXJjaCBFbmdpbmUnCiAgICAgICAgfQogICAgICBdCiAgICB9CiAgXQp9Ow\'" v-bind="{}" />\n<p>If you are willing to hide the label as well, define the <a href="https://echarts.apache.org/option.html#series-pie.label.show"><code>series.label.show</code></a> to <code>false</code> as well.</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogICAgc2VyaWVzOiBbewogICAgICAgIHR5cGU6ICdwaWUnLAogICAgICAgIHN0aWxsU2hvd1plcm9TdW06IGZhbHNlLAogICAgICAgIGxhYmVsOiB7CiAgICAgICAgICAgIHNob3c6IGZhbHNlCiAgICAgICAgfQogICAgICAgIGRhdGE6IFt7CiAgICAgICAgICAgIHZhbHVlOiAwLAogICAgICAgICAgICBuYW1lOiAnRGlyZWN0IFZpc2l0JwogICAgICAgIH0sIHsKICAgICAgICAgICAgdmFsdWU6IDAsCiAgICAgICAgICAgIG5hbWU6ICdVbmlvbiBBZCcKICAgICAgICB9LCB7CiAgICAgICAgICAgIHZhbHVlOiAwLAogICAgICAgICAgICBuYW1lOiAnU2VhcmNoIEVuZ2luZScKICAgICAgICB9XQogICAgfV0KfTs\'" v-bind="{}" />\n',postPath:"en/how-to/chart-types/pie/basic-pie",title:"Basic Pie - Pie - Common Charts - How To Guides"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:r},{title:"入门篇",dir:d,children:[{title:"获取 ECharts",dir:l},{title:"在项目中引入 ECharts",dir:a},{title:"资源列表",dir:g,draft:i},{title:"寻求帮助",dir:o},{title:"版本特性",dir:C,children:[{title:"ECharts 6 特性介绍",dir:n},{title:"v5 升级 v6 指南",dir:I},{title:"5.0",dir:s},{title:"v4 升级 v5 指南",dir:h},{title:5.2,dir:c},{title:5.3,dir:A},{title:5.4,dir:p},{title:5.5,dir:b},{title:5.6,dir:m}]}]},{title:"概念篇",dir:u,children:[{title:"图表容器及大小",dir:f},{title:"配置项",dir:w,draft:i},{title:"系列",dir:B,draft:i},{title:"样式",dir:v},{title:"数据集",dir:H},{title:"数据转换",dir:W},{title:"坐标系",dir:G,draft:i},{title:"坐标轴",dir:y},{title:"视觉映射",dir:e},{title:"图例",dir:Z},{title:"事件与行为",dir:S}]},{title:"应用篇",dir:x,children:[{title:"常用图表类型",dir:V,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:T},{title:"堆叠柱状图",dir:P},{title:"动态排序柱状图",dir:K},{title:"极坐标系柱状图",dir:L,draft:i},{title:"阶梯瀑布图",dir:N},{title:"视觉映射的柱状图",dir:e,draft:i}]},{title:"折线图",dir:O,children:[{title:"基础折线图",dir:U},{title:"堆叠折线图",dir:F},{title:"区域面积图",dir:R},{title:"平滑曲线图",dir:D},{title:"阶梯线图",dir:z}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:E},{title:"圆环图",dir:X},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:Y,children:[{title:"基础散点图",dir:J}]}]},{title:"常用组件",dir:M,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:Q}]}]},{title:"移动端优化",dir:t,draft:i},{title:"跨平台方案",dir:k,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:j},{title:"数据下钻",dir:_,draft:i}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:q}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:ii}]},{title:"交互",dir:ti,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:ei,draft:i},{title:"智能指针吸附",dir:ri}]}]},{title:"最佳实践",dir:di,children:[{title:"移动端优化",dir:t,draft:i},{title:li,dir:ai},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:gi}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:oi}]}],en:[{title:"Get Started",dir:r},{title:"Basics",dir:d,children:[{title:"Download ECharts",dir:l},{title:"Import ECharts",dir:a},{title:"Resources",dir:g,draft:i},{title:"Get Help",dir:o},{title:"What's New",dir:C,children:[{title:"ECharts 6 Features",dir:n},{title:"Migration from v5 to v6",dir:I},{title:"5.0",dir:s},{title:"Migration from v4 to v5",dir:h},{title:5.2,dir:c},{title:5.3,dir:A},{title:5.4,dir:p},{title:5.5,dir:b},{title:5.6,dir:m}]}]},{title:"Concepts",dir:u,children:[{title:"Chart Container",dir:f},{title:"Chart Option",dir:w,draft:i},{title:"Series",dir:B,draft:i},{title:"Style",dir:v},{title:"Dataset",dir:H},{title:"Data Transform",dir:W},{title:"Coordinate",dir:G,draft:i},{title:"Axis",dir:y},{title:"Visual Mapping",dir:e},{title:"Legend",dir:Z},{title:"Event and Action",dir:S}]},{title:"How To Guides",dir:x,children:[{title:"Common Charts",dir:V,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:T},{title:"Stacked Bar",dir:P},{title:"Bar Racing",dir:K},{title:"Bar Polar",dir:L,draft:i},{title:"Waterfall",dir:N}]},{title:"Line",dir:O,children:[{title:"Basic Line",dir:U},{title:"Stacked Line",dir:F},{title:"Area Chart",dir:R},{title:"Smoothed Line",dir:D},{title:"Step Line",dir:z}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:E},{title:"Ring Style",dir:X},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:Y,children:[{title:"Basic Scatter",dir:J}]}]},{title:"Common Components",dir:M,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:Q}]}]},{title:"Mobile",dir:t,draft:i},{title:"Cross Platform",dir:k,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:j},{title:"Drilldown",dir:_,draft:i}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:q}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:ii}]},{title:"Interaction",dir:ti,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:ei,draft:i},{title:"Intelligent Pointer Snapping",dir:ri}]}]},{title:"Best Practices",dir:di,children:[{title:"Mobile Optimization",dir:t,draft:i},{title:li,dir:ai},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:gi}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:oi}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:i,routePath:"/en/how-to/chart-types/pie/basic-pie",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/en/how-to/chart-types/pie/doughnut/index.html b/docs/en/how-to/chart-types/pie/doughnut/index.html
new file mode 100644
index 0000000..3deeaad
--- /dev/null
+++ b/docs/en/how-to/chart-types/pie/doughnut/index.html
@@ -0,0 +1,133 @@
+<!doctype html>
+<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Ring Style - Pie - Common Charts - How To Guides - Handbook - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="en"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/en/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/en/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/en/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/en/index.html" class="navbar-brand"><img src="https://echarts.apache.org/en/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/en/index.html">Home</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Docs<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/feature.html">Features</a></li><li><a href="https://echarts.apache.org/handbook/en/get-started/">Handbook</a></li><li><a href="https://echarts.apache.org/en/api.html">API</a></li><li><a href="https://echarts.apache.org/en/option.html">Chart Configuration</a></li><li><a href="https://echarts.apache.org/en/changelog.html">Changelog</a></li><li><a href="https://echarts.apache.org/en/faq.html">FAQ</a></li><li><a href="https://echarts.apache.org/handbook/en/basics/release-note/v6-upgrade-guide">V6 Upgrade Guide</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Download<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/download.html">Download</a></li><li><a href="https://echarts.apache.org/en/download-theme.html">Download Themes</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">Download Custom Series<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/download-extension.html">Download Extensions</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/en/index.html">Examples</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Resources<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/spreadsheet.html">Spread Sheet Tool</a></li><li><a href="https://echarts.apache.org/en/theme-builder.html">Theme Builder</a></li><li><a href="https://echarts.apache.org/en/cheat-sheet.html">Cheat Sheet</a></li><li><a href="https://echarts.apache.org/en/resources.html">More Resources</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/events.html">Events</a></li><li><a href="https://echarts.apache.org/en/committers.html">Committers</a></li><li><a href="https://echarts.apache.org/en/maillist.html">Mailing List</a></li><li><a href="https://echarts.apache.org/en/contributing.html">How to Contribute</a></li><li><a href="https://echarts.apache.org/en/dependencies.html">Dependencies</a></li><li><a href="https://echarts.apache.org/en/coding-standard.html">Code Standard</a></li><li><a href="https://github.com/apache/echarts" target="_blank">Source Code (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/security.html">Security</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">License<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">Events<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("zh")'>中文</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/en/get-started" class="nav-link"><span class="title">Get Started</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Basics</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/basics/download" class="nav-link"><span class="title">Download ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/import" class="nav-link"><span class="title">Import ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/basics/help" class="nav-link"><span class="title">Get Help</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">What's New</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 Features</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">Migration from v5 to v6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">Migration from v4 to v5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Concepts</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/concepts/chart-size" class="nav-link"><span class="title">Chart Container</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/style" class="nav-link"><span class="title">Style</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/dataset" class="nav-link"><span class="title">Dataset</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/data-transform" class="nav-link"><span class="title">Data Transform</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/axis" class="nav-link"><span class="title">Axis</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/visual-map" class="nav-link"><span class="title">Visual Mapping</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/legend" class="nav-link"><span class="title">Legend</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/event" class="nav-link"><span class="title">Event and Action</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">How To Guides</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">Common Charts</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a class="nav-link"><span class="title">Bar</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">Basic Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">Stacked Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">Bar Racing</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">Waterfall</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Line</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">Basic Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">Stacked Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/area-line" class="nav-link"><span class="title">Area Chart</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">Smoothed Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/step-line" class="nav-link"><span class="title">Step Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Pie</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level3"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">Basic Pie</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/doughnut" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">Ring Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/rose" class="nav-link"><span class="title">Rose Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Scatter</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">Basic Scatter</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Common Components</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Geo</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG Base Map</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">Cross Platform</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/cross-platform/server" class="nav-link"><span class="title">Server Side Rendering</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Data</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/data/dynamic-data" class="nav-link"><span class="title">Dynamic Data</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Label</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/label/rich-text" class="nav-link"><span class="title">Rich Text</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Animation</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/animation/transition" class="nav-link"><span class="title">Data Transition</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Interaction</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/drag" class="nav-link"><span class="title">Drag</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">Intelligent Pointer Snapping</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Best Practices</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/en/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/aria" class="nav-link"><span class="title">Aria</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/security" class="nav-link"><span class="title">Security Guidelines</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Edit Handbook</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/meta/edit-guide" class="nav-link"><span class="title">Edit Guide</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="doughnut-chart" tabindex="-1">Doughnut Chart</h1> <p>Doughnut charts are also used to show the proportion of values compared with the total. Different from the pie chart, the blank in the middle of the chart can be used to provide some extra info. It makes a doughnut chart commonly used chart type.</p> <h2 id="basic-doughnut-chart" tabindex="-1">Basic Doughnut Chart</h2> <p>In ECharts, the radius of the pie chart could also be an array with 2 elements. Every element in the array could be string or value. The first element represents the inner radius while the second one is the outer radius.</p> <p>The pie chart, from this perspective, is a subset of the doughnut chart that has inner radius equals to 0.</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  title: {
+    text: 'A Case of Doughnut Chart',
+    left: 'center',
+    top: 'center'
+  },
+  series: [
+    {
+      type: 'pie',
+      data: [
+        {
+          value: 335,
+          name: 'A'
+        },
+        {
+          value: 234,
+          name: 'B'
+        },
+        {
+          value: 1548,
+          name: 'C'
+        }
+      ],
+      radius: ['40%', '70%']
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">title</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'A Case of Doughnut Chart'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">left</span><span class="token operator">:</span> <span class="token string">'center'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">top</span><span class="token operator">:</span> <span class="token string">'center'</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'pie'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">335</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'A'</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">234</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'B'</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">1548</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'C'</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">radius</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'40%'</span><span class="token punctuation">,</span> <span class="token string">'70%'</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>If we set one radius to string of a percentage value, while the other to a value, the inner radius will be smaller than the outer radius in some resolution. ECharts will choose the smaller element for the inner radius automatically. However, it will still cause not an unexpected outcome.</p> <h2 id="show-text-in-middle-of-doughnut-from-highlighted-sector" tabindex="-1">Show Text In Middle Of Doughnut From Highlighted Sector</h2> <p>The previous case gives you a way to show fixed text in the middle of doughnut chart. The next case will show you how to display the corresponding text of the sector highlighted by the mouse. The general idea is to fix <code>label</code> in the middle of the chart while hiding <code>label</code> in default.</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  legend: {
+    orient: 'vertical',
+    x: 'left',
+    data: ['A', 'B', 'C', 'D', 'E']
+  },
+  series: [
+    {
+      type: 'pie',
+      radius: ['50%', '70%'],
+      avoidLabelOverlap: false,
+      label: {
+        show: false,
+        position: 'center'
+      },
+      labelLine: {
+        show: false
+      },
+      emphasis: {
+        label: {
+          show: true,
+          fontSize: '30',
+          fontWeight: 'bold'
+        }
+      },
+      data: [
+        { value: 335, name: 'A' },
+        { value: 310, name: 'B' },
+        { value: 234, name: 'C' },
+        { value: 135, name: 'D' },
+        { value: 1548, name: 'E' }
+      ]
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">legend</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">orient</span><span class="token operator">:</span> <span class="token string">'vertical'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token string">'left'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'A'</span><span class="token punctuation">,</span> <span class="token string">'B'</span><span class="token punctuation">,</span> <span class="token string">'C'</span><span class="token punctuation">,</span> <span class="token string">'D'</span><span class="token punctuation">,</span> <span class="token string">'E'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'pie'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">radius</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'50%'</span><span class="token punctuation">,</span> <span class="token string">'70%'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">avoidLabelOverlap</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">position</span><span class="token operator">:</span> <span class="token string">'center'</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">labelLine</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">false</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">emphasis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+          <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">fontSize</span><span class="token operator">:</span> <span class="token string">'30'</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">fontWeight</span><span class="token operator">:</span> <span class="token string">'bold'</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">{</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">335</span><span class="token punctuation">,</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'A'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">310</span><span class="token punctuation">,</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'B'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">234</span><span class="token punctuation">,</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'C'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">135</span><span class="token punctuation">,</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'D'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">1548</span><span class="token punctuation">,</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'E'</span> <span class="token punctuation">}</span>
+      <span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>In this case, <code>avoidLabelOverlap</code> is used to control whether ECharts adjust the position of label to avoid overlaps. Default value of <code>avoidLabelOverlap</code> is <code>true</code>. We want the label to be fixed in the middle so that we need to define it as <code>false</code>.</p> <p>Therefore, the middle of doughnut chart will show the <code>name</code> of the highlighted sector.</p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">Contributors</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/en/how-to/chart-types/pie/doughnut.md" title="Edit this Document" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">Edit this page on GitHub</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/plainheart" target="_blank" class="post-contributor has-avatar"><img alt="plainheart" src="https://echarts.apache.org/en/images/people/plainheart.jpg" loading="lazy" decoding="async" fetchpriority="low"> <span>plainheart</span></a><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a><a href="https://github.com/jnodorp" target="_blank" class="post-contributor"><!----> <span>jnodorp</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,i,e,r,d,l,a,o,n,h,g,s,c,C,I,A,p,u,m,f,b,w,v,y,B,G,x,W,H,S,Z,D,T,J,E,U,V,L,R,z,F,O,P,M,k,Y,N,K,Q,X,j,_,$,q,tt,it,et,rt,dt,lt,at,ot,nt){return{layout:"default",data:[{html:'<h1 id="doughnut-chart" tabindex="-1">Doughnut Chart</h1>\n<p>Doughnut charts are also used to show the proportion of values compared with the total. Different from the pie chart, the blank in the middle of the chart can be used to provide some extra info. It makes a doughnut chart commonly used chart type.</p>\n<h2 id="basic-doughnut-chart" tabindex="-1">Basic Doughnut Chart</h2>\n<p>In ECharts, the radius of the pie chart could also be an array with 2 elements. Every element in the array could be string or value. The first element represents the inner radius while the second one is the outer radius.</p>\n<p>The pie chart, from this perspective, is a subset of the doughnut chart that has inner radius equals to 0.</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHRpdGxlOiB7CiAgICB0ZXh0OiAnQSBDYXNlIG9mIERvdWdobnV0IENoYXJ0JywKICAgIGxlZnQ6ICdjZW50ZXInLAogICAgdG9wOiAnY2VudGVyJwogIH0sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIHR5cGU6ICdwaWUnLAogICAgICBkYXRhOiBbCiAgICAgICAgewogICAgICAgICAgdmFsdWU6IDMzNSwKICAgICAgICAgIG5hbWU6ICdBJwogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgdmFsdWU6IDIzNCwKICAgICAgICAgIG5hbWU6ICdCJwogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgdmFsdWU6IDE1NDgsCiAgICAgICAgICBuYW1lOiAnQycKICAgICAgICB9CiAgICAgIF0sCiAgICAgIHJhZGl1czogWyc0MCUnLCAnNzAlJ10KICAgIH0KICBdCn07\'" v-bind="{}" />\n<p>If we set one radius to string of a percentage value, while the other to a value, the inner radius will be smaller than the outer radius in some resolution. ECharts will choose the smaller element for the inner radius automatically. However, it will still cause not an unexpected outcome.</p>\n<h2 id="show-text-in-middle-of-doughnut-from-highlighted-sector" tabindex="-1">Show Text In Middle Of Doughnut From Highlighted Sector</h2>\n<p>The previous case gives you a way to show fixed text in the middle of doughnut chart. The next case will show you how to display the corresponding text of the sector highlighted by the mouse. The general idea is to fix <code>label</code> in the middle of the chart while hiding <code>label</code> in default.</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIGxlZ2VuZDogewogICAgb3JpZW50OiAndmVydGljYWwnLAogICAgeDogJ2xlZnQnLAogICAgZGF0YTogWydBJywgJ0InLCAnQycsICdEJywgJ0UnXQogIH0sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIHR5cGU6ICdwaWUnLAogICAgICByYWRpdXM6IFsnNTAlJywgJzcwJSddLAogICAgICBhdm9pZExhYmVsT3ZlcmxhcDogZmFsc2UsCiAgICAgIGxhYmVsOiB7CiAgICAgICAgc2hvdzogZmFsc2UsCiAgICAgICAgcG9zaXRpb246ICdjZW50ZXInCiAgICAgIH0sCiAgICAgIGxhYmVsTGluZTogewogICAgICAgIHNob3c6IGZhbHNlCiAgICAgIH0sCiAgICAgIGVtcGhhc2lzOiB7CiAgICAgICAgbGFiZWw6IHsKICAgICAgICAgIHNob3c6IHRydWUsCiAgICAgICAgICBmb250U2l6ZTogJzMwJywKICAgICAgICAgIGZvbnRXZWlnaHQ6ICdib2xkJwogICAgICAgIH0KICAgICAgfSwKICAgICAgZGF0YTogWwogICAgICAgIHsgdmFsdWU6IDMzNSwgbmFtZTogJ0EnIH0sCiAgICAgICAgeyB2YWx1ZTogMzEwLCBuYW1lOiAnQicgfSwKICAgICAgICB7IHZhbHVlOiAyMzQsIG5hbWU6ICdDJyB9LAogICAgICAgIHsgdmFsdWU6IDEzNSwgbmFtZTogJ0QnIH0sCiAgICAgICAgeyB2YWx1ZTogMTU0OCwgbmFtZTogJ0UnIH0KICAgICAgXQogICAgfQogIF0KfTs\'" v-bind="{}" />\n<p>In this case, <code>avoidLabelOverlap</code> is used to control whether ECharts adjust the position of label to avoid overlaps. Default value of <code>avoidLabelOverlap</code> is <code>true</code>. We want the label to be fixed in the middle so that we need to define it as <code>false</code>.</p>\n<p>Therefore, the middle of doughnut chart will show the <code>name</code> of the highlighted sector.</p>\n',postPath:"en/how-to/chart-types/pie/doughnut",title:"Ring Style - Pie - Common Charts - How To Guides"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:r},{title:"入门篇",dir:d,children:[{title:"获取 ECharts",dir:l},{title:"在项目中引入 ECharts",dir:a},{title:"资源列表",dir:o,draft:t},{title:"寻求帮助",dir:n},{title:"版本特性",dir:h,children:[{title:"ECharts 6 特性介绍",dir:g},{title:"v5 升级 v6 指南",dir:s},{title:"5.0",dir:c},{title:"v4 升级 v5 指南",dir:C},{title:5.2,dir:I},{title:5.3,dir:A},{title:5.4,dir:p},{title:5.5,dir:u},{title:5.6,dir:m}]}]},{title:"概念篇",dir:f,children:[{title:"图表容器及大小",dir:b},{title:"配置项",dir:w,draft:t},{title:"系列",dir:v,draft:t},{title:"样式",dir:y},{title:"数据集",dir:B},{title:"数据转换",dir:G},{title:"坐标系",dir:x,draft:t},{title:"坐标轴",dir:W},{title:"视觉映射",dir:e},{title:"图例",dir:H},{title:"事件与行为",dir:S}]},{title:"应用篇",dir:Z,children:[{title:"常用图表类型",dir:D,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:T},{title:"堆叠柱状图",dir:J},{title:"动态排序柱状图",dir:E},{title:"极坐标系柱状图",dir:U,draft:t},{title:"阶梯瀑布图",dir:V},{title:"视觉映射的柱状图",dir:e,draft:t}]},{title:"折线图",dir:L,children:[{title:"基础折线图",dir:R},{title:"堆叠折线图",dir:z},{title:"区域面积图",dir:F},{title:"平滑曲线图",dir:O},{title:"阶梯线图",dir:P}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:M},{title:"圆环图",dir:k},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:Y,children:[{title:"基础散点图",dir:N}]}]},{title:"常用组件",dir:K,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:Q}]}]},{title:"移动端优化",dir:i,draft:t},{title:"跨平台方案",dir:X,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:j},{title:"数据下钻",dir:_,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:$}]},{title:"动画",dir:q,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:it,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:et,draft:t},{title:"智能指针吸附",dir:rt}]}]},{title:"最佳实践",dir:dt,children:[{title:"移动端优化",dir:i,draft:t},{title:lt,dir:at},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:ot}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:nt}]}],en:[{title:"Get Started",dir:r},{title:"Basics",dir:d,children:[{title:"Download ECharts",dir:l},{title:"Import ECharts",dir:a},{title:"Resources",dir:o,draft:t},{title:"Get Help",dir:n},{title:"What's New",dir:h,children:[{title:"ECharts 6 Features",dir:g},{title:"Migration from v5 to v6",dir:s},{title:"5.0",dir:c},{title:"Migration from v4 to v5",dir:C},{title:5.2,dir:I},{title:5.3,dir:A},{title:5.4,dir:p},{title:5.5,dir:u},{title:5.6,dir:m}]}]},{title:"Concepts",dir:f,children:[{title:"Chart Container",dir:b},{title:"Chart Option",dir:w,draft:t},{title:"Series",dir:v,draft:t},{title:"Style",dir:y},{title:"Dataset",dir:B},{title:"Data Transform",dir:G},{title:"Coordinate",dir:x,draft:t},{title:"Axis",dir:W},{title:"Visual Mapping",dir:e},{title:"Legend",dir:H},{title:"Event and Action",dir:S}]},{title:"How To Guides",dir:Z,children:[{title:"Common Charts",dir:D,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:T},{title:"Stacked Bar",dir:J},{title:"Bar Racing",dir:E},{title:"Bar Polar",dir:U,draft:t},{title:"Waterfall",dir:V}]},{title:"Line",dir:L,children:[{title:"Basic Line",dir:R},{title:"Stacked Line",dir:z},{title:"Area Chart",dir:F},{title:"Smoothed Line",dir:O},{title:"Step Line",dir:P}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:M},{title:"Ring Style",dir:k},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:Y,children:[{title:"Basic Scatter",dir:N}]}]},{title:"Common Components",dir:K,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:Q}]}]},{title:"Mobile",dir:i,draft:t},{title:"Cross Platform",dir:X,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:j},{title:"Drilldown",dir:_,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:$}]},{title:"Animation",dir:q,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:it,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:et,draft:t},{title:"Intelligent Pointer Snapping",dir:rt}]}]},{title:"Best Practices",dir:dt,children:[{title:"Mobile Optimization",dir:i,draft:t},{title:lt,dir:at},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:ot}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:nt}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/en/how-to/chart-types/pie/doughnut",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/en/how-to/chart-types/pie/rose/index.html b/docs/en/how-to/chart-types/pie/rose/index.html
new file mode 100644
index 0000000..5e27f5f
--- /dev/null
+++ b/docs/en/how-to/chart-types/pie/rose/index.html
@@ -0,0 +1,71 @@
+<!doctype html>
+<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Rose Style - Pie - Common Charts - How To Guides - Handbook - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="en"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/en/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/en/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/en/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/en/index.html" class="navbar-brand"><img src="https://echarts.apache.org/en/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/en/index.html">Home</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Docs<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/feature.html">Features</a></li><li><a href="https://echarts.apache.org/handbook/en/get-started/">Handbook</a></li><li><a href="https://echarts.apache.org/en/api.html">API</a></li><li><a href="https://echarts.apache.org/en/option.html">Chart Configuration</a></li><li><a href="https://echarts.apache.org/en/changelog.html">Changelog</a></li><li><a href="https://echarts.apache.org/en/faq.html">FAQ</a></li><li><a href="https://echarts.apache.org/handbook/en/basics/release-note/v6-upgrade-guide">V6 Upgrade Guide</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Download<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/download.html">Download</a></li><li><a href="https://echarts.apache.org/en/download-theme.html">Download Themes</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">Download Custom Series<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/download-extension.html">Download Extensions</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/en/index.html">Examples</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Resources<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/spreadsheet.html">Spread Sheet Tool</a></li><li><a href="https://echarts.apache.org/en/theme-builder.html">Theme Builder</a></li><li><a href="https://echarts.apache.org/en/cheat-sheet.html">Cheat Sheet</a></li><li><a href="https://echarts.apache.org/en/resources.html">More Resources</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/events.html">Events</a></li><li><a href="https://echarts.apache.org/en/committers.html">Committers</a></li><li><a href="https://echarts.apache.org/en/maillist.html">Mailing List</a></li><li><a href="https://echarts.apache.org/en/contributing.html">How to Contribute</a></li><li><a href="https://echarts.apache.org/en/dependencies.html">Dependencies</a></li><li><a href="https://echarts.apache.org/en/coding-standard.html">Code Standard</a></li><li><a href="https://github.com/apache/echarts" target="_blank">Source Code (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/security.html">Security</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">License<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">Events<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("zh")'>中文</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/en/get-started" class="nav-link"><span class="title">Get Started</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Basics</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/basics/download" class="nav-link"><span class="title">Download ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/import" class="nav-link"><span class="title">Import ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/basics/help" class="nav-link"><span class="title">Get Help</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">What's New</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 Features</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">Migration from v5 to v6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">Migration from v4 to v5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Concepts</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/concepts/chart-size" class="nav-link"><span class="title">Chart Container</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/style" class="nav-link"><span class="title">Style</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/dataset" class="nav-link"><span class="title">Dataset</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/data-transform" class="nav-link"><span class="title">Data Transform</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/axis" class="nav-link"><span class="title">Axis</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/visual-map" class="nav-link"><span class="title">Visual Mapping</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/legend" class="nav-link"><span class="title">Legend</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/event" class="nav-link"><span class="title">Event and Action</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">How To Guides</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">Common Charts</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a class="nav-link"><span class="title">Bar</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">Basic Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">Stacked Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">Bar Racing</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">Waterfall</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Line</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">Basic Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">Stacked Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/area-line" class="nav-link"><span class="title">Area Chart</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">Smoothed Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/step-line" class="nav-link"><span class="title">Step Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Pie</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level3"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">Basic Pie</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">Ring Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/rose" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">Rose Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Scatter</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">Basic Scatter</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Common Components</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Geo</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG Base Map</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">Cross Platform</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/cross-platform/server" class="nav-link"><span class="title">Server Side Rendering</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Data</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/data/dynamic-data" class="nav-link"><span class="title">Dynamic Data</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Label</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/label/rich-text" class="nav-link"><span class="title">Rich Text</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Animation</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/animation/transition" class="nav-link"><span class="title">Data Transition</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Interaction</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/drag" class="nav-link"><span class="title">Drag</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">Intelligent Pointer Snapping</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Best Practices</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/en/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/aria" class="nav-link"><span class="title">Aria</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/security" class="nav-link"><span class="title">Security Guidelines</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Edit Handbook</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/meta/edit-guide" class="nav-link"><span class="title">Edit Guide</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="rose-chart%EF%BC%88nightingale-chart%EF%BC%89" tabindex="-1">Rose Chart(Nightingale Chart)</h1> <p>Rose Chart, which was also called the nightingale chart, usually indicates categories by sector of the same radius but different radius.</p> <p>ECharts can implement Rose Chart by defining <a href="https://echarts.apache.org/option.html#series-pie.roseType"><code>series.roseType</code></a> of pie chart to <code>'area'</code>. All other configs are the same as a basic pie chart.</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  series: [
+    {
+      type: 'pie',
+      data: [
+        {
+          value: 100,
+          name: 'A'
+        },
+        {
+          value: 200,
+          name: 'B'
+        },
+        {
+          value: 300,
+          name: 'C'
+        },
+        {
+          value: 400,
+          name: 'D'
+        },
+        {
+          value: 500,
+          name: 'E'
+        }
+      ],
+      roseType: 'area'
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'pie'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">100</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'A'</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">200</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'B'</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">300</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'C'</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">400</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'D'</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">500</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'E'</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">roseType</span><span class="token operator">:</span> <span class="token string">'area'</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">Contributors</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/en/how-to/chart-types/pie/rose.md" title="Edit this Document" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">Edit this page on GitHub</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,i,e,r,d,l,a,n,o,s,c,h,g,C,A,I,p,m,f,u,b,B,v,w,S,y,H,P,D,R,O,E,G,K,V,x,L,M,k,W,T,Y,Z,_,z,F,N,X,J,Q,U,$,j,q,tt,it,et,rt,dt,lt,at,nt,ot){return{layout:"default",data:[{html:'<h1 id="rose-chart%EF%BC%88nightingale-chart%EF%BC%89" tabindex="-1">Rose Chart(Nightingale Chart)</h1>\n<p>Rose Chart, which was also called the nightingale chart, usually indicates categories by sector of the same radius but different radius.</p>\n<p>ECharts can implement Rose Chart by defining <a href="https://echarts.apache.org/option.html#series-pie.roseType"><code>series.roseType</code></a> of pie chart to <code>\'area\'</code>. All other configs are the same as a basic pie chart.</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHNlcmllczogWwogICAgewogICAgICB0eXBlOiAncGllJywKICAgICAgZGF0YTogWwogICAgICAgIHsKICAgICAgICAgIHZhbHVlOiAxMDAsCiAgICAgICAgICBuYW1lOiAnQScKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgIHZhbHVlOiAyMDAsCiAgICAgICAgICBuYW1lOiAnQicKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgIHZhbHVlOiAzMDAsCiAgICAgICAgICBuYW1lOiAnQycKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgIHZhbHVlOiA0MDAsCiAgICAgICAgICBuYW1lOiAnRCcKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgIHZhbHVlOiA1MDAsCiAgICAgICAgICBuYW1lOiAnRScKICAgICAgICB9CiAgICAgIF0sCiAgICAgIHJvc2VUeXBlOiAnYXJlYScKICAgIH0KICBdCn07\'" v-bind="{}" />\n',postPath:"en/how-to/chart-types/pie/rose",title:"Rose Style - Pie - Common Charts - How To Guides"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:r},{title:"入门篇",dir:d,children:[{title:"获取 ECharts",dir:l},{title:"在项目中引入 ECharts",dir:a},{title:"资源列表",dir:n,draft:t},{title:"寻求帮助",dir:o},{title:"版本特性",dir:s,children:[{title:"ECharts 6 特性介绍",dir:c},{title:"v5 升级 v6 指南",dir:h},{title:"5.0",dir:g},{title:"v4 升级 v5 指南",dir:C},{title:5.2,dir:A},{title:5.3,dir:I},{title:5.4,dir:p},{title:5.5,dir:m},{title:5.6,dir:f}]}]},{title:"概念篇",dir:u,children:[{title:"图表容器及大小",dir:b},{title:"配置项",dir:B,draft:t},{title:"系列",dir:v,draft:t},{title:"样式",dir:w},{title:"数据集",dir:S},{title:"数据转换",dir:y},{title:"坐标系",dir:H,draft:t},{title:"坐标轴",dir:P},{title:"视觉映射",dir:e},{title:"图例",dir:D},{title:"事件与行为",dir:R}]},{title:"应用篇",dir:O,children:[{title:"常用图表类型",dir:E,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:G},{title:"堆叠柱状图",dir:K},{title:"动态排序柱状图",dir:V},{title:"极坐标系柱状图",dir:x,draft:t},{title:"阶梯瀑布图",dir:L},{title:"视觉映射的柱状图",dir:e,draft:t}]},{title:"折线图",dir:M,children:[{title:"基础折线图",dir:k},{title:"堆叠折线图",dir:W},{title:"区域面积图",dir:T},{title:"平滑曲线图",dir:Y},{title:"阶梯线图",dir:Z}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:_},{title:"圆环图",dir:z},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:F,children:[{title:"基础散点图",dir:N}]}]},{title:"常用组件",dir:X,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:J}]}]},{title:"移动端优化",dir:i,draft:t},{title:"跨平台方案",dir:Q,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:U},{title:"数据下钻",dir:$,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:j}]},{title:"动画",dir:q,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:it,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:et,draft:t},{title:"智能指针吸附",dir:rt}]}]},{title:"最佳实践",dir:dt,children:[{title:"移动端优化",dir:i,draft:t},{title:lt,dir:at},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:nt}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:ot}]}],en:[{title:"Get Started",dir:r},{title:"Basics",dir:d,children:[{title:"Download ECharts",dir:l},{title:"Import ECharts",dir:a},{title:"Resources",dir:n,draft:t},{title:"Get Help",dir:o},{title:"What's New",dir:s,children:[{title:"ECharts 6 Features",dir:c},{title:"Migration from v5 to v6",dir:h},{title:"5.0",dir:g},{title:"Migration from v4 to v5",dir:C},{title:5.2,dir:A},{title:5.3,dir:I},{title:5.4,dir:p},{title:5.5,dir:m},{title:5.6,dir:f}]}]},{title:"Concepts",dir:u,children:[{title:"Chart Container",dir:b},{title:"Chart Option",dir:B,draft:t},{title:"Series",dir:v,draft:t},{title:"Style",dir:w},{title:"Dataset",dir:S},{title:"Data Transform",dir:y},{title:"Coordinate",dir:H,draft:t},{title:"Axis",dir:P},{title:"Visual Mapping",dir:e},{title:"Legend",dir:D},{title:"Event and Action",dir:R}]},{title:"How To Guides",dir:O,children:[{title:"Common Charts",dir:E,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:G},{title:"Stacked Bar",dir:K},{title:"Bar Racing",dir:V},{title:"Bar Polar",dir:x,draft:t},{title:"Waterfall",dir:L}]},{title:"Line",dir:M,children:[{title:"Basic Line",dir:k},{title:"Stacked Line",dir:W},{title:"Area Chart",dir:T},{title:"Smoothed Line",dir:Y},{title:"Step Line",dir:Z}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:_},{title:"Ring Style",dir:z},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:F,children:[{title:"Basic Scatter",dir:N}]}]},{title:"Common Components",dir:X,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:J}]}]},{title:"Mobile",dir:i,draft:t},{title:"Cross Platform",dir:Q,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:U},{title:"Drilldown",dir:$,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:j}]},{title:"Animation",dir:q,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:it,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:et,draft:t},{title:"Intelligent Pointer Snapping",dir:rt}]}]},{title:"Best Practices",dir:dt,children:[{title:"Mobile Optimization",dir:i,draft:t},{title:lt,dir:at},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:nt}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:ot}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/en/how-to/chart-types/pie/rose",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/en/how-to/chart-types/scatter/basic-scatter/index.html b/docs/en/how-to/chart-types/scatter/basic-scatter/index.html
new file mode 100644
index 0000000..b5fc722
--- /dev/null
+++ b/docs/en/how-to/chart-types/scatter/basic-scatter/index.html
@@ -0,0 +1,124 @@
+<!doctype html>
+<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Basic Scatter - Scatter - Common Charts - How To Guides - Handbook - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="en"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/en/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/en/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/en/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/en/index.html" class="navbar-brand"><img src="https://echarts.apache.org/en/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/en/index.html">Home</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Docs<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/feature.html">Features</a></li><li><a href="https://echarts.apache.org/handbook/en/get-started/">Handbook</a></li><li><a href="https://echarts.apache.org/en/api.html">API</a></li><li><a href="https://echarts.apache.org/en/option.html">Chart Configuration</a></li><li><a href="https://echarts.apache.org/en/changelog.html">Changelog</a></li><li><a href="https://echarts.apache.org/en/faq.html">FAQ</a></li><li><a href="https://echarts.apache.org/handbook/en/basics/release-note/v6-upgrade-guide">V6 Upgrade Guide</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Download<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/download.html">Download</a></li><li><a href="https://echarts.apache.org/en/download-theme.html">Download Themes</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">Download Custom Series<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/download-extension.html">Download Extensions</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/en/index.html">Examples</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Resources<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/spreadsheet.html">Spread Sheet Tool</a></li><li><a href="https://echarts.apache.org/en/theme-builder.html">Theme Builder</a></li><li><a href="https://echarts.apache.org/en/cheat-sheet.html">Cheat Sheet</a></li><li><a href="https://echarts.apache.org/en/resources.html">More Resources</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/events.html">Events</a></li><li><a href="https://echarts.apache.org/en/committers.html">Committers</a></li><li><a href="https://echarts.apache.org/en/maillist.html">Mailing List</a></li><li><a href="https://echarts.apache.org/en/contributing.html">How to Contribute</a></li><li><a href="https://echarts.apache.org/en/dependencies.html">Dependencies</a></li><li><a href="https://echarts.apache.org/en/coding-standard.html">Code Standard</a></li><li><a href="https://github.com/apache/echarts" target="_blank">Source Code (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/security.html">Security</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">License<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">Events<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("zh")'>中文</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/en/get-started" class="nav-link"><span class="title">Get Started</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Basics</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/basics/download" class="nav-link"><span class="title">Download ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/import" class="nav-link"><span class="title">Import ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/basics/help" class="nav-link"><span class="title">Get Help</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">What's New</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 Features</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">Migration from v5 to v6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">Migration from v4 to v5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Concepts</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/concepts/chart-size" class="nav-link"><span class="title">Chart Container</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/style" class="nav-link"><span class="title">Style</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/dataset" class="nav-link"><span class="title">Dataset</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/data-transform" class="nav-link"><span class="title">Data Transform</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/axis" class="nav-link"><span class="title">Axis</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/visual-map" class="nav-link"><span class="title">Visual Mapping</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/legend" class="nav-link"><span class="title">Legend</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/event" class="nav-link"><span class="title">Event and Action</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">How To Guides</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">Common Charts</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a class="nav-link"><span class="title">Bar</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">Basic Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">Stacked Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">Bar Racing</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">Waterfall</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Line</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">Basic Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">Stacked Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/area-line" class="nav-link"><span class="title">Area Chart</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">Smoothed Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/step-line" class="nav-link"><span class="title">Step Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Pie</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">Basic Pie</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">Ring Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/rose" class="nav-link"><span class="title">Rose Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Scatter</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level3"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/scatter/basic-scatter" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">Basic Scatter</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Common Components</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Geo</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG Base Map</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">Cross Platform</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/cross-platform/server" class="nav-link"><span class="title">Server Side Rendering</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Data</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/data/dynamic-data" class="nav-link"><span class="title">Dynamic Data</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Label</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/label/rich-text" class="nav-link"><span class="title">Rich Text</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Animation</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/animation/transition" class="nav-link"><span class="title">Data Transition</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Interaction</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/drag" class="nav-link"><span class="title">Drag</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">Intelligent Pointer Snapping</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Best Practices</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/en/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/aria" class="nav-link"><span class="title">Aria</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/security" class="nav-link"><span class="title">Security Guidelines</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Edit Handbook</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/meta/edit-guide" class="nav-link"><span class="title">Edit Guide</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="basic-scatter-chart" tabindex="-1">Basic Scatter Chart</h1> <p>Scatter Chart, a frequently used chart type, was constructed with several "points". These points sometimes represent the position of the value in the coordinate system (cartesian coordinate system, geo coordinate system, etc.), sometimes the size and color of items can be mapped to the value, represent high-dimensional data.</p> <h2 id="simple-example" tabindex="-1">Simple Example</h2> <p>The following example is a basic scatter chart configuration with the x-axis as category and the y-axis as value:</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    data: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']
+  },
+  yAxis: {},
+  series: [
+    {
+      type: 'scatter',
+      data: [220, 182, 191, 234, 290, 330, 310]
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'Sun'</span><span class="token punctuation">,</span> <span class="token string">'Mon'</span><span class="token punctuation">,</span> <span class="token string">'Tue'</span><span class="token punctuation">,</span> <span class="token string">'Wed'</span><span class="token punctuation">,</span> <span class="token string">'Thu'</span><span class="token punctuation">,</span> <span class="token string">'Fri'</span><span class="token punctuation">,</span> <span class="token string">'Sat'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'scatter'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">220</span><span class="token punctuation">,</span> <span class="token number">182</span><span class="token punctuation">,</span> <span class="token number">191</span><span class="token punctuation">,</span> <span class="token number">234</span><span class="token punctuation">,</span> <span class="token number">290</span><span class="token punctuation">,</span> <span class="token number">330</span><span class="token punctuation">,</span> <span class="token number">310</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <h2 id="scatter-chart-in-cartesian-coordinate-system" tabindex="-1">Scatter Chart in Cartesian Coordinate System</h2> <p>In the previous case, the x-axis of the scatter chart is a discrete category axis and the y-axis is a continuous value axis. However, the normal scene for the scatter chart is to have 2 continuous value axis (also called the cartesian coordinate system). The series type is different in that both x-axis and y-axis value are included in <code>data</code>, but not in <code>xAxis</code> and <code>yAxis</code>.</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {},
+  yAxis: {},
+  series: [
+    {
+      type: 'scatter',
+      data: [
+        [10, 5],
+        [0, 8],
+        [6, 10],
+        [2, 12],
+        [8, 9]
+      ]
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'scatter'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">[</span><span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">8</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token number">6</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">12</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token number">8</span><span class="token punctuation">,</span> <span class="token number">9</span><span class="token punctuation">]</span>
+      <span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <h2 id="customized-scatter-chart" tabindex="-1">Customized Scatter Chart</h2> <h3 id="symbol-style" tabindex="-1">Symbol Style</h3> <p>Symbol refers to the item shape in a scatter chart. There are three types of config available. The first is ECharts built-in shape, the second is image, the last is the SVG path.</p> <p>The built-in shape in ECharts included: <code>'circle'</code>, <code>'rect'</code>(rectangle), <code>'roundRect'</code>(rounded rectangle), <code>'triangle'</code>, <code>'diamond'</code>, <code>'pin'</code> and <code>'arrow'</code>. To use built-in shapes, you need to state the <code>symbol</code> to the corresponding string.</p> <p>If you want to define the shape as any image, try to use <code>'image'</code> following by the path, eg. <code>'image://http://example.com/xxx.png'</code> or <code>'image://./xxx.png'</code>.</p> <p>ECharts <code>symbol</code> also supports SVG vector graphics. You can define <code>symbol</code> as an SVG file path that starts with <code>'path://'</code> to locate the vector graphics. The advantages of vector graphics are smaller size and no jagged or blurred.</p> <p>Method to find the SVG path: Open an <code>SVG</code> path; Find the path similar as <code>&lt;path d="M… L…">&lt;/path></code>; Add <code>d</code>'s value after <code>'path://'</code>. Let's check how to define an item to vector shape of heart.</p> <p>Firstly, we need an <code>SVG</code> file of a heart. You can draw one by vector editing software, or download one from the internet. Here is the content:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-xml line-numbers"><code><span class="token prolog">&lt;?xml version="1.0" encoding="iso-8859-1"?></span>
+<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>svg</span> <span class="token attr-name">version</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>1.1<span class="token punctuation">"</span></span> <span class="token attr-name">xmlns</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>http://www.w3.org/2000/svg<span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">xmlns:</span>xlink</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>http://www.w3.org/1999/xlink<span class="token punctuation">"</span></span> <span class="token attr-name">x</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>0px<span class="token punctuation">"</span></span> <span class="token attr-name">y</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>0px<span class="token punctuation">"</span></span> <span class="token attr-name">viewBox</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>0 0 51.997 51.997<span class="token punctuation">"</span></span> <span class="token attr-name">style</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>enable-background:new 0 0 51.997 51.997;<span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">xml:</span>space</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>preserve<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
+    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>path</span> <span class="token attr-name">d</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>M51.911,16.242C51.152,7.888,45.239,1.827,37.839,1.827c-4.93,0-9.444,2.653-11.984,6.905 c-2.517-4.307-6.846-6.906-11.697-6.906c-7.399,0-13.313,6.061-14.071,14.415c-0.06,0.369-0.306,2.311,0.442,5.478 c1.078,4.568,3.568,8.723,7.199,12.013l18.115,16.439l18.426-16.438c3.631-3.291,6.121-7.445,7.199-12.014 C52.216,18.553,51.97,16.611,51.911,16.242z<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span>
+<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>svg</span><span class="token punctuation">></span></span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>In ECharts, define config <code>symbol</code> as a path of d:</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    data: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']
+  },
+  yAxis: {},
+  series: [
+    {
+      type: 'scatter',
+      data: [220, 182, 191, 234, 290, 330, 310],
+      symbolSize: 20,
+      symbol:
+        'path://M51.911,16.242C51.152,7.888,45.239,1.827,37.839,1.827c-4.93,0-9.444,2.653-11.984,6.905 c-2.517-4.307-6.846-6.906-11.697-6.906c-7.399,0-13.313,6.061-14.071,14.415c-0.06,0.369-0.306,2.311,0.442,5.478 c1.078,4.568,3.568,8.723,7.199,12.013l18.115,16.439l18.426-16.438c3.631-3.291,6.121-7.445,7.199-12.014 C52.216,18.553,51.97,16.611,51.911,16.242z'
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'Sun'</span><span class="token punctuation">,</span> <span class="token string">'Mon'</span><span class="token punctuation">,</span> <span class="token string">'Tue'</span><span class="token punctuation">,</span> <span class="token string">'Wed'</span><span class="token punctuation">,</span> <span class="token string">'Thu'</span><span class="token punctuation">,</span> <span class="token string">'Fri'</span><span class="token punctuation">,</span> <span class="token string">'Sat'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'scatter'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">220</span><span class="token punctuation">,</span> <span class="token number">182</span><span class="token punctuation">,</span> <span class="token number">191</span><span class="token punctuation">,</span> <span class="token number">234</span><span class="token punctuation">,</span> <span class="token number">290</span><span class="token punctuation">,</span> <span class="token number">330</span><span class="token punctuation">,</span> <span class="token number">310</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">symbolSize</span><span class="token operator">:</span> <span class="token number">20</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">symbol</span><span class="token operator">:</span>
+        <span class="token string">'path://M51.911,16.242C51.152,7.888,45.239,1.827,37.839,1.827c-4.93,0-9.444,2.653-11.984,6.905 c-2.517-4.307-6.846-6.906-11.697-6.906c-7.399,0-13.313,6.061-14.071,14.415c-0.06,0.369-0.306,2.311,0.442,5.478 c1.078,4.568,3.568,8.723,7.199,12.013l18.115,16.439l18.426-16.438c3.631-3.291,6.121-7.445,7.199-12.014 C52.216,18.553,51.97,16.611,51.911,16.242z'</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>In this way, we have a heart vector of the item.</p> <h3 id="symbol-size" tabindex="-1">Symbol Size</h3> <p>The size of symbol is defined by <a href="https://echarts.apache.org/option.html#series-scatter.symbolSize"><code>series.symbolSize</code></a>. It can be s pixel value of the item size, or an array included two numbers, to define the width and height.</p> <p>Besides, it can be defined as a call back function. Here is an example of the format:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code><span class="token punctuation">(</span>value<span class="token operator">:</span> <span class="token builtin">Array</span> <span class="token operator">|</span> <span class="token builtin">number</span><span class="token punctuation">,</span> params<span class="token operator">:</span> Object<span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token builtin">number</span> <span class="token operator">|</span> <span class="token builtin">Array</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>The first argument is the data value, and the second argument included other arguments of the data item. In the following instance, we define the size of the item proportional related to the data value.</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    data: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']
+  },
+  yAxis: {},
+  series: [
+    {
+      type: 'scatter',
+      data: [220, 182, 191, 234, 290, 330, 310],
+      symbolSize: function(value) {
+        return value / 10;
+      }
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'Sun'</span><span class="token punctuation">,</span> <span class="token string">'Mon'</span><span class="token punctuation">,</span> <span class="token string">'Tue'</span><span class="token punctuation">,</span> <span class="token string">'Wed'</span><span class="token punctuation">,</span> <span class="token string">'Thu'</span><span class="token punctuation">,</span> <span class="token string">'Fri'</span><span class="token punctuation">,</span> <span class="token string">'Sat'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'scatter'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">220</span><span class="token punctuation">,</span> <span class="token number">182</span><span class="token punctuation">,</span> <span class="token number">191</span><span class="token punctuation">,</span> <span class="token number">234</span><span class="token punctuation">,</span> <span class="token number">290</span><span class="token punctuation">,</span> <span class="token number">330</span><span class="token punctuation">,</span> <span class="token number">310</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token function-variable function">symbolSize</span><span class="token operator">:</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">value</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+        <span class="token keyword">return</span> value <span class="token operator">/</span> <span class="token number">10</span><span class="token punctuation">;</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">Contributors</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/en/how-to/chart-types/scatter/basic-scatter.md" title="Edit this Document" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">Edit this page on GitHub</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,e,i,a,r,d,l,o,s,n,c,h,g,C,p,I,w,u,M,m,b,y,L,A,N,x,f,T,S,z,j,v,B,D,O,E,G,k,V,H,J,Q,W,Y,F,P,Z,U,R,K,X,_,q,$,tt,et,it,at,rt,dt,lt,ot,st){return{layout:"default",data:[{html:'<h1 id="basic-scatter-chart" tabindex="-1">Basic Scatter Chart</h1>\n<p>Scatter Chart, a frequently used chart type, was constructed with several &quot;points&quot;. These points sometimes represent the position of the value in the coordinate system (cartesian coordinate system, geo coordinate system, etc.), sometimes the size and color of items can be mapped to the value, represent high-dimensional data.</p>\n<h2 id="simple-example" tabindex="-1">Simple Example</h2>\n<p>The following example is a basic scatter chart configuration with the x-axis as category and the y-axis as value:</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBkYXRhOiBbJ1N1bicsICdNb24nLCAnVHVlJywgJ1dlZCcsICdUaHUnLCAnRnJpJywgJ1NhdCddCiAgfSwKICB5QXhpczoge30sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIHR5cGU6ICdzY2F0dGVyJywKICAgICAgZGF0YTogWzIyMCwgMTgyLCAxOTEsIDIzNCwgMjkwLCAzMzAsIDMxMF0KICAgIH0KICBdCn07\'" v-bind="{}" />\n<h2 id="scatter-chart-in-cartesian-coordinate-system" tabindex="-1">Scatter Chart in Cartesian Coordinate System</h2>\n<p>In the previous case, the x-axis of the scatter chart is a discrete category axis and the y-axis is a continuous value axis. However, the normal scene for the scatter chart is to have 2 continuous value axis (also called the cartesian coordinate system). The series type is different in that both x-axis and y-axis value are included in <code>data</code>, but not in <code>xAxis</code> and <code>yAxis</code>.</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7fSwKICB5QXhpczoge30sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIHR5cGU6ICdzY2F0dGVyJywKICAgICAgZGF0YTogWwogICAgICAgIFsxMCwgNV0sCiAgICAgICAgWzAsIDhdLAogICAgICAgIFs2LCAxMF0sCiAgICAgICAgWzIsIDEyXSwKICAgICAgICBbOCwgOV0KICAgICAgXQogICAgfQogIF0KfTs\'" v-bind="{}" />\n<h2 id="customized-scatter-chart" tabindex="-1">Customized Scatter Chart</h2>\n<h3 id="symbol-style" tabindex="-1">Symbol Style</h3>\n<p>Symbol refers to the item shape in a scatter chart. There are three types of config available. The first is ECharts built-in shape, the second is image, the last is the SVG path.</p>\n<p>The built-in shape in ECharts included: <code>\'circle\'</code>, <code>\'rect\'</code>(rectangle), <code>\'roundRect\'</code>(rounded rectangle), <code>\'triangle\'</code>, <code>\'diamond\'</code>, <code>\'pin\'</code> and <code>\'arrow\'</code>. To use built-in shapes, you need to state the <code>symbol</code> to the corresponding string.</p>\n<p>If you want to define the shape as any image, try to use <code>\'image\'</code> following by the path, eg. <code>\'image://http://example.com/xxx.png\'</code> or <code>\'image://./xxx.png\'</code>.</p>\n<p>ECharts <code>symbol</code> also supports SVG vector graphics. You can define <code>symbol</code> as an SVG file path that starts with <code>\'path://\'</code> to locate the vector graphics. The advantages of vector graphics are smaller size and no jagged or blurred.</p>\n<p>Method to find the SVG path: Open an <code>SVG</code> path; Find the path similar as <code>&lt;path d=&quot;M… L…&quot;&gt;&lt;/path&gt;</code>; Add <code>d</code>\'s value after <code>\'path://\'</code>. Let\'s check how to define an item to vector shape of heart.</p>\n<p>Firstly, we need an <code>SVG</code> file of a heart. You can draw one by vector editing software, or download one from the internet. Here is the content:</p>\n<md-code-block lang="xml" code="\'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI_Pgo8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHZpZXdCb3g9IjAgMCA1MS45OTcgNTEuOTk3IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MS45OTcgNTEuOTk3OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI-CiAgICA8cGF0aCBkPSJNNTEuOTExLDE2LjI0MkM1MS4xNTIsNy44ODgsNDUuMjM5LDEuODI3LDM3LjgzOSwxLjgyN2MtNC45MywwLTkuNDQ0LDIuNjUzLTExLjk4NCw2LjkwNSBjLTIuNTE3LTQuMzA3LTYuODQ2LTYuOTA2LTExLjY5Ny02LjkwNmMtNy4zOTksMC0xMy4zMTMsNi4wNjEtMTQuMDcxLDE0LjQxNWMtMC4wNiwwLjM2OS0wLjMwNiwyLjMxMSwwLjQ0Miw1LjQ3OCBjMS4wNzgsNC41NjgsMy41NjgsOC43MjMsNy4xOTksMTIuMDEzbDE4LjExNSwxNi40MzlsMTguNDI2LTE2LjQzOGMzLjYzMS0zLjI5MSw2LjEyMS03LjQ0NSw3LjE5OS0xMi4wMTQgQzUyLjIxNiwxOC41NTMsNTEuOTcsMTYuNjExLDUxLjkxMSwxNi4yNDJ6Ii8-Cjwvc3ZnPg\'" line-highlights="\'\'" />\n<p>In ECharts, define config <code>symbol</code> as a path of d:</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBkYXRhOiBbJ1N1bicsICdNb24nLCAnVHVlJywgJ1dlZCcsICdUaHUnLCAnRnJpJywgJ1NhdCddCiAgfSwKICB5QXhpczoge30sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIHR5cGU6ICdzY2F0dGVyJywKICAgICAgZGF0YTogWzIyMCwgMTgyLCAxOTEsIDIzNCwgMjkwLCAzMzAsIDMxMF0sCiAgICAgIHN5bWJvbFNpemU6IDIwLAogICAgICBzeW1ib2w6CiAgICAgICAgJ3BhdGg6Ly9NNTEuOTExLDE2LjI0MkM1MS4xNTIsNy44ODgsNDUuMjM5LDEuODI3LDM3LjgzOSwxLjgyN2MtNC45MywwLTkuNDQ0LDIuNjUzLTExLjk4NCw2LjkwNSBjLTIuNTE3LTQuMzA3LTYuODQ2LTYuOTA2LTExLjY5Ny02LjkwNmMtNy4zOTksMC0xMy4zMTMsNi4wNjEtMTQuMDcxLDE0LjQxNWMtMC4wNiwwLjM2OS0wLjMwNiwyLjMxMSwwLjQ0Miw1LjQ3OCBjMS4wNzgsNC41NjgsMy41NjgsOC43MjMsNy4xOTksMTIuMDEzbDE4LjExNSwxNi40MzlsMTguNDI2LTE2LjQzOGMzLjYzMS0zLjI5MSw2LjEyMS03LjQ0NSw3LjE5OS0xMi4wMTQgQzUyLjIxNiwxOC41NTMsNTEuOTcsMTYuNjExLDUxLjkxMSwxNi4yNDJ6JwogICAgfQogIF0KfTs\'" v-bind="{}" />\n<p>In this way, we have a heart vector of the item.</p>\n<h3 id="symbol-size" tabindex="-1">Symbol Size</h3>\n<p>The size of symbol is defined by <a href="https://echarts.apache.org/option.html#series-scatter.symbolSize"><code>series.symbolSize</code></a>. It can be s pixel value of the item size, or an array included two numbers, to define the width and height.</p>\n<p>Besides, it can be defined as a call back function. Here is an example of the format:</p>\n<md-code-block lang="ts" code="\'KHZhbHVlOiBBcnJheSB8IG51bWJlciwgcGFyYW1zOiBPYmplY3QpID0-IG51bWJlciB8IEFycmF5Ow\'" line-highlights="\'\'" />\n<p>The first argument is the data value, and the second argument included other arguments of the data item. In the following instance, we define the size of the item proportional related to the data value.</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBkYXRhOiBbJ1N1bicsICdNb24nLCAnVHVlJywgJ1dlZCcsICdUaHUnLCAnRnJpJywgJ1NhdCddCiAgfSwKICB5QXhpczoge30sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIHR5cGU6ICdzY2F0dGVyJywKICAgICAgZGF0YTogWzIyMCwgMTgyLCAxOTEsIDIzNCwgMjkwLCAzMzAsIDMxMF0sCiAgICAgIHN5bWJvbFNpemU6IGZ1bmN0aW9uKHZhbHVlKSB7CiAgICAgICAgcmV0dXJuIHZhbHVlIC8gMTA7CiAgICAgIH0KICAgIH0KICBdCn07\'" v-bind="{}" />\n',postPath:"en/how-to/chart-types/scatter/basic-scatter",title:"Basic Scatter - Scatter - Common Charts - How To Guides"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:a},{title:"入门篇",dir:r,children:[{title:"获取 ECharts",dir:d},{title:"在项目中引入 ECharts",dir:l},{title:"资源列表",dir:o,draft:t},{title:"寻求帮助",dir:s},{title:"版本特性",dir:n,children:[{title:"ECharts 6 特性介绍",dir:c},{title:"v5 升级 v6 指南",dir:h},{title:"5.0",dir:g},{title:"v4 升级 v5 指南",dir:C},{title:5.2,dir:p},{title:5.3,dir:I},{title:5.4,dir:w},{title:5.5,dir:u},{title:5.6,dir:M}]}]},{title:"概念篇",dir:m,children:[{title:"图表容器及大小",dir:b},{title:"配置项",dir:y,draft:t},{title:"系列",dir:L,draft:t},{title:"样式",dir:A},{title:"数据集",dir:N},{title:"数据转换",dir:x},{title:"坐标系",dir:f,draft:t},{title:"坐标轴",dir:T},{title:"视觉映射",dir:i},{title:"图例",dir:S},{title:"事件与行为",dir:z}]},{title:"应用篇",dir:j,children:[{title:"常用图表类型",dir:v,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:B},{title:"堆叠柱状图",dir:D},{title:"动态排序柱状图",dir:O},{title:"极坐标系柱状图",dir:E,draft:t},{title:"阶梯瀑布图",dir:G},{title:"视觉映射的柱状图",dir:i,draft:t}]},{title:"折线图",dir:k,children:[{title:"基础折线图",dir:V},{title:"堆叠折线图",dir:H},{title:"区域面积图",dir:J},{title:"平滑曲线图",dir:Q},{title:"阶梯线图",dir:W}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:Y},{title:"圆环图",dir:F},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:P,children:[{title:"基础散点图",dir:Z}]}]},{title:"常用组件",dir:U,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:R}]}]},{title:"移动端优化",dir:e,draft:t},{title:"跨平台方案",dir:K,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:X},{title:"数据下钻",dir:_,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:q}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:et,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:it,draft:t},{title:"智能指针吸附",dir:at}]}]},{title:"最佳实践",dir:rt,children:[{title:"移动端优化",dir:e,draft:t},{title:dt,dir:lt},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:ot}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:st}]}],en:[{title:"Get Started",dir:a},{title:"Basics",dir:r,children:[{title:"Download ECharts",dir:d},{title:"Import ECharts",dir:l},{title:"Resources",dir:o,draft:t},{title:"Get Help",dir:s},{title:"What's New",dir:n,children:[{title:"ECharts 6 Features",dir:c},{title:"Migration from v5 to v6",dir:h},{title:"5.0",dir:g},{title:"Migration from v4 to v5",dir:C},{title:5.2,dir:p},{title:5.3,dir:I},{title:5.4,dir:w},{title:5.5,dir:u},{title:5.6,dir:M}]}]},{title:"Concepts",dir:m,children:[{title:"Chart Container",dir:b},{title:"Chart Option",dir:y,draft:t},{title:"Series",dir:L,draft:t},{title:"Style",dir:A},{title:"Dataset",dir:N},{title:"Data Transform",dir:x},{title:"Coordinate",dir:f,draft:t},{title:"Axis",dir:T},{title:"Visual Mapping",dir:i},{title:"Legend",dir:S},{title:"Event and Action",dir:z}]},{title:"How To Guides",dir:j,children:[{title:"Common Charts",dir:v,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:B},{title:"Stacked Bar",dir:D},{title:"Bar Racing",dir:O},{title:"Bar Polar",dir:E,draft:t},{title:"Waterfall",dir:G}]},{title:"Line",dir:k,children:[{title:"Basic Line",dir:V},{title:"Stacked Line",dir:H},{title:"Area Chart",dir:J},{title:"Smoothed Line",dir:Q},{title:"Step Line",dir:W}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:Y},{title:"Ring Style",dir:F},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:P,children:[{title:"Basic Scatter",dir:Z}]}]},{title:"Common Components",dir:U,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:R}]}]},{title:"Mobile",dir:e,draft:t},{title:"Cross Platform",dir:K,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:X},{title:"Drilldown",dir:_,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:q}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:et,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:it,draft:t},{title:"Intelligent Pointer Snapping",dir:at}]}]},{title:"Best Practices",dir:rt,children:[{title:"Mobile Optimization",dir:e,draft:t},{title:dt,dir:lt},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:ot}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:st}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/en/how-to/chart-types/scatter/basic-scatter",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/en/how-to/component-types/geo/svg-base-map/index.html b/docs/en/how-to/component-types/geo/svg-base-map/index.html
new file mode 100644
index 0000000..f0330ba
--- /dev/null
+++ b/docs/en/how-to/component-types/geo/svg-base-map/index.html
@@ -0,0 +1,182 @@
+<!doctype html>
+<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>SVG Base Map - Geo - Common Components - How To Guides - Handbook - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="en"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/en/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/en/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/en/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/en/index.html" class="navbar-brand"><img src="https://echarts.apache.org/en/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/en/index.html">Home</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Docs<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/feature.html">Features</a></li><li><a href="https://echarts.apache.org/handbook/en/get-started/">Handbook</a></li><li><a href="https://echarts.apache.org/en/api.html">API</a></li><li><a href="https://echarts.apache.org/en/option.html">Chart Configuration</a></li><li><a href="https://echarts.apache.org/en/changelog.html">Changelog</a></li><li><a href="https://echarts.apache.org/en/faq.html">FAQ</a></li><li><a href="https://echarts.apache.org/handbook/en/basics/release-note/v6-upgrade-guide">V6 Upgrade Guide</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Download<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/download.html">Download</a></li><li><a href="https://echarts.apache.org/en/download-theme.html">Download Themes</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">Download Custom Series<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/download-extension.html">Download Extensions</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/en/index.html">Examples</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Resources<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/spreadsheet.html">Spread Sheet Tool</a></li><li><a href="https://echarts.apache.org/en/theme-builder.html">Theme Builder</a></li><li><a href="https://echarts.apache.org/en/cheat-sheet.html">Cheat Sheet</a></li><li><a href="https://echarts.apache.org/en/resources.html">More Resources</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/events.html">Events</a></li><li><a href="https://echarts.apache.org/en/committers.html">Committers</a></li><li><a href="https://echarts.apache.org/en/maillist.html">Mailing List</a></li><li><a href="https://echarts.apache.org/en/contributing.html">How to Contribute</a></li><li><a href="https://echarts.apache.org/en/dependencies.html">Dependencies</a></li><li><a href="https://echarts.apache.org/en/coding-standard.html">Code Standard</a></li><li><a href="https://github.com/apache/echarts" target="_blank">Source Code (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/security.html">Security</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">License<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">Events<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("zh")'>中文</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/en/get-started" class="nav-link"><span class="title">Get Started</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Basics</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/basics/download" class="nav-link"><span class="title">Download ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/import" class="nav-link"><span class="title">Import ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/basics/help" class="nav-link"><span class="title">Get Help</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">What's New</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 Features</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">Migration from v5 to v6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">Migration from v4 to v5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Concepts</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/concepts/chart-size" class="nav-link"><span class="title">Chart Container</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/style" class="nav-link"><span class="title">Style</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/dataset" class="nav-link"><span class="title">Dataset</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/data-transform" class="nav-link"><span class="title">Data Transform</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/axis" class="nav-link"><span class="title">Axis</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/visual-map" class="nav-link"><span class="title">Visual Mapping</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/legend" class="nav-link"><span class="title">Legend</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/event" class="nav-link"><span class="title">Event and Action</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">How To Guides</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">Common Charts</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Bar</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">Basic Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">Stacked Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">Bar Racing</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">Waterfall</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Line</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">Basic Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">Stacked Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/area-line" class="nav-link"><span class="title">Area Chart</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">Smoothed Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/step-line" class="nav-link"><span class="title">Step Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Pie</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">Basic Pie</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">Ring Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/rose" class="nav-link"><span class="title">Rose Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Scatter</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">Basic Scatter</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Common Components</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a class="nav-link"><span class="title">Geo</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level3"><li class="nav-item"><a href="/echarts-handbook/en/how-to/component-types/geo/svg-base-map" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">SVG Base Map</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">Cross Platform</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/cross-platform/server" class="nav-link"><span class="title">Server Side Rendering</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Data</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/data/dynamic-data" class="nav-link"><span class="title">Dynamic Data</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Label</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/label/rich-text" class="nav-link"><span class="title">Rich Text</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Animation</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/animation/transition" class="nav-link"><span class="title">Data Transition</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Interaction</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/drag" class="nav-link"><span class="title">Drag</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">Intelligent Pointer Snapping</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Best Practices</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/en/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/aria" class="nav-link"><span class="title">Aria</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/security" class="nav-link"><span class="title">Security Guidelines</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Edit Handbook</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/meta/edit-guide" class="nav-link"><span class="title">Edit Guide</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="svg-base-map" tabindex="-1">SVG Base Map</h1> <p>Since <code>v5.1.0</code>, ECharts support to use SVG as the base map in <a href="https://echarts.apache.org/option.html#geo">geo coordinate system</a> and <a href="https://echarts.apache.org/option.html#series-map">map series</a>, where previously only <a href="https://echarts.apache.org/api.html#echarts.registerMap">GeoJSON</a> is supported.</p> <p>This feature enables ECharts to display SVG in either of the render modes (<code>canvas</code> render mode and <code>svg</code> render mode), and enables features like <a href="https://echarts.apache.org/option.html#geo.roam">zoom</a>, <a href="https://echarts.apache.org/option.html#geo.roam">pan</a>, <a href="https://echarts.apache.org/option.html#geo.select">select</a>, <a href="https://echarts.apache.org/option.html#geo.emphasis">emphasis</a>, <a href="https://echarts.apache.org/option.html#geo.emphasis.focus">focus-blur</a>, <a href="https://echarts.apache.org/option.html#geo.label">label</a>, <a href="https://echarts.apache.org/option.html#series-map.labelLayout">labelLayout</a>, <a href="https://echarts.apache.org/option.html#geo.tooltip">tooltip</a> on SVG with only simple some ECharts options. Series like <a href="https://echarts.apache.org/option.html#series-scatter">scatter</a>, <a href="https://echarts.apache.org/option.html#series-effectScatter">effectScatter</a>, <a href="https://echarts.apache.org/option.html#series-lines">lines</a>, <a href="https://echarts.apache.org/option.html#series-custom">custom</a> that are available on <a href="https://echarts.apache.org/option.html#geo">geo coordinate system</a> can also be positioned and displayed based on SVG base map.</p> <p>There are several examples where SVG base map is used:
+<a href="https://echarts.apache.org/examples/en/editor.html?c=geo-beef-cuts">Beef Cuts</a> |
+<a href="https://echarts.apache.org/examples/en/editor.html?c=geo-organ">Organ Visualization</a> |
+<a href="https://echarts.apache.org/examples/en/editor.html?c=geo-seatmap-flight">Flight Seatmap</a> |
+<a href="https://echarts.apache.org/examples/en/editor.html?c=geo-svg-map">SVG Map</a> |
+<a href="https://echarts.apache.org/examples/en/editor.html?c=geo-svg-scatter-simple">SVG Scatter</a> |
+<a href="https://echarts.apache.org/examples/en/editor.html?c=geo-svg-lines">SVG Lines</a> |
+<a href="https://echarts.apache.org/examples/en/editor.html?c=geo-svg-traffic">SVG Traffic</a></p> <h2 id="basic-usage" tabindex="-1">Basic Usage</h2> <p>The usage of SVG base map is the same as the usage of <a href="https://echarts.apache.org/api.html#echarts.registerMap">GeoJSON</a>.</p> <p>If using it in <a href="https://echarts.apache.org/option.html#geo">geo coordinate system</a>:
+</p><div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code>$<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span><span class="token string">'map/organ.svg'</span><span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span>svg<span class="token punctuation">)</span> <span class="token punctuation">{</span>
+    <span class="token comment">// Firstly we need to register SVG raw string or parsed SVG DOM</span>
+    <span class="token comment">// to echarts with a name:</span>
+    echarts<span class="token punctuation">.</span><span class="token function">registerMap</span><span class="token punctuation">(</span><span class="token string">'organ_diagram'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>svg<span class="token operator">:</span> svg<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+    <span class="token keyword">var</span> chart <span class="token operator">=</span> echarts<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span>document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span><span class="token string">'main'</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+    chart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+        geo<span class="token operator">:</span> <span class="token punctuation">{</span>
+            <span class="token comment">// Reference it in echarts option.</span>
+            map<span class="token operator">:</span> <span class="token string">'organ_diagram'</span><span class="token punctuation">,</span>
+            <span class="token operator">...</span>
+        <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div><p></p> <p>If using it in <a href="https://echarts.apache.org/option.html#series-map">map series</a>:
+</p><div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code>$<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span><span class="token string">'map/beef_cuts.svg'</span><span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span>svg<span class="token punctuation">)</span> <span class="token punctuation">{</span>
+    <span class="token comment">// Firstly we need to register SVG raw string or parsed SVG DOM</span>
+    <span class="token comment">// to echarts with a name:</span>
+    echarts<span class="token punctuation">.</span><span class="token function">registerMap</span><span class="token punctuation">(</span><span class="token string">'beef_cuts_diagram'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>svg<span class="token operator">:</span> svg<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+    <span class="token keyword">var</span> chart <span class="token operator">=</span> echarts<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span>document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span><span class="token string">'main'</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+    chart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+        series<span class="token operator">:</span> <span class="token punctuation">{</span>
+            type<span class="token operator">:</span> <span class="token string">'map'</span><span class="token punctuation">,</span>
+            <span class="token comment">// Reference it in echarts option.</span>
+            map<span class="token operator">:</span> <span class="token string">'beef_cuts_diagram'</span><span class="token punctuation">,</span>
+            <span class="token operator">...</span>
+        <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div><p></p> <h2 id="zoom-and-pan" tabindex="-1">Zoom and Pan</h2> <p>For <a href="https://echarts.apache.org/option.html#geo">Geo coordinate system</a> </p><div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+    geo<span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token comment">// Enable zoom and pan.</span>
+        roam<span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+        <span class="token operator">...</span>
+    <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div>
+For <a href="https://echarts.apache.org/option.html#series-map">map series</a> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+    series<span class="token operator">:</span> <span class="token punctuation">{</span>
+        type<span class="token operator">:</span> <span class="token string">'map'</span><span class="token punctuation">,</span>
+        <span class="token comment">// Enable zoom and pan.</span>
+        roam<span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+        <span class="token operator">...</span>
+    <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div><p></p> <p>See <a href="https://echarts.apache.org/option.html#geo.roam">roam</a>.
+See also example <a href="https://echarts.apache.org/examples/en/editor.html?c=geo-svg-map">SVG Map</a>.</p> <h2 id="named-element" tabindex="-1">Named Element</h2> <p>If intending to interact with some elements of SVG, we need to mark those elements in SVG firstly. That can be done simply by adding names to the target elements. The interaction related feature like <a href="https://echarts.apache.org/option.html#geo.select">select</a>, <a href="https://echarts.apache.org/option.html#geo.emphasis">emphasis</a>, <a href="https://echarts.apache.org/option.html#geo.emphasis.focus">focus-blur</a>, <a href="https://echarts.apache.org/option.html#geo.label">label</a>, <a href="https://echarts.apache.org/option.html#series-map.labelLayout">labelLayout</a>, <a href="https://echarts.apache.org/option.html#geo.tooltip">tooltip</a> depend on those named elements.</p> <p>For example, we add name attribute <code>name="named_rect"</code> only to the left SVG <code>path</code>.
+</p><div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-xml line-numbers"><code><span class="token prolog">&lt;?xml version="1.0" encoding="utf-8"?></span>
+<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>svg</span> <span class="token attr-name">xmlns</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>http://www.w3.org/2000/svg<span class="token punctuation">"</span></span> <span class="token attr-name">version</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>1.2<span class="token punctuation">"</span></span> <span class="token attr-name">fill-rule</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>evenodd<span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">xml:</span>space</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>preserve<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
+    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>path</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>named_rect<span class="token punctuation">"</span></span> <span class="token attr-name">d</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>M 0,0 L 0,100 100,100 100,0 Z<span class="token punctuation">"</span></span> <span class="token attr-name">fill</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>#765<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>
+    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>path</span> <span class="token attr-name">d</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>M 150,0 L 150,100 250,100 250,0 Z<span class="token punctuation">"</span></span> <span class="token attr-name">fill</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>#567<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>
+<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>svg</span><span class="token punctuation">></span></span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div>
+Then hover on the left rect, it can be highlighted, whereas the right one can not.<p></p> <p><iframe width="100%" height="200" src=""></iframe></p> <p>Option for some certain named elements can be specified in <a href="https://echarts.apache.org/option.html#geo.regions">geo.regions</a>, like:
+</p><div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+    geo<span class="token operator">:</span> <span class="token punctuation">{</span>
+        map<span class="token operator">:</span> <span class="token string">'some_svg'</span><span class="token punctuation">,</span>
+        regions<span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">{</span>
+            name<span class="token operator">:</span> <span class="token string">'element_name_1'</span><span class="token punctuation">,</span>
+            itemStyle<span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token operator">...</span> <span class="token punctuation">}</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
+            name<span class="token operator">:</span> <span class="token string">'element_name_2'</span><span class="token punctuation">,</span>
+            itemStyle<span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token operator">...</span> <span class="token punctuation">}</span>
+        <span class="token punctuation">}</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div><p></p> <p>Note:</p> <ul><li>These SVG elements can be named and recognized by ECharts:
+<code>rect</code>, <code>circle</code>, <code>line</code>, <code>ellipse</code>, <code>polygon</code>, <code>polyline</code>, <code>path</code>, <code>text</code>, <code>tspan</code>, <code>g</code>.</li> <li>It is supported that multiple elements are named with the same name, will they will be highlighted/selected together.</li></ul> <h2 id="style-customization" tabindex="-1">Style Customization</h2> <p>Although the style (such as color, font, lineWidth, ...) of SVG Elements can be defined directly in SVG file, style of named elements can also be customized in ECharts option, which will be handy in some scenario.</p> <p>Styles can be specified in <a href="https://echarts.apache.org/option.html#geo.itemStyle">geo.itemStyle</a> and <a href="https://echarts.apache.org/option.html#series-map.itemStyle">series-map.itemStyle</a> (also includes <code>emphasis.itemStyle</code>, <code>select.itemStyle</code>, <code>blur.itemStyle</code>, <code>regions[i].itemStyle</code>, <code>regions[i].emphasis.itemStyle</code>, <code>regions[i].select.itemStyle</code>, <code>regions[i].blur.itemStyle</code>). Some default style of the named elements can also be removed here (e.g., set <code>emphasis.itemStyle.color: null</code> to prevent the fill color from changing when mouse hovering.)</p> <p>Moreover, named elements can also be styled by <a href="https://echarts.apache.org/option.html#visualMap">visualMap component</a> if using <a href="https://echarts.apache.org/option.html#series-map">series-map</a>. See <a href="https://echarts.apache.org/examples/en/editor.html?c=geo-beef-cuts">Beef Cuts</a>.</p> <p>Note:
+Only these named elements can be styled in <code>itemStyle</code>:
+<code>rect</code>, <code>circle</code>, <code>line</code>, <code>ellipse</code>, <code>polygon</code>, <code>polyline</code>, <code>path</code>.</p> <h2 id="select" tabindex="-1">Select</h2> <p>Named elements can adopt "select" feature by setting <a href="https://echarts.apache.org/option.html#geo.selectedMode">geo.selectedMode</a> or <a href="https://echarts.apache.org/option.html#series-map.selectedMode">series-map.selectedMode</a> as <code>'single'</code> or <code>'multiple'</code>. The style of element when selected can be specified in <a href="https://echarts.apache.org/option.html#geo.select">geo.select</a> or <a href="https://echarts.apache.org/option.html#series-map.select">series-map.select</a>.</p> <p>The selected names can be obtained by <a href="https://echarts.apache.org/api.html#event.geoselectchanged">geoselectchanged</a> event, like:
+</p><div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code>myChart<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'geoselectchanged'</span><span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span>params<span class="token punctuation">)</span> <span class="token punctuation">{</span>
+    <span class="token keyword">var</span> selectedNames <span class="token operator">=</span> params<span class="token punctuation">.</span>allSelected<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">.</span>name<span class="token punctuation">;</span>
+    <span class="token builtin">console</span><span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">'selected'</span><span class="token punctuation">,</span> selectedNames<span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div><p></p> <p>See <a href="https://echarts.apache.org/examples/en/editor.html?c=geo-seatmap-flight">Flight Seatmap</a> for more details.</p> <h2 id="emphasis-and-focus-blur" tabindex="-1">Emphasis and Focus-Blur</h2> <p><code>emphasis</code> state (highlight when hovering) can be auto adopted to named elements.</p> <p>Especially, <a href="https://echarts.apache.org/option.html#geo.emphasis.focus">geo.emphasis.focus</a> and be set as <code>'self'</code> to enable "focus-blur" feature, where all all of the other elements will be blurred when hovering on an named element.</p> <p>See <a href="https://echarts.apache.org/examples/en/editor.html?c=geo-organ">Organ Visualization</a> for more details.</p> <h2 id="tooltip" tabindex="-1">Tooltip</h2> <p>Tooltip can be enabled or disabled on named elements.
+</p><div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+    <span class="token comment">// Need to declare the root tooltip to</span>
+    <span class="token comment">// enable tooltip feature on ECharts.</span>
+    tooltip<span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+    geo<span class="token operator">:</span> <span class="token punctuation">{</span>
+        map<span class="token operator">:</span> <span class="token string">'some_svg'</span><span class="token punctuation">,</span>
+        tooltip<span class="token operator">:</span> <span class="token punctuation">{</span>
+            <span class="token comment">// Use `show` to enable/disable tooltip</span>
+            <span class="token comment">// on geo coordinate system.</span>
+            show<span class="token operator">:</span> <span class="token boolean">true</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        regions<span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">{</span>
+            name<span class="token operator">:</span> <span class="token string">'some_name1'</span><span class="token punctuation">,</span>
+            <span class="token comment">// Set named element specified tooltip option if needed.</span>
+            tooltip<span class="token operator">:</span> <span class="token punctuation">{</span>
+                formatter<span class="token operator">:</span> <span class="token string">'some special tooltip 1'</span>
+            <span class="token punctuation">}</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
+            name<span class="token operator">:</span> <span class="token string">'some_name2'</span><span class="token punctuation">,</span>
+            tooltip<span class="token operator">:</span> <span class="token punctuation">{</span>
+                formatter<span class="token operator">:</span> <span class="token string">'some special tooltip 2'</span>
+            <span class="token punctuation">}</span>
+        <span class="token punctuation">}</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div><p></p> <p>If intending to disable the geo tooltip when hovering a on named elements, just:
+</p><div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+    tooltip<span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+    geo<span class="token operator">:</span> <span class="token punctuation">{</span>
+        map<span class="token operator">:</span> <span class="token string">'some_svg'</span><span class="token punctuation">,</span>
+        tooltip<span class="token operator">:</span> <span class="token punctuation">{</span>
+            show<span class="token operator">:</span> <span class="token boolean">false</span>
+        <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div><p></p> <p>See <a href="https://echarts.apache.org/examples/en/editor.html?c=geo-svg-map">SVG Map</a> for more details.</p> <h2 id="label" tabindex="-1">Label</h2> <p>Although text label can be declared in SVG file directly via <code>&lt;text></code>/<code>&lt;tspan></code>, we can also use ECharts built-in label feature on named elements by specifying <a href="https://echarts.apache.org/option.html#geo.label">geo.label</a> or <a href="https://echarts.apache.org/option.html#series-map.label">series-map.label</a>.</p> <p>By default the label feature is enabled when hovering on a named element. If intending to disable it, just:
+</p><div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+    geo<span class="token operator">:</span> <span class="token punctuation">{</span>
+        map<span class="token operator">:</span> <span class="token string">'some_svg'</span><span class="token punctuation">,</span>
+        emphasis<span class="token operator">:</span> <span class="token punctuation">{</span>
+            label<span class="token operator">:</span> <span class="token punctuation">{</span>
+                show<span class="token operator">:</span> <span class="token boolean">false</span>
+            <span class="token punctuation">}</span>
+        <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div><p></p> <p>When multiple elements need to share one label text, we have two choices:</p> <ul><li>Wrap those elements in a named <code>&lt;g></code> (e.g., <code>&lt;g name="name_a"></code>), where a single label will be displayed and located based on the bounding rect of the <code>&lt;g></code>.</li> <li>Name those elements with the same name (e.g., <code>&lt;path name="name_b"/>&lt;path name="name_b"/></code>), where multiple labels will be displayed and located based on each elements self.</li></ul> <p>For example (hover to show the labels):
+<iframe width="100%" height="300" src=""></iframe></p> <p>Note: Only these named elements can be labeled via <code>label</code> option:
+<code>rect</code>, <code>circle</code>, <code>line</code>, <code>ellipse</code>, <code>polygon</code>, <code>polyline</code>, <code>path</code>, <code>g</code>.</p> <p>See also <a href="https://echarts.apache.org/examples/en/editor.html?c=geo-organ">Organ Visualization</a> for the usage of label.</p> <h2 id="events" tabindex="-1">Events</h2> <p>Mouse events or touch events of named elements can be listened simply by:
+</p><div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code><span class="token comment">// 'name1' is a name of a SVG element.</span>
+myChart<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'click'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> geoIndex<span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span> name<span class="token operator">:</span> <span class="token string">'name1'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span>params<span class="token punctuation">)</span> <span class="token punctuation">{</span>
+    <span class="token builtin">console</span><span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>params<span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div><p></p> <h2 id="layout-of-svg-base-map" tabindex="-1">Layout of SVG Base Map</h2> <p>By default ECharts will position the SVG base map in the center of the canvas. If need some adjust, we usually only adjust <a href="https://echarts.apache.org/option.html#geo.layoutCenter">layoutCenter</a>/<a href="https://echarts.apache.org/option.html#geo.layoutSize">layoutSize</a>, and occasionally <code>&lt;svg viewBox="..."></code>/<a href="https://echarts.apache.org/option.html#geo.boundingCoords">geo.boundingCoords</a> (difference: clip or not). In most cases they are enough.</p> <p>If need some advanced precise control of the position and zoom, several concepts below can be noticed.</p> <p>The layout rule and options of <a href="https://echarts.apache.org/option.html#geo">geo coordinate system</a> and <a href="https://echarts.apache.org/option.html#series-map">map series</a> are the same. So we only demonstrate <a href="https://echarts.apache.org/option.html#geo">geo coordinate system</a> below.</p> <p><iframe width="100%" height="600" src=""></iframe></p> <p>The demo above shows six <a href="https://echarts.apache.org/option.html#geo">geo coordinate system</a> with three SVG files in a single ECharts canvas. Each two <a href="https://echarts.apache.org/option.html#geo">geo</a> that are in the same column use the same SVG file.</p> <p>Firstly, what shapes looks like is determined by SVG file itself. That is, in the demo above, determined by the <code>&lt;circle></code> and <code>viewBox</code> attribute (<code>viewBox</code> cut (clips) the circle). We can noticed that the final shape outlines in each column are the same (despite the difference in position, size and scratch), since they use the same SVG file.</p> <p>Secondly, users can use either of the two option groups below to determine the location and the size of the <code>geo view port</code> of <a href="https://echarts.apache.org/option.html#geo">geo coordinate system</a> according to the entire chart canvas (all of these options are measured in echarts canvas pixel, or percentage value):</p> <ul><li><a href="https://echarts.apache.org/option.html#geo.layoutCenter">layoutCenter</a>, <a href="https://echarts.apache.org/option.html#geo.layoutSize">layoutSize</a> (recommended).</li> <li><a href="https://echarts.apache.org/option.html#geo.top">top</a>, <a href="https://echarts.apache.org/option.html#geo.right">right</a>, <a href="https://echarts.apache.org/option.html#geo.bottom">bottom</a>, <a href="https://echarts.apache.org/option.html#geo.left">left</a> (which is used in the demo above).</li></ul> <p>In the demo above, the six geo <code>geo view ports</code> are displayed as six black squares.</p> <p>Thirdly, a <code>bounding rect</code> of the SVG is determined, which is determined by methods below (all of them are measured in SVG local unit):</p> <ol><li>If <a href="https://echarts.apache.org/option.html#geo.boundingCoords">geo.boundingCoords</a> is specified, use it as <code>bounding rect</code>.</li> <li>Else if <code>&lt;svg width="..." height="..."></code> is specified, use <code>[0, 0, width, height]</code> as <code>bounding rect</code>. (If only <code>width</code> or only <code>height</code> is specified, only use <code>[0, width]</code> or <code>[0, height]</code>).</li> <li>Else if <code>svg viewBox="..."></code> is specified, use <code>viewBox</code> as <code>bounding rect</code>.</li> <li>Else use the union bounding rect of all of the SVG elements as the <code>bounding rect</code>.</li> <li>If <a href="https://echarts.apache.org/option.html#geo.center">geo.center</a> or <a href="https://echarts.apache.org/option.html#geo.zoom">geo.zoom</a> is specified, transform the <code>bounding rect</code> determined by <code>1~4</code> above.</li></ol> <p>Having <code>bounding rect</code> determined, it will be placed into its corresponding <code>geo view port</code>:</p> <ul><li>If <a href="https://echarts.apache.org/option.html#geo.layoutCenter">layoutCenter</a>, <a href="https://echarts.apache.org/option.html#geo.layoutSize">layoutSize</a> is used, the <code>bounding rect</code> will be placed at the center and as big as possible into the <code>geo view port</code> (keep aspect ratio).</li> <li>If <a href="https://echarts.apache.org/option.html#geo.top">top</a>, <a href="https://echarts.apache.org/option.html#geo.right">right</a>, <a href="https://echarts.apache.org/option.html#geo.bottom">bottom</a>, <a href="https://echarts.apache.org/option.html#geo.left">left</a> is used, the view rect will be stretched to fill the <code>geo view port</code> entirely.</li></ul> <h2 id="place-series-on-svg-base-map" tabindex="-1">Place Series on SVG Base Map</h2> <p>Series like <a href="https://echarts.apache.org/option.html#series-scatter">scatter</a>, <a href="https://echarts.apache.org/option.html#series-effectScatter">effectScatter</a>, <a href="https://echarts.apache.org/option.html#series-lines">lines</a>, <a href="https://echarts.apache.org/option.html#series-custom">custom</a> that are available on <a href="https://echarts.apache.org/option.html#geo">geo coordinate system</a> can also be positioned and displayed on SVG base map.</p> <p>Note that in this kind of usage the unit of series data value is the SVG file local coords. For example:
+</p><div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+    geo<span class="token operator">:</span> <span class="token punctuation">{</span>
+        map<span class="token operator">:</span> <span class="token string">'some_svg'</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    series<span class="token operator">:</span> <span class="token punctuation">{</span>
+        type<span class="token operator">:</span> <span class="token string">'effectScatter'</span><span class="token punctuation">,</span>
+        coordinateSystem<span class="token operator">:</span> <span class="token string">'geo'</span><span class="token punctuation">,</span>
+        geoIndex<span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+        data<span class="token operator">:</span> <span class="token punctuation">[</span>
+            <span class="token comment">// SVG local coords.</span>
+            <span class="token punctuation">[</span><span class="token number">488.2358421078053</span><span class="token punctuation">,</span> <span class="token number">459.70913833075736</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+            <span class="token punctuation">[</span><span class="token number">770.3415644319939</span><span class="token punctuation">,</span> <span class="token number">757.9672194986475</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+            <span class="token punctuation">[</span><span class="token number">1180.0329284196291</span><span class="token punctuation">,</span> <span class="token number">743.6141808346214</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div><p></p> <p>By the way, there is a simple approach to get SVG local coord:
+</p><div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code>myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+    geo<span class="token operator">:</span> <span class="token punctuation">{</span>
+        map<span class="token operator">:</span> <span class="token string">'some_svg'</span>
+    <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+myChart<span class="token punctuation">.</span><span class="token function">getZr</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'click'</span><span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span>params<span class="token punctuation">)</span> <span class="token punctuation">{</span>
+    <span class="token keyword">var</span> pixelPoint <span class="token operator">=</span> <span class="token punctuation">[</span>params<span class="token punctuation">.</span>offsetX<span class="token punctuation">,</span> params<span class="token punctuation">.</span>offsetY<span class="token punctuation">]</span><span class="token punctuation">;</span>
+    <span class="token keyword">var</span> dataPoint <span class="token operator">=</span> myChart<span class="token punctuation">.</span><span class="token function">convertFromPixel</span><span class="token punctuation">(</span><span class="token punctuation">{</span> geoIndex<span class="token operator">:</span> <span class="token number">0</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> pixelPoint<span class="token punctuation">)</span><span class="token punctuation">;</span>
+    <span class="token comment">// When click, the data in SVG local coords will be printed,</span>
+    <span class="token comment">// which can be used in `series.data`.</span>
+    <span class="token builtin">console</span><span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>dataPoint<span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div><p></p> <p>See also <a href="https://echarts.apache.org/examples/en/editor.html?c=geo-svg-scatter-simple">SVG Scatter</a>, <a href="https://echarts.apache.org/examples/en/editor.html?c=geo-svg-lines">SVG Lines</a>, <a href="https://echarts.apache.org/examples/en/editor.html?c=geo-traffic">SVG Traffic</a>.</p> <h2 id="unsupported-svg-features" tabindex="-1">Unsupported SVG features</h2> <p>Unfortunately it is difficult to implement a complete SVG parser. While the common SVG features are supported, at least these features listed below are not supported yet:</p> <ul><li>Flip and skew (will be supported <code>v5.1.2</code>):
+<ul><li>Not support <code>transform: skew(...)</code> (including <code>transform: matrix(...)</code> that includes skew).</li> <li>Not support <code>transform: scale(x, y)</code> that <code>x</code>, <code>y</code> has different sign while has <code>rotate</code> (e.g., <code>scale: (1, -1), rotate(90)</code>).</li></ul></li> <li>Standalone <code>&lt;style></code> tag is not supported.
+<ul><li>But inline style is supported (e.g., <code>&lt;path style="color:red" /></code>).</li></ul></li> <li>Unit:
+<ul><li>Only <code>px</code> is supported. Other unit like <code>width="231.65mm"</code> is not supported.</li> <li>Percentage value like <code>&lt;svg width="30%" height="40%"></code> is not supported.</li></ul></li> <li><code>&lt;defs></code> tag:
+<ul><li>Only <code>&lt;linearGradient></code>, <code>&lt;radialGradient></code> are supported.</li> <li>other elements (e.g., <code>&lt;pattern></code>, <code>&lt;path></code>, ...) defined in <code>&lt;defs></code> are not supported yet.</li></ul></li> <li><code>&lt;linearGradient></code>, <code>&lt;radialGradient></code>:
+<ul><li><code>fx</code>, <code>fy</code> is not supported.</li> <li><code>gradientTransform</code> attribute is not supported.</li></ul></li> <li><code>fill:url(...)</code>, <code>stroke:utl(...)</code>:
+<ul><li>Only <code>url(#someId)</code> is supported.</li> <li>Other URL patterns are not supported. e.g.,
+<ul><li><code>url(https://example.com/images/myImg.jpg)</code>;</li> <li><code>url(data:image/png;base64,iRxVB0…)</code>;</li> <li><code>url(myFont.woff)</code>;</li></ul></li></ul></li> <li><code>&lt;switch></code> tag:
+<ul><li>All the content inside <code>&lt;switch></code> tag will be displayed. The "switch" feature is not supported.</li></ul></li> <li><code>&lt;text></code>:
+<ul><li><code>textPath</code> is not supported.</li> <li><a href="https://www.w3.org/TR/SVG/text.html#TermAddressableCharacter">Addressable character</a> is not supported. That is,</li></ul> <pre><code class="language-xml">&lt;!-- Not supported: -->
+&lt;tspan x="0 4.94 9.89">abc&lt;/tspan>
+&lt;!-- Supported: -->
+&lt;tspan x="0">a&lt;/tspan>
+&lt;tspan x="4.94">b&lt;/tspan>
+&lt;tspan x="9.89">c&lt;/tspan>
+</code></pre></li></ul></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">Contributors</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/en/how-to/component-types/geo/svg-base-map.md" title="Edit this Document" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">Edit this page on GitHub</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/100pah" target="_blank" class="post-contributor has-avatar"><img alt="100pah" src="https://echarts.apache.org/en/images/people/宿爽.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>100pah</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(e,t,a,o,i,l,s,r,n,d,h,c,g,p,m,I,C,b,u,A,f,y,w,v,G,B,S,V,Z,W,x,z,N,H,k,L,Y,R,M,T,F,X,O,J,K,D,E,q,P,U,Q,j,_,$,ee,te,ae,oe,ie,le,se,re,ne){return{layout:"default",data:[{html:'<h1 id="svg-base-map" tabindex="-1">SVG Base Map</h1>\n<p>Since <code>v5.1.0</code>, ECharts support to use SVG as the base map in <a href="https://echarts.apache.org/option.html#geo">geo coordinate system</a> and <a href="https://echarts.apache.org/option.html#series-map">map series</a>, where previously only <a href="https://echarts.apache.org/api.html#echarts.registerMap">GeoJSON</a> is supported.</p>\n<p>This feature enables ECharts to display SVG in either of the render modes (<code>canvas</code> render mode and <code>svg</code> render mode), and enables features like <a href="https://echarts.apache.org/option.html#geo.roam">zoom</a>, <a href="https://echarts.apache.org/option.html#geo.roam">pan</a>, <a href="https://echarts.apache.org/option.html#geo.select">select</a>, <a href="https://echarts.apache.org/option.html#geo.emphasis">emphasis</a>, <a href="https://echarts.apache.org/option.html#geo.emphasis.focus">focus-blur</a>, <a href="https://echarts.apache.org/option.html#geo.label">label</a>, <a href="https://echarts.apache.org/option.html#series-map.labelLayout">labelLayout</a>, <a href="https://echarts.apache.org/option.html#geo.tooltip">tooltip</a> on SVG with only simple some ECharts options. Series like <a href="https://echarts.apache.org/option.html#series-scatter">scatter</a>, <a href="https://echarts.apache.org/option.html#series-effectScatter">effectScatter</a>, <a href="https://echarts.apache.org/option.html#series-lines">lines</a>, <a href="https://echarts.apache.org/option.html#series-custom">custom</a> that are available on <a href="https://echarts.apache.org/option.html#geo">geo coordinate system</a> can also be positioned and displayed based on SVG base map.</p>\n<p>There are several examples where SVG base map is used:\n<a href="https://echarts.apache.org/examples/en/editor.html?c=geo-beef-cuts">Beef Cuts</a> |\n<a href="https://echarts.apache.org/examples/en/editor.html?c=geo-organ">Organ Visualization</a> |\n<a href="https://echarts.apache.org/examples/en/editor.html?c=geo-seatmap-flight">Flight Seatmap</a> |\n<a href="https://echarts.apache.org/examples/en/editor.html?c=geo-svg-map">SVG Map</a> |\n<a href="https://echarts.apache.org/examples/en/editor.html?c=geo-svg-scatter-simple">SVG Scatter</a> |\n<a href="https://echarts.apache.org/examples/en/editor.html?c=geo-svg-lines">SVG Lines</a> |\n<a href="https://echarts.apache.org/examples/en/editor.html?c=geo-svg-traffic">SVG Traffic</a></p>\n<h2 id="basic-usage" tabindex="-1">Basic Usage</h2>\n<p>The usage of SVG base map is the same as the usage of <a href="https://echarts.apache.org/api.html#echarts.registerMap">GeoJSON</a>.</p>\n<p>If using it in <a href="https://echarts.apache.org/option.html#geo">geo coordinate system</a>:\n<md-code-block lang="ts" code="\'JC5nZXQoJ21hcC9vcmdhbi5zdmcnLCBmdW5jdGlvbiAoc3ZnKSB7CiAgICAvLyBGaXJzdGx5IHdlIG5lZWQgdG8gcmVnaXN0ZXIgU1ZHIHJhdyBzdHJpbmcgb3IgcGFyc2VkIFNWRyBET00KICAgIC8vIHRvIGVjaGFydHMgd2l0aCBhIG5hbWU6CiAgICBlY2hhcnRzLnJlZ2lzdGVyTWFwKCdvcmdhbl9kaWFncmFtJywge3N2Zzogc3ZnfSk7CgogICAgdmFyIGNoYXJ0ID0gZWNoYXJ0cy5pbml0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYWluJykpOwogICAgY2hhcnQuc2V0T3B0aW9uKHsKICAgICAgICBnZW86IHsKICAgICAgICAgICAgLy8gUmVmZXJlbmNlIGl0IGluIGVjaGFydHMgb3B0aW9uLgogICAgICAgICAgICBtYXA6ICdvcmdhbl9kaWFncmFtJywKICAgICAgICAgICAgLi4uCiAgICAgICAgfQogICAgfSk7Cn0pOw\'" line-highlights="\'\'" /></p>\n<p>If using it in <a href="https://echarts.apache.org/option.html#series-map">map series</a>:\n<md-code-block lang="ts" code="\'JC5nZXQoJ21hcC9iZWVmX2N1dHMuc3ZnJywgZnVuY3Rpb24gKHN2ZykgewogICAgLy8gRmlyc3RseSB3ZSBuZWVkIHRvIHJlZ2lzdGVyIFNWRyByYXcgc3RyaW5nIG9yIHBhcnNlZCBTVkcgRE9NCiAgICAvLyB0byBlY2hhcnRzIHdpdGggYSBuYW1lOgogICAgZWNoYXJ0cy5yZWdpc3Rlck1hcCgnYmVlZl9jdXRzX2RpYWdyYW0nLCB7c3ZnOiBzdmd9KTsKCiAgICB2YXIgY2hhcnQgPSBlY2hhcnRzLmluaXQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21haW4nKSk7CiAgICBjaGFydC5zZXRPcHRpb24oewogICAgICAgIHNlcmllczogewogICAgICAgICAgICB0eXBlOiAnbWFwJywKICAgICAgICAgICAgLy8gUmVmZXJlbmNlIGl0IGluIGVjaGFydHMgb3B0aW9uLgogICAgICAgICAgICBtYXA6ICdiZWVmX2N1dHNfZGlhZ3JhbScsCiAgICAgICAgICAgIC4uLgogICAgICAgIH0KICAgIH0pOwp9KTs\'" line-highlights="\'\'" /></p>\n<h2 id="zoom-and-pan" tabindex="-1">Zoom and Pan</h2>\n<p>For <a href="https://echarts.apache.org/option.html#geo">Geo coordinate system</a>\n<md-code-block lang="ts" code="\'b3B0aW9uID0gewogICAgZ2VvOiB7CiAgICAgICAgLy8gRW5hYmxlIHpvb20gYW5kIHBhbi4KICAgICAgICByb2FtOiB0cnVlLAogICAgICAgIC4uLgogICAgfQp9Ow\'" line-highlights="\'\'" />\nFor <a href="https://echarts.apache.org/option.html#series-map">map series</a>\n<md-code-block lang="ts" code="\'b3B0aW9uID0gewogICAgc2VyaWVzOiB7CiAgICAgICAgdHlwZTogJ21hcCcsCiAgICAgICAgLy8gRW5hYmxlIHpvb20gYW5kIHBhbi4KICAgICAgICByb2FtOiB0cnVlLAogICAgICAgIC4uLgogICAgfQp9Ow\'" line-highlights="\'\'" /></p>\n<p>See <a href="https://echarts.apache.org/option.html#geo.roam">roam</a>.\nSee also example <a href="https://echarts.apache.org/examples/en/editor.html?c=geo-svg-map">SVG Map</a>.</p>\n<h2 id="named-element" tabindex="-1">Named Element</h2>\n<p>If intending to interact with some elements of SVG, we need to mark those elements in SVG firstly. That can be done simply by adding names to the target elements. The interaction related feature like <a href="https://echarts.apache.org/option.html#geo.select">select</a>, <a href="https://echarts.apache.org/option.html#geo.emphasis">emphasis</a>, <a href="https://echarts.apache.org/option.html#geo.emphasis.focus">focus-blur</a>, <a href="https://echarts.apache.org/option.html#geo.label">label</a>, <a href="https://echarts.apache.org/option.html#series-map.labelLayout">labelLayout</a>, <a href="https://echarts.apache.org/option.html#geo.tooltip">tooltip</a> depend on those named elements.</p>\n<p>For example, we add name attribute <code>name=&quot;named_rect&quot;</code> only to the left SVG <code>path</code>.\n<md-code-block lang="xml" code="\'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMiIgZmlsbC1ydWxlPSJldmVub2RkIiB4bWw6c3BhY2U9InByZXNlcnZlIj4KICAgIDxwYXRoIG5hbWU9Im5hbWVkX3JlY3QiIGQ9Ik0gMCwwIEwgMCwxMDAgMTAwLDEwMCAxMDAsMCBaIiBmaWxsPSIjNzY1IiAvPgogICAgPHBhdGggZD0iTSAxNTAsMCBMIDE1MCwxMDAgMjUwLDEwMCAyNTAsMCBaIiBmaWxsPSIjNTY3IiAvPgo8L3N2Zz4\'" line-highlights="\'\'" />\nThen hover on the left rect, it can be highlighted, whereas the right one can not.</p>\n<p><md-example src="doc-example/geo-svg-named-basic" width="100%" height="200"></md-example></p>\n<p>Option for some certain named elements can be specified in <a href="https://echarts.apache.org/option.html#geo.regions">geo.regions</a>, like:\n<md-code-block lang="ts" code="\'b3B0aW9uID0gewogICAgZ2VvOiB7CiAgICAgICAgbWFwOiAnc29tZV9zdmcnLAogICAgICAgIHJlZ2lvbnM6IFt7CiAgICAgICAgICAgIG5hbWU6ICdlbGVtZW50X25hbWVfMScsCiAgICAgICAgICAgIGl0ZW1TdHlsZTogeyAuLi4gfQogICAgICAgIH0sIHsKICAgICAgICAgICAgbmFtZTogJ2VsZW1lbnRfbmFtZV8yJywKICAgICAgICAgICAgaXRlbVN0eWxlOiB7IC4uLiB9CiAgICAgICAgfV0KICAgIH0KfTs\'" line-highlights="\'\'" /></p>\n<p>Note:</p>\n<ul>\n<li>These SVG elements can be named and recognized by ECharts:\n<code>rect</code>, <code>circle</code>, <code>line</code>, <code>ellipse</code>, <code>polygon</code>, <code>polyline</code>, <code>path</code>, <code>text</code>, <code>tspan</code>, <code>g</code>.</li>\n<li>It is supported that multiple elements are named with the same name, will they will be highlighted/selected together.</li>\n</ul>\n<h2 id="style-customization" tabindex="-1">Style Customization</h2>\n<p>Although the style (such as color, font, lineWidth, ...) of SVG Elements can be defined directly in SVG file, style of named elements can also be customized in ECharts option, which will be handy in some scenario.</p>\n<p>Styles can be specified in <a href="https://echarts.apache.org/option.html#geo.itemStyle">geo.itemStyle</a> and <a href="https://echarts.apache.org/option.html#series-map.itemStyle">series-map.itemStyle</a> (also includes <code>emphasis.itemStyle</code>, <code>select.itemStyle</code>, <code>blur.itemStyle</code>, <code>regions[i].itemStyle</code>, <code>regions[i].emphasis.itemStyle</code>, <code>regions[i].select.itemStyle</code>, <code>regions[i].blur.itemStyle</code>). Some default style of the named elements can also be removed here (e.g., set <code>emphasis.itemStyle.color: null</code> to prevent the fill color from changing when mouse hovering.)</p>\n<p>Moreover, named elements can also be styled by <a href="https://echarts.apache.org/option.html#visualMap">visualMap component</a> if using <a href="https://echarts.apache.org/option.html#series-map">series-map</a>. See <a href="https://echarts.apache.org/examples/en/editor.html?c=geo-beef-cuts">Beef Cuts</a>.</p>\n<p>Note:\nOnly these named elements can be styled in <code>itemStyle</code>:\n<code>rect</code>, <code>circle</code>, <code>line</code>, <code>ellipse</code>, <code>polygon</code>, <code>polyline</code>, <code>path</code>.</p>\n<h2 id="select" tabindex="-1">Select</h2>\n<p>Named elements can adopt &quot;select&quot; feature by setting <a href="https://echarts.apache.org/option.html#geo.selectedMode">geo.selectedMode</a> or <a href="https://echarts.apache.org/option.html#series-map.selectedMode">series-map.selectedMode</a> as <code>\'single\'</code> or <code>\'multiple\'</code>. The style of element when selected can be specified in <a href="https://echarts.apache.org/option.html#geo.select">geo.select</a> or <a href="https://echarts.apache.org/option.html#series-map.select">series-map.select</a>.</p>\n<p>The selected names can be obtained by <a href="https://echarts.apache.org/api.html#event.geoselectchanged">geoselectchanged</a> event, like:\n<md-code-block lang="ts" code="\'bXlDaGFydC5vbignZ2Vvc2VsZWN0Y2hhbmdlZCcsIGZ1bmN0aW9uIChwYXJhbXMpIHsKICAgIHZhciBzZWxlY3RlZE5hbWVzID0gcGFyYW1zLmFsbFNlbGVjdGVkWzBdLm5hbWU7CiAgICBjb25zb2xlLmxvZygnc2VsZWN0ZWQnLCBzZWxlY3RlZE5hbWVzKTsKfSk7\'" line-highlights="\'\'" /></p>\n<p>See <a href="https://echarts.apache.org/examples/en/editor.html?c=geo-seatmap-flight">Flight Seatmap</a> for more details.</p>\n<h2 id="emphasis-and-focus-blur" tabindex="-1">Emphasis and Focus-Blur</h2>\n<p><code>emphasis</code> state (highlight when hovering) can be auto adopted to named elements.</p>\n<p>Especially, <a href="https://echarts.apache.org/option.html#geo.emphasis.focus">geo.emphasis.focus</a> and be set as <code>\'self\'</code> to enable &quot;focus-blur&quot; feature, where all all of the other elements will be blurred when hovering on an named element.</p>\n<p>See <a href="https://echarts.apache.org/examples/en/editor.html?c=geo-organ">Organ Visualization</a> for more details.</p>\n<h2 id="tooltip" tabindex="-1">Tooltip</h2>\n<p>Tooltip can be enabled or disabled on named elements.\n<md-code-block lang="ts" code="\'b3B0aW9uID0gewogICAgLy8gTmVlZCB0byBkZWNsYXJlIHRoZSByb290IHRvb2x0aXAgdG8KICAgIC8vIGVuYWJsZSB0b29sdGlwIGZlYXR1cmUgb24gRUNoYXJ0cy4KICAgIHRvb2x0aXA6IHt9LAogICAgZ2VvOiB7CiAgICAgICAgbWFwOiAnc29tZV9zdmcnLAogICAgICAgIHRvb2x0aXA6IHsKICAgICAgICAgICAgLy8gVXNlIGBzaG93YCB0byBlbmFibGUvZGlzYWJsZSB0b29sdGlwCiAgICAgICAgICAgIC8vIG9uIGdlbyBjb29yZGluYXRlIHN5c3RlbS4KICAgICAgICAgICAgc2hvdzogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgcmVnaW9uczogW3sKICAgICAgICAgICAgbmFtZTogJ3NvbWVfbmFtZTEnLAogICAgICAgICAgICAvLyBTZXQgbmFtZWQgZWxlbWVudCBzcGVjaWZpZWQgdG9vbHRpcCBvcHRpb24gaWYgbmVlZGVkLgogICAgICAgICAgICB0b29sdGlwOiB7CiAgICAgICAgICAgICAgICBmb3JtYXR0ZXI6ICdzb21lIHNwZWNpYWwgdG9vbHRpcCAxJwogICAgICAgICAgICB9CiAgICAgICAgfSwgewogICAgICAgICAgICBuYW1lOiAnc29tZV9uYW1lMicsCiAgICAgICAgICAgIHRvb2x0aXA6IHsKICAgICAgICAgICAgICAgIGZvcm1hdHRlcjogJ3NvbWUgc3BlY2lhbCB0b29sdGlwIDInCiAgICAgICAgICAgIH0KICAgICAgICB9XQogICAgfQp9Ow\'" line-highlights="\'\'" /></p>\n<p>If intending to disable the geo tooltip when hovering a on named elements, just:\n<md-code-block lang="ts" code="\'b3B0aW9uID0gewogICAgdG9vbHRpcDoge30sCiAgICBnZW86IHsKICAgICAgICBtYXA6ICdzb21lX3N2ZycsCiAgICAgICAgdG9vbHRpcDogewogICAgICAgICAgICBzaG93OiBmYWxzZQogICAgICAgIH0KICAgIH0KfTs\'" line-highlights="\'\'" /></p>\n<p>See <a href="https://echarts.apache.org/examples/en/editor.html?c=geo-svg-map">SVG Map</a> for more details.</p>\n<h2 id="label" tabindex="-1">Label</h2>\n<p>Although text label can be declared in SVG file directly via <code>&lt;text&gt;</code>/<code>&lt;tspan&gt;</code>, we can also use ECharts built-in label feature on named elements by specifying <a href="https://echarts.apache.org/option.html#geo.label">geo.label</a> or <a href="https://echarts.apache.org/option.html#series-map.label">series-map.label</a>.</p>\n<p>By default the label feature is enabled when hovering on a named element. If intending to disable it, just:\n<md-code-block lang="ts" code="\'b3B0aW9uID0gewogICAgZ2VvOiB7CiAgICAgICAgbWFwOiAnc29tZV9zdmcnLAogICAgICAgIGVtcGhhc2lzOiB7CiAgICAgICAgICAgIGxhYmVsOiB7CiAgICAgICAgICAgICAgICBzaG93OiBmYWxzZQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9Ow\'" line-highlights="\'\'" /></p>\n<p>When multiple elements need to share one label text, we have two choices:</p>\n<ul>\n<li>Wrap those elements in a named <code>&lt;g&gt;</code> (e.g., <code>&lt;g name=&quot;name_a&quot;&gt;</code>), where a single label will be displayed and located based on the bounding rect of the <code>&lt;g&gt;</code>.</li>\n<li>Name those elements with the same name (e.g., <code>&lt;path name=&quot;name_b&quot;/&gt;&lt;path name=&quot;name_b&quot;/&gt;</code>), where multiple labels will be displayed and located based on each elements self.</li>\n</ul>\n<p>For example (hover to show the labels):\n<md-example src="doc-example/geo-svg-label-basic" width="100%" height="300"></md-example></p>\n<p>Note: Only these named elements can be labeled via <code>label</code> option:\n<code>rect</code>, <code>circle</code>, <code>line</code>, <code>ellipse</code>, <code>polygon</code>, <code>polyline</code>, <code>path</code>, <code>g</code>.</p>\n<p>See also <a href="https://echarts.apache.org/examples/en/editor.html?c=geo-organ">Organ Visualization</a> for the usage of label.</p>\n<h2 id="events" tabindex="-1">Events</h2>\n<p>Mouse events or touch events of named elements can be listened simply by:\n<md-code-block lang="ts" code="\'Ly8gJ25hbWUxJyBpcyBhIG5hbWUgb2YgYSBTVkcgZWxlbWVudC4KbXlDaGFydC5vbignY2xpY2snLCB7IGdlb0luZGV4OiAwLCBuYW1lOiAnbmFtZTEnIH0sIGZ1bmN0aW9uIChwYXJhbXMpIHsKICAgIGNvbnNvbGUubG9nKHBhcmFtcyk7Cn0pOw\'" line-highlights="\'\'" /></p>\n<h2 id="layout-of-svg-base-map" tabindex="-1">Layout of SVG Base Map</h2>\n<p>By default ECharts will position the SVG base map in the center of the canvas. If need some adjust, we usually only adjust <a href="https://echarts.apache.org/option.html#geo.layoutCenter">layoutCenter</a>/<a href="https://echarts.apache.org/option.html#geo.layoutSize">layoutSize</a>, and occasionally <code>&lt;svg viewBox=&quot;...&quot;&gt;</code>/<a href="https://echarts.apache.org/option.html#geo.boundingCoords">geo.boundingCoords</a> (difference: clip or not). In most cases they are enough.</p>\n<p>If need some advanced precise control of the position and zoom, several concepts below can be noticed.</p>\n<p>The layout rule and options of <a href="https://echarts.apache.org/option.html#geo">geo coordinate system</a> and <a href="https://echarts.apache.org/option.html#series-map">map series</a> are the same. So we only demonstrate <a href="https://echarts.apache.org/option.html#geo">geo coordinate system</a> below.</p>\n<p><md-example src="doc-example/geo-svg-layout-basic" width="100%" height="600"></md-example></p>\n<p>The demo above shows six <a href="https://echarts.apache.org/option.html#geo">geo coordinate system</a> with three SVG files in a single ECharts canvas. Each two <a href="https://echarts.apache.org/option.html#geo">geo</a> that are in the same column use the same SVG file.</p>\n<p>Firstly, what shapes looks like is determined by SVG file itself. That is, in the demo above, determined by the <code>&lt;circle&gt;</code> and <code>viewBox</code> attribute (<code>viewBox</code> cut (clips) the circle). We can noticed that the final shape outlines in each column are the same (despite the difference in position, size and scratch), since they use the same SVG file.</p>\n<p>Secondly, users can use either of the two option groups below to determine the location and the size of the <code>geo view port</code> of <a href="https://echarts.apache.org/option.html#geo">geo coordinate system</a> according to the entire chart canvas (all of these options are measured in echarts canvas pixel, or percentage value):</p>\n<ul>\n<li><a href="https://echarts.apache.org/option.html#geo.layoutCenter">layoutCenter</a>, <a href="https://echarts.apache.org/option.html#geo.layoutSize">layoutSize</a> (recommended).</li>\n<li><a href="https://echarts.apache.org/option.html#geo.top">top</a>, <a href="https://echarts.apache.org/option.html#geo.right">right</a>, <a href="https://echarts.apache.org/option.html#geo.bottom">bottom</a>, <a href="https://echarts.apache.org/option.html#geo.left">left</a> (which is used in the demo above).</li>\n</ul>\n<p>In the demo above, the six geo <code>geo view ports</code> are displayed as six black squares.</p>\n<p>Thirdly, a <code>bounding rect</code> of the SVG is determined, which is determined by methods below (all of them are measured in SVG local unit):</p>\n<ol>\n<li>If <a href="https://echarts.apache.org/option.html#geo.boundingCoords">geo.boundingCoords</a> is specified, use it as <code>bounding rect</code>.</li>\n<li>Else if <code>&lt;svg width=&quot;...&quot; height=&quot;...&quot;&gt;</code> is specified, use <code>[0, 0, width, height]</code> as <code>bounding rect</code>. (If only <code>width</code> or only <code>height</code> is specified, only use <code>[0, width]</code> or <code>[0, height]</code>).</li>\n<li>Else if <code>svg viewBox=&quot;...&quot;&gt;</code> is specified, use <code>viewBox</code> as <code>bounding rect</code>.</li>\n<li>Else use the union bounding rect of all of the SVG elements as the <code>bounding rect</code>.</li>\n<li>If <a href="https://echarts.apache.org/option.html#geo.center">geo.center</a> or <a href="https://echarts.apache.org/option.html#geo.zoom">geo.zoom</a> is specified, transform the <code>bounding rect</code> determined by <code>1~4</code> above.</li>\n</ol>\n<p>Having <code>bounding rect</code> determined, it will be placed into its corresponding <code>geo view port</code>:</p>\n<ul>\n<li>If <a href="https://echarts.apache.org/option.html#geo.layoutCenter">layoutCenter</a>, <a href="https://echarts.apache.org/option.html#geo.layoutSize">layoutSize</a> is used, the <code>bounding rect</code> will be placed at the center and as big as possible into the <code>geo view port</code> (keep aspect ratio).</li>\n<li>If <a href="https://echarts.apache.org/option.html#geo.top">top</a>, <a href="https://echarts.apache.org/option.html#geo.right">right</a>, <a href="https://echarts.apache.org/option.html#geo.bottom">bottom</a>, <a href="https://echarts.apache.org/option.html#geo.left">left</a> is used, the view rect will be stretched to fill the <code>geo view port</code> entirely.</li>\n</ul>\n<h2 id="place-series-on-svg-base-map" tabindex="-1">Place Series on SVG Base Map</h2>\n<p>Series like <a href="https://echarts.apache.org/option.html#series-scatter">scatter</a>, <a href="https://echarts.apache.org/option.html#series-effectScatter">effectScatter</a>, <a href="https://echarts.apache.org/option.html#series-lines">lines</a>, <a href="https://echarts.apache.org/option.html#series-custom">custom</a> that are available on <a href="https://echarts.apache.org/option.html#geo">geo coordinate system</a> can also be positioned and displayed on SVG base map.</p>\n<p>Note that in this kind of usage the unit of series data value is the SVG file local coords. For example:\n<md-code-block lang="ts" code="\'b3B0aW9uID0gewogICAgZ2VvOiB7CiAgICAgICAgbWFwOiAnc29tZV9zdmcnCiAgICB9LAogICAgc2VyaWVzOiB7CiAgICAgICAgdHlwZTogJ2VmZmVjdFNjYXR0ZXInLAogICAgICAgIGNvb3JkaW5hdGVTeXN0ZW06ICdnZW8nLAogICAgICAgIGdlb0luZGV4OiAwLAogICAgICAgIGRhdGE6IFsKICAgICAgICAgICAgLy8gU1ZHIGxvY2FsIGNvb3Jkcy4KICAgICAgICAgICAgWzQ4OC4yMzU4NDIxMDc4MDUzLCA0NTkuNzA5MTM4MzMwNzU3MzZdLAogICAgICAgICAgICBbNzcwLjM0MTU2NDQzMTk5MzksIDc1Ny45NjcyMTk0OTg2NDc1XSwKICAgICAgICAgICAgWzExODAuMDMyOTI4NDE5NjI5MSwgNzQzLjYxNDE4MDgzNDYyMTRdLAogICAgICAgIF0KICAgIH0KfTs\'" line-highlights="\'\'" /></p>\n<p>By the way, there is a simple approach to get SVG local coord:\n<md-code-block lang="ts" code="\'bXlDaGFydC5zZXRPcHRpb24oewogICAgZ2VvOiB7CiAgICAgICAgbWFwOiAnc29tZV9zdmcnCiAgICB9Cn0pOwpteUNoYXJ0LmdldFpyKCkub24oJ2NsaWNrJywgZnVuY3Rpb24gKHBhcmFtcykgewogICAgdmFyIHBpeGVsUG9pbnQgPSBbcGFyYW1zLm9mZnNldFgsIHBhcmFtcy5vZmZzZXRZXTsKICAgIHZhciBkYXRhUG9pbnQgPSBteUNoYXJ0LmNvbnZlcnRGcm9tUGl4ZWwoeyBnZW9JbmRleDogMCB9LCBwaXhlbFBvaW50KTsKICAgIC8vIFdoZW4gY2xpY2ssIHRoZSBkYXRhIGluIFNWRyBsb2NhbCBjb29yZHMgd2lsbCBiZSBwcmludGVkLAogICAgLy8gd2hpY2ggY2FuIGJlIHVzZWQgaW4gYHNlcmllcy5kYXRhYC4KICAgIGNvbnNvbGUubG9nKGRhdGFQb2ludCk7Cn0pOw\'" line-highlights="\'\'" /></p>\n<p>See also <a href="https://echarts.apache.org/examples/en/editor.html?c=geo-svg-scatter-simple">SVG Scatter</a>, <a href="https://echarts.apache.org/examples/en/editor.html?c=geo-svg-lines">SVG Lines</a>, <a href="https://echarts.apache.org/examples/en/editor.html?c=geo-traffic">SVG Traffic</a>.</p>\n<h2 id="unsupported-svg-features" tabindex="-1">Unsupported SVG features</h2>\n<p>Unfortunately it is difficult to implement a complete SVG parser. While the common SVG features are supported, at least these features listed below are not supported yet:</p>\n<ul>\n<li>Flip and skew (will be supported <code>v5.1.2</code>):\n<ul>\n<li>Not support <code>transform: skew(...)</code> (including <code>transform: matrix(...)</code> that includes skew).</li>\n<li>Not support <code>transform: scale(x, y)</code> that <code>x</code>, <code>y</code> has different sign while has <code>rotate</code> (e.g., <code>scale: (1, -1), rotate(90)</code>).</li>\n</ul>\n</li>\n<li>Standalone <code>&lt;style&gt;</code> tag is not supported.\n<ul>\n<li>But inline style is supported (e.g., <code>&lt;path style=&quot;color:red&quot; /&gt;</code>).</li>\n</ul>\n</li>\n<li>Unit:\n<ul>\n<li>Only <code>px</code> is supported. Other unit like <code>width=&quot;231.65mm&quot;</code> is not supported.</li>\n<li>Percentage value like <code>&lt;svg width=&quot;30%&quot; height=&quot;40%&quot;&gt;</code> is not supported.</li>\n</ul>\n</li>\n<li><code>&lt;defs&gt;</code> tag:\n<ul>\n<li>Only <code>&lt;linearGradient&gt;</code>, <code>&lt;radialGradient&gt;</code> are supported.</li>\n<li>other elements (e.g., <code>&lt;pattern&gt;</code>, <code>&lt;path&gt;</code>, ...) defined in <code>&lt;defs&gt;</code> are not supported yet.</li>\n</ul>\n</li>\n<li><code>&lt;linearGradient&gt;</code>, <code>&lt;radialGradient&gt;</code>:\n<ul>\n<li><code>fx</code>, <code>fy</code> is not supported.</li>\n<li><code>gradientTransform</code> attribute is not supported.</li>\n</ul>\n</li>\n<li><code>fill:url(...)</code>, <code>stroke:utl(...)</code>:\n<ul>\n<li>Only <code>url(#someId)</code> is supported.</li>\n<li>Other URL patterns are not supported. e.g.,\n<ul>\n<li><code>url(https://example.com/images/myImg.jpg)</code>;</li>\n<li><code>url(data:image/png;base64,iRxVB0…)</code>;</li>\n<li><code>url(myFont.woff)</code>;</li>\n</ul>\n</li>\n</ul>\n</li>\n<li><code>&lt;switch&gt;</code> tag:\n<ul>\n<li>All the content inside <code>&lt;switch&gt;</code> tag will be displayed. The &quot;switch&quot; feature is not supported.</li>\n</ul>\n</li>\n<li><code>&lt;text&gt;</code>:\n<ul>\n<li><code>textPath</code> is not supported.</li>\n<li><a href="https://www.w3.org/TR/SVG/text.html#TermAddressableCharacter">Addressable character</a> is not supported. That is,</li>\n</ul>\n<pre><code class="language-xml">&lt;!-- Not supported: --&gt;\n&lt;tspan x=&quot;0 4.94 9.89&quot;&gt;abc&lt;/tspan&gt;\n&lt;!-- Supported: --&gt;\n&lt;tspan x=&quot;0&quot;&gt;a&lt;/tspan&gt;\n&lt;tspan x=&quot;4.94&quot;&gt;b&lt;/tspan&gt;\n&lt;tspan x=&quot;9.89&quot;&gt;c&lt;/tspan&gt;\n</code></pre>\n</li>\n</ul>\n',postPath:"en/how-to/component-types/geo/svg-base-map",title:"SVG Base Map - Geo - Common Components - How To Guides"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:o},{title:"入门篇",dir:i,children:[{title:"获取 ECharts",dir:l},{title:"在项目中引入 ECharts",dir:s},{title:"资源列表",dir:r,draft:e},{title:"寻求帮助",dir:n},{title:"版本特性",dir:d,children:[{title:"ECharts 6 特性介绍",dir:h},{title:"v5 升级 v6 指南",dir:c},{title:"5.0",dir:g},{title:"v4 升级 v5 指南",dir:p},{title:5.2,dir:m},{title:5.3,dir:I},{title:5.4,dir:C},{title:5.5,dir:b},{title:5.6,dir:u}]}]},{title:"概念篇",dir:A,children:[{title:"图表容器及大小",dir:f},{title:"配置项",dir:y,draft:e},{title:"系列",dir:w,draft:e},{title:"样式",dir:v},{title:"数据集",dir:G},{title:"数据转换",dir:B},{title:"坐标系",dir:S,draft:e},{title:"坐标轴",dir:V},{title:"视觉映射",dir:a},{title:"图例",dir:Z},{title:"事件与行为",dir:W}]},{title:"应用篇",dir:x,children:[{title:"常用图表类型",dir:z,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:N},{title:"堆叠柱状图",dir:H},{title:"动态排序柱状图",dir:k},{title:"极坐标系柱状图",dir:L,draft:e},{title:"阶梯瀑布图",dir:Y},{title:"视觉映射的柱状图",dir:a,draft:e}]},{title:"折线图",dir:R,children:[{title:"基础折线图",dir:M},{title:"堆叠折线图",dir:T},{title:"区域面积图",dir:F},{title:"平滑曲线图",dir:X},{title:"阶梯线图",dir:O}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:J},{title:"圆环图",dir:K},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:D,children:[{title:"基础散点图",dir:E}]}]},{title:"常用组件",dir:q,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:P}]}]},{title:"移动端优化",dir:t,draft:e},{title:"跨平台方案",dir:U,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:Q},{title:"数据下钻",dir:j,draft:e}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:_}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:ee}]},{title:"交互",dir:te,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:ae,draft:e},{title:"智能指针吸附",dir:oe}]}]},{title:"最佳实践",dir:ie,children:[{title:"移动端优化",dir:t,draft:e},{title:le,dir:se},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:re}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:ne}]}],en:[{title:"Get Started",dir:o},{title:"Basics",dir:i,children:[{title:"Download ECharts",dir:l},{title:"Import ECharts",dir:s},{title:"Resources",dir:r,draft:e},{title:"Get Help",dir:n},{title:"What's New",dir:d,children:[{title:"ECharts 6 Features",dir:h},{title:"Migration from v5 to v6",dir:c},{title:"5.0",dir:g},{title:"Migration from v4 to v5",dir:p},{title:5.2,dir:m},{title:5.3,dir:I},{title:5.4,dir:C},{title:5.5,dir:b},{title:5.6,dir:u}]}]},{title:"Concepts",dir:A,children:[{title:"Chart Container",dir:f},{title:"Chart Option",dir:y,draft:e},{title:"Series",dir:w,draft:e},{title:"Style",dir:v},{title:"Dataset",dir:G},{title:"Data Transform",dir:B},{title:"Coordinate",dir:S,draft:e},{title:"Axis",dir:V},{title:"Visual Mapping",dir:a},{title:"Legend",dir:Z},{title:"Event and Action",dir:W}]},{title:"How To Guides",dir:x,children:[{title:"Common Charts",dir:z,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:N},{title:"Stacked Bar",dir:H},{title:"Bar Racing",dir:k},{title:"Bar Polar",dir:L,draft:e},{title:"Waterfall",dir:Y}]},{title:"Line",dir:R,children:[{title:"Basic Line",dir:M},{title:"Stacked Line",dir:T},{title:"Area Chart",dir:F},{title:"Smoothed Line",dir:X},{title:"Step Line",dir:O}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:J},{title:"Ring Style",dir:K},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:D,children:[{title:"Basic Scatter",dir:E}]}]},{title:"Common Components",dir:q,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:P}]}]},{title:"Mobile",dir:t,draft:e},{title:"Cross Platform",dir:U,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:Q},{title:"Drilldown",dir:j,draft:e}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:_}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:ee}]},{title:"Interaction",dir:te,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:ae,draft:e},{title:"Intelligent Pointer Snapping",dir:oe}]}]},{title:"Best Practices",dir:ie,children:[{title:"Mobile Optimization",dir:t,draft:e},{title:le,dir:se},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:re}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:ne}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:e,routePath:"/en/how-to/component-types/geo/svg-base-map",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/en/how-to/cross-platform/server/index.html b/docs/en/how-to/cross-platform/server/index.html
new file mode 100644
index 0000000..623004c
--- /dev/null
+++ b/docs/en/how-to/cross-platform/server/index.html
@@ -0,0 +1,134 @@
+<!doctype html>
+<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Server Side Rendering - Cross Platform - How To Guides - Handbook - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="en"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/en/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/en/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/en/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/en/index.html" class="navbar-brand"><img src="https://echarts.apache.org/en/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/en/index.html">Home</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Docs<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/feature.html">Features</a></li><li><a href="https://echarts.apache.org/handbook/en/get-started/">Handbook</a></li><li><a href="https://echarts.apache.org/en/api.html">API</a></li><li><a href="https://echarts.apache.org/en/option.html">Chart Configuration</a></li><li><a href="https://echarts.apache.org/en/changelog.html">Changelog</a></li><li><a href="https://echarts.apache.org/en/faq.html">FAQ</a></li><li><a href="https://echarts.apache.org/handbook/en/basics/release-note/v6-upgrade-guide">V6 Upgrade Guide</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Download<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/download.html">Download</a></li><li><a href="https://echarts.apache.org/en/download-theme.html">Download Themes</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">Download Custom Series<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/download-extension.html">Download Extensions</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/en/index.html">Examples</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Resources<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/spreadsheet.html">Spread Sheet Tool</a></li><li><a href="https://echarts.apache.org/en/theme-builder.html">Theme Builder</a></li><li><a href="https://echarts.apache.org/en/cheat-sheet.html">Cheat Sheet</a></li><li><a href="https://echarts.apache.org/en/resources.html">More Resources</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/events.html">Events</a></li><li><a href="https://echarts.apache.org/en/committers.html">Committers</a></li><li><a href="https://echarts.apache.org/en/maillist.html">Mailing List</a></li><li><a href="https://echarts.apache.org/en/contributing.html">How to Contribute</a></li><li><a href="https://echarts.apache.org/en/dependencies.html">Dependencies</a></li><li><a href="https://echarts.apache.org/en/coding-standard.html">Code Standard</a></li><li><a href="https://github.com/apache/echarts" target="_blank">Source Code (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/security.html">Security</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">License<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">Events<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("zh")'>中文</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/en/get-started" class="nav-link"><span class="title">Get Started</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Basics</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/basics/download" class="nav-link"><span class="title">Download ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/import" class="nav-link"><span class="title">Import ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/basics/help" class="nav-link"><span class="title">Get Help</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">What's New</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 Features</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">Migration from v5 to v6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">Migration from v4 to v5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Concepts</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/concepts/chart-size" class="nav-link"><span class="title">Chart Container</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/style" class="nav-link"><span class="title">Style</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/dataset" class="nav-link"><span class="title">Dataset</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/data-transform" class="nav-link"><span class="title">Data Transform</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/axis" class="nav-link"><span class="title">Axis</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/visual-map" class="nav-link"><span class="title">Visual Mapping</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/legend" class="nav-link"><span class="title">Legend</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/event" class="nav-link"><span class="title">Event and Action</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">How To Guides</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">Common Charts</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Bar</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">Basic Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">Stacked Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">Bar Racing</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">Waterfall</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Line</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">Basic Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">Stacked Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/area-line" class="nav-link"><span class="title">Area Chart</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">Smoothed Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/step-line" class="nav-link"><span class="title">Step Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Pie</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">Basic Pie</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">Ring Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/rose" class="nav-link"><span class="title">Rose Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Scatter</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">Basic Scatter</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Common Components</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Geo</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG Base Map</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">Cross Platform</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a href="/echarts-handbook/en/how-to/cross-platform/server" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">Server Side Rendering</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Data</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/data/dynamic-data" class="nav-link"><span class="title">Dynamic Data</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Label</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/label/rich-text" class="nav-link"><span class="title">Rich Text</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Animation</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/animation/transition" class="nav-link"><span class="title">Data Transition</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Interaction</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/drag" class="nav-link"><span class="title">Drag</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">Intelligent Pointer Snapping</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Best Practices</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/en/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/aria" class="nav-link"><span class="title">Aria</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/security" class="nav-link"><span class="title">Security Guidelines</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Edit Handbook</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/meta/edit-guide" class="nav-link"><span class="title">Edit Guide</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="server-side-rendering" tabindex="-1">Server-Side Rendering</h1> <p>Normally, Apache ECharts<sup>TM</sup> renders the chart dynamically in the browser and will re-render after user interactions. However, there are specific scenarios where we also need to render charts on the server side:</p> <ul><li>Reducing the FCP time and ensuring the chart is displayed immediately.</li> <li>Embedding charts in the environments such as Markdown, PDF that do not support scripts.</li></ul> <p>In these scenarios, ECharts offers both SVG and Canvas server-side rendering (SSR) solutions.</p> <table><thead><tr><th>Solution</th> <th>Rendering Result</th> <th>Pros</th></tr></thead> <tbody><tr><td>Server-Side SVG Rendering</td> <td>SVG string</td> <td>Smaller than Canvas images;<br>Vector SVG images are not blurred;<br>Support for initial animation</td></tr> <tr><td>Server-Side Canvas Rendering</td> <td>Image</td> <td>The image format is available for a wider range of scenarios, and is optional for scenarios that do not support SVG</td></tr></tbody></table> <p>In general, the server-side SVG rendering solution should be preferred, or if SVG is not applicable, the Canvas rendering solution can be considered.</p> <p>Server-side rendering also has some limitations, especially some operations related to interaction cannot be supported. Therefore, if you have interaction requirements, you can refer to "Server-Side Rendering with Hydration" below.</p> <h2 id="server-side-rendering-1" tabindex="-1">Server-Side Rendering</h2> <h3 id="server-side-svg-rendering" tabindex="-1">Server-Side SVG Rendering</h3> <blockquote><p>Version Update:</p> <ul><li>5.3.0: Introduced a new zero-dependency server-side string based SVG rendering solution, and support for initial animation</li> <li>5.5.0: Added a lightweight client runtime, which allows some interaction without the need to load the full ECharts on the client side</li></ul></blockquote> <p>We introduced a new zero-dependency server-side string based SVG rendering solution in 5.3.0.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code><span class="token comment">// Server-side code</span>
+<span class="token keyword">const</span> echarts <span class="token operator">=</span> <span class="token keyword">require</span><span class="token punctuation">(</span><span class="token string">'echarts'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+<span class="token comment">// In SSR mode the first container parameter is not required</span>
+<span class="token keyword">let</span> chart <span class="token operator">=</span> echarts<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span><span class="token keyword">null</span><span class="token punctuation">,</span> <span class="token keyword">null</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
+  renderer<span class="token operator">:</span> <span class="token string">'svg'</span><span class="token punctuation">,</span> <span class="token comment">// must use SVG rendering mode</span>
+  ssr<span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span> <span class="token comment">// enable SSR</span>
+  width<span class="token operator">:</span> <span class="token number">400</span><span class="token punctuation">,</span> <span class="token comment">// need to specify height and width</span>
+  height<span class="token operator">:</span> <span class="token number">300</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+<span class="token comment">// use setOption as normal</span>
+chart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+  <span class="token comment">//...</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+<span class="token comment">// Output a string</span>
+<span class="token keyword">const</span> svgStr <span class="token operator">=</span> chart<span class="token punctuation">.</span><span class="token function">renderToSVGString</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+<span class="token comment">// If chart is no longer useful, consider disposing it to release memory.</span>
+chart<span class="token punctuation">.</span><span class="token function">dispose</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+chart <span class="token operator">=</span> <span class="token keyword">null</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>The overall code structure is the almost same as in the browser, starting with <code>init</code> to initialise a chart example and then setting the configuration items for the chart via <code>setOption</code>. However, the parameters passed to <code>init</code> will be different from those used in the browser.</p> <ul><li>Firstly, since the SVG is rendered on the server side is string based, we don't need a container to display the rendered content, so we can pass <code>null</code> or <code>undefined</code> as the first <code>container</code> parameter in the <code>init</code>.</li> <li>Then in the third parameter of <code>init</code> we need to tell ECharts that we need to enable server-side rendering mode by specifying <code>ssr: true</code> in the display. Then ECharts will know it needs to disable the animation loop and event modules.</li> <li>We also have to specify the <code>height</code> and <code>width</code> of the chart, so if your chart size needs to be responsive to the container, you may need to think about whether server-side rendering is appropriate for your scenario.</li></ul> <p>In the browser ECharts automatically renders the result to the page after <code>setOption</code> and then determines at each frame if there is an animation that needs to be redrawn, but in Node.js we don't do this after setting <code>ssr: true</code>. Instead, we use <code>renderToSVGString</code> to render the current chart to an SVG string, which can then be returned to the front-end via HTTP Response or saved to a local file.</p> <p>Response to the browser (using Express.js as example):</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code>res<span class="token punctuation">.</span><span class="token function">writeHead</span><span class="token punctuation">(</span><span class="token number">200</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
+  <span class="token string-property property">'Content-Type'</span><span class="token operator">:</span> <span class="token string">'application/xml'</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+res<span class="token punctuation">.</span><span class="token function">write</span><span class="token punctuation">(</span>svgStr<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// svgStr is the result of chart.renderToSVGString()</span>
+res<span class="token punctuation">.</span><span class="token function">end</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>Or save to a local file</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code>fs<span class="token punctuation">.</span><span class="token function">writeFile</span><span class="token punctuation">(</span><span class="token string">'bar.svg'</span><span class="token punctuation">,</span> svgStr<span class="token punctuation">,</span> <span class="token string">'utf-8'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h4 id="animations-in-server-side-rendering" tabindex="-1">Animations in Server-Side Rendering</h4> <p>As you can see in the example above, even using server-side rendering, ECharts can still provide animation effects, which are achieved by embedding CSS animations in the output SVG string. There is no need for additional JavaScript to play the animation.</p> <p>However, the limitations of CSS animation prevent us from implementing more flexible animations in server-side rendering, such as bar chart racing animations, label animations, and special effects animations in the <code>lines</code> series. Animation of some of the series, such as the <code>pie</code>, have been specially optimised for server-side rendering.</p> <p>If you don't want this animation, you can turn it off by setting <code>animation: false</code> when <code>setOption</code>.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+  animation<span class="token operator">:</span> <span class="token boolean">false</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h3 id="server-side-canvas-rendering" tabindex="-1">Server-Side Canvas Rendering</h3> <p>If you want the output to be an image rather than an SVG string, or if you're still using an older version, we'd recommend using <a href="https://github.com/Automattic/node-canvas">node-canvas</a> for server-side rendering, <a href="https://github.com/Automattic/node-canvas">node-canvas</a> is Canvas implementations on Node.js that provide an interface that is almost identical to the Canvas in the browser.</p> <p>Here's a simple example</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code><span class="token keyword">var</span> echarts <span class="token operator">=</span> <span class="token keyword">require</span><span class="token punctuation">(</span><span class="token string">'echarts'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token keyword">const</span> <span class="token punctuation">{</span> createCanvas <span class="token punctuation">}</span> <span class="token operator">=</span> <span class="token keyword">require</span><span class="token punctuation">(</span><span class="token string">'canvas'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+<span class="token comment">// In versions earlier than 5.3.0, you had to register the canvas factory with setCanvasCreator.</span>
+<span class="token comment">// Not necessary since 5.3.0</span>
+echarts<span class="token punctuation">.</span><span class="token function">setCanvasCreator</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
+  <span class="token keyword">return</span> <span class="token function">createCanvas</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+<span class="token keyword">const</span> canvas <span class="token operator">=</span> <span class="token function">createCanvas</span><span class="token punctuation">(</span><span class="token number">800</span><span class="token punctuation">,</span> <span class="token number">600</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token comment">// ECharts can use the Canvas instance created by node-canvas as a container directly</span>
+<span class="token keyword">let</span> chart <span class="token operator">=</span> echarts<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span>canvas<span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+<span class="token comment">// setOption as normal</span>
+chart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+  <span class="token comment">//...</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+<span class="token keyword">const</span> buffer <span class="token operator">=</span> canvas<span class="token punctuation">.</span><span class="token function">toBuffer</span><span class="token punctuation">(</span><span class="token string">'image/png'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+<span class="token comment">// If chart is no longer useful, consider disposing it to release memory.</span>
+chart<span class="token punctuation">.</span><span class="token function">dispose</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+chart <span class="token operator">=</span> <span class="token keyword">null</span><span class="token punctuation">;</span>
+
+<span class="token comment">// Output the PNG image via Response</span>
+res<span class="token punctuation">.</span><span class="token function">writeHead</span><span class="token punctuation">(</span><span class="token number">200</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
+  <span class="token string-property property">'Content-Type'</span><span class="token operator">:</span> <span class="token string">'image/png'</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+res<span class="token punctuation">.</span><span class="token function">write</span><span class="token punctuation">(</span>buffer<span class="token punctuation">)</span><span class="token punctuation">;</span>
+res<span class="token punctuation">.</span><span class="token function">end</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h4 id="loading-of-images" tabindex="-1">Loading of images</h4> <p><a href="https://github.com/Automattic/node-canvas">node-canvas</a> provides an <code>Image</code> implementation for image loading. If you use to images in your code, we can adapt them using the <code>setPlatformAPI</code> interface that was introduced in <code>5.3.0</code>.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code>echarts<span class="token punctuation">.</span><span class="token function">setPlatformAPI</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+  <span class="token comment">// Same with the old setCanvasCreator</span>
+  <span class="token function">createCanvas</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+    <span class="token keyword">return</span> <span class="token function">createCanvas</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token function">loadImage</span><span class="token punctuation">(</span>src<span class="token punctuation">,</span> onload<span class="token punctuation">,</span> onerror<span class="token punctuation">)</span> <span class="token punctuation">{</span>
+    <span class="token keyword">const</span> img <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Image</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+    <span class="token comment">// must be bound to this context.</span>
+    img<span class="token punctuation">.</span>onload <span class="token operator">=</span> <span class="token function">onload</span><span class="token punctuation">.</span><span class="token function">bind</span><span class="token punctuation">(</span>img<span class="token punctuation">)</span><span class="token punctuation">;</span>
+    img<span class="token punctuation">.</span>onerror <span class="token operator">=</span> <span class="token function">onerror</span><span class="token punctuation">.</span><span class="token function">bind</span><span class="token punctuation">(</span>img<span class="token punctuation">)</span><span class="token punctuation">;</span>
+    img<span class="token punctuation">.</span>src <span class="token operator">=</span> src<span class="token punctuation">;</span>
+    <span class="token keyword">return</span> img<span class="token punctuation">;</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>If you are using images from remote, we recommend that you prefetch the image via an http request to get <code>base64</code> before passing it on as the URL of the image, to ensure that the image is loaded when render.</p> <h2 id="client-hydration" tabindex="-1">Client Hydration</h2> <h3 id="lazy-loading-full-echarts" tabindex="-1">Lazy-Loading Full ECharts</h3> <p>With the latest version of ECharts, the server-side rendering solution can do the following things along with rendering the chart:</p> <ul><li>Support for initial animation (i.e., the animation that is played when the chart is first rendered)</li> <li>Highlighting styles (i.e., the highlighting effect when the mouse moves over a bar in a bar chart)</li></ul> <p>But there are features that cannot be supported by server-side rendering:</p> <ul><li>Dynamically changing data</li> <li>Clicking on a legend to toggle whether the series is displayed or not</li> <li>Moving the mouse to show a tooltip</li> <li>Other interaction-related features</li></ul> <p>If you have such requirements, you can consider using server-side rendering to quickly output the first screen chart, then wait for <code>echarts.js</code> to finish loading and re-render the same chart on the client side, so that you can achieve normal interaction effects and dynamically change the data. Note that when rendering on the client side, you should turn on interactive components like <code>tooltip: { show: true }</code> and turn off the initial animation with <code>animation: 0</code> (the initial animation should be done by the SVG animation of the rendered result on the server side).</p> <p>As we can see, from the user experience point of view, there is almost no secondary rendering process, and the whole switching effect is very seamless. You can also use a library like <a href="https://www.npmjs.com/package/pace-js">pace-js</a> to display the loading progress bar during the loading of <code>echarts.js</code> as in the above example to solve the problem of no interactive feedback before the ECharts are fully loaded.</p> <p>Using server-side rendering with client-side rendering along with a lazy-loading <code>echarts.js</code> on the client side is a good solution for scenarios where the first screen needs to be rendered quickly and then the interaction needs to be supported. However, it takes some time to load the <code>echarts.js</code> and before it is fully loaded, there is no interactive feedback, in which case, a "Loading" text might be displayed to the user. This is a commonly recommended solution for scenarios where the first screen needs to be rendered quickly and then the interaction needs to be supported.</p> <h3 id="lightweight-client-runtime" tabindex="-1">Lightweight Client Runtime</h3> <p>Solution A provides a way for implementing complete interactions, but in some scenarios, we don't need complex interactions, we just hope to be able to perform some simple interactions on the client side based on server-side rendering, such as: clicking the legend to toggle whether the series is displayed. In this case, can we avoid loading at least a few hundred KBs of ECharts code on the client side?</p> <p>Starting from version v5.5.0, if the chart only needs the following effects and interactions, it can be achieved through server-side SVG rendering + client-side lightweight runtime:</p> <ul><li>Initial chart animation (implementation principle: the SVG rendered by the server comes with CSS animation)</li> <li>Highlight style (implementation principle: the SVG rendered by the server comes with CSS animation)</li> <li>Dynamically changing data (implementation principle: the lightweight runtime requests the server for secondary rendering)</li> <li>Click the legend to toggle whether the series is displayed (implementation principle: the lightweight runtime requests the server for secondary rendering)</li></ul> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-html line-numbers"><code><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>chart-container<span class="token punctuation">"</span></span> <span class="token special-attr"><span class="token attr-name">style</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token value css language-css"><span class="token property">width</span><span class="token punctuation">:</span>800px<span class="token punctuation">;</span><span class="token property">height</span><span class="token punctuation">:</span>600px</span><span class="token punctuation">"</span></span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">></span></span>
+
+<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://cdn.jsdelivr.net/npm/echarts/ssr/client/dist/index.min.js<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">></span></span>
+<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span><span class="token punctuation">></span></span>
+const ssrClient = window['echarts-ssr-client'];
+
+const isSeriesShown = {
+  a: true,
+  b: true
+};
+
+function updateChart(svgStr) {
+  const container = document.getElementById('chart-container');
+  container.innerHTML = svgStr;
+
+  // Use the lightweight runtime to give the chart interactive capabilities
+  ssrClient.hydrate(container, {
+    on: {
+      click: (params) => {
+        if (params.ssrType === 'legend') {
+          // Click the legend element, request the server for secondary rendering
+          isSeriesShown[params.seriesName] = !isSeriesShown[params.seriesName];
+          fetch('...?series=' + JSON.stringify(isSeriesShown))
+            .then(res => res.text())
+            .then(svgStr => {
+              updateChart(svgStr);
+            });
+        }
+      }
+    }
+  });
+}
+
+// Get the SVG string rendered by the server through an AJAX request
+fetch('...')
+  .then(res => res.text())
+  .then(svgStr => {
+    updateChart(svgStr);
+  });
+<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">></span></span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>The server side performs secondary rendering based on the information passed by the client about whether each series is displayed (<code>isSeriesShown</code>) and returns a new SVG string. The server-side code <a href="#server-side-svg-rendering">is the same as above</a>, and will not be repeated.</p> <blockquote><p>About state recording: Compared with pure client-side rendering, developers need to record and maintain some additional information (such as whether each series is displayed in this example). This is inevitable because HTTP requests are stateless. If you want to implement a state, either the client records the state and passes it like the above example, or the server retains the state (for example, through a session, but it requires more server memory and more complex destruction logic, so it is not recommended).</p></blockquote> <p>Using server-side SVG rendering plus client-side lightweight runtime, the advantage is that the client no longer needs to load hundreds of KBs of ECharts code, only needs to load a less than 4KB lightweight runtime code; and from the user experience, very little is sacrificed (supports initial animation, mouse highlighting). The disadvantage is that it requires a certain development cost to maintain additional state information, and it does not support interactions with high real-time requirements (such as displaying tooltips when moving the mouse). Overall, <strong>it is recommended to use it in environments with very strict requirements for code volume</strong>.</p> <h2 id="using-lightweight-runtime" tabindex="-1">Using Lightweight Runtime</h2> <p>The client-side lightweight runtime enables interaction with the SVG charts rendered by the server-side by understanding the content.</p> <p>The client-side lightweight runtime can be imported in the following ways:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-html line-numbers"><code><span class="token comment">&lt;!-- Method one: Using CDN --></span>
+<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://cdn.jsdelivr.net/npm/echarts/ssr/client/dist/index.min.js<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">></span></span>
+<span class="token comment">&lt;!-- Method two: Using NPM --></span>
+<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>node_modules/echarts/ssr/client/dist/index.js<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">></span></span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h3 id="api" tabindex="-1">API</h3> <p>The following APIs are provided in the global variable <code>window['echarts-ssr-client']</code>:</p> <h4 id="hydrate(dom--htmlelement%2C-options--ecssrclientoptions)" tabindex="-1">hydrate(dom: HTMLElement, options: ECSSRClientOptions)</h4> <ul><li><code>dom</code>: The chart container, the content of which should be set as the SVG chart rendered by the server-side before calling this method</li> <li><code>options</code>: Configuration items</li></ul> <h5 id="ecssrclientoptions" tabindex="-1">ECSSRClientOptions</h5> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code>on<span class="token operator">?</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+  mouseover<span class="token operator">?</span><span class="token operator">:</span> <span class="token punctuation">(</span>params<span class="token operator">:</span> ECSSRClientEventParams<span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token keyword">void</span><span class="token punctuation">,</span>
+  mouseout<span class="token operator">?</span><span class="token operator">:</span> <span class="token punctuation">(</span>params<span class="token operator">:</span> ECSSRClientEventParams<span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token keyword">void</span><span class="token punctuation">,</span>
+  click<span class="token operator">?</span><span class="token operator">:</span> <span class="token punctuation">(</span>params<span class="token operator">:</span> ECSSRClientEventParams<span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token keyword">void</span>
+<span class="token punctuation">}</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>Just like the <a href="https://echarts.apache.org/api.html#events.Mouse%20events">chart mouse events</a>, the events here are for the chart items (e.g., the bars of a bar chart, the data item of a line chart, etc.), not for the chart container.</p> <h5 id="ecssrclienteventparams" tabindex="-1">ECSSRClientEventParams</h5> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code><span class="token punctuation">{</span>
+  type<span class="token operator">:</span> <span class="token string">'mouseover'</span> <span class="token operator">|</span> <span class="token string">'mouseout'</span> <span class="token operator">|</span> <span class="token string">'click'</span><span class="token punctuation">;</span>
+  ssrType<span class="token operator">:</span> <span class="token string">'legend'</span> <span class="token operator">|</span> <span class="token string">'chart'</span><span class="token punctuation">;</span>
+  seriesIndex<span class="token operator">?</span><span class="token operator">:</span> <span class="token builtin">number</span><span class="token punctuation">;</span>
+  dataIndex<span class="token operator">?</span><span class="token operator">:</span> <span class="token builtin">number</span><span class="token punctuation">;</span>
+  event<span class="token operator">:</span> Event<span class="token punctuation">;</span>
+<span class="token punctuation">}</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <ul><li><code>type</code>: Event type</li> <li><code>ssrType</code>: Event object type, <code>legend</code> represents legend data, <code>chart</code> represents chart data object</li> <li><code>seriesIndex</code>: Series index</li> <li><code>dataIndex</code>: Data index</li> <li><code>event</code>: Native event object</li></ul> <h3 id="example" tabindex="-1">Example</h3> <p>See the "Lightweight Client Runtime" section above.</p> <h2 id="summary" tabindex="-1">Summary</h2> <p>Above, we introduced several different rendering solutions, including:</p> <ul><li>Client-side rendering</li> <li>Server-side SVG rendering</li> <li>Server-side Canvas rendering</li> <li>Client-side lightweight runtime rendering</li></ul> <p>These four rendering methods can be used in combination. Let's summarize their respective applicable scenarios:</p> <table><thead><tr><th>Rendering Solution</th> <th>Loading Volume</th> <th>Loss of Function and Interaction</th> <th>Relative Development Workload</th> <th>Recommended Scenario</th></tr></thead> <tbody><tr><td>Client-side rendering</td> <td>Largest</td> <td>None</td> <td>Minimum</td> <td>The first screen load time is not sensitive, and there is a high demand for complete functionality and interaction</td></tr> <tr><td>Client-side rendering (<a href="en/basics/import#shrinking-bundle-size">partial package importing</a> on demand)</td> <td>Large</td> <td>Large: the packages not included cannot use the corresponding functions</td> <td>Small</td> <td>The first screen load time is not sensitive, there is no strict requirement for code volume but hope to be as small as possible, only use a small part of ECharts functions, no server resources</td></tr> <tr><td>One-time server-side SVG rendering</td> <td>Small</td> <td>Large: unable to dynamically change data, does not support legend toggle series display, does not support tooltips and other interactions with high real-time requirements</td> <td>Medium</td> <td>The first screen load time is sensitive, low demand for complete functionality and interaction</td></tr> <tr><td>One-time server-side Canvas rendering</td> <td>Large</td> <td>Largest: the same as above and does not support initial animation, larger image volume, blurry when enlarged</td> <td>Medium</td> <td>The first screen load time is sensitive, low demand for complete functionality and interaction, platform restrictions cannot use SVG</td></tr> <tr><td>Server-side SVG rendering plus client-side ECharts lazy loading</td> <td>Small, then large</td> <td>Medium: cannot interact before lazy loading is completed</td> <td>Medium</td> <td>The first screen load time is sensitive, high demand for complete functionality and interaction, the chart is best not needed for interaction immediately after loading</td></tr> <tr><td>Server-side SVG rendering plus client-side lightweight runtime</td> <td>Small</td> <td>Medium: Cannot implement interactions with high real-time requirements</td> <td>Large (need to maintain chart status, define client-server interface protocol)</td> <td>The first screen load time is sensitive, low demand for complete functionality and interaction, very strict requirements for code volume, not strict requirements for interaction real-time</td></tr> <tr><td>Server-side SVG rendering plus client-side ECharts lazy loading, using lightweight runtime before lazy loading is completed</td> <td>Small, then large</td> <td>Small: Cannot perform complex interactions before lazy loading is completed</td> <td>Largest</td> <td>The first screen load time is sensitive, high demand for complete functionality and interaction, sufficient development time</td></tr></tbody></table> <p>Of course, there are some other combination possibilities, but the most common ones are the above. I believe that if you understand the characteristics of these rendering solutions, you can choose the appropriate solution based on your own scenario.</p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">Contributors</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/en/how-to/cross-platform/server.md" title="Edit this Document" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">Edit this page on GitHub</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/Ovilia" target="_blank" class="post-contributor has-avatar"><img alt="Ovilia" src="https://echarts.apache.org/en/images/people/羡辙.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>Ovilia</span></a><a href="https://github.com/plainheart" target="_blank" class="post-contributor has-avatar"><img alt="plainheart" src="https://echarts.apache.org/en/images/people/plainheart.jpg" loading="lazy" decoding="async" fetchpriority="low"> <span>plainheart</span></a><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a><a href="https://github.com/balloon72" target="_blank" class="post-contributor"><!----> <span>balloon72</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(e,t,i,n,r,d,a,o,s,l,c,h,g,m,p,u,b,y,v,C,f,I,w,G,Z,S,V,W,B,R,H,A,N,X,k,Y,L,z,J,K,T,x,F,j,M,D,P,U,Q,E,O,q,_,$,ee,te,ie,ne,re,de,ae,oe,se){return{layout:"default",data:[{html:'<h1 id="server-side-rendering" tabindex="-1">Server-Side Rendering</h1>\n<p>Normally, Apache ECharts<sup>TM</sup> renders the chart dynamically in the browser and will re-render after user interactions. However, there are specific scenarios where we also need to render charts on the server side:</p>\n<ul>\n<li>Reducing the FCP time and ensuring the chart is displayed immediately.</li>\n<li>Embedding charts in the environments such as Markdown, PDF that do not support scripts.</li>\n</ul>\n<p>In these scenarios, ECharts offers both SVG and Canvas server-side rendering (SSR) solutions.</p>\n<table>\n<thead>\n<tr>\n<th>Solution</th>\n<th>Rendering Result</th>\n<th>Pros</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Server-Side SVG Rendering</td>\n<td>SVG string</td>\n<td>Smaller than Canvas images;<br>Vector SVG images are not blurred;<br>Support for initial animation</td>\n</tr>\n<tr>\n<td>Server-Side Canvas Rendering</td>\n<td>Image</td>\n<td>The image format is available for a wider range of scenarios, and is optional for scenarios that do not support SVG</td>\n</tr>\n</tbody>\n</table>\n<p>In general, the server-side SVG rendering solution should be preferred, or if SVG is not applicable, the Canvas rendering solution can be considered.</p>\n<p>Server-side rendering also has some limitations, especially some operations related to interaction cannot be supported. Therefore, if you have interaction requirements, you can refer to &quot;Server-Side Rendering with Hydration&quot; below.</p>\n<h2 id="server-side-rendering-1" tabindex="-1">Server-Side Rendering</h2>\n<h3 id="server-side-svg-rendering" tabindex="-1">Server-Side SVG Rendering</h3>\n<blockquote>\n<p>Version Update:</p>\n<ul>\n<li>5.3.0: Introduced a new zero-dependency server-side string based SVG rendering solution, and support for initial animation</li>\n<li>5.5.0: Added a lightweight client runtime, which allows some interaction without the need to load the full ECharts on the client side</li>\n</ul>\n</blockquote>\n<p>We introduced a new zero-dependency server-side string based SVG rendering solution in 5.3.0.</p>\n<md-code-block lang="ts" code="\'Ly8gU2VydmVyLXNpZGUgY29kZQpjb25zdCBlY2hhcnRzID0gcmVxdWlyZSgnZWNoYXJ0cycpOwoKLy8gSW4gU1NSIG1vZGUgdGhlIGZpcnN0IGNvbnRhaW5lciBwYXJhbWV0ZXIgaXMgbm90IHJlcXVpcmVkCmxldCBjaGFydCA9IGVjaGFydHMuaW5pdChudWxsLCBudWxsLCB7CiAgcmVuZGVyZXI6ICdzdmcnLCAvLyBtdXN0IHVzZSBTVkcgcmVuZGVyaW5nIG1vZGUKICBzc3I6IHRydWUsIC8vIGVuYWJsZSBTU1IKICB3aWR0aDogNDAwLCAvLyBuZWVkIHRvIHNwZWNpZnkgaGVpZ2h0IGFuZCB3aWR0aAogIGhlaWdodDogMzAwCn0pOwoKLy8gdXNlIHNldE9wdGlvbiBhcyBub3JtYWwKY2hhcnQuc2V0T3B0aW9uKHsKICAvLy4uLgp9KTsKCi8vIE91dHB1dCBhIHN0cmluZwpjb25zdCBzdmdTdHIgPSBjaGFydC5yZW5kZXJUb1NWR1N0cmluZygpOwoKLy8gSWYgY2hhcnQgaXMgbm8gbG9uZ2VyIHVzZWZ1bCwgY29uc2lkZXIgZGlzcG9zaW5nIGl0IHRvIHJlbGVhc2UgbWVtb3J5LgpjaGFydC5kaXNwb3NlKCk7CmNoYXJ0ID0gbnVsbDs\'" line-highlights="\'\'" />\n<p>The overall code structure is the almost same as in the browser, starting with <code>init</code> to initialise a chart example and then setting the configuration items for the chart via <code>setOption</code>. However, the parameters passed to <code>init</code> will be different from those used in the browser.</p>\n<ul>\n<li>Firstly, since the SVG is rendered on the server side is string based, we don\'t need a container to display the rendered content, so we can pass <code>null</code> or <code>undefined</code> as the first <code>container</code> parameter in the <code>init</code>.</li>\n<li>Then in the third parameter of <code>init</code> we need to tell ECharts that we need to enable server-side rendering mode by specifying <code>ssr: true</code> in the display. Then ECharts will know it needs to disable the animation loop and event modules.</li>\n<li>We also have to specify the <code>height</code> and <code>width</code> of the chart, so if your chart size needs to be responsive to the container, you may need to think about whether server-side rendering is appropriate for your scenario.</li>\n</ul>\n<p>In the browser ECharts automatically renders the result to the page after <code>setOption</code> and then determines at each frame if there is an animation that needs to be redrawn, but in Node.js we don\'t do this after setting <code>ssr: true</code>. Instead, we use <code>renderToSVGString</code> to render the current chart to an SVG string, which can then be returned to the front-end via HTTP Response or saved to a local file.</p>\n<p>Response to the browser (using Express.js as example):</p>\n<md-code-block lang="ts" code="\'cmVzLndyaXRlSGVhZCgyMDAsIHsKICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3htbCcKfSk7CnJlcy53cml0ZShzdmdTdHIpOyAvLyBzdmdTdHIgaXMgdGhlIHJlc3VsdCBvZiBjaGFydC5yZW5kZXJUb1NWR1N0cmluZygpCnJlcy5lbmQoKTs\'" line-highlights="\'\'" />\n<p>Or save to a local file</p>\n<md-code-block lang="ts" code="\'ZnMud3JpdGVGaWxlKCdiYXIuc3ZnJywgc3ZnU3RyLCAndXRmLTgnKTs\'" line-highlights="\'\'" />\n<h4 id="animations-in-server-side-rendering" tabindex="-1">Animations in Server-Side Rendering</h4>\n<p>As you can see in the example above, even using server-side rendering, ECharts can still provide animation effects, which are achieved by embedding CSS animations in the output SVG string. There is no need for additional JavaScript to play the animation.</p>\n<p>However, the limitations of CSS animation prevent us from implementing more flexible animations in server-side rendering, such as bar chart racing animations, label animations, and special effects animations in the <code>lines</code> series. Animation of some of the series, such as the <code>pie</code>, have been specially optimised for server-side rendering.</p>\n<p>If you don\'t want this animation, you can turn it off by setting <code>animation: false</code> when <code>setOption</code>.</p>\n<md-code-block lang="ts" code="\'c2V0T3B0aW9uKHsKICBhbmltYXRpb246IGZhbHNlCn0pOw\'" line-highlights="\'\'" />\n<h3 id="server-side-canvas-rendering" tabindex="-1">Server-Side Canvas Rendering</h3>\n<p>If you want the output to be an image rather than an SVG string, or if you\'re still using an older version, we\'d recommend using <a href="https://github.com/Automattic/node-canvas">node-canvas</a> for server-side rendering, <a href="https://github.com/Automattic/node-canvas">node-canvas</a> is Canvas implementations on Node.js that provide an interface that is almost identical to the Canvas in the browser.</p>\n<p>Here\'s a simple example</p>\n<md-code-block lang="ts" code="\'dmFyIGVjaGFydHMgPSByZXF1aXJlKCdlY2hhcnRzJyk7CmNvbnN0IHsgY3JlYXRlQ2FudmFzIH0gPSByZXF1aXJlKCdjYW52YXMnKTsKCi8vIEluIHZlcnNpb25zIGVhcmxpZXIgdGhhbiA1LjMuMCwgeW91IGhhZCB0byByZWdpc3RlciB0aGUgY2FudmFzIGZhY3Rvcnkgd2l0aCBzZXRDYW52YXNDcmVhdG9yLgovLyBOb3QgbmVjZXNzYXJ5IHNpbmNlIDUuMy4wCmVjaGFydHMuc2V0Q2FudmFzQ3JlYXRvcigoKSA9PiB7CiAgcmV0dXJuIGNyZWF0ZUNhbnZhcygpOwp9KTsKCmNvbnN0IGNhbnZhcyA9IGNyZWF0ZUNhbnZhcyg4MDAsIDYwMCk7Ci8vIEVDaGFydHMgY2FuIHVzZSB0aGUgQ2FudmFzIGluc3RhbmNlIGNyZWF0ZWQgYnkgbm9kZS1jYW52YXMgYXMgYSBjb250YWluZXIgZGlyZWN0bHkKbGV0IGNoYXJ0ID0gZWNoYXJ0cy5pbml0KGNhbnZhcyk7CgovLyBzZXRPcHRpb24gYXMgbm9ybWFsCmNoYXJ0LnNldE9wdGlvbih7CiAgLy8uLi4KfSk7Cgpjb25zdCBidWZmZXIgPSBjYW52YXMudG9CdWZmZXIoJ2ltYWdlL3BuZycpOwoKLy8gSWYgY2hhcnQgaXMgbm8gbG9uZ2VyIHVzZWZ1bCwgY29uc2lkZXIgZGlzcG9zaW5nIGl0IHRvIHJlbGVhc2UgbWVtb3J5LgpjaGFydC5kaXNwb3NlKCk7CmNoYXJ0ID0gbnVsbDsKCi8vIE91dHB1dCB0aGUgUE5HIGltYWdlIHZpYSBSZXNwb25zZQpyZXMud3JpdGVIZWFkKDIwMCwgewogICdDb250ZW50LVR5cGUnOiAnaW1hZ2UvcG5nJwp9KTsKcmVzLndyaXRlKGJ1ZmZlcik7CnJlcy5lbmQoKTs\'" line-highlights="\'\'" />\n<h4 id="loading-of-images" tabindex="-1">Loading of images</h4>\n<p><a href="https://github.com/Automattic/node-canvas">node-canvas</a> provides an <code>Image</code> implementation for image loading. If you use to images in your code, we can adapt them using the <code>setPlatformAPI</code> interface that was introduced in <code>5.3.0</code>.</p>\n<md-code-block lang="ts" code="\'ZWNoYXJ0cy5zZXRQbGF0Zm9ybUFQSSh7CiAgLy8gU2FtZSB3aXRoIHRoZSBvbGQgc2V0Q2FudmFzQ3JlYXRvcgogIGNyZWF0ZUNhbnZhcygpIHsKICAgIHJldHVybiBjcmVhdGVDYW52YXMoKTsKICB9LAogIGxvYWRJbWFnZShzcmMsIG9ubG9hZCwgb25lcnJvcikgewogICAgY29uc3QgaW1nID0gbmV3IEltYWdlKCk7CiAgICAvLyBtdXN0IGJlIGJvdW5kIHRvIHRoaXMgY29udGV4dC4KICAgIGltZy5vbmxvYWQgPSBvbmxvYWQuYmluZChpbWcpOwogICAgaW1nLm9uZXJyb3IgPSBvbmVycm9yLmJpbmQoaW1nKTsKICAgIGltZy5zcmMgPSBzcmM7CiAgICByZXR1cm4gaW1nOwogIH0KfSk7\'" line-highlights="\'\'" />\n<p>If you are using images from remote, we recommend that you prefetch the image via an http request to get <code>base64</code> before passing it on as the URL of the image, to ensure that the image is loaded when render.</p>\n<h2 id="client-hydration" tabindex="-1">Client Hydration</h2>\n<h3 id="lazy-loading-full-echarts" tabindex="-1">Lazy-Loading Full ECharts</h3>\n<p>With the latest version of ECharts, the server-side rendering solution can do the following things along with rendering the chart:</p>\n<ul>\n<li>Support for initial animation (i.e., the animation that is played when the chart is first rendered)</li>\n<li>Highlighting styles (i.e., the highlighting effect when the mouse moves over a bar in a bar chart)</li>\n</ul>\n<p>But there are features that cannot be supported by server-side rendering:</p>\n<ul>\n<li>Dynamically changing data</li>\n<li>Clicking on a legend to toggle whether the series is displayed or not</li>\n<li>Moving the mouse to show a tooltip</li>\n<li>Other interaction-related features</li>\n</ul>\n<p>If you have such requirements, you can consider using server-side rendering to quickly output the first screen chart, then wait for <code>echarts.js</code> to finish loading and re-render the same chart on the client side, so that you can achieve normal interaction effects and dynamically change the data. Note that when rendering on the client side, you should turn on interactive components like <code>tooltip: { show: true }</code> and turn off the initial animation with <code>animation: 0</code> (the initial animation should be done by the SVG animation of the rendered result on the server side).</p>\n<p>As we can see, from the user experience point of view, there is almost no secondary rendering process, and the whole switching effect is very seamless. You can also use a library like <a href="https://www.npmjs.com/package/pace-js">pace-js</a> to display the loading progress bar during the loading of <code>echarts.js</code> as in the above example to solve the problem of no interactive feedback before the ECharts are fully loaded.</p>\n<p>Using server-side rendering with client-side rendering along with a lazy-loading <code>echarts.js</code> on the client side is a good solution for scenarios where the first screen needs to be rendered quickly and then the interaction needs to be supported. However, it takes some time to load the <code>echarts.js</code> and before it is fully loaded, there is no interactive feedback, in which case, a &quot;Loading&quot; text might be displayed to the user. This is a commonly recommended solution for scenarios where the first screen needs to be rendered quickly and then the interaction needs to be supported.</p>\n<h3 id="lightweight-client-runtime" tabindex="-1">Lightweight Client Runtime</h3>\n<p>Solution A provides a way for implementing complete interactions, but in some scenarios, we don\'t need complex interactions, we just hope to be able to perform some simple interactions on the client side based on server-side rendering, such as: clicking the legend to toggle whether the series is displayed. In this case, can we avoid loading at least a few hundred KBs of ECharts code on the client side?</p>\n<p>Starting from version v5.5.0, if the chart only needs the following effects and interactions, it can be achieved through server-side SVG rendering + client-side lightweight runtime:</p>\n<ul>\n<li>Initial chart animation (implementation principle: the SVG rendered by the server comes with CSS animation)</li>\n<li>Highlight style (implementation principle: the SVG rendered by the server comes with CSS animation)</li>\n<li>Dynamically changing data (implementation principle: the lightweight runtime requests the server for secondary rendering)</li>\n<li>Click the legend to toggle whether the series is displayed (implementation principle: the lightweight runtime requests the server for secondary rendering)</li>\n</ul>\n<md-code-block lang="html" code="\'PGRpdiBpZD0iY2hhcnQtY29udGFpbmVyIiBzdHlsZT0id2lkdGg6ODAwcHg7aGVpZ2h0OjYwMHB4Ij48L2Rpdj4KCjxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2VjaGFydHMvc3NyL2NsaWVudC9kaXN0L2luZGV4Lm1pbi5qcyI-PC9zY3JpcHQ-CjxzY3JpcHQ-CmNvbnN0IHNzckNsaWVudCA9IHdpbmRvd1snZWNoYXJ0cy1zc3ItY2xpZW50J107Cgpjb25zdCBpc1Nlcmllc1Nob3duID0gewogIGE6IHRydWUsCiAgYjogdHJ1ZQp9OwoKZnVuY3Rpb24gdXBkYXRlQ2hhcnQoc3ZnU3RyKSB7CiAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoYXJ0LWNvbnRhaW5lcicpOwogIGNvbnRhaW5lci5pbm5lckhUTUwgPSBzdmdTdHI7CgogIC8vIFVzZSB0aGUgbGlnaHR3ZWlnaHQgcnVudGltZSB0byBnaXZlIHRoZSBjaGFydCBpbnRlcmFjdGl2ZSBjYXBhYmlsaXRpZXMKICBzc3JDbGllbnQuaHlkcmF0ZShjb250YWluZXIsIHsKICAgIG9uOiB7CiAgICAgIGNsaWNrOiAocGFyYW1zKSA9PiB7CiAgICAgICAgaWYgKHBhcmFtcy5zc3JUeXBlID09PSAnbGVnZW5kJykgewogICAgICAgICAgLy8gQ2xpY2sgdGhlIGxlZ2VuZCBlbGVtZW50LCByZXF1ZXN0IHRoZSBzZXJ2ZXIgZm9yIHNlY29uZGFyeSByZW5kZXJpbmcKICAgICAgICAgIGlzU2VyaWVzU2hvd25bcGFyYW1zLnNlcmllc05hbWVdID0gIWlzU2VyaWVzU2hvd25bcGFyYW1zLnNlcmllc05hbWVdOwogICAgICAgICAgZmV0Y2goJy4uLj9zZXJpZXM9JyArIEpTT04uc3RyaW5naWZ5KGlzU2VyaWVzU2hvd24pKQogICAgICAgICAgICAudGhlbihyZXMgPT4gcmVzLnRleHQoKSkKICAgICAgICAgICAgLnRoZW4oc3ZnU3RyID0-IHsKICAgICAgICAgICAgICB1cGRhdGVDaGFydChzdmdTdHIpOwogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9KTsKfQoKLy8gR2V0IHRoZSBTVkcgc3RyaW5nIHJlbmRlcmVkIGJ5IHRoZSBzZXJ2ZXIgdGhyb3VnaCBhbiBBSkFYIHJlcXVlc3QKZmV0Y2goJy4uLicpCiAgLnRoZW4ocmVzID0-IHJlcy50ZXh0KCkpCiAgLnRoZW4oc3ZnU3RyID0-IHsKICAgIHVwZGF0ZUNoYXJ0KHN2Z1N0cik7CiAgfSk7Cjwvc2NyaXB0Pg\'" line-highlights="\'\'" />\n<p>The server side performs secondary rendering based on the information passed by the client about whether each series is displayed (<code>isSeriesShown</code>) and returns a new SVG string. The server-side code <a href="#server-side-svg-rendering">is the same as above</a>, and will not be repeated.</p>\n<blockquote>\n<p>About state recording: Compared with pure client-side rendering, developers need to record and maintain some additional information (such as whether each series is displayed in this example). This is inevitable because HTTP requests are stateless. If you want to implement a state, either the client records the state and passes it like the above example, or the server retains the state (for example, through a session, but it requires more server memory and more complex destruction logic, so it is not recommended).</p>\n</blockquote>\n<p>Using server-side SVG rendering plus client-side lightweight runtime, the advantage is that the client no longer needs to load hundreds of KBs of ECharts code, only needs to load a less than 4KB lightweight runtime code; and from the user experience, very little is sacrificed (supports initial animation, mouse highlighting). The disadvantage is that it requires a certain development cost to maintain additional state information, and it does not support interactions with high real-time requirements (such as displaying tooltips when moving the mouse). Overall, <strong>it is recommended to use it in environments with very strict requirements for code volume</strong>.</p>\n<h2 id="using-lightweight-runtime" tabindex="-1">Using Lightweight Runtime</h2>\n<p>The client-side lightweight runtime enables interaction with the SVG charts rendered by the server-side by understanding the content.</p>\n<p>The client-side lightweight runtime can be imported in the following ways:</p>\n<md-code-block lang="html" code="\'PCEtLSBNZXRob2Qgb25lOiBVc2luZyBDRE4gLS0-CjxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2VjaGFydHMvc3NyL2NsaWVudC9kaXN0L2luZGV4Lm1pbi5qcyI-PC9zY3JpcHQ-CjwhLS0gTWV0aG9kIHR3bzogVXNpbmcgTlBNIC0tPgo8c2NyaXB0IHNyYz0ibm9kZV9tb2R1bGVzL2VjaGFydHMvc3NyL2NsaWVudC9kaXN0L2luZGV4LmpzIj48L3NjcmlwdD4\'" line-highlights="\'\'" />\n<h3 id="api" tabindex="-1">API</h3>\n<p>The following APIs are provided in the global variable <code>window[\'echarts-ssr-client\']</code>:</p>\n<h4 id="hydrate(dom--htmlelement%2C-options--ecssrclientoptions)" tabindex="-1">hydrate(dom: HTMLElement, options: ECSSRClientOptions)</h4>\n<ul>\n<li><code>dom</code>: The chart container, the content of which should be set as the SVG chart rendered by the server-side before calling this method</li>\n<li><code>options</code>: Configuration items</li>\n</ul>\n<h5 id="ecssrclientoptions" tabindex="-1">ECSSRClientOptions</h5>\n<md-code-block lang="ts" code="\'b24_OiB7CiAgbW91c2VvdmVyPzogKHBhcmFtczogRUNTU1JDbGllbnRFdmVudFBhcmFtcykgPT4gdm9pZCwKICBtb3VzZW91dD86IChwYXJhbXM6IEVDU1NSQ2xpZW50RXZlbnRQYXJhbXMpID0-IHZvaWQsCiAgY2xpY2s_OiAocGFyYW1zOiBFQ1NTUkNsaWVudEV2ZW50UGFyYW1zKSA9PiB2b2lkCn0\'" line-highlights="\'\'" />\n<p>Just like the <a href="https://echarts.apache.org/api.html#events.Mouse%20events">chart mouse events</a>, the events here are for the chart items (e.g., the bars of a bar chart, the data item of a line chart, etc.), not for the chart container.</p>\n<h5 id="ecssrclienteventparams" tabindex="-1">ECSSRClientEventParams</h5>\n<md-code-block lang="ts" code="\'ewogIHR5cGU6ICdtb3VzZW92ZXInIHwgJ21vdXNlb3V0JyB8ICdjbGljayc7CiAgc3NyVHlwZTogJ2xlZ2VuZCcgfCAnY2hhcnQnOwogIHNlcmllc0luZGV4PzogbnVtYmVyOwogIGRhdGFJbmRleD86IG51bWJlcjsKICBldmVudDogRXZlbnQ7Cn0\'" line-highlights="\'\'" />\n<ul>\n<li><code>type</code>: Event type</li>\n<li><code>ssrType</code>: Event object type, <code>legend</code> represents legend data, <code>chart</code> represents chart data object</li>\n<li><code>seriesIndex</code>: Series index</li>\n<li><code>dataIndex</code>: Data index</li>\n<li><code>event</code>: Native event object</li>\n</ul>\n<h3 id="example" tabindex="-1">Example</h3>\n<p>See the &quot;Lightweight Client Runtime&quot; section above.</p>\n<h2 id="summary" tabindex="-1">Summary</h2>\n<p>Above, we introduced several different rendering solutions, including:</p>\n<ul>\n<li>Client-side rendering</li>\n<li>Server-side SVG rendering</li>\n<li>Server-side Canvas rendering</li>\n<li>Client-side lightweight runtime rendering</li>\n</ul>\n<p>These four rendering methods can be used in combination. Let\'s summarize their respective applicable scenarios:</p>\n<table>\n<thead>\n<tr>\n<th>Rendering Solution</th>\n<th>Loading Volume</th>\n<th>Loss of Function and Interaction</th>\n<th>Relative Development Workload</th>\n<th>Recommended Scenario</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Client-side rendering</td>\n<td>Largest</td>\n<td>None</td>\n<td>Minimum</td>\n<td>The first screen load time is not sensitive, and there is a high demand for complete functionality and interaction</td>\n</tr>\n<tr>\n<td>Client-side rendering (<a href="en/basics/import#shrinking-bundle-size">partial package importing</a> on demand)</td>\n<td>Large</td>\n<td>Large: the packages not included cannot use the corresponding functions</td>\n<td>Small</td>\n<td>The first screen load time is not sensitive, there is no strict requirement for code volume but hope to be as small as possible, only use a small part of ECharts functions, no server resources</td>\n</tr>\n<tr>\n<td>One-time server-side SVG rendering</td>\n<td>Small</td>\n<td>Large: unable to dynamically change data, does not support legend toggle series display, does not support tooltips and other interactions with high real-time requirements</td>\n<td>Medium</td>\n<td>The first screen load time is sensitive, low demand for complete functionality and interaction</td>\n</tr>\n<tr>\n<td>One-time server-side Canvas rendering</td>\n<td>Large</td>\n<td>Largest: the same as above and does not support initial animation, larger image volume, blurry when enlarged</td>\n<td>Medium</td>\n<td>The first screen load time is sensitive, low demand for complete functionality and interaction, platform restrictions cannot use SVG</td>\n</tr>\n<tr>\n<td>Server-side SVG rendering plus client-side ECharts lazy loading</td>\n<td>Small, then large</td>\n<td>Medium: cannot interact before lazy loading is completed</td>\n<td>Medium</td>\n<td>The first screen load time is sensitive, high demand for complete functionality and interaction, the chart is best not needed for interaction immediately after loading</td>\n</tr>\n<tr>\n<td>Server-side SVG rendering plus client-side lightweight runtime</td>\n<td>Small</td>\n<td>Medium: Cannot implement interactions with high real-time requirements</td>\n<td>Large (need to maintain chart status, define client-server interface protocol)</td>\n<td>The first screen load time is sensitive, low demand for complete functionality and interaction, very strict requirements for code volume, not strict requirements for interaction real-time</td>\n</tr>\n<tr>\n<td>Server-side SVG rendering plus client-side ECharts lazy loading, using lightweight runtime before lazy loading is completed</td>\n<td>Small, then large</td>\n<td>Small: Cannot perform complex interactions before lazy loading is completed</td>\n<td>Largest</td>\n<td>The first screen load time is sensitive, high demand for complete functionality and interaction, sufficient development time</td>\n</tr>\n</tbody>\n</table>\n<p>Of course, there are some other combination possibilities, but the most common ones are the above. I believe that if you understand the characteristics of these rendering solutions, you can choose the appropriate solution based on your own scenario.</p>\n',postPath:"en/how-to/cross-platform/server",title:"Server Side Rendering - Cross Platform - How To Guides"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:n},{title:"入门篇",dir:r,children:[{title:"获取 ECharts",dir:d},{title:"在项目中引入 ECharts",dir:a},{title:"资源列表",dir:o,draft:e},{title:"寻求帮助",dir:s},{title:"版本特性",dir:l,children:[{title:"ECharts 6 特性介绍",dir:c},{title:"v5 升级 v6 指南",dir:h},{title:"5.0",dir:g},{title:"v4 升级 v5 指南",dir:m},{title:5.2,dir:p},{title:5.3,dir:u},{title:5.4,dir:b},{title:5.5,dir:y},{title:5.6,dir:v}]}]},{title:"概念篇",dir:C,children:[{title:"图表容器及大小",dir:f},{title:"配置项",dir:I,draft:e},{title:"系列",dir:w,draft:e},{title:"样式",dir:G},{title:"数据集",dir:Z},{title:"数据转换",dir:S},{title:"坐标系",dir:V,draft:e},{title:"坐标轴",dir:W},{title:"视觉映射",dir:i},{title:"图例",dir:B},{title:"事件与行为",dir:R}]},{title:"应用篇",dir:H,children:[{title:"常用图表类型",dir:A,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:N},{title:"堆叠柱状图",dir:X},{title:"动态排序柱状图",dir:k},{title:"极坐标系柱状图",dir:Y,draft:e},{title:"阶梯瀑布图",dir:L},{title:"视觉映射的柱状图",dir:i,draft:e}]},{title:"折线图",dir:z,children:[{title:"基础折线图",dir:J},{title:"堆叠折线图",dir:K},{title:"区域面积图",dir:T},{title:"平滑曲线图",dir:x},{title:"阶梯线图",dir:F}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:j},{title:"圆环图",dir:M},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:D,children:[{title:"基础散点图",dir:P}]}]},{title:"常用组件",dir:U,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:Q}]}]},{title:"移动端优化",dir:t,draft:e},{title:"跨平台方案",dir:E,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:O},{title:"数据下钻",dir:q,draft:e}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:_}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:ee}]},{title:"交互",dir:te,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:ie,draft:e},{title:"智能指针吸附",dir:ne}]}]},{title:"最佳实践",dir:re,children:[{title:"移动端优化",dir:t,draft:e},{title:de,dir:ae},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:oe}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:se}]}],en:[{title:"Get Started",dir:n},{title:"Basics",dir:r,children:[{title:"Download ECharts",dir:d},{title:"Import ECharts",dir:a},{title:"Resources",dir:o,draft:e},{title:"Get Help",dir:s},{title:"What's New",dir:l,children:[{title:"ECharts 6 Features",dir:c},{title:"Migration from v5 to v6",dir:h},{title:"5.0",dir:g},{title:"Migration from v4 to v5",dir:m},{title:5.2,dir:p},{title:5.3,dir:u},{title:5.4,dir:b},{title:5.5,dir:y},{title:5.6,dir:v}]}]},{title:"Concepts",dir:C,children:[{title:"Chart Container",dir:f},{title:"Chart Option",dir:I,draft:e},{title:"Series",dir:w,draft:e},{title:"Style",dir:G},{title:"Dataset",dir:Z},{title:"Data Transform",dir:S},{title:"Coordinate",dir:V,draft:e},{title:"Axis",dir:W},{title:"Visual Mapping",dir:i},{title:"Legend",dir:B},{title:"Event and Action",dir:R}]},{title:"How To Guides",dir:H,children:[{title:"Common Charts",dir:A,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:N},{title:"Stacked Bar",dir:X},{title:"Bar Racing",dir:k},{title:"Bar Polar",dir:Y,draft:e},{title:"Waterfall",dir:L}]},{title:"Line",dir:z,children:[{title:"Basic Line",dir:J},{title:"Stacked Line",dir:K},{title:"Area Chart",dir:T},{title:"Smoothed Line",dir:x},{title:"Step Line",dir:F}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:j},{title:"Ring Style",dir:M},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:D,children:[{title:"Basic Scatter",dir:P}]}]},{title:"Common Components",dir:U,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:Q}]}]},{title:"Mobile",dir:t,draft:e},{title:"Cross Platform",dir:E,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:O},{title:"Drilldown",dir:q,draft:e}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:_}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:ee}]},{title:"Interaction",dir:te,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:ie,draft:e},{title:"Intelligent Pointer Snapping",dir:ne}]}]},{title:"Best Practices",dir:re,children:[{title:"Mobile Optimization",dir:t,draft:e},{title:de,dir:ae},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:oe}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:se}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:e,routePath:"/en/how-to/cross-platform/server",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/en/how-to/data/dynamic-data/index.html b/docs/en/how-to/data/dynamic-data/index.html
new file mode 100644
index 0000000..c682faf
--- /dev/null
+++ b/docs/en/how-to/data/dynamic-data/index.html
@@ -0,0 +1,81 @@
+<!doctype html>
+<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Dynamic Data - Data - How To Guides - Handbook - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="en"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/en/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/en/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/en/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/en/index.html" class="navbar-brand"><img src="https://echarts.apache.org/en/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/en/index.html">Home</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Docs<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/feature.html">Features</a></li><li><a href="https://echarts.apache.org/handbook/en/get-started/">Handbook</a></li><li><a href="https://echarts.apache.org/en/api.html">API</a></li><li><a href="https://echarts.apache.org/en/option.html">Chart Configuration</a></li><li><a href="https://echarts.apache.org/en/changelog.html">Changelog</a></li><li><a href="https://echarts.apache.org/en/faq.html">FAQ</a></li><li><a href="https://echarts.apache.org/handbook/en/basics/release-note/v6-upgrade-guide">V6 Upgrade Guide</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Download<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/download.html">Download</a></li><li><a href="https://echarts.apache.org/en/download-theme.html">Download Themes</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">Download Custom Series<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/download-extension.html">Download Extensions</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/en/index.html">Examples</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Resources<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/spreadsheet.html">Spread Sheet Tool</a></li><li><a href="https://echarts.apache.org/en/theme-builder.html">Theme Builder</a></li><li><a href="https://echarts.apache.org/en/cheat-sheet.html">Cheat Sheet</a></li><li><a href="https://echarts.apache.org/en/resources.html">More Resources</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/events.html">Events</a></li><li><a href="https://echarts.apache.org/en/committers.html">Committers</a></li><li><a href="https://echarts.apache.org/en/maillist.html">Mailing List</a></li><li><a href="https://echarts.apache.org/en/contributing.html">How to Contribute</a></li><li><a href="https://echarts.apache.org/en/dependencies.html">Dependencies</a></li><li><a href="https://echarts.apache.org/en/coding-standard.html">Code Standard</a></li><li><a href="https://github.com/apache/echarts" target="_blank">Source Code (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/security.html">Security</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">License<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">Events<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("zh")'>中文</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/en/get-started" class="nav-link"><span class="title">Get Started</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Basics</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/basics/download" class="nav-link"><span class="title">Download ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/import" class="nav-link"><span class="title">Import ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/basics/help" class="nav-link"><span class="title">Get Help</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">What's New</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 Features</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">Migration from v5 to v6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">Migration from v4 to v5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Concepts</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/concepts/chart-size" class="nav-link"><span class="title">Chart Container</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/style" class="nav-link"><span class="title">Style</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/dataset" class="nav-link"><span class="title">Dataset</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/data-transform" class="nav-link"><span class="title">Data Transform</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/axis" class="nav-link"><span class="title">Axis</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/visual-map" class="nav-link"><span class="title">Visual Mapping</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/legend" class="nav-link"><span class="title">Legend</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/event" class="nav-link"><span class="title">Event and Action</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">How To Guides</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">Common Charts</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Bar</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">Basic Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">Stacked Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">Bar Racing</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">Waterfall</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Line</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">Basic Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">Stacked Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/area-line" class="nav-link"><span class="title">Area Chart</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">Smoothed Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/step-line" class="nav-link"><span class="title">Step Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Pie</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">Basic Pie</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">Ring Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/rose" class="nav-link"><span class="title">Rose Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Scatter</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">Basic Scatter</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Common Components</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Geo</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG Base Map</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">Cross Platform</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/cross-platform/server" class="nav-link"><span class="title">Server Side Rendering</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Data</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a href="/echarts-handbook/en/how-to/data/dynamic-data" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">Dynamic Data</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Label</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/label/rich-text" class="nav-link"><span class="title">Rich Text</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Animation</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/animation/transition" class="nav-link"><span class="title">Data Transition</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Interaction</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/drag" class="nav-link"><span class="title">Drag</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">Intelligent Pointer Snapping</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Best Practices</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/en/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/aria" class="nav-link"><span class="title">Aria</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/security" class="nav-link"><span class="title">Security Guidelines</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Edit Handbook</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/meta/edit-guide" class="nav-link"><span class="title">Edit Guide</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="asynchronous-data-loading-and-dynamic-update" tabindex="-1">Asynchronous Data Loading and Dynamic Update</h1> <h2 id="asynchronous-loading" tabindex="-1">Asynchronous Loading</h2> <p>Data in <a href="en/get-started">Getting Started Example</a> is directly updated by using <code>setOption</code>. But in many cases, the data needs to be filled by asynchronous loading frequently. <code>ECharts</code> can implement asynchronous loading in a simple way. You can get data asynchronously through a function such as jQuery and use <code>setOption</code> to fill in data and configs after the chart initialized.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">var</span> myChart <span class="token operator">=</span> echarts<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span>document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span><span class="token string">'main'</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+$<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span><span class="token string">'data.json'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">done</span><span class="token punctuation">(</span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">data</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  <span class="token comment">// Structure of data:</span>
+  <span class="token comment">// {</span>
+  <span class="token comment">//     categories: ["Shirt","Wool sweater","Chiffon shirt","Pants","High-heeled shoes","socks"],</span>
+  <span class="token comment">//     values: [5, 20, 36, 10, 10, 20]</span>
+  <span class="token comment">// }</span>
+  myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+    <span class="token literal-property property">title</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'Asynchronous Loading Example'</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">tooltip</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">legend</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> data<span class="token punctuation">.</span>categories
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token punctuation">{</span>
+        <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Sales'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">data</span><span class="token operator">:</span> data<span class="token punctuation">.</span>values
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>Or display empty axes with all styles defined before fill in the data:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">var</span> myChart <span class="token operator">=</span> echarts<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span>document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span><span class="token string">'main'</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token comment">// Show title, legends and empty axes</span>
+myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+  <span class="token literal-property property">title</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'Asynchronous Loading Example'</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">tooltip</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">legend</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'Sales'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Sales'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+<span class="token comment">// Asynchronous Data Loading</span>
+$<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span><span class="token string">'data.json'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">done</span><span class="token punctuation">(</span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">data</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  <span class="token comment">// Fill in the data</span>
+  myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+    <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> data<span class="token punctuation">.</span>categories
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token punctuation">{</span>
+        <span class="token comment">// Find series by name</span>
+        <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Sales'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">data</span><span class="token operator">:</span> data<span class="token punctuation">.</span>data
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>For example:</p> <p><iframe width="100%" height="350" src=""></iframe></p> <p>You need to use <code>name</code> to "navigate" ECharts when updating data. In the previous example, the chart can update normally depending on the order of series, but we recommend you to add the <code>name</code> data while updating data.</p> <h2 id="loading-animation" tabindex="-1">loading Animation</h2> <p>When it takes a long time to load the data, the user is facing the empty chart with only axes will wonder if there is a bug.</p> <p>ECharts have a simple loading animation by default. You can call <a href="https://echarts.apache.org//api.html#echartsInstance.showLoading">showLoading</a> to display. When the data loading was completed, call <a href="https://echarts.apache.org//api.html#echartsInstance.hideLoading">hideLoading</a> to hide the animation.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>myChart<span class="token punctuation">.</span><span class="token function">showLoading</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+$<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span><span class="token string">'data.json'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">done</span><span class="token punctuation">(</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">data</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+    myChart<span class="token punctuation">.</span><span class="token function">hideLoading</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+    myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token operator">...</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>Here is the effect:</p> <p><iframe width="100%" height="350" src=""></iframe></p> <h2 id="dynamic-update" tabindex="-1">Dynamic Update</h2> <p>ECharts was driven by data, change in data will drive changes in the presentation of the chart. Therefore, It's surprisingly simple to implement a dynamic update.</p> <p>All data's updates were implemented by <a href="https://echarts.apache.org//api.html#echartsInstance.setOption">setOption</a>. You only need to fetch the data periodically. ECharts will find the difference between two groups of data to use the proper way to choose the animation.</p> <p>Check the following example.</p> <p><iframe width="100%" height="350" src=""></iframe></p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">Contributors</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/en/how-to/data/dynamic-data.md" title="Edit this Document" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">Edit this page on GitHub</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/yhoiseth" target="_blank" class="post-contributor"><!----> <span>yhoiseth</span></a><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a><a href="https://github.com/balloon72" target="_blank" class="post-contributor"><!----> <span>balloon72</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,i,e,a,d,r,l,n,o,h,c,s,g,p,C,I,m,u,b,A,y,G,f,w,B,v,Z,R,S,x,X,W,L,k,E,Y,F,V,z,K,H,J,Q,O,D,P,M,T,N,j,U,_,q,$,tt,it,et,at,dt,rt,lt,nt,ot){return{layout:"default",data:[{html:'<h1 id="asynchronous-data-loading-and-dynamic-update" tabindex="-1">Asynchronous Data Loading and Dynamic Update</h1>\n<h2 id="asynchronous-loading" tabindex="-1">Asynchronous Loading</h2>\n<p>Data in <a href="en/get-started">Getting Started Example</a> is directly updated by using <code>setOption</code>. But in many cases, the data needs to be filled by asynchronous loading frequently. <code>ECharts</code> can implement asynchronous loading in a simple way. You can get data asynchronously through a function such as jQuery and use <code>setOption</code> to fill in data and configs after the chart initialized.</p>\n<md-code-block lang="js" code="\'dmFyIG15Q2hhcnQgPSBlY2hhcnRzLmluaXQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21haW4nKSk7CgokLmdldCgnZGF0YS5qc29uJykuZG9uZShmdW5jdGlvbihkYXRhKSB7CiAgLy8gU3RydWN0dXJlIG9mIGRhdGE6CiAgLy8gewogIC8vICAgICBjYXRlZ29yaWVzOiBbIlNoaXJ0IiwiV29vbCBzd2VhdGVyIiwiQ2hpZmZvbiBzaGlydCIsIlBhbnRzIiwiSGlnaC1oZWVsZWQgc2hvZXMiLCJzb2NrcyJdLAogIC8vICAgICB2YWx1ZXM6IFs1LCAyMCwgMzYsIDEwLCAxMCwgMjBdCiAgLy8gfQogIG15Q2hhcnQuc2V0T3B0aW9uKHsKICAgIHRpdGxlOiB7CiAgICAgIHRleHQ6ICdBc3luY2hyb25vdXMgTG9hZGluZyBFeGFtcGxlJwogICAgfSwKICAgIHRvb2x0aXA6IHt9LAogICAgbGVnZW5kOiB7fSwKICAgIHhBeGlzOiB7CiAgICAgIGRhdGE6IGRhdGEuY2F0ZWdvcmllcwogICAgfSwKICAgIHlBeGlzOiB7fSwKICAgIHNlcmllczogWwogICAgICB7CiAgICAgICAgbmFtZTogJ1NhbGVzJywKICAgICAgICB0eXBlOiAnYmFyJywKICAgICAgICBkYXRhOiBkYXRhLnZhbHVlcwogICAgICB9CiAgICBdCiAgfSk7Cn0pOw\'" line-highlights="\'\'" />\n<p>Or display empty axes with all styles defined before fill in the data:</p>\n<md-code-block lang="js" code="\'dmFyIG15Q2hhcnQgPSBlY2hhcnRzLmluaXQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21haW4nKSk7Ci8vIFNob3cgdGl0bGUsIGxlZ2VuZHMgYW5kIGVtcHR5IGF4ZXMKbXlDaGFydC5zZXRPcHRpb24oewogIHRpdGxlOiB7CiAgICB0ZXh0OiAnQXN5bmNocm9ub3VzIExvYWRpbmcgRXhhbXBsZScKICB9LAogIHRvb2x0aXA6IHt9LAogIGxlZ2VuZDogewogICAgZGF0YTogWydTYWxlcyddCiAgfSwKICB4QXhpczogewogICAgZGF0YTogW10KICB9LAogIHlBeGlzOiB7fSwKICBzZXJpZXM6IFsKICAgIHsKICAgICAgbmFtZTogJ1NhbGVzJywKICAgICAgdHlwZTogJ2JhcicsCiAgICAgIGRhdGE6IFtdCiAgICB9CiAgXQp9KTsKCi8vIEFzeW5jaHJvbm91cyBEYXRhIExvYWRpbmcKJC5nZXQoJ2RhdGEuanNvbicpLmRvbmUoZnVuY3Rpb24oZGF0YSkgewogIC8vIEZpbGwgaW4gdGhlIGRhdGEKICBteUNoYXJ0LnNldE9wdGlvbih7CiAgICB4QXhpczogewogICAgICBkYXRhOiBkYXRhLmNhdGVnb3JpZXMKICAgIH0sCiAgICBzZXJpZXM6IFsKICAgICAgewogICAgICAgIC8vIEZpbmQgc2VyaWVzIGJ5IG5hbWUKICAgICAgICBuYW1lOiAnU2FsZXMnLAogICAgICAgIGRhdGE6IGRhdGEuZGF0YQogICAgICB9CiAgICBdCiAgfSk7Cn0pOw\'" line-highlights="\'\'" />\n<p>For example:</p>\n<p><md-example src="doc-example/tutorial-async"></md-example></p>\n<p>You need to use <code>name</code> to &quot;navigate&quot; ECharts when updating data. In the previous example, the chart can update normally depending on the order of series, but we recommend you to add the <code>name</code> data while updating data.</p>\n<h2 id="loading-animation" tabindex="-1">loading Animation</h2>\n<p>When it takes a long time to load the data, the user is facing the empty chart with only axes will wonder if there is a bug.</p>\n<p>ECharts have a simple loading animation by default. You can call <a href="https://echarts.apache.org//api.html#echartsInstance.showLoading">showLoading</a> to display. When the data loading was completed, call <a href="https://echarts.apache.org//api.html#echartsInstance.hideLoading">hideLoading</a> to hide the animation.</p>\n<md-code-block lang="js" code="\'bXlDaGFydC5zaG93TG9hZGluZygpOwokLmdldCgnZGF0YS5qc29uJykuZG9uZShmdW5jdGlvbiAoZGF0YSkgewogICAgbXlDaGFydC5oaWRlTG9hZGluZygpOwogICAgbXlDaGFydC5zZXRPcHRpb24oLi4uKTsKfSk7\'" line-highlights="\'\'" />\n<p>Here is the effect:</p>\n<p><md-example src="doc-example/tutorial-loading"></md-example></p>\n<h2 id="dynamic-update" tabindex="-1">Dynamic Update</h2>\n<p>ECharts was driven by data, change in data will drive changes in the presentation of the chart. Therefore, It\'s surprisingly simple to implement a dynamic update.</p>\n<p>All data\'s updates were implemented by <a href="https://echarts.apache.org//api.html#echartsInstance.setOption">setOption</a>. You only need to fetch the data periodically. ECharts will find the difference between two groups of data to use the proper way to choose the animation.</p>\n<p>Check the following example.</p>\n<p><md-example src="doc-example/tutorial-dynamic-data"></md-example></p>\n',postPath:"en/how-to/data/dynamic-data",title:"Dynamic Data - Data - How To Guides"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:a},{title:"入门篇",dir:d,children:[{title:"获取 ECharts",dir:r},{title:"在项目中引入 ECharts",dir:l},{title:"资源列表",dir:n,draft:t},{title:"寻求帮助",dir:o},{title:"版本特性",dir:h,children:[{title:"ECharts 6 特性介绍",dir:c},{title:"v5 升级 v6 指南",dir:s},{title:"5.0",dir:g},{title:"v4 升级 v5 指南",dir:p},{title:5.2,dir:C},{title:5.3,dir:I},{title:5.4,dir:m},{title:5.5,dir:u},{title:5.6,dir:b}]}]},{title:"概念篇",dir:A,children:[{title:"图表容器及大小",dir:y},{title:"配置项",dir:G,draft:t},{title:"系列",dir:f,draft:t},{title:"样式",dir:w},{title:"数据集",dir:B},{title:"数据转换",dir:v},{title:"坐标系",dir:Z,draft:t},{title:"坐标轴",dir:R},{title:"视觉映射",dir:e},{title:"图例",dir:S},{title:"事件与行为",dir:x}]},{title:"应用篇",dir:X,children:[{title:"常用图表类型",dir:W,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:L},{title:"堆叠柱状图",dir:k},{title:"动态排序柱状图",dir:E},{title:"极坐标系柱状图",dir:Y,draft:t},{title:"阶梯瀑布图",dir:F},{title:"视觉映射的柱状图",dir:e,draft:t}]},{title:"折线图",dir:V,children:[{title:"基础折线图",dir:z},{title:"堆叠折线图",dir:K},{title:"区域面积图",dir:H},{title:"平滑曲线图",dir:J},{title:"阶梯线图",dir:Q}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:O},{title:"圆环图",dir:D},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:P,children:[{title:"基础散点图",dir:M}]}]},{title:"常用组件",dir:T,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:N}]}]},{title:"移动端优化",dir:i,draft:t},{title:"跨平台方案",dir:j,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:U},{title:"数据下钻",dir:_,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:q}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:it,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:et,draft:t},{title:"智能指针吸附",dir:at}]}]},{title:"最佳实践",dir:dt,children:[{title:"移动端优化",dir:i,draft:t},{title:rt,dir:lt},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:nt}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:ot}]}],en:[{title:"Get Started",dir:a},{title:"Basics",dir:d,children:[{title:"Download ECharts",dir:r},{title:"Import ECharts",dir:l},{title:"Resources",dir:n,draft:t},{title:"Get Help",dir:o},{title:"What's New",dir:h,children:[{title:"ECharts 6 Features",dir:c},{title:"Migration from v5 to v6",dir:s},{title:"5.0",dir:g},{title:"Migration from v4 to v5",dir:p},{title:5.2,dir:C},{title:5.3,dir:I},{title:5.4,dir:m},{title:5.5,dir:u},{title:5.6,dir:b}]}]},{title:"Concepts",dir:A,children:[{title:"Chart Container",dir:y},{title:"Chart Option",dir:G,draft:t},{title:"Series",dir:f,draft:t},{title:"Style",dir:w},{title:"Dataset",dir:B},{title:"Data Transform",dir:v},{title:"Coordinate",dir:Z,draft:t},{title:"Axis",dir:R},{title:"Visual Mapping",dir:e},{title:"Legend",dir:S},{title:"Event and Action",dir:x}]},{title:"How To Guides",dir:X,children:[{title:"Common Charts",dir:W,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:L},{title:"Stacked Bar",dir:k},{title:"Bar Racing",dir:E},{title:"Bar Polar",dir:Y,draft:t},{title:"Waterfall",dir:F}]},{title:"Line",dir:V,children:[{title:"Basic Line",dir:z},{title:"Stacked Line",dir:K},{title:"Area Chart",dir:H},{title:"Smoothed Line",dir:J},{title:"Step Line",dir:Q}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:O},{title:"Ring Style",dir:D},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:P,children:[{title:"Basic Scatter",dir:M}]}]},{title:"Common Components",dir:T,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:N}]}]},{title:"Mobile",dir:i,draft:t},{title:"Cross Platform",dir:j,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:U},{title:"Drilldown",dir:_,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:q}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:it,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:et,draft:t},{title:"Intelligent Pointer Snapping",dir:at}]}]},{title:"Best Practices",dir:dt,children:[{title:"Mobile Optimization",dir:i,draft:t},{title:rt,dir:lt},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:nt}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:ot}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/en/how-to/data/dynamic-data",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/en/how-to/interaction/coarse-pointer/index.html b/docs/en/how-to/interaction/coarse-pointer/index.html
new file mode 100644
index 0000000..413c202
--- /dev/null
+++ b/docs/en/how-to/interaction/coarse-pointer/index.html
@@ -0,0 +1,13 @@
+<!doctype html>
+<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Intelligent Pointer Snapping - Interaction - How To Guides - Handbook - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="en"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/en/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/en/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/en/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/en/index.html" class="navbar-brand"><img src="https://echarts.apache.org/en/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/en/index.html">Home</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Docs<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/feature.html">Features</a></li><li><a href="https://echarts.apache.org/handbook/en/get-started/">Handbook</a></li><li><a href="https://echarts.apache.org/en/api.html">API</a></li><li><a href="https://echarts.apache.org/en/option.html">Chart Configuration</a></li><li><a href="https://echarts.apache.org/en/changelog.html">Changelog</a></li><li><a href="https://echarts.apache.org/en/faq.html">FAQ</a></li><li><a href="https://echarts.apache.org/handbook/en/basics/release-note/v6-upgrade-guide">V6 Upgrade Guide</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Download<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/download.html">Download</a></li><li><a href="https://echarts.apache.org/en/download-theme.html">Download Themes</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">Download Custom Series<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/download-extension.html">Download Extensions</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/en/index.html">Examples</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Resources<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/spreadsheet.html">Spread Sheet Tool</a></li><li><a href="https://echarts.apache.org/en/theme-builder.html">Theme Builder</a></li><li><a href="https://echarts.apache.org/en/cheat-sheet.html">Cheat Sheet</a></li><li><a href="https://echarts.apache.org/en/resources.html">More Resources</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/events.html">Events</a></li><li><a href="https://echarts.apache.org/en/committers.html">Committers</a></li><li><a href="https://echarts.apache.org/en/maillist.html">Mailing List</a></li><li><a href="https://echarts.apache.org/en/contributing.html">How to Contribute</a></li><li><a href="https://echarts.apache.org/en/dependencies.html">Dependencies</a></li><li><a href="https://echarts.apache.org/en/coding-standard.html">Code Standard</a></li><li><a href="https://github.com/apache/echarts" target="_blank">Source Code (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/security.html">Security</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">License<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">Events<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("zh")'>中文</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/en/get-started" class="nav-link"><span class="title">Get Started</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Basics</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/basics/download" class="nav-link"><span class="title">Download ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/import" class="nav-link"><span class="title">Import ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/basics/help" class="nav-link"><span class="title">Get Help</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">What's New</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 Features</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">Migration from v5 to v6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">Migration from v4 to v5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Concepts</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/concepts/chart-size" class="nav-link"><span class="title">Chart Container</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/style" class="nav-link"><span class="title">Style</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/dataset" class="nav-link"><span class="title">Dataset</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/data-transform" class="nav-link"><span class="title">Data Transform</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/axis" class="nav-link"><span class="title">Axis</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/visual-map" class="nav-link"><span class="title">Visual Mapping</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/legend" class="nav-link"><span class="title">Legend</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/event" class="nav-link"><span class="title">Event and Action</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">How To Guides</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">Common Charts</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Bar</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">Basic Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">Stacked Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">Bar Racing</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">Waterfall</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Line</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">Basic Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">Stacked Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/area-line" class="nav-link"><span class="title">Area Chart</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">Smoothed Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/step-line" class="nav-link"><span class="title">Step Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Pie</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">Basic Pie</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">Ring Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/rose" class="nav-link"><span class="title">Rose Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Scatter</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">Basic Scatter</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Common Components</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Geo</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG Base Map</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">Cross Platform</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/cross-platform/server" class="nav-link"><span class="title">Server Side Rendering</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Data</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/data/dynamic-data" class="nav-link"><span class="title">Dynamic Data</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Label</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/label/rich-text" class="nav-link"><span class="title">Rich Text</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Animation</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/animation/transition" class="nav-link"><span class="title">Data Transition</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Interaction</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/drag" class="nav-link"><span class="title">Drag</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/coarse-pointer" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">Intelligent Pointer Snapping</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Best Practices</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/en/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/aria" class="nav-link"><span class="title">Aria</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/security" class="nav-link"><span class="title">Security Guidelines</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Edit Handbook</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/meta/edit-guide" class="nav-link"><span class="title">Edit Guide</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="intelligent-pointer-snapping" tabindex="-1">Intelligent Pointer Snapping</h1> <p>Some interactive elements may be relatively small in charts, so sometimes it is difficult for users to click and do other operations accurately, especially on the mobile. Therefore, in Apache ECharts<sup>TM</sup> 5.4.0, we introduced the concept of "intelligent pointer snapping".</p> <p>Starting from this version, by default, ECharts enables pointer snapping for mobile charts and disables it for non-mobile charts.</p> <blockquote><p>If it needs to be enabled for all platforms, it can be achieved by setting <code>opt.useCoarsePointer</code> to <code>true</code> in <a href="https://echarts.apache.org/api.html#echarts.init">init</a>; set to <code>false</code> is turned off for all platforms.</p></blockquote> <h2 id="snapping-algorithm" tabindex="-1">Snapping Algorithm</h2> <p>When a mouse or touch event occurs, ECharts will determine whether it is intersecting with an interactive element based on the position of the mouse or touch. If it is, the element is the object to be interacted with, which is the same logic before this optimization. If not, find an element that is closest to the mouse or touch position within a certain range.</p> <blockquote><p>The default range is 44px (see <a href="https://www.w3.org/WAI/WCAG21/Understanding/target-size.html">W3C standard</a>), developers can set this value through <code>opt.pointerSize</code> when <a href="https://echarts.apache.org/api.html#echarts.init">init</a>.</p></blockquote> <p>More specifically, ECharts will loop through different angles and different radii (within <code>opt.pointerSize</code>) around the mouse or touch position until it finds an element that intersects it. If found, the element is considered to be the interactive object.</p> <p><img width="100%" height="100%" src="images/how-to/coarse-pointer-en.gif" style="max-width:441px"></p> <p>That is, if an element is within the <code>opt.pointerSize</code> radius of the mouse or touch position, the closest intersected element is considered the interactive object.</p> <h2 id="performance" tabindex="-1">Performance</h2> <p>As for the implementation, we first judge the intersection between the mouse or touch position and the AABB bounding box of all interactive elements, so as to quickly eliminate most of the elements that is not intersecting. Then, we perform an accurate path intersection judgment on the remaining elements. Therefore, from the perspective of user experience, there is hardly any perceivable performance loss.</p> <p>For chart series with large-scale data (that is, bar charts, scatter charts, etc. with <code>large: true</code> enabled), the snapping will not be enabled.</p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">Contributors</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/en/how-to/interaction/coarse-pointer.md" title="Edit this Document" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">Edit this page on GitHub</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/Ovilia" target="_blank" class="post-contributor has-avatar"><img alt="Ovilia" src="https://echarts.apache.org/en/images/people/羡辙.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>Ovilia</span></a><a href="https://github.com/plainheart" target="_blank" class="post-contributor has-avatar"><img alt="plainheart" src="https://echarts.apache.org/en/images/people/plainheart.jpg" loading="lazy" decoding="async" fetchpriority="low"> <span>plainheart</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,e,i,r,a,d,l,n,o,s,h,c,p,m,f,g,u,b,v,w,S,C,y,P,x,k,B,E,A,G,T,I,D,M,R,z,L,q,V,W,_,j,H,U,F,N,O,$,X,J,K,Q,Y,Z,tt,et,it,rt,at,dt,lt,nt,ot){return{layout:"default",data:[{html:'<h1 id="intelligent-pointer-snapping" tabindex="-1">Intelligent Pointer Snapping</h1>\n<p>Some interactive elements may be relatively small in charts, so sometimes it is difficult for users to click and do other operations accurately, especially on the mobile. Therefore, in Apache ECharts<sup>TM</sup> 5.4.0, we introduced the concept of &quot;intelligent pointer snapping&quot;.</p>\n<p>Starting from this version, by default, ECharts enables pointer snapping for mobile charts and disables it for non-mobile charts.</p>\n<blockquote>\n<p>If it needs to be enabled for all platforms, it can be achieved by setting <code>opt.useCoarsePointer</code> to <code>true</code> in <a href="https://echarts.apache.org/api.html#echarts.init">init</a>; set to <code>false</code> is turned off for all platforms.</p>\n</blockquote>\n<h2 id="snapping-algorithm" tabindex="-1">Snapping Algorithm</h2>\n<p>When a mouse or touch event occurs, ECharts will determine whether it is intersecting with an interactive element based on the position of the mouse or touch. If it is, the element is the object to be interacted with, which is the same logic before this optimization. If not, find an element that is closest to the mouse or touch position within a certain range.</p>\n<blockquote>\n<p>The default range is 44px (see <a href="https://www.w3.org/WAI/WCAG21/Understanding/target-size.html">W3C standard</a>), developers can set this value through <code>opt.pointerSize</code> when <a href="https://echarts.apache.org/api.html#echarts.init">init</a>.</p>\n</blockquote>\n<p>More specifically, ECharts will loop through different angles and different radii (within <code>opt.pointerSize</code>) around the mouse or touch position until it finds an element that intersects it. If found, the element is considered to be the interactive object.</p>\n<p><img width="100%" height="100%" style="max-width: 441px"\nsrc="images/how-to/coarse-pointer-en.gif">\n</img></p>\n<p>That is, if an element is within the <code>opt.pointerSize</code> radius of the mouse or touch position, the closest intersected element is considered the interactive object.</p>\n<h2 id="performance" tabindex="-1">Performance</h2>\n<p>As for the implementation, we first judge the intersection between the mouse or touch position and the AABB bounding box of all interactive elements, so as to quickly eliminate most of the elements that is not intersecting. Then, we perform an accurate path intersection judgment on the remaining elements. Therefore, from the perspective of user experience, there is hardly any perceivable performance loss.</p>\n<p>For chart series with large-scale data (that is, bar charts, scatter charts, etc. with <code>large: true</code> enabled), the snapping will not be enabled.</p>\n',postPath:"en/how-to/interaction/coarse-pointer",title:"Intelligent Pointer Snapping - Interaction - How To Guides"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:r},{title:"入门篇",dir:a,children:[{title:"获取 ECharts",dir:d},{title:"在项目中引入 ECharts",dir:l},{title:"资源列表",dir:n,draft:t},{title:"寻求帮助",dir:o},{title:"版本特性",dir:s,children:[{title:"ECharts 6 特性介绍",dir:h},{title:"v5 升级 v6 指南",dir:c},{title:"5.0",dir:p},{title:"v4 升级 v5 指南",dir:m},{title:5.2,dir:f},{title:5.3,dir:g},{title:5.4,dir:u},{title:5.5,dir:b},{title:5.6,dir:v}]}]},{title:"概念篇",dir:w,children:[{title:"图表容器及大小",dir:S},{title:"配置项",dir:C,draft:t},{title:"系列",dir:y,draft:t},{title:"样式",dir:P},{title:"数据集",dir:x},{title:"数据转换",dir:k},{title:"坐标系",dir:B,draft:t},{title:"坐标轴",dir:E},{title:"视觉映射",dir:i},{title:"图例",dir:A},{title:"事件与行为",dir:G}]},{title:"应用篇",dir:T,children:[{title:"常用图表类型",dir:I,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:D},{title:"堆叠柱状图",dir:M},{title:"动态排序柱状图",dir:R},{title:"极坐标系柱状图",dir:z,draft:t},{title:"阶梯瀑布图",dir:L},{title:"视觉映射的柱状图",dir:i,draft:t}]},{title:"折线图",dir:q,children:[{title:"基础折线图",dir:V},{title:"堆叠折线图",dir:W},{title:"区域面积图",dir:_},{title:"平滑曲线图",dir:j},{title:"阶梯线图",dir:H}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:U},{title:"圆环图",dir:F},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:N,children:[{title:"基础散点图",dir:O}]}]},{title:"常用组件",dir:$,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:X}]}]},{title:"移动端优化",dir:e,draft:t},{title:"跨平台方案",dir:J,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:K},{title:"数据下钻",dir:Q,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:Y}]},{title:"动画",dir:Z,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:et,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:it,draft:t},{title:"智能指针吸附",dir:rt}]}]},{title:"最佳实践",dir:at,children:[{title:"移动端优化",dir:e,draft:t},{title:dt,dir:lt},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:nt}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:ot}]}],en:[{title:"Get Started",dir:r},{title:"Basics",dir:a,children:[{title:"Download ECharts",dir:d},{title:"Import ECharts",dir:l},{title:"Resources",dir:n,draft:t},{title:"Get Help",dir:o},{title:"What's New",dir:s,children:[{title:"ECharts 6 Features",dir:h},{title:"Migration from v5 to v6",dir:c},{title:"5.0",dir:p},{title:"Migration from v4 to v5",dir:m},{title:5.2,dir:f},{title:5.3,dir:g},{title:5.4,dir:u},{title:5.5,dir:b},{title:5.6,dir:v}]}]},{title:"Concepts",dir:w,children:[{title:"Chart Container",dir:S},{title:"Chart Option",dir:C,draft:t},{title:"Series",dir:y,draft:t},{title:"Style",dir:P},{title:"Dataset",dir:x},{title:"Data Transform",dir:k},{title:"Coordinate",dir:B,draft:t},{title:"Axis",dir:E},{title:"Visual Mapping",dir:i},{title:"Legend",dir:A},{title:"Event and Action",dir:G}]},{title:"How To Guides",dir:T,children:[{title:"Common Charts",dir:I,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:D},{title:"Stacked Bar",dir:M},{title:"Bar Racing",dir:R},{title:"Bar Polar",dir:z,draft:t},{title:"Waterfall",dir:L}]},{title:"Line",dir:q,children:[{title:"Basic Line",dir:V},{title:"Stacked Line",dir:W},{title:"Area Chart",dir:_},{title:"Smoothed Line",dir:j},{title:"Step Line",dir:H}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:U},{title:"Ring Style",dir:F},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:N,children:[{title:"Basic Scatter",dir:O}]}]},{title:"Common Components",dir:$,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:X}]}]},{title:"Mobile",dir:e,draft:t},{title:"Cross Platform",dir:J,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:K},{title:"Drilldown",dir:Q,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:Y}]},{title:"Animation",dir:Z,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:et,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:it,draft:t},{title:"Intelligent Pointer Snapping",dir:rt}]}]},{title:"Best Practices",dir:at,children:[{title:"Mobile Optimization",dir:e,draft:t},{title:dt,dir:lt},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:nt}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:ot}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/en/how-to/interaction/coarse-pointer",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/en/how-to/interaction/drag/index.html b/docs/en/how-to/interaction/drag/index.html
new file mode 100644
index 0000000..364ccc6
--- /dev/null
+++ b/docs/en/how-to/interaction/drag/index.html
@@ -0,0 +1,217 @@
+<!doctype html>
+<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Drag - Interaction - How To Guides - Handbook - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="en"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/en/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/en/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/en/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/en/index.html" class="navbar-brand"><img src="https://echarts.apache.org/en/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/en/index.html">Home</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Docs<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/feature.html">Features</a></li><li><a href="https://echarts.apache.org/handbook/en/get-started/">Handbook</a></li><li><a href="https://echarts.apache.org/en/api.html">API</a></li><li><a href="https://echarts.apache.org/en/option.html">Chart Configuration</a></li><li><a href="https://echarts.apache.org/en/changelog.html">Changelog</a></li><li><a href="https://echarts.apache.org/en/faq.html">FAQ</a></li><li><a href="https://echarts.apache.org/handbook/en/basics/release-note/v6-upgrade-guide">V6 Upgrade Guide</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Download<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/download.html">Download</a></li><li><a href="https://echarts.apache.org/en/download-theme.html">Download Themes</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">Download Custom Series<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/download-extension.html">Download Extensions</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/en/index.html">Examples</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Resources<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/spreadsheet.html">Spread Sheet Tool</a></li><li><a href="https://echarts.apache.org/en/theme-builder.html">Theme Builder</a></li><li><a href="https://echarts.apache.org/en/cheat-sheet.html">Cheat Sheet</a></li><li><a href="https://echarts.apache.org/en/resources.html">More Resources</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/events.html">Events</a></li><li><a href="https://echarts.apache.org/en/committers.html">Committers</a></li><li><a href="https://echarts.apache.org/en/maillist.html">Mailing List</a></li><li><a href="https://echarts.apache.org/en/contributing.html">How to Contribute</a></li><li><a href="https://echarts.apache.org/en/dependencies.html">Dependencies</a></li><li><a href="https://echarts.apache.org/en/coding-standard.html">Code Standard</a></li><li><a href="https://github.com/apache/echarts" target="_blank">Source Code (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/security.html">Security</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">License<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">Events<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("zh")'>中文</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/en/get-started" class="nav-link"><span class="title">Get Started</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Basics</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/basics/download" class="nav-link"><span class="title">Download ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/import" class="nav-link"><span class="title">Import ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/basics/help" class="nav-link"><span class="title">Get Help</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">What's New</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 Features</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">Migration from v5 to v6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">Migration from v4 to v5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Concepts</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/concepts/chart-size" class="nav-link"><span class="title">Chart Container</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/style" class="nav-link"><span class="title">Style</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/dataset" class="nav-link"><span class="title">Dataset</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/data-transform" class="nav-link"><span class="title">Data Transform</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/axis" class="nav-link"><span class="title">Axis</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/visual-map" class="nav-link"><span class="title">Visual Mapping</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/legend" class="nav-link"><span class="title">Legend</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/event" class="nav-link"><span class="title">Event and Action</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">How To Guides</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">Common Charts</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Bar</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">Basic Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">Stacked Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">Bar Racing</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">Waterfall</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Line</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">Basic Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">Stacked Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/area-line" class="nav-link"><span class="title">Area Chart</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">Smoothed Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/step-line" class="nav-link"><span class="title">Step Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Pie</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">Basic Pie</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">Ring Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/rose" class="nav-link"><span class="title">Rose Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Scatter</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">Basic Scatter</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Common Components</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Geo</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG Base Map</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">Cross Platform</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/cross-platform/server" class="nav-link"><span class="title">Server Side Rendering</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Data</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/data/dynamic-data" class="nav-link"><span class="title">Dynamic Data</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Label</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/label/rich-text" class="nav-link"><span class="title">Rich Text</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Animation</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/animation/transition" class="nav-link"><span class="title">Data Transition</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Interaction</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/drag" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">Drag</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">Intelligent Pointer Snapping</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Best Practices</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/en/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/aria" class="nav-link"><span class="title">Aria</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/security" class="nav-link"><span class="title">Security Guidelines</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Edit Handbook</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/meta/edit-guide" class="nav-link"><span class="title">Edit Guide</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="an-example--implement-dragging" tabindex="-1">An Example: Implement Dragging</h1> <p>This is a tiny example, introducing how to implement dragging of graphic elements in Apache ECharts<sup>TM</sup>. From this example, we will see how to make an application with rich intractivity based on echarts API.</p> <p><iframe width="100%" height="400" src=""></iframe></p> <p>This example mainly implements that dragging points of a curve and by which the curve is modified. Although it is simple example, but we can do more based on that, like edit charts viually. So let's get started from this simple example.</p> <h2 id="implement-basic-dragging" tabindex="-1">Implement basic dragging</h2> <p>First of all, we create a basic <a href="https://echarts.apache.org/option.html#series-line">line chart (line series)</a>:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">var</span> symbolSize <span class="token operator">=</span> <span class="token number">20</span><span class="token punctuation">;</span>
+<span class="token keyword">var</span> data <span class="token operator">=</span> <span class="token punctuation">[</span>
+  <span class="token punctuation">[</span><span class="token number">15</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token punctuation">[</span><span class="token operator">-</span><span class="token number">50</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token punctuation">[</span><span class="token operator">-</span><span class="token number">56.5</span><span class="token punctuation">,</span> <span class="token number">20</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token punctuation">[</span><span class="token operator">-</span><span class="token number">46.5</span><span class="token punctuation">,</span> <span class="token number">30</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token punctuation">[</span><span class="token operator">-</span><span class="token number">22.1</span><span class="token punctuation">,</span> <span class="token number">40</span><span class="token punctuation">]</span>
+<span class="token punctuation">]</span><span class="token punctuation">;</span>
+
+myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">min</span><span class="token operator">:</span> <span class="token operator">-</span><span class="token number">100</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">max</span><span class="token operator">:</span> <span class="token number">80</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'value'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">axisLine</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">onZero</span><span class="token operator">:</span> <span class="token boolean">false</span> <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">min</span><span class="token operator">:</span> <span class="token operator">-</span><span class="token number">30</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">max</span><span class="token operator">:</span> <span class="token number">60</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'value'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">axisLine</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">onZero</span><span class="token operator">:</span> <span class="token boolean">false</span> <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">id</span><span class="token operator">:</span> <span class="token string">'a'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">smooth</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+      <span class="token comment">// Set a big symbolSize for dragging convenience.</span>
+      <span class="token literal-property property">symbolSize</span><span class="token operator">:</span> symbolSize<span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> data
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>Since the symbols in line is not draggable, we make them draggable by using <a href="https://echarts.apache.org/option.html#graphic">graphic component</a> to add draggable circular elements to symbols respectively.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+  <span class="token comment">// Declare a graphic component, which contains some graphic elements</span>
+  <span class="token comment">// with the type of 'circle'.</span>
+  <span class="token comment">// Here we have used the method `echarts.util.map`, which has the same</span>
+  <span class="token comment">// behavior as Array.prototype.map, and is compatible with ES5-.</span>
+  <span class="token literal-property property">graphic</span><span class="token operator">:</span> echarts<span class="token punctuation">.</span>util<span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span>data<span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">dataItem<span class="token punctuation">,</span> dataIndex</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+    <span class="token keyword">return</span> <span class="token punctuation">{</span>
+      <span class="token comment">// 'circle' means this graphic element is a shape of circle.</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'circle'</span><span class="token punctuation">,</span>
+
+      <span class="token literal-property property">shape</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token comment">// The radius of the circle.</span>
+        <span class="token literal-property property">r</span><span class="token operator">:</span> symbolSize <span class="token operator">/</span> <span class="token number">2</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token comment">// Transform is used to located the circle. position:</span>
+      <span class="token comment">// [x, y] means translate the circle to the position [x, y].</span>
+      <span class="token comment">// The API `convertToPixel` is used to get the position of</span>
+      <span class="token comment">// the circle, which will introduced later.</span>
+      <span class="token literal-property property">position</span><span class="token operator">:</span> myChart<span class="token punctuation">.</span><span class="token function">convertToPixel</span><span class="token punctuation">(</span><span class="token string">'grid'</span><span class="token punctuation">,</span> dataItem<span class="token punctuation">)</span><span class="token punctuation">,</span>
+
+      <span class="token comment">// Make the circle invisible (but mouse event works as normal).</span>
+      <span class="token literal-property property">invisible</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+      <span class="token comment">// Make the circle draggable.</span>
+      <span class="token literal-property property">draggable</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+      <span class="token comment">// Give a big z value, which makes the circle cover the symbol</span>
+      <span class="token comment">// in line series.</span>
+      <span class="token literal-property property">z</span><span class="token operator">:</span> <span class="token number">100</span><span class="token punctuation">,</span>
+      <span class="token comment">// This is the event handler of dragging, which will be triggered</span>
+      <span class="token comment">// repeatly while dragging. See more details below.</span>
+      <span class="token comment">// A util method `echarts.util.curry` is used here to generate a</span>
+      <span class="token comment">// new function the same as `onPointDragging`, except that the</span>
+      <span class="token comment">// first parameter is fixed to be the `dataIndex` here.</span>
+      <span class="token literal-property property">ondrag</span><span class="token operator">:</span> echarts<span class="token punctuation">.</span>util<span class="token punctuation">.</span><span class="token function">curry</span><span class="token punctuation">(</span>onPointDragging<span class="token punctuation">,</span> dataIndex<span class="token punctuation">)</span>
+    <span class="token punctuation">}</span><span class="token punctuation">;</span>
+  <span class="token punctuation">}</span><span class="token punctuation">)</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>In the code above, API <a href="https://echarts.apache.org/api.html#echartsInstance.convertToPixel">convertToPixel</a> is used to convert data to its "pixel coodinate", based on which each graphic elements can be rendered on canvas. The term "pixel coodinate" means the coordinate is in canvas pixel, whose origin is the top-left of the canvas. In the sentence <code>myChart.convertToPixel('grid', dataItem)</code>, the first parameter <code>'grid'</code> indicates that <code>dataItem</code> should be converted in the first <a href="https://echarts.apache.org/option.html#grid">grid component (cartesian)</a>.</p> <p><strong>Notice:</strong> <code>convertToPixel</code> should not be called before the first time that <code>setOption</code> called. Namely, it can only be used after coordinate systems (grid/polar/...) initialized.</p> <p>Now points have been made draggable. Then we will bind event listeners on dragging to those points.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token comment">// This function will be called repeatly while dragging.</span>
+<span class="token comment">// The mission of this function is to update `series.data` based on</span>
+<span class="token comment">// the new points updated by dragging, and to re-render the line</span>
+<span class="token comment">// series based on the new data, by which the graphic elements of the</span>
+<span class="token comment">// line series can be synchronized with dragging.</span>
+<span class="token keyword">function</span> <span class="token function">onPointDragging</span><span class="token punctuation">(</span><span class="token parameter">dataIndex</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  <span class="token comment">// Here the `data` is declared in the code block in the beginning</span>
+  <span class="token comment">// of this article. The `this` refers to the dragged circle.</span>
+  <span class="token comment">// `this.position` is the current position of the circle.</span>
+  data<span class="token punctuation">[</span>dataIndex<span class="token punctuation">]</span> <span class="token operator">=</span> myChart<span class="token punctuation">.</span><span class="token function">convertFromPixel</span><span class="token punctuation">(</span><span class="token string">'grid'</span><span class="token punctuation">,</span> <span class="token keyword">this</span><span class="token punctuation">.</span>position<span class="token punctuation">)</span><span class="token punctuation">;</span>
+  <span class="token comment">// Re-render the chart based on the updated `data`.</span>
+  myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+    <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token punctuation">{</span>
+        <span class="token literal-property property">id</span><span class="token operator">:</span> <span class="token string">'a'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">data</span><span class="token operator">:</span> data
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>In the code above, API <a href="api.html#echartsInstance.convertFromPixel">convertFromPixel</a> is used, which is the reversed process of <a href="api.html#echartsInstance.convertToPixel">convertToPixel</a>. <code>myChart.convertFromPixel('grid', this.position)</code> converts a pixel coordinate to data item in <a href="https://echarts.apache.org/option.html#grid">grid (cartesian)</a>.</p> <p>Finally, add those code to make graphic elements responsive to change of canvas size.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>window<span class="token punctuation">.</span><span class="token function">addEventListener</span><span class="token punctuation">(</span><span class="token string">'resize'</span><span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  <span class="token comment">// Re-calculate the position of each circle and update chart using `setOption`.</span>
+  myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+    <span class="token literal-property property">graphic</span><span class="token operator">:</span> echarts<span class="token punctuation">.</span>util<span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span>data<span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">item<span class="token punctuation">,</span> dataIndex</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+      <span class="token keyword">return</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">position</span><span class="token operator">:</span> myChart<span class="token punctuation">.</span><span class="token function">convertToPixel</span><span class="token punctuation">(</span><span class="token string">'grid'</span><span class="token punctuation">,</span> item<span class="token punctuation">)</span>
+      <span class="token punctuation">}</span><span class="token punctuation">;</span>
+    <span class="token punctuation">}</span><span class="token punctuation">)</span>
+  <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="add-tooltip-component" tabindex="-1">Add tooltip component</h2> <p>Now basic functionality have been implemented by parte 1. If we need the data can be displayed realtime when dragging, we can use <a href="https://echarts.apache.org/option.html#tooltip">tooltip component</a> to do that. Nevertheless, tooltip component has its default "show/hide rule", which is not applicable in this case. So we need to customize the "show/hide rule" for our case.</p> <p>Add these snippets to the code block above:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+  <span class="token comment">// ...,</span>
+  <span class="token literal-property property">tooltip</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token comment">// Means disable default "show/hide rule".</span>
+    <span class="token literal-property property">triggerOn</span><span class="token operator">:</span> <span class="token string">'none'</span><span class="token punctuation">,</span>
+    <span class="token function-variable function">formatter</span><span class="token operator">:</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">params</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+      <span class="token keyword">return</span> <span class="token punctuation">(</span>
+        <span class="token string">'X: '</span> <span class="token operator">+</span>
+        params<span class="token punctuation">.</span>data<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">toFixed</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">)</span> <span class="token operator">+</span>
+        <span class="token string">'&lt;br>Y: '</span> <span class="token operator">+</span>
+        params<span class="token punctuation">.</span>data<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">toFixed</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">)</span>
+      <span class="token punctuation">)</span><span class="token punctuation">;</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+  <span class="token literal-property property">graphic</span><span class="token operator">:</span> data<span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">item<span class="token punctuation">,</span> dataIndex</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+    <span class="token keyword">return</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'circle'</span><span class="token punctuation">,</span>
+      <span class="token comment">// ...,</span>
+      <span class="token comment">// Customize "show/hide rule", show when mouse over, hide when mouse out.</span>
+      <span class="token literal-property property">onmousemove</span><span class="token operator">:</span> echarts<span class="token punctuation">.</span>util<span class="token punctuation">.</span><span class="token function">curry</span><span class="token punctuation">(</span>showTooltip<span class="token punctuation">,</span> dataIndex<span class="token punctuation">)</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">onmouseout</span><span class="token operator">:</span> echarts<span class="token punctuation">.</span>util<span class="token punctuation">.</span><span class="token function">curry</span><span class="token punctuation">(</span>hideTooltip<span class="token punctuation">,</span> dataIndex<span class="token punctuation">)</span>
+    <span class="token punctuation">}</span><span class="token punctuation">;</span>
+  <span class="token punctuation">}</span><span class="token punctuation">)</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+<span class="token keyword">function</span> <span class="token function">showTooltip</span><span class="token punctuation">(</span><span class="token parameter">dataIndex</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  myChart<span class="token punctuation">.</span><span class="token function">dispatchAction</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'showTip'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">seriesIndex</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">dataIndex</span><span class="token operator">:</span> dataIndex
+  <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span>
+
+<span class="token keyword">function</span> <span class="token function">hideTooltip</span><span class="token punctuation">(</span><span class="token parameter">dataIndex</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  myChart<span class="token punctuation">.</span><span class="token function">dispatchAction</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'hideTip'</span>
+  <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>The API <a href="https://echarts.apache.org//api.html#echartsInstance.dispatchAction">dispatchAction</a> is used to show/hide tooltip content, where actions <a href="https://echarts.apache.org//api.html#action.tooltip.showTip">showTip</a> and <a href="api.html#action.tooltip.hideTip">hideTip</a> is dispatched.</p> <h2 id="full-code" tabindex="-1">Full code</h2> <p>Full code is shown as follow:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">import</span> echarts <span class="token keyword">from</span> <span class="token string">'echarts'</span><span class="token punctuation">;</span>
+
+<span class="token keyword">var</span> symbolSize <span class="token operator">=</span> <span class="token number">20</span><span class="token punctuation">;</span>
+<span class="token keyword">var</span> data <span class="token operator">=</span> <span class="token punctuation">[</span>
+  <span class="token punctuation">[</span><span class="token number">15</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token punctuation">[</span><span class="token operator">-</span><span class="token number">50</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token punctuation">[</span><span class="token operator">-</span><span class="token number">56.5</span><span class="token punctuation">,</span> <span class="token number">20</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token punctuation">[</span><span class="token operator">-</span><span class="token number">46.5</span><span class="token punctuation">,</span> <span class="token number">30</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token punctuation">[</span><span class="token operator">-</span><span class="token number">22.1</span><span class="token punctuation">,</span> <span class="token number">40</span><span class="token punctuation">]</span>
+<span class="token punctuation">]</span><span class="token punctuation">;</span>
+<span class="token keyword">var</span> myChart <span class="token operator">=</span> echarts<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span>document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span><span class="token string">'main'</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+  <span class="token literal-property property">tooltip</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">triggerOn</span><span class="token operator">:</span> <span class="token string">'none'</span><span class="token punctuation">,</span>
+    <span class="token function-variable function">formatter</span><span class="token operator">:</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">params</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+      <span class="token keyword">return</span> <span class="token punctuation">(</span>
+        <span class="token string">'X: '</span> <span class="token operator">+</span>
+        params<span class="token punctuation">.</span>data<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">toFixed</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">)</span> <span class="token operator">+</span>
+        <span class="token string">'&lt;br />Y: '</span> <span class="token operator">+</span>
+        params<span class="token punctuation">.</span>data<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">toFixed</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">)</span>
+      <span class="token punctuation">)</span><span class="token punctuation">;</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">min</span><span class="token operator">:</span> <span class="token operator">-</span><span class="token number">100</span><span class="token punctuation">,</span> <span class="token literal-property property">max</span><span class="token operator">:</span> <span class="token number">80</span><span class="token punctuation">,</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'value'</span><span class="token punctuation">,</span> <span class="token literal-property property">axisLine</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">onZero</span><span class="token operator">:</span> <span class="token boolean">false</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">min</span><span class="token operator">:</span> <span class="token operator">-</span><span class="token number">30</span><span class="token punctuation">,</span> <span class="token literal-property property">max</span><span class="token operator">:</span> <span class="token number">60</span><span class="token punctuation">,</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'value'</span><span class="token punctuation">,</span> <span class="token literal-property property">axisLine</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">onZero</span><span class="token operator">:</span> <span class="token boolean">false</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span> <span class="token literal-property property">id</span><span class="token operator">:</span> <span class="token string">'a'</span><span class="token punctuation">,</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span><span class="token punctuation">,</span> <span class="token literal-property property">smooth</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span> <span class="token literal-property property">symbolSize</span><span class="token operator">:</span> symbolSize<span class="token punctuation">,</span> <span class="token literal-property property">data</span><span class="token operator">:</span> data <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+  <span class="token literal-property property">graphic</span><span class="token operator">:</span> echarts<span class="token punctuation">.</span>util<span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span>data<span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">item<span class="token punctuation">,</span> dataIndex</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+    <span class="token keyword">return</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'circle'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">position</span><span class="token operator">:</span> myChart<span class="token punctuation">.</span><span class="token function">convertToPixel</span><span class="token punctuation">(</span><span class="token string">'grid'</span><span class="token punctuation">,</span> item<span class="token punctuation">)</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">shape</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">r</span><span class="token operator">:</span> symbolSize <span class="token operator">/</span> <span class="token number">2</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">invisible</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">draggable</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">ondrag</span><span class="token operator">:</span> echarts<span class="token punctuation">.</span>util<span class="token punctuation">.</span><span class="token function">curry</span><span class="token punctuation">(</span>onPointDragging<span class="token punctuation">,</span> dataIndex<span class="token punctuation">)</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">onmousemove</span><span class="token operator">:</span> echarts<span class="token punctuation">.</span>util<span class="token punctuation">.</span><span class="token function">curry</span><span class="token punctuation">(</span>showTooltip<span class="token punctuation">,</span> dataIndex<span class="token punctuation">)</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">onmouseout</span><span class="token operator">:</span> echarts<span class="token punctuation">.</span>util<span class="token punctuation">.</span><span class="token function">curry</span><span class="token punctuation">(</span>hideTooltip<span class="token punctuation">,</span> dataIndex<span class="token punctuation">)</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">z</span><span class="token operator">:</span> <span class="token number">100</span>
+    <span class="token punctuation">}</span><span class="token punctuation">;</span>
+  <span class="token punctuation">}</span><span class="token punctuation">)</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+window<span class="token punctuation">.</span><span class="token function">addEventListener</span><span class="token punctuation">(</span><span class="token string">'resize'</span><span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+    <span class="token literal-property property">graphic</span><span class="token operator">:</span> echarts<span class="token punctuation">.</span>util<span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span>data<span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">item<span class="token punctuation">,</span> dataIndex</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+      <span class="token keyword">return</span> <span class="token punctuation">{</span> <span class="token literal-property property">position</span><span class="token operator">:</span> myChart<span class="token punctuation">.</span><span class="token function">convertToPixel</span><span class="token punctuation">(</span><span class="token string">'grid'</span><span class="token punctuation">,</span> item<span class="token punctuation">)</span> <span class="token punctuation">}</span><span class="token punctuation">;</span>
+    <span class="token punctuation">}</span><span class="token punctuation">)</span>
+  <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token keyword">function</span> <span class="token function">showTooltip</span><span class="token punctuation">(</span><span class="token parameter">dataIndex</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  myChart<span class="token punctuation">.</span><span class="token function">dispatchAction</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'showTip'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">seriesIndex</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">dataIndex</span><span class="token operator">:</span> dataIndex
+  <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span>
+<span class="token keyword">function</span> <span class="token function">hideTooltip</span><span class="token punctuation">(</span><span class="token parameter">dataIndex</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  myChart<span class="token punctuation">.</span><span class="token function">dispatchAction</span><span class="token punctuation">(</span><span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'hideTip'</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span>
+<span class="token keyword">function</span> <span class="token function">onPointDragging</span><span class="token punctuation">(</span><span class="token parameter">dataIndex<span class="token punctuation">,</span> dx<span class="token punctuation">,</span> dy</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  data<span class="token punctuation">[</span>dataIndex<span class="token punctuation">]</span> <span class="token operator">=</span> myChart<span class="token punctuation">.</span><span class="token function">convertFromPixel</span><span class="token punctuation">(</span><span class="token string">'grid'</span><span class="token punctuation">,</span> <span class="token keyword">this</span><span class="token punctuation">.</span>position<span class="token punctuation">)</span><span class="token punctuation">;</span>
+  myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+    <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token punctuation">{</span>
+        <span class="token literal-property property">id</span><span class="token operator">:</span> <span class="token string">'a'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">data</span><span class="token operator">:</span> data
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>With knowledge introduced above, more feature can be implemented. For example, <a href="https://echarts.apache.org/option.html#dataZoom">dataZoom component</a> can be added to cooperate with the cartesian, or we can make a plotting board on coordinate systems. Use your imagination ~</p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">Contributors</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/en/how-to/interaction/drag.md" title="Edit this Document" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">Edit this page on GitHub</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/Ovilia" target="_blank" class="post-contributor has-avatar"><img alt="Ovilia" src="https://echarts.apache.org/en/images/people/羡辙.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>Ovilia</span></a><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(i,t,e,l,d,a,g,o,r,c,n,I,h,C,s,G,p,b,m,A,Z,B,y,w,X,u,v,R,Y,W,F,K,H,V,S,J,L,U,N,k,f,z,x,j,T,M,Q,D,E,P,O,q,_,$,ii,ti,ei,li,di,ai,gi,oi,ri){return{layout:"default",data:[{html:'<h1 id="an-example--implement-dragging" tabindex="-1">An Example: Implement Dragging</h1>\n<p>This is a tiny example, introducing how to implement dragging of graphic elements in Apache ECharts<sup>TM</sup>. From this example, we will see how to make an application with rich intractivity based on echarts API.</p>\n<p><md-example src="line-draggable" height="400"></md-example></p>\n<p>This example mainly implements that dragging points of a curve and by which the curve is modified. Although it is simple example, but we can do more based on that, like edit charts viually. So let\'s get started from this simple example.</p>\n<h2 id="implement-basic-dragging" tabindex="-1">Implement basic dragging</h2>\n<p>First of all, we create a basic <a href="https://echarts.apache.org/option.html#series-line">line chart (line series)</a>:</p>\n<md-code-block lang="js" code="\'dmFyIHN5bWJvbFNpemUgPSAyMDsKdmFyIGRhdGEgPSBbCiAgWzE1LCAwXSwKICBbLTUwLCAxMF0sCiAgWy01Ni41LCAyMF0sCiAgWy00Ni41LCAzMF0sCiAgWy0yMi4xLCA0MF0KXTsKCm15Q2hhcnQuc2V0T3B0aW9uKHsKICB4QXhpczogewogICAgbWluOiAtMTAwLAogICAgbWF4OiA4MCwKICAgIHR5cGU6ICd2YWx1ZScsCiAgICBheGlzTGluZTogeyBvblplcm86IGZhbHNlIH0KICB9LAogIHlBeGlzOiB7CiAgICBtaW46IC0zMCwKICAgIG1heDogNjAsCiAgICB0eXBlOiAndmFsdWUnLAogICAgYXhpc0xpbmU6IHsgb25aZXJvOiBmYWxzZSB9CiAgfSwKICBzZXJpZXM6IFsKICAgIHsKICAgICAgaWQ6ICdhJywKICAgICAgdHlwZTogJ2xpbmUnLAogICAgICBzbW9vdGg6IHRydWUsCiAgICAgIC8vIFNldCBhIGJpZyBzeW1ib2xTaXplIGZvciBkcmFnZ2luZyBjb252ZW5pZW5jZS4KICAgICAgc3ltYm9sU2l6ZTogc3ltYm9sU2l6ZSwKICAgICAgZGF0YTogZGF0YQogICAgfQogIF0KfSk7\'" line-highlights="\'\'" />\n<p>Since the symbols in line is not draggable, we make them draggable by using <a href="https://echarts.apache.org/option.html#graphic">graphic component</a> to add draggable circular elements to symbols respectively.</p>\n<md-code-block lang="js" code="\'bXlDaGFydC5zZXRPcHRpb24oewogIC8vIERlY2xhcmUgYSBncmFwaGljIGNvbXBvbmVudCwgd2hpY2ggY29udGFpbnMgc29tZSBncmFwaGljIGVsZW1lbnRzCiAgLy8gd2l0aCB0aGUgdHlwZSBvZiAnY2lyY2xlJy4KICAvLyBIZXJlIHdlIGhhdmUgdXNlZCB0aGUgbWV0aG9kIGBlY2hhcnRzLnV0aWwubWFwYCwgd2hpY2ggaGFzIHRoZSBzYW1lCiAgLy8gYmVoYXZpb3IgYXMgQXJyYXkucHJvdG90eXBlLm1hcCwgYW5kIGlzIGNvbXBhdGlibGUgd2l0aCBFUzUtLgogIGdyYXBoaWM6IGVjaGFydHMudXRpbC5tYXAoZGF0YSwgZnVuY3Rpb24oZGF0YUl0ZW0sIGRhdGFJbmRleCkgewogICAgcmV0dXJuIHsKICAgICAgLy8gJ2NpcmNsZScgbWVhbnMgdGhpcyBncmFwaGljIGVsZW1lbnQgaXMgYSBzaGFwZSBvZiBjaXJjbGUuCiAgICAgIHR5cGU6ICdjaXJjbGUnLAoKICAgICAgc2hhcGU6IHsKICAgICAgICAvLyBUaGUgcmFkaXVzIG9mIHRoZSBjaXJjbGUuCiAgICAgICAgcjogc3ltYm9sU2l6ZSAvIDIKICAgICAgfSwKICAgICAgLy8gVHJhbnNmb3JtIGlzIHVzZWQgdG8gbG9jYXRlZCB0aGUgY2lyY2xlLiBwb3NpdGlvbjoKICAgICAgLy8gW3gsIHldIG1lYW5zIHRyYW5zbGF0ZSB0aGUgY2lyY2xlIHRvIHRoZSBwb3NpdGlvbiBbeCwgeV0uCiAgICAgIC8vIFRoZSBBUEkgYGNvbnZlcnRUb1BpeGVsYCBpcyB1c2VkIHRvIGdldCB0aGUgcG9zaXRpb24gb2YKICAgICAgLy8gdGhlIGNpcmNsZSwgd2hpY2ggd2lsbCBpbnRyb2R1Y2VkIGxhdGVyLgogICAgICBwb3NpdGlvbjogbXlDaGFydC5jb252ZXJ0VG9QaXhlbCgnZ3JpZCcsIGRhdGFJdGVtKSwKCiAgICAgIC8vIE1ha2UgdGhlIGNpcmNsZSBpbnZpc2libGUgKGJ1dCBtb3VzZSBldmVudCB3b3JrcyBhcyBub3JtYWwpLgogICAgICBpbnZpc2libGU6IHRydWUsCiAgICAgIC8vIE1ha2UgdGhlIGNpcmNsZSBkcmFnZ2FibGUuCiAgICAgIGRyYWdnYWJsZTogdHJ1ZSwKICAgICAgLy8gR2l2ZSBhIGJpZyB6IHZhbHVlLCB3aGljaCBtYWtlcyB0aGUgY2lyY2xlIGNvdmVyIHRoZSBzeW1ib2wKICAgICAgLy8gaW4gbGluZSBzZXJpZXMuCiAgICAgIHo6IDEwMCwKICAgICAgLy8gVGhpcyBpcyB0aGUgZXZlbnQgaGFuZGxlciBvZiBkcmFnZ2luZywgd2hpY2ggd2lsbCBiZSB0cmlnZ2VyZWQKICAgICAgLy8gcmVwZWF0bHkgd2hpbGUgZHJhZ2dpbmcuIFNlZSBtb3JlIGRldGFpbHMgYmVsb3cuCiAgICAgIC8vIEEgdXRpbCBtZXRob2QgYGVjaGFydHMudXRpbC5jdXJyeWAgaXMgdXNlZCBoZXJlIHRvIGdlbmVyYXRlIGEKICAgICAgLy8gbmV3IGZ1bmN0aW9uIHRoZSBzYW1lIGFzIGBvblBvaW50RHJhZ2dpbmdgLCBleGNlcHQgdGhhdCB0aGUKICAgICAgLy8gZmlyc3QgcGFyYW1ldGVyIGlzIGZpeGVkIHRvIGJlIHRoZSBgZGF0YUluZGV4YCBoZXJlLgogICAgICBvbmRyYWc6IGVjaGFydHMudXRpbC5jdXJyeShvblBvaW50RHJhZ2dpbmcsIGRhdGFJbmRleCkKICAgIH07CiAgfSkKfSk7\'" line-highlights="\'\'" />\n<p>In the code above, API <a href="https://echarts.apache.org/api.html#echartsInstance.convertToPixel">convertToPixel</a> is used to convert data to its &quot;pixel coodinate&quot;, based on which each graphic elements can be rendered on canvas. The term &quot;pixel coodinate&quot; means the coordinate is in canvas pixel, whose origin is the top-left of the canvas. In the sentence <code>myChart.convertToPixel(\'grid\', dataItem)</code>, the first parameter <code>\'grid\'</code> indicates that <code>dataItem</code> should be converted in the first <a href="https://echarts.apache.org/option.html#grid">grid component (cartesian)</a>.</p>\n<p><strong>Notice:</strong> <code>convertToPixel</code> should not be called before the first time that <code>setOption</code> called. Namely, it can only be used after coordinate systems (grid/polar/...) initialized.</p>\n<p>Now points have been made draggable. Then we will bind event listeners on dragging to those points.</p>\n<md-code-block lang="js" code="\'Ly8gVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCByZXBlYXRseSB3aGlsZSBkcmFnZ2luZy4KLy8gVGhlIG1pc3Npb24gb2YgdGhpcyBmdW5jdGlvbiBpcyB0byB1cGRhdGUgYHNlcmllcy5kYXRhYCBiYXNlZCBvbgovLyB0aGUgbmV3IHBvaW50cyB1cGRhdGVkIGJ5IGRyYWdnaW5nLCBhbmQgdG8gcmUtcmVuZGVyIHRoZSBsaW5lCi8vIHNlcmllcyBiYXNlZCBvbiB0aGUgbmV3IGRhdGEsIGJ5IHdoaWNoIHRoZSBncmFwaGljIGVsZW1lbnRzIG9mIHRoZQovLyBsaW5lIHNlcmllcyBjYW4gYmUgc3luY2hyb25pemVkIHdpdGggZHJhZ2dpbmcuCmZ1bmN0aW9uIG9uUG9pbnREcmFnZ2luZyhkYXRhSW5kZXgpIHsKICAvLyBIZXJlIHRoZSBgZGF0YWAgaXMgZGVjbGFyZWQgaW4gdGhlIGNvZGUgYmxvY2sgaW4gdGhlIGJlZ2lubmluZwogIC8vIG9mIHRoaXMgYXJ0aWNsZS4gVGhlIGB0aGlzYCByZWZlcnMgdG8gdGhlIGRyYWdnZWQgY2lyY2xlLgogIC8vIGB0aGlzLnBvc2l0aW9uYCBpcyB0aGUgY3VycmVudCBwb3NpdGlvbiBvZiB0aGUgY2lyY2xlLgogIGRhdGFbZGF0YUluZGV4XSA9IG15Q2hhcnQuY29udmVydEZyb21QaXhlbCgnZ3JpZCcsIHRoaXMucG9zaXRpb24pOwogIC8vIFJlLXJlbmRlciB0aGUgY2hhcnQgYmFzZWQgb24gdGhlIHVwZGF0ZWQgYGRhdGFgLgogIG15Q2hhcnQuc2V0T3B0aW9uKHsKICAgIHNlcmllczogWwogICAgICB7CiAgICAgICAgaWQ6ICdhJywKICAgICAgICBkYXRhOiBkYXRhCiAgICAgIH0KICAgIF0KICB9KTsKfQ\'" line-highlights="\'\'" />\n<p>In the code above, API <a href="api.html#echartsInstance.convertFromPixel">convertFromPixel</a> is used, which is the reversed process of <a href="api.html#echartsInstance.convertToPixel">convertToPixel</a>. <code>myChart.convertFromPixel(\'grid\', this.position)</code> converts a pixel coordinate to data item in <a href="https://echarts.apache.org/option.html#grid">grid (cartesian)</a>.</p>\n<p>Finally, add those code to make graphic elements responsive to change of canvas size.</p>\n<md-code-block lang="js" code="\'d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGZ1bmN0aW9uKCkgewogIC8vIFJlLWNhbGN1bGF0ZSB0aGUgcG9zaXRpb24gb2YgZWFjaCBjaXJjbGUgYW5kIHVwZGF0ZSBjaGFydCB1c2luZyBgc2V0T3B0aW9uYC4KICBteUNoYXJ0LnNldE9wdGlvbih7CiAgICBncmFwaGljOiBlY2hhcnRzLnV0aWwubWFwKGRhdGEsIGZ1bmN0aW9uKGl0ZW0sIGRhdGFJbmRleCkgewogICAgICByZXR1cm4gewogICAgICAgIHBvc2l0aW9uOiBteUNoYXJ0LmNvbnZlcnRUb1BpeGVsKCdncmlkJywgaXRlbSkKICAgICAgfTsKICAgIH0pCiAgfSk7Cn0pOw\'" line-highlights="\'\'" />\n<h2 id="add-tooltip-component" tabindex="-1">Add tooltip component</h2>\n<p>Now basic functionality have been implemented by parte 1. If we need the data can be displayed realtime when dragging, we can use <a href="https://echarts.apache.org/option.html#tooltip">tooltip component</a> to do that. Nevertheless, tooltip component has its default &quot;show/hide rule&quot;, which is not applicable in this case. So we need to customize the &quot;show/hide rule&quot; for our case.</p>\n<p>Add these snippets to the code block above:</p>\n<md-code-block lang="js" code="\'bXlDaGFydC5zZXRPcHRpb24oewogIC8vIC4uLiwKICB0b29sdGlwOiB7CiAgICAvLyBNZWFucyBkaXNhYmxlIGRlZmF1bHQgInNob3cvaGlkZSBydWxlIi4KICAgIHRyaWdnZXJPbjogJ25vbmUnLAogICAgZm9ybWF0dGVyOiBmdW5jdGlvbihwYXJhbXMpIHsKICAgICAgcmV0dXJuICgKICAgICAgICAnWDogJyArCiAgICAgICAgcGFyYW1zLmRhdGFbMF0udG9GaXhlZCgyKSArCiAgICAgICAgJzxicj5ZOiAnICsKICAgICAgICBwYXJhbXMuZGF0YVsxXS50b0ZpeGVkKDIpCiAgICAgICk7CiAgICB9CiAgfQp9KTs\'" line-highlights="\'\'" />\n<md-code-block lang="js" code="\'bXlDaGFydC5zZXRPcHRpb24oewogIGdyYXBoaWM6IGRhdGEubWFwKGZ1bmN0aW9uKGl0ZW0sIGRhdGFJbmRleCkgewogICAgcmV0dXJuIHsKICAgICAgdHlwZTogJ2NpcmNsZScsCiAgICAgIC8vIC4uLiwKICAgICAgLy8gQ3VzdG9taXplICJzaG93L2hpZGUgcnVsZSIsIHNob3cgd2hlbiBtb3VzZSBvdmVyLCBoaWRlIHdoZW4gbW91c2Ugb3V0LgogICAgICBvbm1vdXNlbW92ZTogZWNoYXJ0cy51dGlsLmN1cnJ5KHNob3dUb29sdGlwLCBkYXRhSW5kZXgpLAogICAgICBvbm1vdXNlb3V0OiBlY2hhcnRzLnV0aWwuY3VycnkoaGlkZVRvb2x0aXAsIGRhdGFJbmRleCkKICAgIH07CiAgfSkKfSk7CgpmdW5jdGlvbiBzaG93VG9vbHRpcChkYXRhSW5kZXgpIHsKICBteUNoYXJ0LmRpc3BhdGNoQWN0aW9uKHsKICAgIHR5cGU6ICdzaG93VGlwJywKICAgIHNlcmllc0luZGV4OiAwLAogICAgZGF0YUluZGV4OiBkYXRhSW5kZXgKICB9KTsKfQoKZnVuY3Rpb24gaGlkZVRvb2x0aXAoZGF0YUluZGV4KSB7CiAgbXlDaGFydC5kaXNwYXRjaEFjdGlvbih7CiAgICB0eXBlOiAnaGlkZVRpcCcKICB9KTsKfQ\'" line-highlights="\'\'" />\n<p>The API <a href="https://echarts.apache.org//api.html#echartsInstance.dispatchAction">dispatchAction</a> is used to show/hide tooltip content, where actions <a href="https://echarts.apache.org//api.html#action.tooltip.showTip">showTip</a> and <a href="api.html#action.tooltip.hideTip">hideTip</a> is dispatched.</p>\n<h2 id="full-code" tabindex="-1">Full code</h2>\n<p>Full code is shown as follow:</p>\n<md-code-block lang="js" code="\'aW1wb3J0IGVjaGFydHMgZnJvbSAnZWNoYXJ0cyc7Cgp2YXIgc3ltYm9sU2l6ZSA9IDIwOwp2YXIgZGF0YSA9IFsKICBbMTUsIDBdLAogIFstNTAsIDEwXSwKICBbLTU2LjUsIDIwXSwKICBbLTQ2LjUsIDMwXSwKICBbLTIyLjEsIDQwXQpdOwp2YXIgbXlDaGFydCA9IGVjaGFydHMuaW5pdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFpbicpKTsKbXlDaGFydC5zZXRPcHRpb24oewogIHRvb2x0aXA6IHsKICAgIHRyaWdnZXJPbjogJ25vbmUnLAogICAgZm9ybWF0dGVyOiBmdW5jdGlvbihwYXJhbXMpIHsKICAgICAgcmV0dXJuICgKICAgICAgICAnWDogJyArCiAgICAgICAgcGFyYW1zLmRhdGFbMF0udG9GaXhlZCgyKSArCiAgICAgICAgJzxiciAvPlk6ICcgKwogICAgICAgIHBhcmFtcy5kYXRhWzFdLnRvRml4ZWQoMikKICAgICAgKTsKICAgIH0KICB9LAogIHhBeGlzOiB7IG1pbjogLTEwMCwgbWF4OiA4MCwgdHlwZTogJ3ZhbHVlJywgYXhpc0xpbmU6IHsgb25aZXJvOiBmYWxzZSB9IH0sCiAgeUF4aXM6IHsgbWluOiAtMzAsIG1heDogNjAsIHR5cGU6ICd2YWx1ZScsIGF4aXNMaW5lOiB7IG9uWmVybzogZmFsc2UgfSB9LAogIHNlcmllczogWwogICAgeyBpZDogJ2EnLCB0eXBlOiAnbGluZScsIHNtb290aDogdHJ1ZSwgc3ltYm9sU2l6ZTogc3ltYm9sU2l6ZSwgZGF0YTogZGF0YSB9CiAgXQp9KTsKbXlDaGFydC5zZXRPcHRpb24oewogIGdyYXBoaWM6IGVjaGFydHMudXRpbC5tYXAoZGF0YSwgZnVuY3Rpb24oaXRlbSwgZGF0YUluZGV4KSB7CiAgICByZXR1cm4gewogICAgICB0eXBlOiAnY2lyY2xlJywKICAgICAgcG9zaXRpb246IG15Q2hhcnQuY29udmVydFRvUGl4ZWwoJ2dyaWQnLCBpdGVtKSwKICAgICAgc2hhcGU6IHsgcjogc3ltYm9sU2l6ZSAvIDIgfSwKICAgICAgaW52aXNpYmxlOiB0cnVlLAogICAgICBkcmFnZ2FibGU6IHRydWUsCiAgICAgIG9uZHJhZzogZWNoYXJ0cy51dGlsLmN1cnJ5KG9uUG9pbnREcmFnZ2luZywgZGF0YUluZGV4KSwKICAgICAgb25tb3VzZW1vdmU6IGVjaGFydHMudXRpbC5jdXJyeShzaG93VG9vbHRpcCwgZGF0YUluZGV4KSwKICAgICAgb25tb3VzZW91dDogZWNoYXJ0cy51dGlsLmN1cnJ5KGhpZGVUb29sdGlwLCBkYXRhSW5kZXgpLAogICAgICB6OiAxMDAKICAgIH07CiAgfSkKfSk7CndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBmdW5jdGlvbigpIHsKICBteUNoYXJ0LnNldE9wdGlvbih7CiAgICBncmFwaGljOiBlY2hhcnRzLnV0aWwubWFwKGRhdGEsIGZ1bmN0aW9uKGl0ZW0sIGRhdGFJbmRleCkgewogICAgICByZXR1cm4geyBwb3NpdGlvbjogbXlDaGFydC5jb252ZXJ0VG9QaXhlbCgnZ3JpZCcsIGl0ZW0pIH07CiAgICB9KQogIH0pOwp9KTsKZnVuY3Rpb24gc2hvd1Rvb2x0aXAoZGF0YUluZGV4KSB7CiAgbXlDaGFydC5kaXNwYXRjaEFjdGlvbih7CiAgICB0eXBlOiAnc2hvd1RpcCcsCiAgICBzZXJpZXNJbmRleDogMCwKICAgIGRhdGFJbmRleDogZGF0YUluZGV4CiAgfSk7Cn0KZnVuY3Rpb24gaGlkZVRvb2x0aXAoZGF0YUluZGV4KSB7CiAgbXlDaGFydC5kaXNwYXRjaEFjdGlvbih7IHR5cGU6ICdoaWRlVGlwJyB9KTsKfQpmdW5jdGlvbiBvblBvaW50RHJhZ2dpbmcoZGF0YUluZGV4LCBkeCwgZHkpIHsKICBkYXRhW2RhdGFJbmRleF0gPSBteUNoYXJ0LmNvbnZlcnRGcm9tUGl4ZWwoJ2dyaWQnLCB0aGlzLnBvc2l0aW9uKTsKICBteUNoYXJ0LnNldE9wdGlvbih7CiAgICBzZXJpZXM6IFsKICAgICAgewogICAgICAgIGlkOiAnYScsCiAgICAgICAgZGF0YTogZGF0YQogICAgICB9CiAgICBdCiAgfSk7Cn0\'" line-highlights="\'\'" />\n<p>With knowledge introduced above, more feature can be implemented. For example, <a href="https://echarts.apache.org/option.html#dataZoom">dataZoom component</a> can be added to cooperate with the cartesian, or we can make a plotting board on coordinate systems. Use your imagination ~</p>\n',postPath:"en/how-to/interaction/drag",title:"Drag - Interaction - How To Guides"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:l},{title:"入门篇",dir:d,children:[{title:"获取 ECharts",dir:a},{title:"在项目中引入 ECharts",dir:g},{title:"资源列表",dir:o,draft:i},{title:"寻求帮助",dir:r},{title:"版本特性",dir:c,children:[{title:"ECharts 6 特性介绍",dir:n},{title:"v5 升级 v6 指南",dir:I},{title:"5.0",dir:h},{title:"v4 升级 v5 指南",dir:C},{title:5.2,dir:s},{title:5.3,dir:G},{title:5.4,dir:p},{title:5.5,dir:b},{title:5.6,dir:m}]}]},{title:"概念篇",dir:A,children:[{title:"图表容器及大小",dir:Z},{title:"配置项",dir:B,draft:i},{title:"系列",dir:y,draft:i},{title:"样式",dir:w},{title:"数据集",dir:X},{title:"数据转换",dir:u},{title:"坐标系",dir:v,draft:i},{title:"坐标轴",dir:R},{title:"视觉映射",dir:e},{title:"图例",dir:Y},{title:"事件与行为",dir:W}]},{title:"应用篇",dir:F,children:[{title:"常用图表类型",dir:K,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:H},{title:"堆叠柱状图",dir:V},{title:"动态排序柱状图",dir:S},{title:"极坐标系柱状图",dir:J,draft:i},{title:"阶梯瀑布图",dir:L},{title:"视觉映射的柱状图",dir:e,draft:i}]},{title:"折线图",dir:U,children:[{title:"基础折线图",dir:N},{title:"堆叠折线图",dir:k},{title:"区域面积图",dir:f},{title:"平滑曲线图",dir:z},{title:"阶梯线图",dir:x}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:j},{title:"圆环图",dir:T},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:M,children:[{title:"基础散点图",dir:Q}]}]},{title:"常用组件",dir:D,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:E}]}]},{title:"移动端优化",dir:t,draft:i},{title:"跨平台方案",dir:P,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:O},{title:"数据下钻",dir:q,draft:i}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:_}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:ii}]},{title:"交互",dir:ti,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:ei,draft:i},{title:"智能指针吸附",dir:li}]}]},{title:"最佳实践",dir:di,children:[{title:"移动端优化",dir:t,draft:i},{title:ai,dir:gi},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:oi}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:ri}]}],en:[{title:"Get Started",dir:l},{title:"Basics",dir:d,children:[{title:"Download ECharts",dir:a},{title:"Import ECharts",dir:g},{title:"Resources",dir:o,draft:i},{title:"Get Help",dir:r},{title:"What's New",dir:c,children:[{title:"ECharts 6 Features",dir:n},{title:"Migration from v5 to v6",dir:I},{title:"5.0",dir:h},{title:"Migration from v4 to v5",dir:C},{title:5.2,dir:s},{title:5.3,dir:G},{title:5.4,dir:p},{title:5.5,dir:b},{title:5.6,dir:m}]}]},{title:"Concepts",dir:A,children:[{title:"Chart Container",dir:Z},{title:"Chart Option",dir:B,draft:i},{title:"Series",dir:y,draft:i},{title:"Style",dir:w},{title:"Dataset",dir:X},{title:"Data Transform",dir:u},{title:"Coordinate",dir:v,draft:i},{title:"Axis",dir:R},{title:"Visual Mapping",dir:e},{title:"Legend",dir:Y},{title:"Event and Action",dir:W}]},{title:"How To Guides",dir:F,children:[{title:"Common Charts",dir:K,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:H},{title:"Stacked Bar",dir:V},{title:"Bar Racing",dir:S},{title:"Bar Polar",dir:J,draft:i},{title:"Waterfall",dir:L}]},{title:"Line",dir:U,children:[{title:"Basic Line",dir:N},{title:"Stacked Line",dir:k},{title:"Area Chart",dir:f},{title:"Smoothed Line",dir:z},{title:"Step Line",dir:x}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:j},{title:"Ring Style",dir:T},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:M,children:[{title:"Basic Scatter",dir:Q}]}]},{title:"Common Components",dir:D,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:E}]}]},{title:"Mobile",dir:t,draft:i},{title:"Cross Platform",dir:P,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:O},{title:"Drilldown",dir:q,draft:i}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:_}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:ii}]},{title:"Interaction",dir:ti,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:ei,draft:i},{title:"Intelligent Pointer Snapping",dir:li}]}]},{title:"Best Practices",dir:di,children:[{title:"Mobile Optimization",dir:t,draft:i},{title:ai,dir:gi},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:oi}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:ri}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:i,routePath:"/en/how-to/interaction/drag",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/en/how-to/label/rich-text/index.html b/docs/en/how-to/label/rich-text/index.html
new file mode 100644
index 0000000..bbc6b02
--- /dev/null
+++ b/docs/en/how-to/label/rich-text/index.html
@@ -0,0 +1,655 @@
+<!doctype html>
+<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Rich Text - Label - How To Guides - Handbook - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="en"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/en/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/en/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/en/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/en/index.html" class="navbar-brand"><img src="https://echarts.apache.org/en/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/en/index.html">Home</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Docs<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/feature.html">Features</a></li><li><a href="https://echarts.apache.org/handbook/en/get-started/">Handbook</a></li><li><a href="https://echarts.apache.org/en/api.html">API</a></li><li><a href="https://echarts.apache.org/en/option.html">Chart Configuration</a></li><li><a href="https://echarts.apache.org/en/changelog.html">Changelog</a></li><li><a href="https://echarts.apache.org/en/faq.html">FAQ</a></li><li><a href="https://echarts.apache.org/handbook/en/basics/release-note/v6-upgrade-guide">V6 Upgrade Guide</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Download<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/download.html">Download</a></li><li><a href="https://echarts.apache.org/en/download-theme.html">Download Themes</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">Download Custom Series<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/download-extension.html">Download Extensions</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/en/index.html">Examples</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Resources<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/spreadsheet.html">Spread Sheet Tool</a></li><li><a href="https://echarts.apache.org/en/theme-builder.html">Theme Builder</a></li><li><a href="https://echarts.apache.org/en/cheat-sheet.html">Cheat Sheet</a></li><li><a href="https://echarts.apache.org/en/resources.html">More Resources</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/events.html">Events</a></li><li><a href="https://echarts.apache.org/en/committers.html">Committers</a></li><li><a href="https://echarts.apache.org/en/maillist.html">Mailing List</a></li><li><a href="https://echarts.apache.org/en/contributing.html">How to Contribute</a></li><li><a href="https://echarts.apache.org/en/dependencies.html">Dependencies</a></li><li><a href="https://echarts.apache.org/en/coding-standard.html">Code Standard</a></li><li><a href="https://github.com/apache/echarts" target="_blank">Source Code (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/security.html">Security</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">License<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">Events<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("zh")'>中文</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/en/get-started" class="nav-link"><span class="title">Get Started</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Basics</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/basics/download" class="nav-link"><span class="title">Download ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/import" class="nav-link"><span class="title">Import ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/basics/help" class="nav-link"><span class="title">Get Help</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">What's New</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 Features</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">Migration from v5 to v6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">Migration from v4 to v5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Concepts</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/concepts/chart-size" class="nav-link"><span class="title">Chart Container</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/style" class="nav-link"><span class="title">Style</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/dataset" class="nav-link"><span class="title">Dataset</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/data-transform" class="nav-link"><span class="title">Data Transform</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/axis" class="nav-link"><span class="title">Axis</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/visual-map" class="nav-link"><span class="title">Visual Mapping</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/legend" class="nav-link"><span class="title">Legend</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/event" class="nav-link"><span class="title">Event and Action</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">How To Guides</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">Common Charts</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Bar</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">Basic Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">Stacked Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">Bar Racing</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">Waterfall</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Line</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">Basic Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">Stacked Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/area-line" class="nav-link"><span class="title">Area Chart</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">Smoothed Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/step-line" class="nav-link"><span class="title">Step Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Pie</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">Basic Pie</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">Ring Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/rose" class="nav-link"><span class="title">Rose Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Scatter</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">Basic Scatter</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Common Components</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Geo</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG Base Map</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">Cross Platform</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/cross-platform/server" class="nav-link"><span class="title">Server Side Rendering</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Data</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/data/dynamic-data" class="nav-link"><span class="title">Dynamic Data</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Label</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a href="/echarts-handbook/en/how-to/label/rich-text" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">Rich Text</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Animation</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/animation/transition" class="nav-link"><span class="title">Data Transition</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Interaction</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/drag" class="nav-link"><span class="title">Drag</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">Intelligent Pointer Snapping</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Best Practices</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/en/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/aria" class="nav-link"><span class="title">Aria</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/security" class="nav-link"><span class="title">Security Guidelines</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Edit Handbook</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/meta/edit-guide" class="nav-link"><span class="title">Edit Guide</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="rich-text" tabindex="-1">Rich Text</h1> <p>Rich text can be used in Apache ECharts<sup>TM</sup> labels of series, axis or other components since v3.7. Which supports:</p> <ul><li>Box styles (background, border, shadow, etc.), rotation, position of a text block can be specified.</li> <li>Styles (color, font, width/height, background, shadow, etc.) and alignment can be customzied on fragments of text.</li> <li>Image can be used in text as icon or background.</li> <li>Combine these configurations, some special effects can be made, such as simple table, horizontal rule (hr).</li></ul> <p>At the beginning, the meanings of two terms that will be used below should be clarified:</p> <ul><li>Text Block: The whole block of label text.</li> <li>Text fragment: Some piece of text in a text block.</li></ul> <p>For example:</p> <p><iframe width="450" height="300" src=""></iframe></p> <h2 id="options-about-text" tabindex="-1">Options about Text</h2> <p>echarts provides plenty of text options, including:</p> <ul><li>Basic font style: <code>fontStyle</code>, <code>fontWeight</code>, <code>fontSize</code>, <code>fontFamily</code>.</li> <li>Fill of text: <code>color</code>.</li> <li>Stroke of text: <code>textBorderColor</code>, <code>textBorderWidth</code>.</li> <li>Shadow of text: <code>textShadowColor</code>, <code>textShadowBlur</code>, <code>textShadowOffsetX</code>, <code>textShadowOffsetY</code>.</li> <li>Box size of text block or text fragment: <code>lineHeight</code>, <code>width</code>, <code>height</code>, <code>padding</code>.</li> <li>Alignment of text block or text fragment: <code>align</code>, <code>verticalAlign</code>.</li> <li>Border, background (color or image) of text block or text fragment: <code>backgroundColor</code>, <code>borderColor</code>, <code>borderWidth</code>, <code>borderRadius</code>.</li> <li>Shadow of text block or text fragment: <code>shadowColor</code>, <code>shadowBlur</code>, <code>shadowOffsetX</code>, <code>shadowOffsetY</code>.</li> <li>Position and rotation of text block: <code>position</code>, <code>distance</code>, <code>rotate</code>.</li></ul> <p>User can defined styles for text fragment in <code>rich</code> property. For example, <a href="option.html#series-bar.label.rich">series-bar.label.rich</a></p> <p>For example:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>labelOption <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token comment">// Styles defined in 'rich' can be applied to some fragments</span>
+  <span class="token comment">// of text by adding some markers to those fragment, like</span>
+  <span class="token comment">// `{styleName|text content text content}`.</span>
+  <span class="token comment">// `'\n'` is the newline character.</span>
+  <span class="token literal-property property">formatter</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token string">'{a|Style "a" is applied to this fragment}'</span><span class="token punctuation">,</span>
+    <span class="token string">'{b|Style "b" is applied to this fragment}This fragment use default style{x|use style "x"}'</span>
+  <span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">join</span><span class="token punctuation">(</span><span class="token string">'\n'</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
+
+  <span class="token comment">// Styles for the whole text block are defined here:</span>
+  <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'#333'</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">fontSize</span><span class="token operator">:</span> <span class="token number">5</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">fontFamily</span><span class="token operator">:</span> <span class="token string">'Arial'</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">borderWidth</span><span class="token operator">:</span> <span class="token number">3</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">backgroundColor</span><span class="token operator">:</span> <span class="token string">'#984455'</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">padding</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">lineHeight</span><span class="token operator">:</span> <span class="token number">20</span><span class="token punctuation">,</span>
+
+  <span class="token comment">// Styles for text fragments are defined here:</span>
+  <span class="token literal-property property">rich</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">a</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'red'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">lineHeight</span><span class="token operator">:</span> <span class="token number">10</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">b</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">backgroundColor</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">image</span><span class="token operator">:</span> <span class="token string">'xxx/xxx.jpg'</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">height</span><span class="token operator">:</span> <span class="token number">40</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">fontSize</span><span class="token operator">:</span> <span class="token number">18</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">fontFamily</span><span class="token operator">:</span> <span class="token string">'Microsoft YaHei'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">borderColor</span><span class="token operator">:</span> <span class="token string">'#449933'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">borderRadius</span><span class="token operator">:</span> <span class="token number">4</span>
+    <span class="token punctuation">}</span>
+    <span class="token comment">// ...</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <blockquote><p>Notice: <code>width</code> and <code>height</code> only work when <code>rich</code> specified.</p></blockquote> <h2 id="basic-styles-of-text%2C-text-block-and-text-fragment" tabindex="-1">Basic Styles of Text, Text Block and Text Fragment</h2> <p>Basic font style can be set to text: <code>fontStyle</code>, <code>fontWeight</code>, <code>fontSize</code>, <code>fontFamily</code>.</p> <p>Fill color and stroke color can be set to text: <code>color</code>, <code>textBorderColor</code>, <code>textBorderWidth</code>.</p> <p>Border style and background style can be set to text block: <code>borderColor</code>, <code>borderWidth</code>, <code>backgroundColor</code>, <code>padding</code>.</p> <p>Border style and background style can be set to text fragment too: <code>borderColor</code>, <code>borderWidth</code>, <code>backgroundColor</code>, <code>padding</code>.</p> <p>For example:</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  series: [
+    {
+      type: 'scatter',
+      symbolSize: 1,
+      data: [
+        {
+          value: [0, 0],
+          label: {
+            show: true,
+            formatter: [
+              'Plain text',
+              '{textBorder|textBorderColor + textBorderWidth}',
+              '{textShadow|textShadowColor + textShadowBlur + textShadowOffsetX + textShadowOffsetY}',
+              '{bg|backgroundColor + borderRadius + padding}',
+              '{border|borderColor + borderWidth + borderRadius + padding}',
+              '{shadow|shadowColor + shadowBlur + shadowOffsetX + shadowOffsetY}'
+            ].join('\n'),
+            backgroundColor: '#eee',
+            borderColor: '#333',
+            borderWidth: 2,
+            borderRadius: 5,
+            padding: 10,
+            color: '#000',
+            fontSize: 14,
+            shadowBlur: 3,
+            shadowColor: '#888',
+            shadowOffsetX: 0,
+            shadowOffsetY: 3,
+            lineHeight: 30,
+            rich: {
+              textBorder: {
+                fontSize: 20,
+                textBorderColor: '#000',
+                textBorderWidth: 3,
+                color: '#fff'
+              },
+              textShadow: {
+                fontSize: 16,
+                textShadowBlur: 5,
+                textShadowColor: '#000',
+                textShadowOffsetX: 3,
+                textShadowOffsetY: 3,
+                color: '#fff'
+              },
+              bg: {
+                backgroundColor: '#339911',
+                color: '#fff',
+                borderRadius: 15,
+                padding: 5
+              },
+              border: {
+                color: '#000',
+                borderColor: '#449911',
+                borderWidth: 1,
+                borderRadius: 3,
+                padding: 5
+              },
+              shadow: {
+                backgroundColor: '#992233',
+                padding: 5,
+                color: '#fff',
+                shadowBlur: 5,
+                shadowColor: '#336699',
+                shadowOffsetX: 6,
+                shadowOffsetY: 6
+              }
+            }
+          }
+        }
+      ]
+    }
+  ],
+  xAxis: {
+    show: false,
+    min: -1,
+    max: 1
+  },
+  yAxis: {
+    show: false,
+    min: -1,
+    max: 1
+  }
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'scatter'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">symbolSize</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+            <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">formatter</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+              <span class="token string">'Plain text'</span><span class="token punctuation">,</span>
+              <span class="token string">'{textBorder|textBorderColor + textBorderWidth}'</span><span class="token punctuation">,</span>
+              <span class="token string">'{textShadow|textShadowColor + textShadowBlur + textShadowOffsetX + textShadowOffsetY}'</span><span class="token punctuation">,</span>
+              <span class="token string">'{bg|backgroundColor + borderRadius + padding}'</span><span class="token punctuation">,</span>
+              <span class="token string">'{border|borderColor + borderWidth + borderRadius + padding}'</span><span class="token punctuation">,</span>
+              <span class="token string">'{shadow|shadowColor + shadowBlur + shadowOffsetX + shadowOffsetY}'</span>
+            <span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">join</span><span class="token punctuation">(</span><span class="token string">'\n'</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">backgroundColor</span><span class="token operator">:</span> <span class="token string">'#eee'</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">borderColor</span><span class="token operator">:</span> <span class="token string">'#333'</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">borderWidth</span><span class="token operator">:</span> <span class="token number">2</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">borderRadius</span><span class="token operator">:</span> <span class="token number">5</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">padding</span><span class="token operator">:</span> <span class="token number">10</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'#000'</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">fontSize</span><span class="token operator">:</span> <span class="token number">14</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">shadowBlur</span><span class="token operator">:</span> <span class="token number">3</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">shadowColor</span><span class="token operator">:</span> <span class="token string">'#888'</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">shadowOffsetX</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">shadowOffsetY</span><span class="token operator">:</span> <span class="token number">3</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">lineHeight</span><span class="token operator">:</span> <span class="token number">30</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">rich</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+              <span class="token literal-property property">textBorder</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+                <span class="token literal-property property">fontSize</span><span class="token operator">:</span> <span class="token number">20</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">textBorderColor</span><span class="token operator">:</span> <span class="token string">'#000'</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">textBorderWidth</span><span class="token operator">:</span> <span class="token number">3</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'#fff'</span>
+              <span class="token punctuation">}</span><span class="token punctuation">,</span>
+              <span class="token literal-property property">textShadow</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+                <span class="token literal-property property">fontSize</span><span class="token operator">:</span> <span class="token number">16</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">textShadowBlur</span><span class="token operator">:</span> <span class="token number">5</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">textShadowColor</span><span class="token operator">:</span> <span class="token string">'#000'</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">textShadowOffsetX</span><span class="token operator">:</span> <span class="token number">3</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">textShadowOffsetY</span><span class="token operator">:</span> <span class="token number">3</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'#fff'</span>
+              <span class="token punctuation">}</span><span class="token punctuation">,</span>
+              <span class="token literal-property property">bg</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+                <span class="token literal-property property">backgroundColor</span><span class="token operator">:</span> <span class="token string">'#339911'</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'#fff'</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">borderRadius</span><span class="token operator">:</span> <span class="token number">15</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">padding</span><span class="token operator">:</span> <span class="token number">5</span>
+              <span class="token punctuation">}</span><span class="token punctuation">,</span>
+              <span class="token literal-property property">border</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+                <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'#000'</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">borderColor</span><span class="token operator">:</span> <span class="token string">'#449911'</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">borderWidth</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">borderRadius</span><span class="token operator">:</span> <span class="token number">3</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">padding</span><span class="token operator">:</span> <span class="token number">5</span>
+              <span class="token punctuation">}</span><span class="token punctuation">,</span>
+              <span class="token literal-property property">shadow</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+                <span class="token literal-property property">backgroundColor</span><span class="token operator">:</span> <span class="token string">'#992233'</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">padding</span><span class="token operator">:</span> <span class="token number">5</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'#fff'</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">shadowBlur</span><span class="token operator">:</span> <span class="token number">5</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">shadowColor</span><span class="token operator">:</span> <span class="token string">'#336699'</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">shadowOffsetX</span><span class="token operator">:</span> <span class="token number">6</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">shadowOffsetY</span><span class="token operator">:</span> <span class="token number">6</span>
+              <span class="token punctuation">}</span>
+            <span class="token punctuation">}</span>
+          <span class="token punctuation">}</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">min</span><span class="token operator">:</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">max</span><span class="token operator">:</span> <span class="token number">1</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">min</span><span class="token operator">:</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">max</span><span class="token operator">:</span> <span class="token number">1</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <h2 id="label-position" tabindex="-1">Label Position</h2> <p><code>label</code> option can be use in charts like <code>bar</code>, <code>line</code>, <code>scatter</code>, etc. The position of a label, can be specified by <a href="option.html#series-scatter.label.position">label.position</a>、<a href="option.html#series-scatter.label.distance">label.distance</a>.</p> <p>Try to modify the <code>position</code> and <code>distance</code> option in the following example:</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  series: [
+    {
+      type: 'scatter',
+      symbolSize: 160,
+      symbol: 'roundRect',
+      data: [[1, 1]],
+      label: {
+        // Options: 'left', 'right', 'top', 'bottom', 'inside', 'insideTop', 'insideLeft', 'insideRight', 'insideBottom', 'insideTopLeft', 'insideTopRight', 'insideBottomLeft', 'insideBottomRight'
+        position: 'top',
+        distance: 10,
+
+        show: true,
+        formatter: ['Label Text'].join('\n'),
+        backgroundColor: '#eee',
+        borderColor: '#555',
+        borderWidth: 2,
+        borderRadius: 5,
+        padding: 10,
+        fontSize: 18,
+        shadowBlur: 3,
+        shadowColor: '#888',
+        shadowOffsetX: 0,
+        shadowOffsetY: 3,
+        textBorderColor: '#000',
+        textBorderWidth: 3,
+        color: '#fff'
+      }
+    }
+  ],
+  xAxis: {
+    max: 2
+  },
+  yAxis: {
+    max: 2
+  }
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'scatter'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">symbolSize</span><span class="token operator">:</span> <span class="token number">160</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">symbol</span><span class="token operator">:</span> <span class="token string">'roundRect'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token comment">// Options: 'left', 'right', 'top', 'bottom', 'inside', 'insideTop', 'insideLeft', 'insideRight', 'insideBottom', 'insideTopLeft', 'insideTopRight', 'insideBottomLeft', 'insideBottomRight'</span>
+        <span class="token literal-property property">position</span><span class="token operator">:</span> <span class="token string">'top'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">distance</span><span class="token operator">:</span> <span class="token number">10</span><span class="token punctuation">,</span>
+
+        <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">formatter</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'Label Text'</span><span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">join</span><span class="token punctuation">(</span><span class="token string">'\n'</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">backgroundColor</span><span class="token operator">:</span> <span class="token string">'#eee'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">borderColor</span><span class="token operator">:</span> <span class="token string">'#555'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">borderWidth</span><span class="token operator">:</span> <span class="token number">2</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">borderRadius</span><span class="token operator">:</span> <span class="token number">5</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">padding</span><span class="token operator">:</span> <span class="token number">10</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">fontSize</span><span class="token operator">:</span> <span class="token number">18</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">shadowBlur</span><span class="token operator">:</span> <span class="token number">3</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">shadowColor</span><span class="token operator">:</span> <span class="token string">'#888'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">shadowOffsetX</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">shadowOffsetY</span><span class="token operator">:</span> <span class="token number">3</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">textBorderColor</span><span class="token operator">:</span> <span class="token string">'#000'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">textBorderWidth</span><span class="token operator">:</span> <span class="token number">3</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'#fff'</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">max</span><span class="token operator">:</span> <span class="token number">2</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">max</span><span class="token operator">:</span> <span class="token number">2</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <blockquote><p>Notice, there are different optional values of <code>position</code> by different chart types. And <code>distance</code> is not supported in every chart. More detailed info can be checked in <a href="https://echarts.apache.org/option.html">option doc</a>.</p></blockquote> <h2 id="label-rotation" tabindex="-1">Label Rotation</h2> <p>Sometimes label is needed to be rotated. For example:</p> <div class="md-live layout-lr"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">const labelOption = {
+  show: true,
+  rotate: 90,
+  formatter: '{c}  {name|{a}}',
+  fontSize: 16,
+  rich: {
+    name: {}
+  }
+};
+
+option = {
+  xAxis: [
+    {
+      type: 'category',
+      data: ['2012', '2013', '2014', '2015', '2016']
+    }
+  ],
+  yAxis: [
+    {
+      type: 'value'
+    }
+  ],
+  series: [
+    {
+      name: 'Forest',
+      type: 'bar',
+      barGap: 0,
+      label: labelOption,
+      emphasis: {
+        focus: 'series'
+      },
+      data: [320, 332, 301, 334, 390]
+    },
+    {
+      name: 'Steppe',
+      type: 'bar',
+      label: labelOption,
+      emphasis: {
+        focus: 'series'
+      },
+      data: [220, 182, 191, 234, 290]
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor"><span class="token keyword">const</span> labelOption <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">rotate</span><span class="token operator">:</span> <span class="token number">90</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">formatter</span><span class="token operator">:</span> <span class="token string">'{c}  {name|{a}}'</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">fontSize</span><span class="token operator">:</span> <span class="token number">16</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">rich</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span>
+
+option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'category'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'2012'</span><span class="token punctuation">,</span> <span class="token string">'2013'</span><span class="token punctuation">,</span> <span class="token string">'2014'</span><span class="token punctuation">,</span> <span class="token string">'2015'</span><span class="token punctuation">,</span> <span class="token string">'2016'</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'value'</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Forest'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">barGap</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">label</span><span class="token operator">:</span> labelOption<span class="token punctuation">,</span>
+      <span class="token literal-property property">emphasis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">focus</span><span class="token operator">:</span> <span class="token string">'series'</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">320</span><span class="token punctuation">,</span> <span class="token number">332</span><span class="token punctuation">,</span> <span class="token number">301</span><span class="token punctuation">,</span> <span class="token number">334</span><span class="token punctuation">,</span> <span class="token number">390</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Steppe'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">label</span><span class="token operator">:</span> labelOption<span class="token punctuation">,</span>
+      <span class="token literal-property property">emphasis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">focus</span><span class="token operator">:</span> <span class="token string">'series'</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">220</span><span class="token punctuation">,</span> <span class="token number">182</span><span class="token punctuation">,</span> <span class="token number">191</span><span class="token punctuation">,</span> <span class="token number">234</span><span class="token punctuation">,</span> <span class="token number">290</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p><a href="option.html#series-bar.label.align">align</a> and<a href="option.html#series-bar.label.verticalAlign">verticalAlign</a> can be used to adjust location of label in this scenario.</p> <p>Notice, <code>align</code> and <code>verticalAlign</code> are applied firstly, then rotate.</p> <h2 id="layout-and-alignment-of-text-fragment" tabindex="-1">Layout and Alignment of Text fragment</h2> <p>To understand the layout rule, every text fragment can be imagined as a <code>inline-block</code> dom element in CSS.</p> <p><code>content box size</code> of a text fragment is determined by its font size by default. It can also be specified directly by <code>width</code> and <code>height</code>, although they are rarely set. <code>border box size</code> of a text fragment is calculated by adding the <code>border box size</code> and <code>padding</code>.</p> <p>Only <code>'\n'</code> is the newline character, which breaks a line.</p> <p>Multiple text fragment exist in a single line. The height of a line is determined by the biggest <code>lineHeight</code> of text fragments. <code>lineHeight</code> of a text fragment can be specified in <code>rich</code>, or in the parent level of <code>rich</code>, otherwise using <code>box size</code> of the text fragment.</p> <p>Having <code>lineHeight</code> determined, the vertical position of text fragments can be determined by <code>verticalAlign</code> (there is a little different from the rule in CSS):</p> <ul><li><code>'bottom'</code>: The bottom edge of the text fragment sticks to the bottom edge of the line.</li> <li><code>'top'</code>: The top edge of the text fragment sticks to the top edge of the line.</li> <li><code>'middle'</code>: In the middle of the line.</li></ul> <p>The width of a text block can be specified by <code>width</code>, otherwise, by the longest line. Having the width determined, text fragment can be placed in each line, where the horizontal position of text fragments can be determined by its <code>align</code>.</p> <ul><li>Firstly, place text fragments whose <code>align</code> is <code>'left'</code> from left to right continuously.</li> <li>Secondly, place text fragments whose <code>align</code> is <code>'right'</code> from right to left continuously.</li> <li>Finally, the text fragments remained will be sticked and placed in the center of the rest of space.</li></ul> <p>The position of text in a text fragment:</p> <ul><li>If <code>align</code> is <code>'center'</code>, text aligns at the center of the text fragment box.</li> <li>If <code>align</code> is <code>'left'</code>, text aligns at the left of the text fragment box.</li> <li>If <code>align</code> is <code>'right'</code>, text aligns at the right of the text fragment box.</li></ul> <h2 id="effects--icon%2C-horizontal-rule%2C-title-block%2C-simple-table" tabindex="-1">Effects: Icon, Horizontal Rule, Title Block, Simple Table</h2> <p>See example:</p> <div class="md-live layout-lr"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  series: [
+    {
+      type: 'scatter',
+      data: [
+        {
+          value: [0, 0],
+          label: {
+            formatter: [
+              '{tc|Center Title}{titleBg|}',
+              '  Content text xxxxxxxx {sunny|} xxxxxxxx {cloudy|}  ',
+              '{hr|}',
+              '  xxxxx {showers|} xxxxxxxx  xxxxxxxxx  '
+            ].join('\n'),
+            rich: {
+              titleBg: {
+                align: 'right'
+              }
+            }
+          }
+        },
+        {
+          value: [0, 1],
+          label: {
+            formatter: [
+              '{titleBg|Left Title}',
+              '  Content text xxxxxxxx {sunny|} xxxxxxxx {cloudy|}  ',
+              '{hr|}',
+              '  xxxxx {showers|} xxxxxxxx  xxxxxxxxx  '
+            ].join('\n')
+          }
+        },
+        {
+          value: [0, 2],
+          label: {
+            formatter: [
+              '{titleBg|Right Title}',
+              '  Content text xxxxxxxx {sunny|} xxxxxxxx {cloudy|}  ',
+              '{hr|}',
+              '  xxxxx {showers|} xxxxxxxx  xxxxxxxxx  '
+            ].join('\n'),
+            rich: {
+              titleBg: {
+                align: 'right'
+              }
+            }
+          }
+        }
+      ],
+      symbolSize: 1,
+      label: {
+        show: true,
+        backgroundColor: '#ddd',
+        borderColor: '#555',
+        borderWidth: 1,
+        borderRadius: 5,
+        color: '#000',
+        fontSize: 14,
+        rich: {
+          titleBg: {
+            backgroundColor: '#000',
+            height: 30,
+            borderRadius: [5, 5, 0, 0],
+            padding: [0, 10, 0, 10],
+            width: '100%',
+            color: '#eee'
+          },
+          tc: {
+            align: 'center',
+            color: '#eee'
+          },
+          hr: {
+            borderColor: '#777',
+            width: '100%',
+            borderWidth: 0.5,
+            height: 0
+          },
+          sunny: {
+            height: 30,
+            align: 'left',
+            backgroundColor: {
+              image:
+                'https://echarts.apache.org/examples/data/asset/img/weather/sunny_128.png'
+            }
+          },
+          cloudy: {
+            height: 30,
+            align: 'left',
+            backgroundColor: {
+              image:
+                'https://echarts.apache.org/examples/data/asset/img/weather/cloudy_128.png'
+            }
+          },
+          showers: {
+            height: 30,
+            align: 'left',
+            backgroundColor: {
+              image:
+                'https://echarts.apache.org/examples/data/asset/img/weather/showers_128.png'
+            }
+          }
+        }
+      }
+    }
+  ],
+  xAxis: {
+    show: false,
+    min: -1,
+    max: 1
+  },
+  yAxis: {
+    show: false,
+    min: 0,
+    max: 2,
+    inverse: true
+  }
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'scatter'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+            <span class="token literal-property property">formatter</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+              <span class="token string">'{tc|Center Title}{titleBg|}'</span><span class="token punctuation">,</span>
+              <span class="token string">'  Content text xxxxxxxx {sunny|} xxxxxxxx {cloudy|}  '</span><span class="token punctuation">,</span>
+              <span class="token string">'{hr|}'</span><span class="token punctuation">,</span>
+              <span class="token string">'  xxxxx {showers|} xxxxxxxx  xxxxxxxxx  '</span>
+            <span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">join</span><span class="token punctuation">(</span><span class="token string">'\n'</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">rich</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+              <span class="token literal-property property">titleBg</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+                <span class="token literal-property property">align</span><span class="token operator">:</span> <span class="token string">'right'</span>
+              <span class="token punctuation">}</span>
+            <span class="token punctuation">}</span>
+          <span class="token punctuation">}</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+            <span class="token literal-property property">formatter</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+              <span class="token string">'{titleBg|Left Title}'</span><span class="token punctuation">,</span>
+              <span class="token string">'  Content text xxxxxxxx {sunny|} xxxxxxxx {cloudy|}  '</span><span class="token punctuation">,</span>
+              <span class="token string">'{hr|}'</span><span class="token punctuation">,</span>
+              <span class="token string">'  xxxxx {showers|} xxxxxxxx  xxxxxxxxx  '</span>
+            <span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">join</span><span class="token punctuation">(</span><span class="token string">'\n'</span><span class="token punctuation">)</span>
+          <span class="token punctuation">}</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+            <span class="token literal-property property">formatter</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+              <span class="token string">'{titleBg|Right Title}'</span><span class="token punctuation">,</span>
+              <span class="token string">'  Content text xxxxxxxx {sunny|} xxxxxxxx {cloudy|}  '</span><span class="token punctuation">,</span>
+              <span class="token string">'{hr|}'</span><span class="token punctuation">,</span>
+              <span class="token string">'  xxxxx {showers|} xxxxxxxx  xxxxxxxxx  '</span>
+            <span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">join</span><span class="token punctuation">(</span><span class="token string">'\n'</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">rich</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+              <span class="token literal-property property">titleBg</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+                <span class="token literal-property property">align</span><span class="token operator">:</span> <span class="token string">'right'</span>
+              <span class="token punctuation">}</span>
+            <span class="token punctuation">}</span>
+          <span class="token punctuation">}</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">symbolSize</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">backgroundColor</span><span class="token operator">:</span> <span class="token string">'#ddd'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">borderColor</span><span class="token operator">:</span> <span class="token string">'#555'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">borderWidth</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">borderRadius</span><span class="token operator">:</span> <span class="token number">5</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'#000'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">fontSize</span><span class="token operator">:</span> <span class="token number">14</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">rich</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+          <span class="token literal-property property">titleBg</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+            <span class="token literal-property property">backgroundColor</span><span class="token operator">:</span> <span class="token string">'#000'</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">height</span><span class="token operator">:</span> <span class="token number">30</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">borderRadius</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">padding</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">width</span><span class="token operator">:</span> <span class="token string">'100%'</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'#eee'</span>
+          <span class="token punctuation">}</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">tc</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+            <span class="token literal-property property">align</span><span class="token operator">:</span> <span class="token string">'center'</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'#eee'</span>
+          <span class="token punctuation">}</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">hr</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+            <span class="token literal-property property">borderColor</span><span class="token operator">:</span> <span class="token string">'#777'</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">width</span><span class="token operator">:</span> <span class="token string">'100%'</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">borderWidth</span><span class="token operator">:</span> <span class="token number">0.5</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">height</span><span class="token operator">:</span> <span class="token number">0</span>
+          <span class="token punctuation">}</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">sunny</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+            <span class="token literal-property property">height</span><span class="token operator">:</span> <span class="token number">30</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">align</span><span class="token operator">:</span> <span class="token string">'left'</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">backgroundColor</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+              <span class="token literal-property property">image</span><span class="token operator">:</span>
+                <span class="token string">'https://echarts.apache.org/examples/data/asset/img/weather/sunny_128.png'</span>
+            <span class="token punctuation">}</span>
+          <span class="token punctuation">}</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">cloudy</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+            <span class="token literal-property property">height</span><span class="token operator">:</span> <span class="token number">30</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">align</span><span class="token operator">:</span> <span class="token string">'left'</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">backgroundColor</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+              <span class="token literal-property property">image</span><span class="token operator">:</span>
+                <span class="token string">'https://echarts.apache.org/examples/data/asset/img/weather/cloudy_128.png'</span>
+            <span class="token punctuation">}</span>
+          <span class="token punctuation">}</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">showers</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+            <span class="token literal-property property">height</span><span class="token operator">:</span> <span class="token number">30</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">align</span><span class="token operator">:</span> <span class="token string">'left'</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">backgroundColor</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+              <span class="token literal-property property">image</span><span class="token operator">:</span>
+                <span class="token string">'https://echarts.apache.org/examples/data/asset/img/weather/showers_128.png'</span>
+            <span class="token punctuation">}</span>
+          <span class="token punctuation">}</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">min</span><span class="token operator">:</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">max</span><span class="token operator">:</span> <span class="token number">1</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">min</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">max</span><span class="token operator">:</span> <span class="token number">2</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">inverse</span><span class="token operator">:</span> <span class="token boolean">true</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>Icon is implemented by using image in <code>backgroundColor</code>.</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token literal-property property">rich</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">Sunny</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">backgroundColor</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+            <span class="token literal-property property">image</span><span class="token operator">:</span> <span class="token string">'./data/asset/img/weather/sunny_128.png'</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token comment">// Can only height specified, but leave width auto obtained</span>
+        <span class="token comment">// from the image, where the aspect ratio kept.</span>
+        <span class="token literal-property property">height</span><span class="token operator">:</span> <span class="token number">30</span>
+    <span class="token punctuation">}</span>
+<span class="token punctuation">}</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>Horizontal rule (like HTML &lt;hr> tag) can be implemented by border:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token literal-property property">rich</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">hr</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">borderColor</span><span class="token operator">:</span> <span class="token string">'#777'</span><span class="token punctuation">,</span>
+        <span class="token comment">// width is set as '100%' to fullfill the text block.</span>
+        <span class="token comment">// Notice, the percentage is based on the content box, without</span>
+        <span class="token comment">// padding. Although it is a little different from CSS rule,</span>
+        <span class="token comment">// it is convinent in most cases.</span>
+        <span class="token literal-property property">width</span><span class="token operator">:</span> <span class="token string">'100%'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">borderWidth</span><span class="token operator">:</span> <span class="token number">0.5</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">height</span><span class="token operator">:</span> <span class="token number">0</span>
+    <span class="token punctuation">}</span>
+<span class="token punctuation">}</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>Title block can be implemented by <code>backgroundColor</code>:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token comment">// Title is at left.</span>
+<span class="token literal-property property">formatter</span><span class="token operator">:</span> <span class="token string">'{titleBg|Left Title}'</span><span class="token punctuation">,</span>
+<span class="token literal-property property">rich</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">titleBg</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">backgroundColor</span><span class="token operator">:</span> <span class="token string">'#000'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">height</span><span class="token operator">:</span> <span class="token number">30</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">borderRadius</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">padding</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">width</span><span class="token operator">:</span> <span class="token string">'100%'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'#eee'</span>
+    <span class="token punctuation">}</span>
+<span class="token punctuation">}</span>
+
+<span class="token comment">// Title is in the center of the line.</span>
+<span class="token comment">// This implementation is a little tricky, but is works</span>
+<span class="token comment">// without more complicated layout mechanism involved.</span>
+<span class="token literal-property property">formatter</span><span class="token operator">:</span> <span class="token string">'{tc|Center Title}{titleBg|}'</span><span class="token punctuation">,</span>
+<span class="token literal-property property">rich</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">titleBg</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">align</span><span class="token operator">:</span> <span class="token string">'right'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">backgroundColor</span><span class="token operator">:</span> <span class="token string">'#000'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">height</span><span class="token operator">:</span> <span class="token number">30</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">borderRadius</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">padding</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">width</span><span class="token operator">:</span> <span class="token string">'100%'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'#eee'</span>
+    <span class="token punctuation">}</span>
+<span class="token punctuation">}</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>Simple table can be implemented by specify the same width to text fragments that are in the same column of different lines. See the <a href="https://echarts.apache.org/examples/en/editor.html?c=pie-rich-text">example</a>.</p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">Contributors</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/en/how-to/label/rich-text.md" title="Edit this Document" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">Edit this page on GitHub</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/plainheart" target="_blank" class="post-contributor has-avatar"><img alt="plainheart" src="https://echarts.apache.org/en/images/people/plainheart.jpg" loading="lazy" decoding="async" fetchpriority="low"> <span>plainheart</span></a><a href="https://github.com/TSinChen" target="_blank" class="post-contributor"><!----> <span>TSinChen</span></a><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(g,e,I,C,i,A,t,o,d,l,c,n,a,r,s,h,b,m,p,G,Z,B,y,w,f,W,H,x,J,u,v,R,V,z,X,Y,K,M,k,L,S,N,F,O,D,Q,j,U,T,E,P,_,q,$,gg,eg,Ig,Cg,ig,Ag,tg,og,dg){return{layout:"default",data:[{html:'<h1 id="rich-text" tabindex="-1">Rich Text</h1>\n<p>Rich text can be used in Apache ECharts<sup>TM</sup> labels of series, axis or other components since v3.7. Which supports:</p>\n<ul>\n<li>Box styles (background, border, shadow, etc.), rotation, position of a text block can be specified.</li>\n<li>Styles (color, font, width/height, background, shadow, etc.) and alignment can be customzied on fragments of text.</li>\n<li>Image can be used in text as icon or background.</li>\n<li>Combine these configurations, some special effects can be made, such as simple table, horizontal rule (hr).</li>\n</ul>\n<p>At the beginning, the meanings of two terms that will be used below should be clarified:</p>\n<ul>\n<li>Text Block: The whole block of label text.</li>\n<li>Text fragment: Some piece of text in a text block.</li>\n</ul>\n<p>For example:</p>\n<p><md-example src="doc-example/text-block-fragment" width="450" height="300"></md-example></p>\n<h2 id="options-about-text" tabindex="-1">Options about Text</h2>\n<p>echarts provides plenty of text options, including:</p>\n<ul>\n<li>Basic font style: <code>fontStyle</code>, <code>fontWeight</code>, <code>fontSize</code>, <code>fontFamily</code>.</li>\n<li>Fill of text: <code>color</code>.</li>\n<li>Stroke of text: <code>textBorderColor</code>, <code>textBorderWidth</code>.</li>\n<li>Shadow of text: <code>textShadowColor</code>, <code>textShadowBlur</code>, <code>textShadowOffsetX</code>, <code>textShadowOffsetY</code>.</li>\n<li>Box size of text block or text fragment: <code>lineHeight</code>, <code>width</code>, <code>height</code>, <code>padding</code>.</li>\n<li>Alignment of text block or text fragment: <code>align</code>, <code>verticalAlign</code>.</li>\n<li>Border, background (color or image) of text block or text fragment: <code>backgroundColor</code>, <code>borderColor</code>, <code>borderWidth</code>, <code>borderRadius</code>.</li>\n<li>Shadow of text block or text fragment: <code>shadowColor</code>, <code>shadowBlur</code>, <code>shadowOffsetX</code>, <code>shadowOffsetY</code>.</li>\n<li>Position and rotation of text block: <code>position</code>, <code>distance</code>, <code>rotate</code>.</li>\n</ul>\n<p>User can defined styles for text fragment in <code>rich</code> property. For example, <a href="option.html#series-bar.label.rich">series-bar.label.rich</a></p>\n<p>For example:</p>\n<md-code-block lang="js" code="\'bGFiZWxPcHRpb24gPSB7CiAgLy8gU3R5bGVzIGRlZmluZWQgaW4gJ3JpY2gnIGNhbiBiZSBhcHBsaWVkIHRvIHNvbWUgZnJhZ21lbnRzCiAgLy8gb2YgdGV4dCBieSBhZGRpbmcgc29tZSBtYXJrZXJzIHRvIHRob3NlIGZyYWdtZW50LCBsaWtlCiAgLy8gYHtzdHlsZU5hbWV8dGV4dCBjb250ZW50IHRleHQgY29udGVudH1gLgogIC8vIGAnXG4nYCBpcyB0aGUgbmV3bGluZSBjaGFyYWN0ZXIuCiAgZm9ybWF0dGVyOiBbCiAgICAne2F8U3R5bGUgImEiIGlzIGFwcGxpZWQgdG8gdGhpcyBmcmFnbWVudH0nLAogICAgJ3tifFN0eWxlICJiIiBpcyBhcHBsaWVkIHRvIHRoaXMgZnJhZ21lbnR9VGhpcyBmcmFnbWVudCB1c2UgZGVmYXVsdCBzdHlsZXt4fHVzZSBzdHlsZSAieCJ9JwogIF0uam9pbignXG4nKSwKCiAgLy8gU3R5bGVzIGZvciB0aGUgd2hvbGUgdGV4dCBibG9jayBhcmUgZGVmaW5lZCBoZXJlOgogIGNvbG9yOiAnIzMzMycsCiAgZm9udFNpemU6IDUsCiAgZm9udEZhbWlseTogJ0FyaWFsJywKICBib3JkZXJXaWR0aDogMywKICBiYWNrZ3JvdW5kQ29sb3I6ICcjOTg0NDU1JywKICBwYWRkaW5nOiBbMywgMTAsIDEwLCA1XSwKICBsaW5lSGVpZ2h0OiAyMCwKCiAgLy8gU3R5bGVzIGZvciB0ZXh0IGZyYWdtZW50cyBhcmUgZGVmaW5lZCBoZXJlOgogIHJpY2g6IHsKICAgIGE6IHsKICAgICAgY29sb3I6ICdyZWQnLAogICAgICBsaW5lSGVpZ2h0OiAxMAogICAgfSwKICAgIGI6IHsKICAgICAgYmFja2dyb3VuZENvbG9yOiB7CiAgICAgICAgaW1hZ2U6ICd4eHgveHh4LmpwZycKICAgICAgfSwKICAgICAgaGVpZ2h0OiA0MAogICAgfSwKICAgIHg6IHsKICAgICAgZm9udFNpemU6IDE4LAogICAgICBmb250RmFtaWx5OiAnTWljcm9zb2Z0IFlhSGVpJywKICAgICAgYm9yZGVyQ29sb3I6ICcjNDQ5OTMzJywKICAgICAgYm9yZGVyUmFkaXVzOiA0CiAgICB9CiAgICAvLyAuLi4KICB9Cn07\'" line-highlights="\'\'" />\n<blockquote>\n<p>Notice: <code>width</code> and <code>height</code> only work when <code>rich</code> specified.</p>\n</blockquote>\n<h2 id="basic-styles-of-text%2C-text-block-and-text-fragment" tabindex="-1">Basic Styles of Text, Text Block and Text Fragment</h2>\n<p>Basic font style can be set to text: <code>fontStyle</code>, <code>fontWeight</code>, <code>fontSize</code>, <code>fontFamily</code>.</p>\n<p>Fill color and stroke color can be set to text: <code>color</code>, <code>textBorderColor</code>, <code>textBorderWidth</code>.</p>\n<p>Border style and background style can be set to text block: <code>borderColor</code>, <code>borderWidth</code>, <code>backgroundColor</code>, <code>padding</code>.</p>\n<p>Border style and background style can be set to text fragment too: <code>borderColor</code>, <code>borderWidth</code>, <code>backgroundColor</code>, <code>padding</code>.</p>\n<p>For example:</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHNlcmllczogWwogICAgewogICAgICB0eXBlOiAnc2NhdHRlcicsCiAgICAgIHN5bWJvbFNpemU6IDEsCiAgICAgIGRhdGE6IFsKICAgICAgICB7CiAgICAgICAgICB2YWx1ZTogWzAsIDBdLAogICAgICAgICAgbGFiZWw6IHsKICAgICAgICAgICAgc2hvdzogdHJ1ZSwKICAgICAgICAgICAgZm9ybWF0dGVyOiBbCiAgICAgICAgICAgICAgJ1BsYWluIHRleHQnLAogICAgICAgICAgICAgICd7dGV4dEJvcmRlcnx0ZXh0Qm9yZGVyQ29sb3IgKyB0ZXh0Qm9yZGVyV2lkdGh9JywKICAgICAgICAgICAgICAne3RleHRTaGFkb3d8dGV4dFNoYWRvd0NvbG9yICsgdGV4dFNoYWRvd0JsdXIgKyB0ZXh0U2hhZG93T2Zmc2V0WCArIHRleHRTaGFkb3dPZmZzZXRZfScsCiAgICAgICAgICAgICAgJ3tiZ3xiYWNrZ3JvdW5kQ29sb3IgKyBib3JkZXJSYWRpdXMgKyBwYWRkaW5nfScsCiAgICAgICAgICAgICAgJ3tib3JkZXJ8Ym9yZGVyQ29sb3IgKyBib3JkZXJXaWR0aCArIGJvcmRlclJhZGl1cyArIHBhZGRpbmd9JywKICAgICAgICAgICAgICAne3NoYWRvd3xzaGFkb3dDb2xvciArIHNoYWRvd0JsdXIgKyBzaGFkb3dPZmZzZXRYICsgc2hhZG93T2Zmc2V0WX0nCiAgICAgICAgICAgIF0uam9pbignXG4nKSwKICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnI2VlZScsCiAgICAgICAgICAgIGJvcmRlckNvbG9yOiAnIzMzMycsCiAgICAgICAgICAgIGJvcmRlcldpZHRoOiAyLAogICAgICAgICAgICBib3JkZXJSYWRpdXM6IDUsCiAgICAgICAgICAgIHBhZGRpbmc6IDEwLAogICAgICAgICAgICBjb2xvcjogJyMwMDAnLAogICAgICAgICAgICBmb250U2l6ZTogMTQsCiAgICAgICAgICAgIHNoYWRvd0JsdXI6IDMsCiAgICAgICAgICAgIHNoYWRvd0NvbG9yOiAnIzg4OCcsCiAgICAgICAgICAgIHNoYWRvd09mZnNldFg6IDAsCiAgICAgICAgICAgIHNoYWRvd09mZnNldFk6IDMsCiAgICAgICAgICAgIGxpbmVIZWlnaHQ6IDMwLAogICAgICAgICAgICByaWNoOiB7CiAgICAgICAgICAgICAgdGV4dEJvcmRlcjogewogICAgICAgICAgICAgICAgZm9udFNpemU6IDIwLAogICAgICAgICAgICAgICAgdGV4dEJvcmRlckNvbG9yOiAnIzAwMCcsCiAgICAgICAgICAgICAgICB0ZXh0Qm9yZGVyV2lkdGg6IDMsCiAgICAgICAgICAgICAgICBjb2xvcjogJyNmZmYnCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICB0ZXh0U2hhZG93OiB7CiAgICAgICAgICAgICAgICBmb250U2l6ZTogMTYsCiAgICAgICAgICAgICAgICB0ZXh0U2hhZG93Qmx1cjogNSwKICAgICAgICAgICAgICAgIHRleHRTaGFkb3dDb2xvcjogJyMwMDAnLAogICAgICAgICAgICAgICAgdGV4dFNoYWRvd09mZnNldFg6IDMsCiAgICAgICAgICAgICAgICB0ZXh0U2hhZG93T2Zmc2V0WTogMywKICAgICAgICAgICAgICAgIGNvbG9yOiAnI2ZmZicKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgIGJnOiB7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjMzM5OTExJywKICAgICAgICAgICAgICAgIGNvbG9yOiAnI2ZmZicsCiAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6IDE1LAogICAgICAgICAgICAgICAgcGFkZGluZzogNQogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgYm9yZGVyOiB7CiAgICAgICAgICAgICAgICBjb2xvcjogJyMwMDAnLAogICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I6ICcjNDQ5OTExJywKICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoOiAxLAogICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAzLAogICAgICAgICAgICAgICAgcGFkZGluZzogNQogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgc2hhZG93OiB7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjOTkyMjMzJywKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDUsCiAgICAgICAgICAgICAgICBjb2xvcjogJyNmZmYnLAogICAgICAgICAgICAgICAgc2hhZG93Qmx1cjogNSwKICAgICAgICAgICAgICAgIHNoYWRvd0NvbG9yOiAnIzMzNjY5OScsCiAgICAgICAgICAgICAgICBzaGFkb3dPZmZzZXRYOiA2LAogICAgICAgICAgICAgICAgc2hhZG93T2Zmc2V0WTogNgogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXQogICAgfQogIF0sCiAgeEF4aXM6IHsKICAgIHNob3c6IGZhbHNlLAogICAgbWluOiAtMSwKICAgIG1heDogMQogIH0sCiAgeUF4aXM6IHsKICAgIHNob3c6IGZhbHNlLAogICAgbWluOiAtMSwKICAgIG1heDogMQogIH0KfTs\'" v-bind="{}" />\n<h2 id="label-position" tabindex="-1">Label Position</h2>\n<p><code>label</code> option can be use in charts like <code>bar</code>, <code>line</code>, <code>scatter</code>, etc. The position of a label, can be specified by <a href="option.html#series-scatter.label.position">label.position</a>、<a href="option.html#series-scatter.label.distance">label.distance</a>.</p>\n<p>Try to modify the <code>position</code> and <code>distance</code> option in the following example:</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHNlcmllczogWwogICAgewogICAgICB0eXBlOiAnc2NhdHRlcicsCiAgICAgIHN5bWJvbFNpemU6IDE2MCwKICAgICAgc3ltYm9sOiAncm91bmRSZWN0JywKICAgICAgZGF0YTogW1sxLCAxXV0sCiAgICAgIGxhYmVsOiB7CiAgICAgICAgLy8gT3B0aW9uczogJ2xlZnQnLCAncmlnaHQnLCAndG9wJywgJ2JvdHRvbScsICdpbnNpZGUnLCAnaW5zaWRlVG9wJywgJ2luc2lkZUxlZnQnLCAnaW5zaWRlUmlnaHQnLCAnaW5zaWRlQm90dG9tJywgJ2luc2lkZVRvcExlZnQnLCAnaW5zaWRlVG9wUmlnaHQnLCAnaW5zaWRlQm90dG9tTGVmdCcsICdpbnNpZGVCb3R0b21SaWdodCcKICAgICAgICBwb3NpdGlvbjogJ3RvcCcsCiAgICAgICAgZGlzdGFuY2U6IDEwLAoKICAgICAgICBzaG93OiB0cnVlLAogICAgICAgIGZvcm1hdHRlcjogWydMYWJlbCBUZXh0J10uam9pbignXG4nKSwKICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZWVlJywKICAgICAgICBib3JkZXJDb2xvcjogJyM1NTUnLAogICAgICAgIGJvcmRlcldpZHRoOiAyLAogICAgICAgIGJvcmRlclJhZGl1czogNSwKICAgICAgICBwYWRkaW5nOiAxMCwKICAgICAgICBmb250U2l6ZTogMTgsCiAgICAgICAgc2hhZG93Qmx1cjogMywKICAgICAgICBzaGFkb3dDb2xvcjogJyM4ODgnLAogICAgICAgIHNoYWRvd09mZnNldFg6IDAsCiAgICAgICAgc2hhZG93T2Zmc2V0WTogMywKICAgICAgICB0ZXh0Qm9yZGVyQ29sb3I6ICcjMDAwJywKICAgICAgICB0ZXh0Qm9yZGVyV2lkdGg6IDMsCiAgICAgICAgY29sb3I6ICcjZmZmJwogICAgICB9CiAgICB9CiAgXSwKICB4QXhpczogewogICAgbWF4OiAyCiAgfSwKICB5QXhpczogewogICAgbWF4OiAyCiAgfQp9Ow\'" v-bind="{}" />\n<blockquote>\n<p>Notice, there are different optional values of <code>position</code> by different chart types. And <code>distance</code> is not supported in every chart. More detailed info can be checked in <a href="https://echarts.apache.org/option.html">option doc</a>.</p>\n</blockquote>\n<h2 id="label-rotation" tabindex="-1">Label Rotation</h2>\n<p>Sometimes label is needed to be rotated. For example:</p>\n<md-live lang="js" code="\'Y29uc3QgbGFiZWxPcHRpb24gPSB7CiAgc2hvdzogdHJ1ZSwKICByb3RhdGU6IDkwLAogIGZvcm1hdHRlcjogJ3tjfSAge25hbWV8e2F9fScsCiAgZm9udFNpemU6IDE2LAogIHJpY2g6IHsKICAgIG5hbWU6IHt9CiAgfQp9OwoKb3B0aW9uID0gewogIHhBeGlzOiBbCiAgICB7CiAgICAgIHR5cGU6ICdjYXRlZ29yeScsCiAgICAgIGRhdGE6IFsnMjAxMicsICcyMDEzJywgJzIwMTQnLCAnMjAxNScsICcyMDE2J10KICAgIH0KICBdLAogIHlBeGlzOiBbCiAgICB7CiAgICAgIHR5cGU6ICd2YWx1ZScKICAgIH0KICBdLAogIHNlcmllczogWwogICAgewogICAgICBuYW1lOiAnRm9yZXN0JywKICAgICAgdHlwZTogJ2JhcicsCiAgICAgIGJhckdhcDogMCwKICAgICAgbGFiZWw6IGxhYmVsT3B0aW9uLAogICAgICBlbXBoYXNpczogewogICAgICAgIGZvY3VzOiAnc2VyaWVzJwogICAgICB9LAogICAgICBkYXRhOiBbMzIwLCAzMzIsIDMwMSwgMzM0LCAzOTBdCiAgICB9LAogICAgewogICAgICBuYW1lOiAnU3RlcHBlJywKICAgICAgdHlwZTogJ2JhcicsCiAgICAgIGxhYmVsOiBsYWJlbE9wdGlvbiwKICAgICAgZW1waGFzaXM6IHsKICAgICAgICBmb2N1czogJ3NlcmllcycKICAgICAgfSwKICAgICAgZGF0YTogWzIyMCwgMTgyLCAxOTEsIDIzNCwgMjkwXQogICAgfQogIF0KfTs\'" v-bind="{layout: \'lr\'}" />\n<p><a href="option.html#series-bar.label.align">align</a> and<a href="option.html#series-bar.label.verticalAlign">verticalAlign</a> can be used to adjust location of label in this scenario.</p>\n<p>Notice, <code>align</code> and <code>verticalAlign</code> are applied firstly, then rotate.</p>\n<h2 id="layout-and-alignment-of-text-fragment" tabindex="-1">Layout and Alignment of Text fragment</h2>\n<p>To understand the layout rule, every text fragment can be imagined as a <code>inline-block</code> dom element in CSS.</p>\n<p><code>content box size</code> of a text fragment is determined by its font size by default. It can also be specified directly by <code>width</code> and <code>height</code>, although they are rarely set. <code>border box size</code> of a text fragment is calculated by adding the <code>border box size</code> and <code>padding</code>.</p>\n<p>Only <code>\'\\n\'</code> is the newline character, which breaks a line.</p>\n<p>Multiple text fragment exist in a single line. The height of a line is determined by the biggest <code>lineHeight</code> of text fragments. <code>lineHeight</code> of a text fragment can be specified in <code>rich</code>, or in the parent level of <code>rich</code>, otherwise using <code>box size</code> of the text fragment.</p>\n<p>Having <code>lineHeight</code> determined, the vertical position of text fragments can be determined by <code>verticalAlign</code> (there is a little different from the rule in CSS):</p>\n<ul>\n<li><code>\'bottom\'</code>: The bottom edge of the text fragment sticks to the bottom edge of the line.</li>\n<li><code>\'top\'</code>: The top edge of the text fragment sticks to the top edge of the line.</li>\n<li><code>\'middle\'</code>: In the middle of the line.</li>\n</ul>\n<p>The width of a text block can be specified by <code>width</code>, otherwise, by the longest line. Having the width determined, text fragment can be placed in each line, where the horizontal position of text fragments can be determined by its <code>align</code>.</p>\n<ul>\n<li>Firstly, place text fragments whose <code>align</code> is <code>\'left\'</code> from left to right continuously.</li>\n<li>Secondly, place text fragments whose <code>align</code> is <code>\'right\'</code> from right to left continuously.</li>\n<li>Finally, the text fragments remained will be sticked and placed in the center of the rest of space.</li>\n</ul>\n<p>The position of text in a text fragment:</p>\n<ul>\n<li>If <code>align</code> is <code>\'center\'</code>, text aligns at the center of the text fragment box.</li>\n<li>If <code>align</code> is <code>\'left\'</code>, text aligns at the left of the text fragment box.</li>\n<li>If <code>align</code> is <code>\'right\'</code>, text aligns at the right of the text fragment box.</li>\n</ul>\n<h2 id="effects--icon%2C-horizontal-rule%2C-title-block%2C-simple-table" tabindex="-1">Effects: Icon, Horizontal Rule, Title Block, Simple Table</h2>\n<p>See example:</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHNlcmllczogWwogICAgewogICAgICB0eXBlOiAnc2NhdHRlcicsCiAgICAgIGRhdGE6IFsKICAgICAgICB7CiAgICAgICAgICB2YWx1ZTogWzAsIDBdLAogICAgICAgICAgbGFiZWw6IHsKICAgICAgICAgICAgZm9ybWF0dGVyOiBbCiAgICAgICAgICAgICAgJ3t0Y3xDZW50ZXIgVGl0bGV9e3RpdGxlQmd8fScsCiAgICAgICAgICAgICAgJyAgQ29udGVudCB0ZXh0IHh4eHh4eHh4IHtzdW5ueXx9IHh4eHh4eHh4IHtjbG91ZHl8fSAgJywKICAgICAgICAgICAgICAne2hyfH0nLAogICAgICAgICAgICAgICcgIHh4eHh4IHtzaG93ZXJzfH0geHh4eHh4eHggIHh4eHh4eHh4eCAgJwogICAgICAgICAgICBdLmpvaW4oJ1xuJyksCiAgICAgICAgICAgIHJpY2g6IHsKICAgICAgICAgICAgICB0aXRsZUJnOiB7CiAgICAgICAgICAgICAgICBhbGlnbjogJ3JpZ2h0JwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgdmFsdWU6IFswLCAxXSwKICAgICAgICAgIGxhYmVsOiB7CiAgICAgICAgICAgIGZvcm1hdHRlcjogWwogICAgICAgICAgICAgICd7dGl0bGVCZ3xMZWZ0IFRpdGxlfScsCiAgICAgICAgICAgICAgJyAgQ29udGVudCB0ZXh0IHh4eHh4eHh4IHtzdW5ueXx9IHh4eHh4eHh4IHtjbG91ZHl8fSAgJywKICAgICAgICAgICAgICAne2hyfH0nLAogICAgICAgICAgICAgICcgIHh4eHh4IHtzaG93ZXJzfH0geHh4eHh4eHggIHh4eHh4eHh4eCAgJwogICAgICAgICAgICBdLmpvaW4oJ1xuJykKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgIHZhbHVlOiBbMCwgMl0sCiAgICAgICAgICBsYWJlbDogewogICAgICAgICAgICBmb3JtYXR0ZXI6IFsKICAgICAgICAgICAgICAne3RpdGxlQmd8UmlnaHQgVGl0bGV9JywKICAgICAgICAgICAgICAnICBDb250ZW50IHRleHQgeHh4eHh4eHgge3N1bm55fH0geHh4eHh4eHgge2Nsb3VkeXx9ICAnLAogICAgICAgICAgICAgICd7aHJ8fScsCiAgICAgICAgICAgICAgJyAgeHh4eHgge3Nob3dlcnN8fSB4eHh4eHh4eCAgeHh4eHh4eHh4ICAnCiAgICAgICAgICAgIF0uam9pbignXG4nKSwKICAgICAgICAgICAgcmljaDogewogICAgICAgICAgICAgIHRpdGxlQmc6IHsKICAgICAgICAgICAgICAgIGFsaWduOiAncmlnaHQnCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBdLAogICAgICBzeW1ib2xTaXplOiAxLAogICAgICBsYWJlbDogewogICAgICAgIHNob3c6IHRydWUsCiAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnI2RkZCcsCiAgICAgICAgYm9yZGVyQ29sb3I6ICcjNTU1JywKICAgICAgICBib3JkZXJXaWR0aDogMSwKICAgICAgICBib3JkZXJSYWRpdXM6IDUsCiAgICAgICAgY29sb3I6ICcjMDAwJywKICAgICAgICBmb250U2l6ZTogMTQsCiAgICAgICAgcmljaDogewogICAgICAgICAgdGl0bGVCZzogewogICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjMDAwJywKICAgICAgICAgICAgaGVpZ2h0OiAzMCwKICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiBbNSwgNSwgMCwgMF0sCiAgICAgICAgICAgIHBhZGRpbmc6IFswLCAxMCwgMCwgMTBdLAogICAgICAgICAgICB3aWR0aDogJzEwMCUnLAogICAgICAgICAgICBjb2xvcjogJyNlZWUnCiAgICAgICAgICB9LAogICAgICAgICAgdGM6IHsKICAgICAgICAgICAgYWxpZ246ICdjZW50ZXInLAogICAgICAgICAgICBjb2xvcjogJyNlZWUnCiAgICAgICAgICB9LAogICAgICAgICAgaHI6IHsKICAgICAgICAgICAgYm9yZGVyQ29sb3I6ICcjNzc3JywKICAgICAgICAgICAgd2lkdGg6ICcxMDAlJywKICAgICAgICAgICAgYm9yZGVyV2lkdGg6IDAuNSwKICAgICAgICAgICAgaGVpZ2h0OiAwCiAgICAgICAgICB9LAogICAgICAgICAgc3Vubnk6IHsKICAgICAgICAgICAgaGVpZ2h0OiAzMCwKICAgICAgICAgICAgYWxpZ246ICdsZWZ0JywKICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiB7CiAgICAgICAgICAgICAgaW1hZ2U6CiAgICAgICAgICAgICAgICAnaHR0cHM6Ly9lY2hhcnRzLmFwYWNoZS5vcmcvZXhhbXBsZXMvZGF0YS9hc3NldC9pbWcvd2VhdGhlci9zdW5ueV8xMjgucG5nJwogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgY2xvdWR5OiB7CiAgICAgICAgICAgIGhlaWdodDogMzAsCiAgICAgICAgICAgIGFsaWduOiAnbGVmdCcsCiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogewogICAgICAgICAgICAgIGltYWdlOgogICAgICAgICAgICAgICAgJ2h0dHBzOi8vZWNoYXJ0cy5hcGFjaGUub3JnL2V4YW1wbGVzL2RhdGEvYXNzZXQvaW1nL3dlYXRoZXIvY2xvdWR5XzEyOC5wbmcnCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICBzaG93ZXJzOiB7CiAgICAgICAgICAgIGhlaWdodDogMzAsCiAgICAgICAgICAgIGFsaWduOiAnbGVmdCcsCiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogewogICAgICAgICAgICAgIGltYWdlOgogICAgICAgICAgICAgICAgJ2h0dHBzOi8vZWNoYXJ0cy5hcGFjaGUub3JnL2V4YW1wbGVzL2RhdGEvYXNzZXQvaW1nL3dlYXRoZXIvc2hvd2Vyc18xMjgucG5nJwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgXSwKICB4QXhpczogewogICAgc2hvdzogZmFsc2UsCiAgICBtaW46IC0xLAogICAgbWF4OiAxCiAgfSwKICB5QXhpczogewogICAgc2hvdzogZmFsc2UsCiAgICBtaW46IDAsCiAgICBtYXg6IDIsCiAgICBpbnZlcnNlOiB0cnVlCiAgfQp9Ow\'" v-bind="{layout: \'lr\'}" />\n<p>Icon is implemented by using image in <code>backgroundColor</code>.</p>\n<md-code-block lang="js" code="\'cmljaDogewogICAgU3Vubnk6IHsKICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHsKICAgICAgICAgICAgaW1hZ2U6ICcuL2RhdGEvYXNzZXQvaW1nL3dlYXRoZXIvc3VubnlfMTI4LnBuZycKICAgICAgICB9LAogICAgICAgIC8vIENhbiBvbmx5IGhlaWdodCBzcGVjaWZpZWQsIGJ1dCBsZWF2ZSB3aWR0aCBhdXRvIG9idGFpbmVkCiAgICAgICAgLy8gZnJvbSB0aGUgaW1hZ2UsIHdoZXJlIHRoZSBhc3BlY3QgcmF0aW8ga2VwdC4KICAgICAgICBoZWlnaHQ6IDMwCiAgICB9Cn0\'" line-highlights="\'\'" />\n<p>Horizontal rule (like HTML &lt;hr&gt; tag) can be implemented by border:</p>\n<md-code-block lang="js" code="\'cmljaDogewogICAgaHI6IHsKICAgICAgICBib3JkZXJDb2xvcjogJyM3NzcnLAogICAgICAgIC8vIHdpZHRoIGlzIHNldCBhcyAnMTAwJScgdG8gZnVsbGZpbGwgdGhlIHRleHQgYmxvY2suCiAgICAgICAgLy8gTm90aWNlLCB0aGUgcGVyY2VudGFnZSBpcyBiYXNlZCBvbiB0aGUgY29udGVudCBib3gsIHdpdGhvdXQKICAgICAgICAvLyBwYWRkaW5nLiBBbHRob3VnaCBpdCBpcyBhIGxpdHRsZSBkaWZmZXJlbnQgZnJvbSBDU1MgcnVsZSwKICAgICAgICAvLyBpdCBpcyBjb252aW5lbnQgaW4gbW9zdCBjYXNlcy4KICAgICAgICB3aWR0aDogJzEwMCUnLAogICAgICAgIGJvcmRlcldpZHRoOiAwLjUsCiAgICAgICAgaGVpZ2h0OiAwCiAgICB9Cn0\'" line-highlights="\'\'" />\n<p>Title block can be implemented by <code>backgroundColor</code>:</p>\n<md-code-block lang="js" code="\'Ly8gVGl0bGUgaXMgYXQgbGVmdC4KZm9ybWF0dGVyOiAne3RpdGxlQmd8TGVmdCBUaXRsZX0nLApyaWNoOiB7CiAgICB0aXRsZUJnOiB7CiAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnIzAwMCcsCiAgICAgICAgaGVpZ2h0OiAzMCwKICAgICAgICBib3JkZXJSYWRpdXM6IFs1LCA1LCAwLCAwXSwKICAgICAgICBwYWRkaW5nOiBbMCwgMTAsIDAsIDEwXSwKICAgICAgICB3aWR0aDogJzEwMCUnLAogICAgICAgIGNvbG9yOiAnI2VlZScKICAgIH0KfQoKLy8gVGl0bGUgaXMgaW4gdGhlIGNlbnRlciBvZiB0aGUgbGluZS4KLy8gVGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBhIGxpdHRsZSB0cmlja3ksIGJ1dCBpcyB3b3JrcwovLyB3aXRob3V0IG1vcmUgY29tcGxpY2F0ZWQgbGF5b3V0IG1lY2hhbmlzbSBpbnZvbHZlZC4KZm9ybWF0dGVyOiAne3RjfENlbnRlciBUaXRsZX17dGl0bGVCZ3x9JywKcmljaDogewogICAgdGl0bGVCZzogewogICAgICAgIGFsaWduOiAncmlnaHQnLAogICAgICAgIGJhY2tncm91bmRDb2xvcjogJyMwMDAnLAogICAgICAgIGhlaWdodDogMzAsCiAgICAgICAgYm9yZGVyUmFkaXVzOiBbNSwgNSwgMCwgMF0sCiAgICAgICAgcGFkZGluZzogWzAsIDEwLCAwLCAxMF0sCiAgICAgICAgd2lkdGg6ICcxMDAlJywKICAgICAgICBjb2xvcjogJyNlZWUnCiAgICB9Cn0\'" line-highlights="\'\'" />\n<p>Simple table can be implemented by specify the same width to text fragments that are in the same column of different lines. See the <a href="https://echarts.apache.org/examples/en/editor.html?c=pie-rich-text">example</a>.</p>\n',postPath:"en/how-to/label/rich-text",title:"Rich Text - Label - How To Guides"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:C},{title:"入门篇",dir:i,children:[{title:"获取 ECharts",dir:A},{title:"在项目中引入 ECharts",dir:t},{title:"资源列表",dir:o,draft:g},{title:"寻求帮助",dir:d},{title:"版本特性",dir:l,children:[{title:"ECharts 6 特性介绍",dir:c},{title:"v5 升级 v6 指南",dir:n},{title:"5.0",dir:a},{title:"v4 升级 v5 指南",dir:r},{title:5.2,dir:s},{title:5.3,dir:h},{title:5.4,dir:b},{title:5.5,dir:m},{title:5.6,dir:p}]}]},{title:"概念篇",dir:G,children:[{title:"图表容器及大小",dir:Z},{title:"配置项",dir:B,draft:g},{title:"系列",dir:y,draft:g},{title:"样式",dir:w},{title:"数据集",dir:f},{title:"数据转换",dir:W},{title:"坐标系",dir:H,draft:g},{title:"坐标轴",dir:x},{title:"视觉映射",dir:I},{title:"图例",dir:J},{title:"事件与行为",dir:u}]},{title:"应用篇",dir:v,children:[{title:"常用图表类型",dir:R,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:V},{title:"堆叠柱状图",dir:z},{title:"动态排序柱状图",dir:X},{title:"极坐标系柱状图",dir:Y,draft:g},{title:"阶梯瀑布图",dir:K},{title:"视觉映射的柱状图",dir:I,draft:g}]},{title:"折线图",dir:M,children:[{title:"基础折线图",dir:k},{title:"堆叠折线图",dir:L},{title:"区域面积图",dir:S},{title:"平滑曲线图",dir:N},{title:"阶梯线图",dir:F}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:O},{title:"圆环图",dir:D},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:Q,children:[{title:"基础散点图",dir:j}]}]},{title:"常用组件",dir:U,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:T}]}]},{title:"移动端优化",dir:e,draft:g},{title:"跨平台方案",dir:E,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:P},{title:"数据下钻",dir:_,draft:g}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:q}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:gg}]},{title:"交互",dir:eg,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:Ig,draft:g},{title:"智能指针吸附",dir:Cg}]}]},{title:"最佳实践",dir:ig,children:[{title:"移动端优化",dir:e,draft:g},{title:Ag,dir:tg},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:og}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:dg}]}],en:[{title:"Get Started",dir:C},{title:"Basics",dir:i,children:[{title:"Download ECharts",dir:A},{title:"Import ECharts",dir:t},{title:"Resources",dir:o,draft:g},{title:"Get Help",dir:d},{title:"What's New",dir:l,children:[{title:"ECharts 6 Features",dir:c},{title:"Migration from v5 to v6",dir:n},{title:"5.0",dir:a},{title:"Migration from v4 to v5",dir:r},{title:5.2,dir:s},{title:5.3,dir:h},{title:5.4,dir:b},{title:5.5,dir:m},{title:5.6,dir:p}]}]},{title:"Concepts",dir:G,children:[{title:"Chart Container",dir:Z},{title:"Chart Option",dir:B,draft:g},{title:"Series",dir:y,draft:g},{title:"Style",dir:w},{title:"Dataset",dir:f},{title:"Data Transform",dir:W},{title:"Coordinate",dir:H,draft:g},{title:"Axis",dir:x},{title:"Visual Mapping",dir:I},{title:"Legend",dir:J},{title:"Event and Action",dir:u}]},{title:"How To Guides",dir:v,children:[{title:"Common Charts",dir:R,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:V},{title:"Stacked Bar",dir:z},{title:"Bar Racing",dir:X},{title:"Bar Polar",dir:Y,draft:g},{title:"Waterfall",dir:K}]},{title:"Line",dir:M,children:[{title:"Basic Line",dir:k},{title:"Stacked Line",dir:L},{title:"Area Chart",dir:S},{title:"Smoothed Line",dir:N},{title:"Step Line",dir:F}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:O},{title:"Ring Style",dir:D},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:Q,children:[{title:"Basic Scatter",dir:j}]}]},{title:"Common Components",dir:U,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:T}]}]},{title:"Mobile",dir:e,draft:g},{title:"Cross Platform",dir:E,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:P},{title:"Drilldown",dir:_,draft:g}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:q}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:gg}]},{title:"Interaction",dir:eg,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:Ig,draft:g},{title:"Intelligent Pointer Snapping",dir:Cg}]}]},{title:"Best Practices",dir:ig,children:[{title:"Mobile Optimization",dir:e,draft:g},{title:Ag,dir:tg},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:og}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:dg}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:g,routePath:"/en/how-to/label/rich-text",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/en/index.html b/docs/en/index.html
new file mode 100644
index 0000000..1c9453a
--- /dev/null
+++ b/docs/en/index.html
@@ -0,0 +1,13 @@
+<!doctype html>
+<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Handbook - Apache ECharts</title><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/en/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/en/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/en/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/e33c9002634265ded0e5.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/en/index.html" class="navbar-brand"><img src="https://echarts.apache.org/en/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/en/index.html">Home</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Docs<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/feature.html">Features</a></li><li><a href="https://echarts.apache.org/handbook/en/get-started/">Handbook</a></li><li><a href="https://echarts.apache.org/en/api.html">API</a></li><li><a href="https://echarts.apache.org/en/option.html">Chart Configuration</a></li><li><a href="https://echarts.apache.org/en/changelog.html">Changelog</a></li><li><a href="https://echarts.apache.org/en/faq.html">FAQ</a></li><li><a href="https://echarts.apache.org/handbook/en/basics/release-note/v6-upgrade-guide">V6 Upgrade Guide</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Download<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/download.html">Download</a></li><li><a href="https://echarts.apache.org/en/download-theme.html">Download Themes</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">Download Custom Series<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/download-extension.html">Download Extensions</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/en/index.html">Examples</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Resources<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/spreadsheet.html">Spread Sheet Tool</a></li><li><a href="https://echarts.apache.org/en/theme-builder.html">Theme Builder</a></li><li><a href="https://echarts.apache.org/en/cheat-sheet.html">Cheat Sheet</a></li><li><a href="https://echarts.apache.org/en/resources.html">More Resources</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/events.html">Events</a></li><li><a href="https://echarts.apache.org/en/committers.html">Committers</a></li><li><a href="https://echarts.apache.org/en/maillist.html">Mailing List</a></li><li><a href="https://echarts.apache.org/en/contributing.html">How to Contribute</a></li><li><a href="https://echarts.apache.org/en/dependencies.html">Dependencies</a></li><li><a href="https://echarts.apache.org/en/coding-standard.html">Code Standard</a></li><li><a href="https://github.com/apache/echarts" target="_blank">Source Code (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/security.html">Security</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">License<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">Events<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("zh")'>中文</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/en/get-started" class="nav-link"><span class="title">Get Started</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Basics</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/basics/download" class="nav-link"><span class="title">Download ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/import" class="nav-link"><span class="title">Import ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/basics/help" class="nav-link"><span class="title">Get Help</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">What's New</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 Features</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">Migration from v5 to v6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">Migration from v4 to v5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Concepts</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/concepts/chart-size" class="nav-link"><span class="title">Chart Container</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/style" class="nav-link"><span class="title">Style</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/dataset" class="nav-link"><span class="title">Dataset</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/data-transform" class="nav-link"><span class="title">Data Transform</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/axis" class="nav-link"><span class="title">Axis</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/visual-map" class="nav-link"><span class="title">Visual Mapping</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/legend" class="nav-link"><span class="title">Legend</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/event" class="nav-link"><span class="title">Event and Action</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">How To Guides</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">Common Charts</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Bar</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">Basic Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">Stacked Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">Bar Racing</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">Waterfall</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Line</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">Basic Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">Stacked Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/area-line" class="nav-link"><span class="title">Area Chart</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">Smoothed Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/step-line" class="nav-link"><span class="title">Step Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Pie</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">Basic Pie</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">Ring Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/rose" class="nav-link"><span class="title">Rose Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Scatter</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">Basic Scatter</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Common Components</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Geo</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG Base Map</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">Cross Platform</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/cross-platform/server" class="nav-link"><span class="title">Server Side Rendering</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Data</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/data/dynamic-data" class="nav-link"><span class="title">Dynamic Data</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Label</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/label/rich-text" class="nav-link"><span class="title">Rich Text</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Animation</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/animation/transition" class="nav-link"><span class="title">Data Transition</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Interaction</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/drag" class="nav-link"><span class="title">Drag</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">Intelligent Pointer Snapping</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Best Practices</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/en/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/aria" class="nav-link"><span class="title">Aria</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/security" class="nav-link"><span class="title">Security Guidelines</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Edit Handbook</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/meta/edit-guide" class="nav-link"><span class="title">Edit Guide</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div class="hidden"><a href="/echarts-handbook/zh/get-started">中文</a> <a href="/echarts-handbook/en/get-started">English</a></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,i,e,r,d,l,a,n,o,c,s,h,p,f,g,m,u,b,v,C,S,P,B,w,k,y,x,E,G,D,R,L,M,V,A,_,T,z,H,I,N,O,U,W,$,F,X,j,q,J,K,Q,Y,Z,tt,it,et,rt,dt,lt,at,nt,ot){return{layout:"default",data:[{}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:r},{title:"入门篇",dir:d,children:[{title:"获取 ECharts",dir:l},{title:"在项目中引入 ECharts",dir:a},{title:"资源列表",dir:n,draft:t},{title:"寻求帮助",dir:o},{title:"版本特性",dir:c,children:[{title:"ECharts 6 特性介绍",dir:s},{title:"v5 升级 v6 指南",dir:h},{title:"5.0",dir:p},{title:"v4 升级 v5 指南",dir:f},{title:5.2,dir:g},{title:5.3,dir:m},{title:5.4,dir:u},{title:5.5,dir:b},{title:5.6,dir:v}]}]},{title:"概念篇",dir:C,children:[{title:"图表容器及大小",dir:S},{title:"配置项",dir:P,draft:t},{title:"系列",dir:B,draft:t},{title:"样式",dir:w},{title:"数据集",dir:k},{title:"数据转换",dir:y},{title:"坐标系",dir:x,draft:t},{title:"坐标轴",dir:E},{title:"视觉映射",dir:e},{title:"图例",dir:G},{title:"事件与行为",dir:D}]},{title:"应用篇",dir:R,children:[{title:"常用图表类型",dir:L,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:M},{title:"堆叠柱状图",dir:V},{title:"动态排序柱状图",dir:A},{title:"极坐标系柱状图",dir:_,draft:t},{title:"阶梯瀑布图",dir:T},{title:"视觉映射的柱状图",dir:e,draft:t}]},{title:"折线图",dir:z,children:[{title:"基础折线图",dir:H},{title:"堆叠折线图",dir:I},{title:"区域面积图",dir:N},{title:"平滑曲线图",dir:O},{title:"阶梯线图",dir:U}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:W},{title:"圆环图",dir:$},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:F,children:[{title:"基础散点图",dir:X}]}]},{title:"常用组件",dir:j,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:q}]}]},{title:"移动端优化",dir:i,draft:t},{title:"跨平台方案",dir:J,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:K},{title:"数据下钻",dir:Q,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:Y}]},{title:"动画",dir:Z,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:it,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:et,draft:t},{title:"智能指针吸附",dir:rt}]}]},{title:"最佳实践",dir:dt,children:[{title:"移动端优化",dir:i,draft:t},{title:lt,dir:at},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:nt}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:ot}]}],en:[{title:"Get Started",dir:r},{title:"Basics",dir:d,children:[{title:"Download ECharts",dir:l},{title:"Import ECharts",dir:a},{title:"Resources",dir:n,draft:t},{title:"Get Help",dir:o},{title:"What's New",dir:c,children:[{title:"ECharts 6 Features",dir:s},{title:"Migration from v5 to v6",dir:h},{title:"5.0",dir:p},{title:"Migration from v4 to v5",dir:f},{title:5.2,dir:g},{title:5.3,dir:m},{title:5.4,dir:u},{title:5.5,dir:b},{title:5.6,dir:v}]}]},{title:"Concepts",dir:C,children:[{title:"Chart Container",dir:S},{title:"Chart Option",dir:P,draft:t},{title:"Series",dir:B,draft:t},{title:"Style",dir:w},{title:"Dataset",dir:k},{title:"Data Transform",dir:y},{title:"Coordinate",dir:x,draft:t},{title:"Axis",dir:E},{title:"Visual Mapping",dir:e},{title:"Legend",dir:G},{title:"Event and Action",dir:D}]},{title:"How To Guides",dir:R,children:[{title:"Common Charts",dir:L,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:M},{title:"Stacked Bar",dir:V},{title:"Bar Racing",dir:A},{title:"Bar Polar",dir:_,draft:t},{title:"Waterfall",dir:T}]},{title:"Line",dir:z,children:[{title:"Basic Line",dir:H},{title:"Stacked Line",dir:I},{title:"Area Chart",dir:N},{title:"Smoothed Line",dir:O},{title:"Step Line",dir:U}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:W},{title:"Ring Style",dir:$},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:F,children:[{title:"Basic Scatter",dir:X}]}]},{title:"Common Components",dir:j,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:q}]}]},{title:"Mobile",dir:i,draft:t},{title:"Cross Platform",dir:J,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:K},{title:"Drilldown",dir:Q,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:Y}]},{title:"Animation",dir:Z,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:it,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:et,draft:t},{title:"Intelligent Pointer Snapping",dir:rt}]}]},{title:"Best Practices",dir:dt,children:[{title:"Mobile Optimization",dir:i,draft:t},{title:lt,dir:at},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:nt}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:ot}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/en",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e33c9002634265ded0e5.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/en/meta/edit-guide/index.html b/docs/en/meta/edit-guide/index.html
new file mode 100644
index 0000000..196b734
--- /dev/null
+++ b/docs/en/meta/edit-guide/index.html
@@ -0,0 +1,208 @@
+<!doctype html>
+<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Edit Guide - Edit Handbook - Handbook - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="en"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/en/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/en/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/en/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/en/index.html" class="navbar-brand"><img src="https://echarts.apache.org/en/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/en/index.html">Home</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Docs<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/feature.html">Features</a></li><li><a href="https://echarts.apache.org/handbook/en/get-started/">Handbook</a></li><li><a href="https://echarts.apache.org/en/api.html">API</a></li><li><a href="https://echarts.apache.org/en/option.html">Chart Configuration</a></li><li><a href="https://echarts.apache.org/en/changelog.html">Changelog</a></li><li><a href="https://echarts.apache.org/en/faq.html">FAQ</a></li><li><a href="https://echarts.apache.org/handbook/en/basics/release-note/v6-upgrade-guide">V6 Upgrade Guide</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Download<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/download.html">Download</a></li><li><a href="https://echarts.apache.org/en/download-theme.html">Download Themes</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">Download Custom Series<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/download-extension.html">Download Extensions</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/en/index.html">Examples</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Resources<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/spreadsheet.html">Spread Sheet Tool</a></li><li><a href="https://echarts.apache.org/en/theme-builder.html">Theme Builder</a></li><li><a href="https://echarts.apache.org/en/cheat-sheet.html">Cheat Sheet</a></li><li><a href="https://echarts.apache.org/en/resources.html">More Resources</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/events.html">Events</a></li><li><a href="https://echarts.apache.org/en/committers.html">Committers</a></li><li><a href="https://echarts.apache.org/en/maillist.html">Mailing List</a></li><li><a href="https://echarts.apache.org/en/contributing.html">How to Contribute</a></li><li><a href="https://echarts.apache.org/en/dependencies.html">Dependencies</a></li><li><a href="https://echarts.apache.org/en/coding-standard.html">Code Standard</a></li><li><a href="https://github.com/apache/echarts" target="_blank">Source Code (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/security.html">Security</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">License<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">Events<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("zh")'>中文</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/en/get-started" class="nav-link"><span class="title">Get Started</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Basics</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/basics/download" class="nav-link"><span class="title">Download ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/import" class="nav-link"><span class="title">Import ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/basics/help" class="nav-link"><span class="title">Get Help</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">What's New</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 Features</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">Migration from v5 to v6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">Migration from v4 to v5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Concepts</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/concepts/chart-size" class="nav-link"><span class="title">Chart Container</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/style" class="nav-link"><span class="title">Style</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/dataset" class="nav-link"><span class="title">Dataset</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/data-transform" class="nav-link"><span class="title">Data Transform</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/axis" class="nav-link"><span class="title">Axis</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/visual-map" class="nav-link"><span class="title">Visual Mapping</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/legend" class="nav-link"><span class="title">Legend</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/event" class="nav-link"><span class="title">Event and Action</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">How To Guides</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">Common Charts</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Bar</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">Basic Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">Stacked Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">Bar Racing</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">Waterfall</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Line</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">Basic Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">Stacked Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/area-line" class="nav-link"><span class="title">Area Chart</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">Smoothed Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/step-line" class="nav-link"><span class="title">Step Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Pie</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">Basic Pie</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">Ring Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/rose" class="nav-link"><span class="title">Rose Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Scatter</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">Basic Scatter</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Common Components</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Geo</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG Base Map</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">Cross Platform</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/cross-platform/server" class="nav-link"><span class="title">Server Side Rendering</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Data</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/data/dynamic-data" class="nav-link"><span class="title">Dynamic Data</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Label</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/label/rich-text" class="nav-link"><span class="title">Rich Text</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Animation</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/animation/transition" class="nav-link"><span class="title">Data Transition</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Interaction</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/drag" class="nav-link"><span class="title">Drag</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">Intelligent Pointer Snapping</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Best Practices</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/en/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/aria" class="nav-link"><span class="title">Aria</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/security" class="nav-link"><span class="title">Security Guidelines</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Edit Handbook</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/meta/edit-guide" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">Edit Guide</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="document-editing-guidelines" tabindex="-1">Document Editing Guidelines</h1> <h2 id="adding-a-markdown-file" tabindex="-1">Adding a Markdown File</h2> <p>Add a markdown file to the <code>contents/zh/</code> (Chinese posts) or <code>contents/en/</code> (English posts) directories, up to three levels. Update the path and title information in <code>contents/zh/posts.yml</code> or <code>contents/en/posts.yml</code>. Add the corresponding contributor information in <code>components/helper/contributors.ts</code>. (Notice, <code>en</code> and <code>zh</code> are separate entries in that file.)</p> <p>Lowercase markdown file names.</p> <h2 id="using-prettier-to-automatically-format-code" tabindex="-1">Using Prettier to Automatically Format Code</h2> <p>Before you start, we recommend installing the <a href="https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode">prettier VSCode plugin</a>, which will automatically format the code for you when you save it.</p> <p>If you feel that the automatic formatting is breaking your code block, you can add the following comment to prevent <code>prettier</code> from formatting the code inside the block</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-markdown line-numbers"><code><span class="token comment">&lt;!-- prettier-ignore-start --></span>
+<span class="token comment">&lt;!-- prettier-ignore-end --></span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>If you find blocks of code that are not formatted, check first for syntax errors in the code.</p> <h2 id="built-in-variables" tabindex="-1">Built-in Variables</h2> <ul><li><p><code>optionPath</code>: For example, the source code of <a href="https://echarts.apache.org/option.html#xAxis.type">xAxis.type</a> is:</p> <pre>[xAxis.type](${optionPath}xAxis.type)</pre></li> <li><p><code>apiPath</code>: For example, the source code of <a href="https://echarts.apache.org/api.html#echarts.init">echarts.init</a> is:</p> <pre>[echarts.init](${apiPath}echarts.init)</pre></li> <li><p><code>mainSitePath</code>: For example, the source code of <a href="https://echarts.apache.org/api.html#echarts.init">echarts.init</a> is:</p> <pre>[echarts.init](${mainSitePath}api.html#echarts.init)</pre></li> <li><p><code>exampleEditorPath</code>: For example, the source code of <a href="https://echarts.apache.org/examples/en/editor.html?c=line-simple&edit=1&reset=1">line-simple</a> is:</p> <pre>[line-simple](${exampleEditorPath}line-simple&edit=1&reset=1)</pre></li> <li><p><code>exampleViewPath</code>: For example, the source code of <a href="https://echarts.apache.org/examples/en/view.html?c=line-simple&edit=1&reset=1">line-simple</a> is:</p> <pre>[line-simple](${exampleViewPath}scatter-exponential-regression&edit=1&reset=1)</pre></li> <li><p><code>lang</code>: For example, the source code of <a href="en/get-started">Get Started</a> is:</p> <pre>[Get Started](${lang}/get-started)</pre></li></ul> <h2 id="headings" tabindex="-1">Headings</h2> <p>The syntax:</p> <pre>## Some Heading [[[#a-unique-id-for-link]]]
+</pre> <blockquote class="md-alert md-alert-danger" data-v-baf1bad2><p data-v-baf1bad2>
+The id is used to link this heading from outside.
+It's strongly recommended to declare the id in each heading (e.g., [[[#a-unique-id-for-link]]]) and ensure it remains unchanged. Otherwise an id is auto-generated base on the title text, which may be unstable (changed when the heading text is changed), and varies across different languages.
+</p></blockquote> <p>Note: No need to declare id for the main title of an article, as the link for an article is the file path (declared in <code>posts.yml</code>).</p> <h2 id="link-to-other-articles" tabindex="-1">Link to Other Articles</h2> <p>The syntax is:</p> <pre>[Get Apache ECharts](${lang}/basics/download)
+</pre> <p>The effect is:
+<a href="en/basics/download">Get Apache ECharts</a></p> <h2 id="embedding-code" tabindex="-1">Embedding Code</h2> <h3 id="embedding-code-basic-usage" tabindex="-1">Basic Usage</h3> <p>The syntax is:</p> <pre>```js
+option = {
+    series: [{
+        type: 'bar',
+        data: [23, 24, 18, 25, 27, 28, 25]
+    }]
+};
+```
+</pre> <p>The effect is:
+</p><div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">23</span><span class="token punctuation">,</span> <span class="token number">24</span><span class="token punctuation">,</span> <span class="token number">18</span><span class="token punctuation">,</span> <span class="token number">25</span><span class="token punctuation">,</span> <span class="token number">27</span><span class="token punctuation">,</span> <span class="token number">28</span><span class="token punctuation">,</span> <span class="token number">25</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div><p></p> <h3 id="embedding-code-recommended-way-of-writing-code" tabindex="-1">Recommended Way of Writing Code</h3> <p>In order to allow the tool to help us format the code, we should try to avoid syntactically problematic writing styles.</p> <p>For example, the comment <code>...</code></p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span>
+      <span class="token comment">// ...</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h3 id="embedding-code-live-preview-and-editing" tabindex="-1">Live Preview and Editing</h3> <blockquote><p>Currently only preview (render the charts) of ECharts option code is supported</p></blockquote> <p>The syntax is:</p> <pre>```js live
+option = {
+  xAxis: {
+    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
+  },
+  yAxis: {},
+  series: [
+    {
+      type: 'bar',
+      data: [23, 24, 18, 25, 27, 28, 25]
+    }
+  ]
+};
+```
+</pre> <p>The effect is:
+</p><div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
+  },
+  yAxis: {},
+  series: [
+    {
+      type: 'bar',
+      data: [23, 24, 18, 25, 27, 28, 25]
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'Mon'</span><span class="token punctuation">,</span> <span class="token string">'Tue'</span><span class="token punctuation">,</span> <span class="token string">'Wed'</span><span class="token punctuation">,</span> <span class="token string">'Thu'</span><span class="token punctuation">,</span> <span class="token string">'Fri'</span><span class="token punctuation">,</span> <span class="token string">'Sat'</span><span class="token punctuation">,</span> <span class="token string">'Sun'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">23</span><span class="token punctuation">,</span> <span class="token number">24</span><span class="token punctuation">,</span> <span class="token number">18</span><span class="token punctuation">,</span> <span class="token number">25</span><span class="token punctuation">,</span> <span class="token number">27</span><span class="token punctuation">,</span> <span class="token number">28</span><span class="token punctuation">,</span> <span class="token number">25</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div><p></p> <h3 id="embedding-code-more-preview-layouts" tabindex="-1">More Preview Layouts</h3> <h4 id="embedding-code-more-preview-layouts-left-to-right" tabindex="-1">Left to Right</h4> <p>The syntax is:</p> <pre>```js live {layout: 'lr'}
+option = {
+  ...
+};
+```
+</pre> <p>The effect is:
+</p><div class="md-live layout-lr"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
+  },
+  yAxis: {},
+  series: [
+    {
+      type: 'bar',
+      data: [23, 24, 18, 25, 27, 28, 25]
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'Mon'</span><span class="token punctuation">,</span> <span class="token string">'Tue'</span><span class="token punctuation">,</span> <span class="token string">'Wed'</span><span class="token punctuation">,</span> <span class="token string">'Thu'</span><span class="token punctuation">,</span> <span class="token string">'Fri'</span><span class="token punctuation">,</span> <span class="token string">'Sat'</span><span class="token punctuation">,</span> <span class="token string">'Sun'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">23</span><span class="token punctuation">,</span> <span class="token number">24</span><span class="token punctuation">,</span> <span class="token number">18</span><span class="token punctuation">,</span> <span class="token number">25</span><span class="token punctuation">,</span> <span class="token number">27</span><span class="token punctuation">,</span> <span class="token number">28</span><span class="token punctuation">,</span> <span class="token number">25</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div><p></p> <h4 id="embedding-code-more-preview-layouts-right-to-left" tabindex="-1">Right to left</h4> <p>The syntax is:</p> <pre>```js live {layout: 'rl'}
+option = {
+  ...
+};
+```
+</pre> <p>The effect is:
+</p><div class="md-live layout-rl"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
+  },
+  yAxis: {},
+  series: [
+    {
+      type: 'bar',
+      data: [23, 24, 18, 25, 27, 28, 25]
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'Mon'</span><span class="token punctuation">,</span> <span class="token string">'Tue'</span><span class="token punctuation">,</span> <span class="token string">'Wed'</span><span class="token punctuation">,</span> <span class="token string">'Thu'</span><span class="token punctuation">,</span> <span class="token string">'Fri'</span><span class="token punctuation">,</span> <span class="token string">'Sat'</span><span class="token punctuation">,</span> <span class="token string">'Sun'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">23</span><span class="token punctuation">,</span> <span class="token number">24</span><span class="token punctuation">,</span> <span class="token number">18</span><span class="token punctuation">,</span> <span class="token number">25</span><span class="token punctuation">,</span> <span class="token number">27</span><span class="token punctuation">,</span> <span class="token number">28</span><span class="token punctuation">,</span> <span class="token number">25</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div><p></p> <h4 id="embedding-code-more-preview-layouts-down-to-up" tabindex="-1">Down to Up</h4> <p>The syntax is:</p> <pre>```js live {layout: 'bt'}
+option = {
+  ...
+};
+</pre> <p>The effect is:
+</p><div class="md-live layout-bt"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
+  },
+  yAxis: {},
+  series: [
+    {
+      type: 'bar',
+      data: [23, 24, 18, 25, 27, 28, 25]
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'Mon'</span><span class="token punctuation">,</span> <span class="token string">'Tue'</span><span class="token punctuation">,</span> <span class="token string">'Wed'</span><span class="token punctuation">,</span> <span class="token string">'Thu'</span><span class="token punctuation">,</span> <span class="token string">'Fri'</span><span class="token punctuation">,</span> <span class="token string">'Sat'</span><span class="token punctuation">,</span> <span class="token string">'Sun'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">23</span><span class="token punctuation">,</span> <span class="token number">24</span><span class="token punctuation">,</span> <span class="token number">18</span><span class="token punctuation">,</span> <span class="token number">25</span><span class="token punctuation">,</span> <span class="token number">27</span><span class="token punctuation">,</span> <span class="token number">28</span><span class="token punctuation">,</span> <span class="token number">25</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div><p></p> <h3 id="embedding-code-highlighting-lines-of-code-and-adding-filenames" tabindex="-1">Highlighting Lines of Code and Adding Filenames</h3> <p>The syntax is:</p> <pre>```js{1,3-5}[option.js]
+option = {
+  series: [
+    {
+      type: 'bar',
+      data: [23, 24, 18, 25, 27, 28, 25]
+    }
+  ]
+};
+```
+</pre> <p>The effect is:</p> <pre><code class="language-js{1,3-5}[option.js]">option = {
+  series: [
+    {
+      type: 'bar',
+      data: [23, 24, 18, 25, 27, 28, 25]
+    }
+  ]
+};
+</code></pre> <h2 id="embedding-images" tabindex="-1">Embedding Images</h2> <p>Source images are stored under <code>static/images/</code>.</p> <p>The syntax is:</p> <pre><code>![image description](images/demo.png)
+</code></pre> <h3 id="embedding-images-set-width-height" tabindex="-1">Set the Image Height and Width</h3> <p>For the temporary style of the current page, you can just write html.</p> <pre><code>&lt;img data-src="images/demo.png" style="width: 50px" />
+</code></pre> <h2 id="embedding-examples" tabindex="-1">Embedding Examples (Iframe)</h2> <p>The syntax is:</p> <pre><code>&lt;md-example src="doc-example/getting-started" width="100%" height="300">&lt;/md-example>
+</code></pre> <p><code>src</code> is the string after <code>?c=</code> in the <a href="https://echarts.apache.org/examples/en/editor.html?c=line-simple">https://echarts.apache.org/examples/en/editor.html?c=line-simple</a> address.</p> <p>The effect is:
+<iframe width="100%" height="300" src=""></iframe></p> <h2 id="link-to-examples" tabindex="-1">Link to Examples</h2> <p>The syntax is:</p> <pre>[line-simple](${exampleEditorPath}line-simple&edit=1&reset=1)</pre> <p>The effect is:
+<a href="https://echarts.apache.org/examples/en/editor.html?c=line-simple&edit=1&reset=1">line-simple</a></p> <h2 id="link-to-echarts-option-items" tabindex="-1">Link to ECharts Option Items</h2> <p>The syntax is:</p> <pre>[xAxis.type](${optionPath}xAxis.type)</pre> <p>The effect is:
+<a href="https://echarts.apache.org/option.html#xAxis.type">xAxis.type</a></p> <p>The syntax is:</p> <pre>[echarts.init](${apiPath}echarts.init)</pre> <p>The effect is:
+<a href="https://echarts.apache.org/api.html#echarts.init">echarts.init</a></p> <h2 id="more-component-usage" tabindex="-1">More Component Usage</h2> <p>The documentation supports the use of globally registered <code>markdown</code> components. In addition to the <code>md-example</code> component just described, the following components are also available</p> <h3 id="more-component-usage-md-alert" tabindex="-1">md-alert</h3> <p>Prompt components</p> <pre><code>&lt;md-alert type="info">
+This is an info alert.
+&lt;/md-alert>
+</code></pre> <blockquote class="md-alert md-alert-info" data-v-baf1bad2><p data-v-baf1bad2>
+This is an info alert.
+</p></blockquote> <pre><code>&lt;md-alert type="success">
+This is a success alert.
+&lt;/md-alert>
+</code></pre> <blockquote class="md-alert md-alert-success" data-v-baf1bad2><p data-v-baf1bad2>
+This is a success alert.
+</p></blockquote> <pre><code>&lt;md-alert type="warning">
+This is a warning alert.
+&lt;/md-alert>
+</code></pre> <blockquote class="md-alert md-alert-warning" data-v-baf1bad2><p data-v-baf1bad2>
+This is a warning alert.
+</p></blockquote> <pre><code>&lt;md-alert type="danger">
+This is a danger alert.
+&lt;/md-alert>
+</code></pre> <blockquote class="md-alert md-alert-danger" data-v-baf1bad2><p data-v-baf1bad2>
+This is a danger alert.
+</p></blockquote></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">Contributors</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/en/meta/edit-guide.md" title="Edit this Document" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">Edit this page on GitHub</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a><a href="https://github.com/100pah" target="_blank" class="post-contributor has-avatar"><img alt="100pah" src="https://echarts.apache.org/en/images/people/宿爽.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>100pah</span></a><a href="https://github.com/plainheart" target="_blank" class="post-contributor has-avatar"><img alt="plainheart" src="https://echarts.apache.org/en/images/people/plainheart.jpg" loading="lazy" decoding="async" fetchpriority="low"> <span>plainheart</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(e,t,i,n,r,d,a,o,l,s,p,h,c,g,m,u,C,f,b,y,I,x,w,A,B,v,k,L,T,S,O,P,V,j,G,R,M,E,U,D,W,X,J,q,z,F,H,Y,N,Q,K,_,Z,$,ee,te,ie,ne,re,de,ae,oe,le){return{layout:"default",data:[{html:'<h1 id="document-editing-guidelines" tabindex="-1">Document Editing Guidelines</h1>\n<h2 id="adding-a-markdown-file" tabindex="-1">Adding a Markdown File</h2>\n<p>Add a markdown file to the <code>contents/zh/</code> (Chinese posts) or <code>contents/en/</code> (English posts) directories, up to three levels. Update the path and title information in <code>contents/zh/posts.yml</code> or <code>contents/en/posts.yml</code>. Add the corresponding contributor information in <code>components/helper/contributors.ts</code>. (Notice, <code>en</code> and <code>zh</code> are separate entries in that file.)</p>\n<p>Lowercase markdown file names.</p>\n<h2 id="using-prettier-to-automatically-format-code" tabindex="-1">Using Prettier to Automatically Format Code</h2>\n<p>Before you start, we recommend installing the <a href="https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode">prettier VSCode plugin</a>, which will automatically format the code for you when you save it.</p>\n<p>If you feel that the automatic formatting is breaking your code block, you can add the following comment to prevent <code>prettier</code> from formatting the code inside the block</p>\n<md-code-block lang="markdown" code="\'PCEtLSBwcmV0dGllci1pZ25vcmUtc3RhcnQgLS0-CjwhLS0gcHJldHRpZXItaWdub3JlLWVuZCAtLT4\'" line-highlights="\'\'" />\n<p>If you find blocks of code that are not formatted, check first for syntax errors in the code.</p>\n<h2 id="built-in-variables" tabindex="-1">Built-in Variables</h2>\n<ul>\n<li>\n<p><code>optionPath</code>: For example, the source code of <a href="https://echarts.apache.org/option.html#xAxis.type">xAxis.type</a> is:</p>\n<pre>&#91;xAxis.type&#93;&#40;&#36;{optionPath}xAxis.type&#41;</pre>\n</li>\n<li>\n<p><code>apiPath</code>: For example, the source code of <a href="https://echarts.apache.org/api.html#echarts.init">echarts.init</a> is:</p>\n<pre>&#91;echarts.init&#93;&#40;&#36;{apiPath}echarts.init&#41;</pre>\n</li>\n<li>\n<p><code>mainSitePath</code>: For example, the source code of <a href="https://echarts.apache.org/api.html#echarts.init">echarts.init</a> is:</p>\n<pre>&#91;echarts.init&#93;&#40;&#36;{mainSitePath}api.html#echarts.init&#41;</pre>\n</li>\n<li>\n<p><code>exampleEditorPath</code>: For example, the source code of <a href="https://echarts.apache.org/examples/en/editor.html?c=line-simple&amp;edit=1&amp;reset=1">line-simple</a> is:</p>\n<pre>&#91;line-simple&#93;&#40;&#36;{exampleEditorPath}line-simple&edit=1&reset=1&#41;</pre>\n</li>\n<li>\n<p><code>exampleViewPath</code>: For example, the source code of <a href="https://echarts.apache.org/examples/en/view.html?c=line-simple&amp;edit=1&amp;reset=1">line-simple</a> is:</p>\n<pre>&#91;line-simple&#93;&#40;&#36;{exampleViewPath}scatter-exponential-regression&edit=1&reset=1&#41;</pre>\n</li>\n<li>\n<p><code>lang</code>: For example, the source code of <a href="en/get-started">Get Started</a> is:</p>\n<pre>&#91;Get Started&#93;&#40;&#36;{lang}/get-started&#41;</pre>\n</li>\n</ul>\n<h2 id="headings" tabindex="-1">Headings</h2>\n<p>The syntax:</p>\n\x3c!-- prettier-ignore-start --\x3e\n<pre>\n&#35;&#35; Some Heading [[[#a-unique-id-for-link]]]\n</pre>\n\x3c!-- prettier-ignore-end --\x3e\n<md-alert type="danger">\nThe id is used to link this heading from outside.\nIt\'s strongly recommended to declare the id in each heading (e.g., [[[#a-unique-id-for-link]]]) and ensure it remains unchanged. Otherwise an id is auto-generated base on the title text, which may be unstable (changed when the heading text is changed), and varies across different languages.\n</md-alert>\n<p>Note: No need to declare id for the main title of an article, as the link for an article is the file path (declared in <code>posts.yml</code>).</p>\n<h2 id="link-to-other-articles" tabindex="-1">Link to Other Articles</h2>\n<p>The syntax is:</p>\n<pre>\n&#91;Get Apache ECharts&#93;&#40;&#36;{lang}/basics/download&#41;\n</pre>\n<p>The effect is:\n<a href="en/basics/download">Get Apache ECharts</a></p>\n<h2 id="embedding-code" tabindex="-1">Embedding Code</h2>\n<h3 id="embedding-code-basic-usage" tabindex="-1">Basic Usage</h3>\n<p>The syntax is:</p>\n\x3c!-- prettier-ignore-start --\x3e\n<pre>\n&#96;&#96;&#96;js\noption = {\n    series: [{\n        type: \'bar\',\n        data: [23, 24, 18, 25, 27, 28, 25]\n    }]\n};\n&#96;&#96;&#96;\n</pre>\n\x3c!-- prettier-ignore-end --\x3e\n<p>The effect is:\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIHNlcmllczogWwogICAgewogICAgICB0eXBlOiAnYmFyJywKICAgICAgZGF0YTogWzIzLCAyNCwgMTgsIDI1LCAyNywgMjgsIDI1XQogICAgfQogIF0KfTs\'" line-highlights="\'\'" /></p>\n<h3 id="embedding-code-recommended-way-of-writing-code" tabindex="-1">Recommended Way of Writing Code</h3>\n<p>In order to allow the tool to help us format the code, we should try to avoid syntactically problematic writing styles.</p>\n<p>For example, the comment <code>...</code></p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIHNlcmllczogWwogICAgewogICAgICB0eXBlOiAnYmFyJwogICAgICAvLyAuLi4KICAgIH0KICBdCn07\'" line-highlights="\'\'" />\n<h3 id="embedding-code-live-preview-and-editing" tabindex="-1">Live Preview and Editing</h3>\n<blockquote>\n<p>Currently only preview (render the charts) of ECharts option code is supported</p>\n</blockquote>\n<p>The syntax is:</p>\n\x3c!-- prettier-ignore-start --\x3e\n<pre>\n&#96;&#96;&#96;js live\noption = {\n  xAxis: {\n    data: [\'Mon\', \'Tue\', \'Wed\', \'Thu\', \'Fri\', \'Sat\', \'Sun\']\n  },\n  yAxis: {},\n  series: [\n    {\n      type: \'bar\',\n      data: [23, 24, 18, 25, 27, 28, 25]\n    }\n  ]\n};\n&#96;&#96;&#96;\n</pre>\n\x3c!-- prettier-ignore-end --\x3e\n<p>The effect is:\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBkYXRhOiBbJ01vbicsICdUdWUnLCAnV2VkJywgJ1RodScsICdGcmknLCAnU2F0JywgJ1N1biddCiAgfSwKICB5QXhpczoge30sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIHR5cGU6ICdiYXInLAogICAgICBkYXRhOiBbMjMsIDI0LCAxOCwgMjUsIDI3LCAyOCwgMjVdCiAgICB9CiAgXQp9Ow\'" v-bind="{}" /></p>\n<h3 id="embedding-code-more-preview-layouts" tabindex="-1">More Preview Layouts</h3>\n<h4 id="embedding-code-more-preview-layouts-left-to-right" tabindex="-1">Left to Right</h4>\n<p>The syntax is:</p>\n\x3c!-- prettier-ignore-start --\x3e\n<pre>\n&#96;&#96;&#96;js live {layout: \'lr\'}\noption = {\n  ...\n};\n&#96;&#96;&#96;\n</pre>\n\x3c!-- prettier-ignore-end --\x3e\n<p>The effect is:\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBkYXRhOiBbJ01vbicsICdUdWUnLCAnV2VkJywgJ1RodScsICdGcmknLCAnU2F0JywgJ1N1biddCiAgfSwKICB5QXhpczoge30sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIHR5cGU6ICdiYXInLAogICAgICBkYXRhOiBbMjMsIDI0LCAxOCwgMjUsIDI3LCAyOCwgMjVdCiAgICB9CiAgXQp9Ow\'" v-bind="{layout: \'lr\'}" /></p>\n<h4 id="embedding-code-more-preview-layouts-right-to-left" tabindex="-1">Right to left</h4>\n<p>The syntax is:</p>\n\x3c!-- prettier-ignore-start --\x3e\n<pre>\n&#96;&#96;&#96;js live {layout: \'rl\'}\noption = {\n  ...\n};\n&#96;&#96;&#96;\n</pre>\n\x3c!-- prettier-ignore-end --\x3e\n<p>The effect is:\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBkYXRhOiBbJ01vbicsICdUdWUnLCAnV2VkJywgJ1RodScsICdGcmknLCAnU2F0JywgJ1N1biddCiAgfSwKICB5QXhpczoge30sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIHR5cGU6ICdiYXInLAogICAgICBkYXRhOiBbMjMsIDI0LCAxOCwgMjUsIDI3LCAyOCwgMjVdCiAgICB9CiAgXQp9Ow\'" v-bind="{layout: \'rl\'}" /></p>\n<h4 id="embedding-code-more-preview-layouts-down-to-up" tabindex="-1">Down to Up</h4>\n<p>The syntax is:</p>\n\x3c!-- prettier-ignore-start --\x3e\n<pre>\n&#96;&#96;&#96;js live {layout: \'bt\'}\noption = {\n  ...\n};\n</pre>\n\x3c!-- prettier-ignore-end --\x3e\n<p>The effect is:\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBkYXRhOiBbJ01vbicsICdUdWUnLCAnV2VkJywgJ1RodScsICdGcmknLCAnU2F0JywgJ1N1biddCiAgfSwKICB5QXhpczoge30sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIHR5cGU6ICdiYXInLAogICAgICBkYXRhOiBbMjMsIDI0LCAxOCwgMjUsIDI3LCAyOCwgMjVdCiAgICB9CiAgXQp9Ow\'" v-bind="{layout: \'bt\'}" /></p>\n<h3 id="embedding-code-highlighting-lines-of-code-and-adding-filenames" tabindex="-1">Highlighting Lines of Code and Adding Filenames</h3>\n<p>The syntax is:</p>\n\x3c!-- prettier-ignore-start --\x3e\n<pre>\n&#96;&#96;&#96;js{1,3-5}[option.js]\noption = {\n  series: [\n    {\n      type: \'bar\',\n      data: [23, 24, 18, 25, 27, 28, 25]\n    }\n  ]\n};\n&#96;&#96;&#96;\n</pre>\n\x3c!-- prettier-ignore-end --\x3e\n<p>The effect is:</p>\n<pre><code class="language-js{1,3-5}[option.js]">option = {\n  series: [\n    {\n      type: \'bar\',\n      data: [23, 24, 18, 25, 27, 28, 25]\n    }\n  ]\n};\n</code></pre>\n<h2 id="embedding-images" tabindex="-1">Embedding Images</h2>\n<p>Source images are stored under <code>static/images/</code>.</p>\n<p>The syntax is:</p>\n<pre><code>![image description](images/demo.png)\n</code></pre>\n<h3 id="embedding-images-set-width-height" tabindex="-1">Set the Image Height and Width</h3>\n<p>For the temporary style of the current page, you can just write html.</p>\n<pre><code>&lt;img data-src=&quot;images/demo.png&quot; style=&quot;width: 50px&quot; /&gt;\n</code></pre>\n<h2 id="embedding-examples" tabindex="-1">Embedding Examples (Iframe)</h2>\n<p>The syntax is:</p>\n<pre><code>&lt;md-example src=&quot;doc-example/getting-started&quot; width=&quot;100%&quot; height=&quot;300&quot;&gt;&lt;/md-example&gt;\n</code></pre>\n<p><code>src</code> is the string after <code>?c=</code> in the <a href="https://echarts.apache.org/examples/en/editor.html?c=line-simple">https://echarts.apache.org/examples/en/editor.html?c=line-simple</a> address.</p>\n<p>The effect is:\n<md-example src="doc-example/getting-started" width="100%" height="300"></md-example></p>\n<h2 id="link-to-examples" tabindex="-1">Link to Examples</h2>\n<p>The syntax is:</p>\n<pre>&#91;line-simple&#93;&#40;&#36;{exampleEditorPath}line-simple&edit=1&reset=1&#41;</pre>\n<p>The effect is:\n<a href="https://echarts.apache.org/examples/en/editor.html?c=line-simple&amp;edit=1&amp;reset=1">line-simple</a></p>\n<h2 id="link-to-echarts-option-items" tabindex="-1">Link to ECharts Option Items</h2>\n<p>The syntax is:</p>\n<pre>&#91;xAxis.type&#93;&#40;&#36;{optionPath}xAxis.type&#41;</pre>\n<p>The effect is:\n<a href="https://echarts.apache.org/option.html#xAxis.type">xAxis.type</a></p>\n<p>The syntax is:</p>\n<pre>&#91;echarts.init&#93;&#40;&#36;{apiPath}echarts.init&#41;</pre>\n<p>The effect is:\n<a href="https://echarts.apache.org/api.html#echarts.init">echarts.init</a></p>\n<h2 id="more-component-usage" tabindex="-1">More Component Usage</h2>\n<p>The documentation supports the use of globally registered <code>markdown</code> components. In addition to the <code>md-example</code> component just described, the following components are also available</p>\n<h3 id="more-component-usage-md-alert" tabindex="-1">md-alert</h3>\n<p>Prompt components</p>\n<pre><code>&lt;md-alert type=&quot;info&quot;&gt;\nThis is an info alert.\n&lt;/md-alert&gt;\n</code></pre>\n<md-alert type="info">\nThis is an info alert.\n</md-alert>\n<pre><code>&lt;md-alert type=&quot;success&quot;&gt;\nThis is a success alert.\n&lt;/md-alert&gt;\n</code></pre>\n<md-alert type="success">\nThis is a success alert.\n</md-alert>\n<pre><code>&lt;md-alert type=&quot;warning&quot;&gt;\nThis is a warning alert.\n&lt;/md-alert&gt;\n</code></pre>\n<md-alert type="warning">\nThis is a warning alert.\n</md-alert>\n<pre><code>&lt;md-alert type=&quot;danger&quot;&gt;\nThis is a danger alert.\n&lt;/md-alert&gt;\n</code></pre>\n<md-alert type="danger">\nThis is a danger alert.\n</md-alert>\n',postPath:"en/meta/edit-guide",title:"Edit Guide - Edit Handbook"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:n},{title:"入门篇",dir:r,children:[{title:"获取 ECharts",dir:d},{title:"在项目中引入 ECharts",dir:a},{title:"资源列表",dir:o,draft:e},{title:"寻求帮助",dir:l},{title:"版本特性",dir:s,children:[{title:"ECharts 6 特性介绍",dir:p},{title:"v5 升级 v6 指南",dir:h},{title:"5.0",dir:c},{title:"v4 升级 v5 指南",dir:g},{title:5.2,dir:m},{title:5.3,dir:u},{title:5.4,dir:C},{title:5.5,dir:f},{title:5.6,dir:b}]}]},{title:"概念篇",dir:y,children:[{title:"图表容器及大小",dir:I},{title:"配置项",dir:x,draft:e},{title:"系列",dir:w,draft:e},{title:"样式",dir:A},{title:"数据集",dir:B},{title:"数据转换",dir:v},{title:"坐标系",dir:k,draft:e},{title:"坐标轴",dir:L},{title:"视觉映射",dir:i},{title:"图例",dir:T},{title:"事件与行为",dir:S}]},{title:"应用篇",dir:O,children:[{title:"常用图表类型",dir:P,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:V},{title:"堆叠柱状图",dir:j},{title:"动态排序柱状图",dir:G},{title:"极坐标系柱状图",dir:R,draft:e},{title:"阶梯瀑布图",dir:M},{title:"视觉映射的柱状图",dir:i,draft:e}]},{title:"折线图",dir:E,children:[{title:"基础折线图",dir:U},{title:"堆叠折线图",dir:D},{title:"区域面积图",dir:W},{title:"平滑曲线图",dir:X},{title:"阶梯线图",dir:J}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:q},{title:"圆环图",dir:z},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:F,children:[{title:"基础散点图",dir:H}]}]},{title:"常用组件",dir:Y,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:N}]}]},{title:"移动端优化",dir:t,draft:e},{title:"跨平台方案",dir:Q,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:K},{title:"数据下钻",dir:_,draft:e}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:Z}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:ee}]},{title:"交互",dir:te,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:ie,draft:e},{title:"智能指针吸附",dir:ne}]}]},{title:"最佳实践",dir:re,children:[{title:"移动端优化",dir:t,draft:e},{title:de,dir:ae},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:oe}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:le}]}],en:[{title:"Get Started",dir:n},{title:"Basics",dir:r,children:[{title:"Download ECharts",dir:d},{title:"Import ECharts",dir:a},{title:"Resources",dir:o,draft:e},{title:"Get Help",dir:l},{title:"What's New",dir:s,children:[{title:"ECharts 6 Features",dir:p},{title:"Migration from v5 to v6",dir:h},{title:"5.0",dir:c},{title:"Migration from v4 to v5",dir:g},{title:5.2,dir:m},{title:5.3,dir:u},{title:5.4,dir:C},{title:5.5,dir:f},{title:5.6,dir:b}]}]},{title:"Concepts",dir:y,children:[{title:"Chart Container",dir:I},{title:"Chart Option",dir:x,draft:e},{title:"Series",dir:w,draft:e},{title:"Style",dir:A},{title:"Dataset",dir:B},{title:"Data Transform",dir:v},{title:"Coordinate",dir:k,draft:e},{title:"Axis",dir:L},{title:"Visual Mapping",dir:i},{title:"Legend",dir:T},{title:"Event and Action",dir:S}]},{title:"How To Guides",dir:O,children:[{title:"Common Charts",dir:P,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:V},{title:"Stacked Bar",dir:j},{title:"Bar Racing",dir:G},{title:"Bar Polar",dir:R,draft:e},{title:"Waterfall",dir:M}]},{title:"Line",dir:E,children:[{title:"Basic Line",dir:U},{title:"Stacked Line",dir:D},{title:"Area Chart",dir:W},{title:"Smoothed Line",dir:X},{title:"Step Line",dir:J}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:q},{title:"Ring Style",dir:z},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:F,children:[{title:"Basic Scatter",dir:H}]}]},{title:"Common Components",dir:Y,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:N}]}]},{title:"Mobile",dir:t,draft:e},{title:"Cross Platform",dir:Q,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:K},{title:"Drilldown",dir:_,draft:e}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:Z}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:ee}]},{title:"Interaction",dir:te,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:ie,draft:e},{title:"Intelligent Pointer Snapping",dir:ne}]}]},{title:"Best Practices",dir:re,children:[{title:"Mobile Optimization",dir:t,draft:e},{title:de,dir:ae},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:oe}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:le}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:e,routePath:"/en/meta/edit-guide",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/images/5-2-0/group-transition-2.gif b/docs/images/5-2-0/group-transition-2.gif
new file mode 100644
index 0000000..caf3dd7
--- /dev/null
+++ b/docs/images/5-2-0/group-transition-2.gif
Binary files differ
diff --git a/docs/images/5-2-0/group-transition.gif b/docs/images/5-2-0/group-transition.gif
new file mode 100644
index 0000000..8d13ee9
--- /dev/null
+++ b/docs/images/5-2-0/group-transition.gif
Binary files differ
diff --git a/docs/images/5-2-0/polar-bar-label.jpg b/docs/images/5-2-0/polar-bar-label.jpg
new file mode 100644
index 0000000..ee6853d
--- /dev/null
+++ b/docs/images/5-2-0/polar-bar-label.jpg
Binary files differ
diff --git a/docs/images/5-2-0/universal-transition-2.gif b/docs/images/5-2-0/universal-transition-2.gif
new file mode 100644
index 0000000..9b7db83
--- /dev/null
+++ b/docs/images/5-2-0/universal-transition-2.gif
Binary files differ
diff --git a/docs/images/5-2-0/universal-transition-3.gif b/docs/images/5-2-0/universal-transition-3.gif
new file mode 100644
index 0000000..8a7e212
--- /dev/null
+++ b/docs/images/5-2-0/universal-transition-3.gif
Binary files differ
diff --git a/docs/images/5-2-0/universal-transition.gif b/docs/images/5-2-0/universal-transition.gif
new file mode 100644
index 0000000..bbb46a3
--- /dev/null
+++ b/docs/images/5-2-0/universal-transition.gif
Binary files differ
diff --git a/docs/images/5-3-0/map-projection.gif b/docs/images/5-3-0/map-projection.gif
new file mode 100644
index 0000000..188b8f6
--- /dev/null
+++ b/docs/images/5-3-0/map-projection.gif
Binary files differ
diff --git a/docs/images/5-3-0/pie-label-after.png b/docs/images/5-3-0/pie-label-after.png
new file mode 100644
index 0000000..d08ec4a
--- /dev/null
+++ b/docs/images/5-3-0/pie-label-after.png
Binary files differ
diff --git a/docs/images/5-3-0/pie-label-after2.png b/docs/images/5-3-0/pie-label-after2.png
new file mode 100644
index 0000000..d52ce38
--- /dev/null
+++ b/docs/images/5-3-0/pie-label-after2.png
Binary files differ
diff --git a/docs/images/5-3-0/pie-label-before.png b/docs/images/5-3-0/pie-label-before.png
new file mode 100644
index 0000000..1e05cd6
--- /dev/null
+++ b/docs/images/5-3-0/pie-label-before.png
Binary files differ
diff --git a/docs/images/5-3-0/pie-label-before2.png b/docs/images/5-3-0/pie-label-before2.png
new file mode 100644
index 0000000..3d74681
--- /dev/null
+++ b/docs/images/5-3-0/pie-label-before2.png
Binary files differ
diff --git a/docs/images/5-3-0/svg-after.gif b/docs/images/5-3-0/svg-after.gif
new file mode 100644
index 0000000..94b4197
--- /dev/null
+++ b/docs/images/5-3-0/svg-after.gif
Binary files differ
diff --git a/docs/images/5-3-0/svg-before.gif b/docs/images/5-3-0/svg-before.gif
new file mode 100644
index 0000000..7f13dbe
--- /dev/null
+++ b/docs/images/5-3-0/svg-before.gif
Binary files differ
diff --git a/docs/images/5-4-0/pie-amap.png b/docs/images/5-4-0/pie-amap.png
new file mode 100644
index 0000000..64f7012
--- /dev/null
+++ b/docs/images/5-4-0/pie-amap.png
Binary files differ
diff --git a/docs/images/5-4-0/pie-bmap.png b/docs/images/5-4-0/pie-bmap.png
new file mode 100644
index 0000000..45012e3
--- /dev/null
+++ b/docs/images/5-4-0/pie-bmap.png
Binary files differ
diff --git a/docs/images/5-4-0/pie-calendar.png b/docs/images/5-4-0/pie-calendar.png
new file mode 100644
index 0000000..4e1ddea
--- /dev/null
+++ b/docs/images/5-4-0/pie-calendar.png
Binary files differ
diff --git a/docs/images/5-4-0/pie-geo.png b/docs/images/5-4-0/pie-geo.png
new file mode 100644
index 0000000..0457ee1
--- /dev/null
+++ b/docs/images/5-4-0/pie-geo.png
Binary files differ
diff --git a/docs/images/5-4-0/pie-grid.png b/docs/images/5-4-0/pie-grid.png
new file mode 100644
index 0000000..874e464
--- /dev/null
+++ b/docs/images/5-4-0/pie-grid.png
Binary files differ
diff --git a/docs/images/5-5-0/ssr-example.png b/docs/images/5-5-0/ssr-example.png
new file mode 100644
index 0000000..ab34038
--- /dev/null
+++ b/docs/images/5-5-0/ssr-example.png
Binary files differ
diff --git a/docs/images/5-6-0/axis-tooltip.png b/docs/images/5-6-0/axis-tooltip.png
new file mode 100644
index 0000000..aab1756
--- /dev/null
+++ b/docs/images/5-6-0/axis-tooltip.png
Binary files differ
diff --git a/docs/images/5-6-0/sunburst-emphasis-relative.png b/docs/images/5-6-0/sunburst-emphasis-relative.png
new file mode 100644
index 0000000..99a4a1a
--- /dev/null
+++ b/docs/images/5-6-0/sunburst-emphasis-relative.png
Binary files differ
diff --git a/docs/images/demo.png b/docs/images/demo.png
new file mode 100644
index 0000000..478f548
--- /dev/null
+++ b/docs/images/demo.png
Binary files differ
diff --git a/docs/images/design/axis/charts_axis_img01.jpg b/docs/images/design/axis/charts_axis_img01.jpg
new file mode 100644
index 0000000..b2ceeae
--- /dev/null
+++ b/docs/images/design/axis/charts_axis_img01.jpg
Binary files differ
diff --git a/docs/images/design/axis/charts_axis_img02.jpg b/docs/images/design/axis/charts_axis_img02.jpg
new file mode 100644
index 0000000..1c605cd
--- /dev/null
+++ b/docs/images/design/axis/charts_axis_img02.jpg
Binary files differ
diff --git a/docs/images/design/axis/charts_axis_img02.png b/docs/images/design/axis/charts_axis_img02.png
new file mode 100644
index 0000000..bbb445f
--- /dev/null
+++ b/docs/images/design/axis/charts_axis_img02.png
Binary files differ
diff --git a/docs/images/design/axis/charts_axis_img04.png b/docs/images/design/axis/charts_axis_img04.png
new file mode 100644
index 0000000..35711b9
--- /dev/null
+++ b/docs/images/design/axis/charts_axis_img04.png
Binary files differ
diff --git a/docs/images/design/axis/charts_axis_img05.png b/docs/images/design/axis/charts_axis_img05.png
new file mode 100644
index 0000000..5bd9f05
--- /dev/null
+++ b/docs/images/design/axis/charts_axis_img05.png
Binary files differ
diff --git a/docs/images/design/axis/charts_axis_img07.png b/docs/images/design/axis/charts_axis_img07.png
new file mode 100644
index 0000000..70f9669
--- /dev/null
+++ b/docs/images/design/axis/charts_axis_img07.png
Binary files differ
diff --git a/docs/images/design/axis/charts_axis_img10.png b/docs/images/design/axis/charts_axis_img10.png
new file mode 100644
index 0000000..e4b2ae0
--- /dev/null
+++ b/docs/images/design/axis/charts_axis_img10.png
Binary files differ
diff --git a/docs/images/design/axis/charts_axis_img12.png b/docs/images/design/axis/charts_axis_img12.png
new file mode 100644
index 0000000..1142294
--- /dev/null
+++ b/docs/images/design/axis/charts_axis_img12.png
Binary files differ
diff --git a/docs/images/design/bar/bar01.jpg b/docs/images/design/bar/bar01.jpg
new file mode 100644
index 0000000..3e569f7
--- /dev/null
+++ b/docs/images/design/bar/bar01.jpg
Binary files differ
diff --git a/docs/images/design/bar/bar02.jpg b/docs/images/design/bar/bar02.jpg
new file mode 100644
index 0000000..392e310
--- /dev/null
+++ b/docs/images/design/bar/bar02.jpg
Binary files differ
diff --git a/docs/images/design/bar/bar03.jpg b/docs/images/design/bar/bar03.jpg
new file mode 100644
index 0000000..1799fad
--- /dev/null
+++ b/docs/images/design/bar/bar03.jpg
Binary files differ
diff --git a/docs/images/design/bar/bar04.jpg b/docs/images/design/bar/bar04.jpg
new file mode 100644
index 0000000..1e310ab
--- /dev/null
+++ b/docs/images/design/bar/bar04.jpg
Binary files differ
diff --git a/docs/images/design/bi-directional-bar/bi-directional-bar01.jpg b/docs/images/design/bi-directional-bar/bi-directional-bar01.jpg
new file mode 100755
index 0000000..392e310
--- /dev/null
+++ b/docs/images/design/bi-directional-bar/bi-directional-bar01.jpg
Binary files differ
diff --git a/docs/images/design/bi-directional-bar/bi-directional-bar02.jpg b/docs/images/design/bi-directional-bar/bi-directional-bar02.jpg
new file mode 100755
index 0000000..2c17514
--- /dev/null
+++ b/docs/images/design/bi-directional-bar/bi-directional-bar02.jpg
Binary files differ
diff --git a/docs/images/design/color/color01.png b/docs/images/design/color/color01.png
new file mode 100644
index 0000000..35ac64d
--- /dev/null
+++ b/docs/images/design/color/color01.png
Binary files differ
diff --git a/docs/images/design/color/color02.png b/docs/images/design/color/color02.png
new file mode 100644
index 0000000..6398403
--- /dev/null
+++ b/docs/images/design/color/color02.png
Binary files differ
diff --git a/docs/images/design/color/color03.png b/docs/images/design/color/color03.png
new file mode 100644
index 0000000..9afa664
--- /dev/null
+++ b/docs/images/design/color/color03.png
Binary files differ
diff --git a/docs/images/design/color/color04.png b/docs/images/design/color/color04.png
new file mode 100644
index 0000000..63939e0
--- /dev/null
+++ b/docs/images/design/color/color04.png
Binary files differ
diff --git a/docs/images/design/legend/charts_sign_img01.png b/docs/images/design/legend/charts_sign_img01.png
new file mode 100644
index 0000000..223a64b
--- /dev/null
+++ b/docs/images/design/legend/charts_sign_img01.png
Binary files differ
diff --git a/docs/images/design/legend/charts_sign_img02.png b/docs/images/design/legend/charts_sign_img02.png
new file mode 100644
index 0000000..419a2ca
--- /dev/null
+++ b/docs/images/design/legend/charts_sign_img02.png
Binary files differ
diff --git a/docs/images/design/legend/charts_sign_img03.png b/docs/images/design/legend/charts_sign_img03.png
new file mode 100644
index 0000000..9afd241
--- /dev/null
+++ b/docs/images/design/legend/charts_sign_img03.png
Binary files differ
diff --git a/docs/images/design/legend/charts_sign_img04.png b/docs/images/design/legend/charts_sign_img04.png
new file mode 100644
index 0000000..1f5b910
--- /dev/null
+++ b/docs/images/design/legend/charts_sign_img04.png
Binary files differ
diff --git a/docs/images/design/line/line01.jpg b/docs/images/design/line/line01.jpg
new file mode 100644
index 0000000..dff5cfd
--- /dev/null
+++ b/docs/images/design/line/line01.jpg
Binary files differ
diff --git a/docs/images/design/pie/pie01.jpg b/docs/images/design/pie/pie01.jpg
new file mode 100644
index 0000000..375a0fb
--- /dev/null
+++ b/docs/images/design/pie/pie01.jpg
Binary files differ
diff --git a/docs/images/design/pie/pie02.jpg b/docs/images/design/pie/pie02.jpg
new file mode 100644
index 0000000..828577a
--- /dev/null
+++ b/docs/images/design/pie/pie02.jpg
Binary files differ
diff --git a/docs/images/design/pie/pie03.jpg b/docs/images/design/pie/pie03.jpg
new file mode 100644
index 0000000..c519208
--- /dev/null
+++ b/docs/images/design/pie/pie03.jpg
Binary files differ
diff --git a/docs/images/design/pie/pie04.jpg b/docs/images/design/pie/pie04.jpg
new file mode 100644
index 0000000..1980e34
--- /dev/null
+++ b/docs/images/design/pie/pie04.jpg
Binary files differ
diff --git a/docs/images/design/scatter/scatter5.jpg b/docs/images/design/scatter/scatter5.jpg
new file mode 100755
index 0000000..c077463
--- /dev/null
+++ b/docs/images/design/scatter/scatter5.jpg
Binary files differ
diff --git a/docs/images/feature-v5/dashboard-pointer.png b/docs/images/feature-v5/dashboard-pointer.png
new file mode 100644
index 0000000..2dabc8f
--- /dev/null
+++ b/docs/images/feature-v5/dashboard-pointer.png
Binary files differ
diff --git a/docs/images/feature-v5/dataZoom.png b/docs/images/feature-v5/dataZoom.png
new file mode 100644
index 0000000..296963d
--- /dev/null
+++ b/docs/images/feature-v5/dataZoom.png
Binary files differ
diff --git a/docs/images/feature-v5/dirty-rect.gif b/docs/images/feature-v5/dirty-rect.gif
new file mode 100644
index 0000000..8b0467a
--- /dev/null
+++ b/docs/images/feature-v5/dirty-rect.gif
Binary files differ
diff --git a/docs/images/feature-v5/dirty-rect.png b/docs/images/feature-v5/dirty-rect.png
new file mode 100644
index 0000000..c7ee56d
--- /dev/null
+++ b/docs/images/feature-v5/dirty-rect.png
Binary files differ
diff --git a/docs/images/feature-v5/echarts-5-en.png b/docs/images/feature-v5/echarts-5-en.png
new file mode 100644
index 0000000..120ce9c
--- /dev/null
+++ b/docs/images/feature-v5/echarts-5-en.png
Binary files differ
diff --git a/docs/images/feature-v5/echarts-5.png b/docs/images/feature-v5/echarts-5.png
new file mode 100644
index 0000000..666d43b
--- /dev/null
+++ b/docs/images/feature-v5/echarts-5.png
Binary files differ
diff --git a/docs/images/feature-v5/gauge-pointer.png b/docs/images/feature-v5/gauge-pointer.png
new file mode 100644
index 0000000..2dabc8f
--- /dev/null
+++ b/docs/images/feature-v5/gauge-pointer.png
Binary files differ
diff --git a/docs/images/feature-v5/new-theme-dark.png b/docs/images/feature-v5/new-theme-dark.png
new file mode 100644
index 0000000..727a942
--- /dev/null
+++ b/docs/images/feature-v5/new-theme-dark.png
Binary files differ
diff --git a/docs/images/feature-v5/new-theme-light.png b/docs/images/feature-v5/new-theme-light.png
new file mode 100644
index 0000000..a18e2ac
--- /dev/null
+++ b/docs/images/feature-v5/new-theme-light.png
Binary files differ
diff --git a/docs/images/feature-v5/new-tooltip-2 copy.png b/docs/images/feature-v5/new-tooltip-2 copy.png
new file mode 100644
index 0000000..52d3418
--- /dev/null
+++ b/docs/images/feature-v5/new-tooltip-2 copy.png
Binary files differ
diff --git a/docs/images/feature-v5/new-tooltip-2.png b/docs/images/feature-v5/new-tooltip-2.png
new file mode 100644
index 0000000..be34cc1
--- /dev/null
+++ b/docs/images/feature-v5/new-tooltip-2.png
Binary files differ
diff --git a/docs/images/feature-v5/new-tooltip.png b/docs/images/feature-v5/new-tooltip.png
new file mode 100644
index 0000000..56ad865
--- /dev/null
+++ b/docs/images/feature-v5/new-tooltip.png
Binary files differ
diff --git a/docs/images/feature-v5/new-tooltip2.png b/docs/images/feature-v5/new-tooltip2.png
new file mode 100644
index 0000000..52d3418
--- /dev/null
+++ b/docs/images/feature-v5/new-tooltip2.png
Binary files differ
diff --git a/docs/images/feature-v5/pie-label copy.png b/docs/images/feature-v5/pie-label copy.png
new file mode 100644
index 0000000..aee3315
--- /dev/null
+++ b/docs/images/feature-v5/pie-label copy.png
Binary files differ
diff --git a/docs/images/feature-v5/pie-label-2.png b/docs/images/feature-v5/pie-label-2.png
new file mode 100644
index 0000000..8c427b9
--- /dev/null
+++ b/docs/images/feature-v5/pie-label-2.png
Binary files differ
diff --git a/docs/images/feature-v5/pie-label.png b/docs/images/feature-v5/pie-label.png
new file mode 100644
index 0000000..aee3315
--- /dev/null
+++ b/docs/images/feature-v5/pie-label.png
Binary files differ
diff --git a/docs/images/feature-v5/theme-color.png b/docs/images/feature-v5/theme-color.png
new file mode 100644
index 0000000..636c868
--- /dev/null
+++ b/docs/images/feature-v5/theme-color.png
Binary files differ
diff --git a/docs/images/feature-v5/time-axis-2.png b/docs/images/feature-v5/time-axis-2.png
new file mode 100644
index 0000000..8bce19f
--- /dev/null
+++ b/docs/images/feature-v5/time-axis-2.png
Binary files differ
diff --git a/docs/images/feature-v5/time-axis.png b/docs/images/feature-v5/time-axis.png
new file mode 100644
index 0000000..00b7b00
--- /dev/null
+++ b/docs/images/feature-v5/time-axis.png
Binary files differ
diff --git a/docs/images/feature-v5/time-axis2.png b/docs/images/feature-v5/time-axis2.png
new file mode 100644
index 0000000..d89e441
--- /dev/null
+++ b/docs/images/feature-v5/time-axis2.png
Binary files differ
diff --git a/docs/images/feature-v5/timeline.png b/docs/images/feature-v5/timeline.png
new file mode 100644
index 0000000..e38150d
--- /dev/null
+++ b/docs/images/feature-v5/timeline.png
Binary files differ
diff --git a/docs/images/feature-v5/yAxis-default-style-change.webp b/docs/images/feature-v5/yAxis-default-style-change.webp
new file mode 100644
index 0000000..76823eb
--- /dev/null
+++ b/docs/images/feature-v5/yAxis-default-style-change.webp
Binary files differ
diff --git a/docs/images/feature-v6/1-default-theme.png b/docs/images/feature-v6/1-default-theme.png
new file mode 100644
index 0000000..8f6121c
--- /dev/null
+++ b/docs/images/feature-v6/1-default-theme.png
Binary files differ
diff --git a/docs/images/feature-v6/11-barRange.png b/docs/images/feature-v6/11-barRange.png
new file mode 100644
index 0000000..3224af7
--- /dev/null
+++ b/docs/images/feature-v6/11-barRange.png
Binary files differ
diff --git a/docs/images/feature-v6/11-contour.png b/docs/images/feature-v6/11-contour.png
new file mode 100644
index 0000000..3f7edc2
--- /dev/null
+++ b/docs/images/feature-v6/11-contour.png
Binary files differ
diff --git a/docs/images/feature-v6/11-lineRange.png b/docs/images/feature-v6/11-lineRange.png
new file mode 100644
index 0000000..be68d11
--- /dev/null
+++ b/docs/images/feature-v6/11-lineRange.png
Binary files differ
diff --git a/docs/images/feature-v6/11-segmentedDoughnut.png b/docs/images/feature-v6/11-segmentedDoughnut.png
new file mode 100644
index 0000000..8b4f767
--- /dev/null
+++ b/docs/images/feature-v6/11-segmentedDoughnut.png
Binary files differ
diff --git a/docs/images/feature-v6/11-stage.png b/docs/images/feature-v6/11-stage.png
new file mode 100644
index 0000000..c7c89d6
--- /dev/null
+++ b/docs/images/feature-v6/11-stage.png
Binary files differ
diff --git a/docs/images/feature-v6/11-violin.png b/docs/images/feature-v6/11-violin.png
new file mode 100644
index 0000000..5a5dc6b
--- /dev/null
+++ b/docs/images/feature-v6/11-violin.png
Binary files differ
diff --git a/docs/images/feature-v6/2-switch-themes.gif b/docs/images/feature-v6/2-switch-themes.gif
new file mode 100644
index 0000000..cccbf93
--- /dev/null
+++ b/docs/images/feature-v6/2-switch-themes.gif
Binary files differ
diff --git a/docs/images/feature-v6/3-responsive-themes.gif b/docs/images/feature-v6/3-responsive-themes.gif
new file mode 100644
index 0000000..556812d
--- /dev/null
+++ b/docs/images/feature-v6/3-responsive-themes.gif
Binary files differ
diff --git a/docs/images/feature-v6/4-chord.gif b/docs/images/feature-v6/4-chord.gif
new file mode 100644
index 0000000..696801b
--- /dev/null
+++ b/docs/images/feature-v6/4-chord.gif
Binary files differ
diff --git a/docs/images/feature-v6/5-beeswarm.png b/docs/images/feature-v6/5-beeswarm.png
new file mode 100644
index 0000000..3043bd9
--- /dev/null
+++ b/docs/images/feature-v6/5-beeswarm.png
Binary files differ
diff --git a/docs/images/feature-v6/6-jittering-off.png b/docs/images/feature-v6/6-jittering-off.png
new file mode 100644
index 0000000..78e92d5
--- /dev/null
+++ b/docs/images/feature-v6/6-jittering-off.png
Binary files differ
diff --git a/docs/images/feature-v6/6-jittering-on.png b/docs/images/feature-v6/6-jittering-on.png
new file mode 100644
index 0000000..2901bc3
--- /dev/null
+++ b/docs/images/feature-v6/6-jittering-on.png
Binary files differ
diff --git a/docs/images/feature-v6/7-break-axis.gif b/docs/images/feature-v6/7-break-axis.gif
new file mode 100644
index 0000000..5f7e35b
--- /dev/null
+++ b/docs/images/feature-v6/7-break-axis.gif
Binary files differ
diff --git a/docs/images/feature-v6/8-stock.png b/docs/images/feature-v6/8-stock.png
new file mode 100644
index 0000000..57752c7
--- /dev/null
+++ b/docs/images/feature-v6/8-stock.png
Binary files differ
diff --git a/docs/images/how-to/coarse-pointer-en.gif b/docs/images/how-to/coarse-pointer-en.gif
new file mode 100644
index 0000000..cf7085d
--- /dev/null
+++ b/docs/images/how-to/coarse-pointer-en.gif
Binary files differ
diff --git a/docs/images/how-to/coarse-pointer-zh.gif b/docs/images/how-to/coarse-pointer-zh.gif
new file mode 100644
index 0000000..485bf19
--- /dev/null
+++ b/docs/images/how-to/coarse-pointer-zh.gif
Binary files differ
diff --git a/docs/index.html b/docs/index.html
new file mode 100644
index 0000000..96ab537
--- /dev/null
+++ b/docs/index.html
@@ -0,0 +1,13 @@
+<!doctype html>
+<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Handbook - Apache ECharts</title><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/en/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/en/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/en/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/en/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/e33c9002634265ded0e5.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/en/index.html" class="navbar-brand"><img src="https://echarts.apache.org/en/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/en/index.html">Home</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Docs<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/feature.html">Features</a></li><li><a href="https://echarts.apache.org/handbook/en/get-started/">Handbook</a></li><li><a href="https://echarts.apache.org/en/api.html">API</a></li><li><a href="https://echarts.apache.org/en/option.html">Chart Configuration</a></li><li><a href="https://echarts.apache.org/en/changelog.html">Changelog</a></li><li><a href="https://echarts.apache.org/en/faq.html">FAQ</a></li><li><a href="https://echarts.apache.org/handbook/en/basics/release-note/v6-upgrade-guide">V6 Upgrade Guide</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Download<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/download.html">Download</a></li><li><a href="https://echarts.apache.org/en/download-theme.html">Download Themes</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">Download Custom Series<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/download-extension.html">Download Extensions</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/en/index.html">Examples</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Resources<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/spreadsheet.html">Spread Sheet Tool</a></li><li><a href="https://echarts.apache.org/en/theme-builder.html">Theme Builder</a></li><li><a href="https://echarts.apache.org/en/cheat-sheet.html">Cheat Sheet</a></li><li><a href="https://echarts.apache.org/en/resources.html">More Resources</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/en/events.html">Events</a></li><li><a href="https://echarts.apache.org/en/committers.html">Committers</a></li><li><a href="https://echarts.apache.org/en/maillist.html">Mailing List</a></li><li><a href="https://echarts.apache.org/en/contributing.html">How to Contribute</a></li><li><a href="https://echarts.apache.org/en/dependencies.html">Dependencies</a></li><li><a href="https://echarts.apache.org/en/coding-standard.html">Code Standard</a></li><li><a href="https://github.com/apache/echarts" target="_blank">Source Code (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues (GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/en/security.html">Security</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">License<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">Events<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("zh")'>中文</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/en/get-started" class="nav-link"><span class="title">Get Started</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Basics</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/basics/download" class="nav-link"><span class="title">Download ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/import" class="nav-link"><span class="title">Import ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/basics/help" class="nav-link"><span class="title">Get Help</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">What's New</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 Features</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">Migration from v5 to v6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">Migration from v4 to v5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Concepts</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/concepts/chart-size" class="nav-link"><span class="title">Chart Container</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/style" class="nav-link"><span class="title">Style</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/dataset" class="nav-link"><span class="title">Dataset</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/data-transform" class="nav-link"><span class="title">Data Transform</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/concepts/axis" class="nav-link"><span class="title">Axis</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/visual-map" class="nav-link"><span class="title">Visual Mapping</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/legend" class="nav-link"><span class="title">Legend</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/concepts/event" class="nav-link"><span class="title">Event and Action</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">How To Guides</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">Common Charts</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Bar</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">Basic Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">Stacked Bar</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">Bar Racing</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">Waterfall</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Line</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">Basic Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">Stacked Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/area-line" class="nav-link"><span class="title">Area Chart</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">Smoothed Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/line/step-line" class="nav-link"><span class="title">Step Line</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Pie</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">Basic Pie</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">Ring Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/pie/rose" class="nav-link"><span class="title">Rose Style</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Scatter</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">Basic Scatter</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Common Components</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">Geo</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG Base Map</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">Cross Platform</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/cross-platform/server" class="nav-link"><span class="title">Server Side Rendering</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Data</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/data/dynamic-data" class="nav-link"><span class="title">Dynamic Data</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Label</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/label/rich-text" class="nav-link"><span class="title">Rich Text</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Animation</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/animation/transition" class="nav-link"><span class="title">Data Transition</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">Interaction</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/drag" class="nav-link"><span class="title">Drag</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/en/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">Intelligent Pointer Snapping</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Best Practices</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/en/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/aria" class="nav-link"><span class="title">Aria</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/en/best-practices/security" class="nav-link"><span class="title">Security Guidelines</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">Edit Handbook</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/en/meta/edit-guide" class="nav-link"><span class="title">Edit Guide</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div class="hidden"><a href="/echarts-handbook/zh/get-started">中文</a> <a href="/echarts-handbook/en/get-started">English</a></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,i,e,r,d,l,a,n,o,c,s,h,p,f,g,m,u,b,v,C,S,P,B,w,k,y,x,E,G,D,R,L,M,V,A,_,T,z,H,I,N,O,U,W,$,F,X,j,q,J,K,Q,Y,Z,tt,it,et,rt,dt,lt,at,nt,ot){return{layout:"default",data:[{}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:r},{title:"入门篇",dir:d,children:[{title:"获取 ECharts",dir:l},{title:"在项目中引入 ECharts",dir:a},{title:"资源列表",dir:n,draft:t},{title:"寻求帮助",dir:o},{title:"版本特性",dir:c,children:[{title:"ECharts 6 特性介绍",dir:s},{title:"v5 升级 v6 指南",dir:h},{title:"5.0",dir:p},{title:"v4 升级 v5 指南",dir:f},{title:5.2,dir:g},{title:5.3,dir:m},{title:5.4,dir:u},{title:5.5,dir:b},{title:5.6,dir:v}]}]},{title:"概念篇",dir:C,children:[{title:"图表容器及大小",dir:S},{title:"配置项",dir:P,draft:t},{title:"系列",dir:B,draft:t},{title:"样式",dir:w},{title:"数据集",dir:k},{title:"数据转换",dir:y},{title:"坐标系",dir:x,draft:t},{title:"坐标轴",dir:E},{title:"视觉映射",dir:e},{title:"图例",dir:G},{title:"事件与行为",dir:D}]},{title:"应用篇",dir:R,children:[{title:"常用图表类型",dir:L,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:M},{title:"堆叠柱状图",dir:V},{title:"动态排序柱状图",dir:A},{title:"极坐标系柱状图",dir:_,draft:t},{title:"阶梯瀑布图",dir:T},{title:"视觉映射的柱状图",dir:e,draft:t}]},{title:"折线图",dir:z,children:[{title:"基础折线图",dir:H},{title:"堆叠折线图",dir:I},{title:"区域面积图",dir:N},{title:"平滑曲线图",dir:O},{title:"阶梯线图",dir:U}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:W},{title:"圆环图",dir:$},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:F,children:[{title:"基础散点图",dir:X}]}]},{title:"常用组件",dir:j,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:q}]}]},{title:"移动端优化",dir:i,draft:t},{title:"跨平台方案",dir:J,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:K},{title:"数据下钻",dir:Q,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:Y}]},{title:"动画",dir:Z,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:it,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:et,draft:t},{title:"智能指针吸附",dir:rt}]}]},{title:"最佳实践",dir:dt,children:[{title:"移动端优化",dir:i,draft:t},{title:lt,dir:at},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:nt}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:ot}]}],en:[{title:"Get Started",dir:r},{title:"Basics",dir:d,children:[{title:"Download ECharts",dir:l},{title:"Import ECharts",dir:a},{title:"Resources",dir:n,draft:t},{title:"Get Help",dir:o},{title:"What's New",dir:c,children:[{title:"ECharts 6 Features",dir:s},{title:"Migration from v5 to v6",dir:h},{title:"5.0",dir:p},{title:"Migration from v4 to v5",dir:f},{title:5.2,dir:g},{title:5.3,dir:m},{title:5.4,dir:u},{title:5.5,dir:b},{title:5.6,dir:v}]}]},{title:"Concepts",dir:C,children:[{title:"Chart Container",dir:S},{title:"Chart Option",dir:P,draft:t},{title:"Series",dir:B,draft:t},{title:"Style",dir:w},{title:"Dataset",dir:k},{title:"Data Transform",dir:y},{title:"Coordinate",dir:x,draft:t},{title:"Axis",dir:E},{title:"Visual Mapping",dir:e},{title:"Legend",dir:G},{title:"Event and Action",dir:D}]},{title:"How To Guides",dir:R,children:[{title:"Common Charts",dir:L,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:M},{title:"Stacked Bar",dir:V},{title:"Bar Racing",dir:A},{title:"Bar Polar",dir:_,draft:t},{title:"Waterfall",dir:T}]},{title:"Line",dir:z,children:[{title:"Basic Line",dir:H},{title:"Stacked Line",dir:I},{title:"Area Chart",dir:N},{title:"Smoothed Line",dir:O},{title:"Step Line",dir:U}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:W},{title:"Ring Style",dir:$},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:F,children:[{title:"Basic Scatter",dir:X}]}]},{title:"Common Components",dir:j,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:q}]}]},{title:"Mobile",dir:i,draft:t},{title:"Cross Platform",dir:J,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:K},{title:"Drilldown",dir:Q,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:Y}]},{title:"Animation",dir:Z,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:it,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:et,draft:t},{title:"Intelligent Pointer Snapping",dir:rt}]}]},{title:"Best Practices",dir:dt,children:[{title:"Mobile Optimization",dir:i,draft:t},{title:lt,dir:at},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:nt}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:ot}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e33c9002634265ded0e5.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/zh/basics/download/index.html b/docs/zh/basics/download/index.html
new file mode 100644
index 0000000..db42d0c
--- /dev/null
+++ b/docs/zh/basics/download/index.html
@@ -0,0 +1,13 @@
+<!doctype html>
+<html data-n-head-ssr lang="zh-CN" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh-CN%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>获取 ECharts - 入门篇 - 使用手册 - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="zh"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/zh/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/zh/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/zh/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/zh/index.html" class="navbar-brand"><img src="https://echarts.apache.org/zh/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/zh/index.html">首页</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">文档<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/feature.html">特性</a></li><li><a href="https://echarts.apache.org/handbook/zh/get-started/">使用手册</a></li><li><a href="https://echarts.apache.org/zh/api.html">API</a></li><li><a href="https://echarts.apache.org/zh/option.html">配置项手册</a></li><li><a href="https://echarts.apache.org/zh/changelog.html">版本记录</a></li><li><a href="https://echarts.apache.org/zh/faq.html">常见问题</a></li><li><a href="https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide">v6 升级指南</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">下载<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/download.html">下载</a></li><li><a href="https://echarts.apache.org/zh/download-theme.html">主题下载</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">自定义系列下载<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/download-extension.html">扩展下载</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/zh/index.html">示例</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">资源<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/spreadsheet.html">表格工具</a></li><li><a href="https://echarts.apache.org/zh/theme-builder.html">主题构建工具</a></li><li><a href="https://echarts.apache.org/zh/cheat-sheet.html">术语速查手册</a></li><li><a href="https://echarts.apache.org/zh/resources.html">更多资源</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">社区<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/events.html">活动</a></li><li><a href="https://echarts.apache.org/zh/committers.html">贡献者列表</a></li><li><a href="https://echarts.apache.org/zh/maillist.html">邮件列表</a></li><li><a href="https://echarts.apache.org/zh/contributing.html">如何贡献</a></li><li><a href="https://echarts.apache.org/zh/dependencies.html">依赖项</a></li><li><a href="https://echarts.apache.org/zh/coding-standard.html">代码规范</a></li><li><a href="https://github.com/apache/echarts" target="_blank">源码(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/security.html">安全</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">版权<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">活动<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">捐赠<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">鸣谢<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("en")'>EN</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/zh/get-started" class="nav-link"><span class="title">快速上手</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">入门篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/basics/download" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">获取 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/import" class="nav-link"><span class="title">在项目中引入 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/basics/help" class="nav-link"><span class="title">寻求帮助</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">版本特性</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 特性介绍</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">v5 升级 v6 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">v4 升级 v5 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">概念篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/concepts/chart-size" class="nav-link"><span class="title">图表容器及大小</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/style" class="nav-link"><span class="title">样式</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/dataset" class="nav-link"><span class="title">数据集</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/data-transform" class="nav-link"><span class="title">数据转换</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/axis" class="nav-link"><span class="title">坐标轴</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/visual-map" class="nav-link"><span class="title">视觉映射</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/legend" class="nav-link"><span class="title">图例</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/event" class="nav-link"><span class="title">事件与行为</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">应用篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">常用图表类型</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">柱状图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">基础柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">堆叠柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">动态排序柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">阶梯瀑布图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">折线图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">基础折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">堆叠折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/area-line" class="nav-link"><span class="title">区域面积图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">平滑曲线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/step-line" class="nav-link"><span class="title">阶梯线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">饼图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">基础饼图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">圆环图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/rose" class="nav-link"><span class="title">南丁格尔图(玫瑰图)</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">散点图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">基础散点图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">常用组件</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">地理坐标系(Geo)</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG 底图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">跨平台方案</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/server" class="nav-link"><span class="title">服务端渲染</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/wechat-app" class="nav-link"><span class="title">微信小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/baidu-app" class="nav-link"><span class="title">百度智能小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">数据处理</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/data/dynamic-data" class="nav-link"><span class="title">动态的异步数据</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">标签</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/label/rich-text" class="nav-link"><span class="title">富文本标签</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">动画</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/animation/transition" class="nav-link"><span class="title">数据过渡动画</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">交互</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/drag" class="nav-link"><span class="title">拖拽的实现</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">智能指针吸附</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">最佳实践</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/aria" class="nav-link"><span class="title">无障碍访问</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/security" class="nav-link"><span class="title">安全指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">编辑本文档</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/meta/edit-guide" class="nav-link"><span class="title">文档编辑指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="%E8%8E%B7%E5%8F%96-apache-echarts" tabindex="-1">获取 Apache ECharts</h1> <p>Apache ECharts 提供了多种安装方式,你可以根据项目的实际情况选择以下任意一种方式安装。</p> <ul><li>从 GitHub 获取</li> <li>从 npm 获取</li> <li>从 CDN 获取</li> <li>在线定制</li></ul> <p>接下来我们将分别介绍这些安装方式,以及下载后的目录结构。</p> <h2 id="%E5%AE%89%E8%A3%85%E6%96%B9%E5%BC%8F" tabindex="-1">安装方式</h2> <h3 id="%E4%BB%8E-npm-%E8%8E%B7%E5%8F%96" tabindex="-1">从 npm 获取</h3> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-text line-numbers"><code>npm install echarts</code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>详见<a href="zh/basics/import">在项目中引入 Apache ECharts</a>。</p> <h3 id="%E4%BB%8E-cdn-%E8%8E%B7%E5%8F%96" tabindex="-1">从 CDN 获取</h3> <p>可以从以下免费 CDN 中获取和引用 ECharts。</p> <ul><li><a href="https://www.jsdelivr.com/package/npm/echarts">jsDelivr</a></li> <li><a href="https://unpkg.com/browse/echarts/">unpkg</a></li> <li><a href="https://cdnjs.com/libraries/echarts">cdnjs</a></li></ul> <h3 id="%E4%BB%8E-github-%E8%8E%B7%E5%8F%96" tabindex="-1">从 GitHub 获取</h3> <p><a href="https://github.com/apache/echarts">apache/echarts</a> 项目的 <a href="https://github.com/apache/echarts/releases">release</a> 页面可以找到各个版本的链接。点击下载页面下方 Assets 中的 Source code,解压后 <code>dist</code> 目录下的 <code>echarts.js</code> 即为包含完整 ECharts 功能的文件。</p> <h3 id="%E5%9C%A8%E7%BA%BF%E5%AE%9A%E5%88%B6" tabindex="-1">在线定制</h3> <p>如果只想引入部分模块以减少包体积,可以使用 <a href="https://echarts.apache.org/builder.html">ECharts 在线定制</a>功能。</p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">本文贡献者</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/zh/basics/download.md" title="编辑本文" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">在 GitHub 上编辑本页</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a><a href="https://github.com/plainheart" target="_blank" class="post-contributor has-avatar"><img alt="plainheart" src="https://echarts.apache.org/en/images/people/plainheart.jpg" loading="lazy" decoding="async" fetchpriority="low"> <span>plainheart</span></a><a href="https://github.com/Ovilia" target="_blank" class="post-contributor has-avatar"><img alt="Ovilia" src="https://echarts.apache.org/en/images/people/羡辙.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>Ovilia</span></a><a href="https://github.com/100pah" target="_blank" class="post-contributor has-avatar"><img alt="100pah" src="https://echarts.apache.org/en/images/people/宿爽.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>100pah</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,i,e,r,d,a,l,n,h,s,c,o,p,m,b,g,u,f,E,C,B,v,w,S,P,x,A,k,G,D,y,R,L,F,M,V,z,N,_,j,H,T,I,W,O,U,X,$,J,Y,Z,q,K,Q,tt,it,et,rt,dt,at,lt,nt,ht){return{layout:"default",data:[{html:'<h1 id="%E8%8E%B7%E5%8F%96-apache-echarts" tabindex="-1">获取 Apache ECharts</h1>\n<p>Apache ECharts 提供了多种安装方式,你可以根据项目的实际情况选择以下任意一种方式安装。</p>\n<ul>\n<li>从 GitHub 获取</li>\n<li>从 npm 获取</li>\n<li>从 CDN 获取</li>\n<li>在线定制</li>\n</ul>\n<p>接下来我们将分别介绍这些安装方式,以及下载后的目录结构。</p>\n<h2 id="%E5%AE%89%E8%A3%85%E6%96%B9%E5%BC%8F" tabindex="-1">安装方式</h2>\n<h3 id="%E4%BB%8E-npm-%E8%8E%B7%E5%8F%96" tabindex="-1">从 npm 获取</h3>\n<md-code-block lang="sh" code="\'bnBtIGluc3RhbGwgZWNoYXJ0cw\'" line-highlights="\'\'" />\n<p>详见<a href="zh/basics/import">在项目中引入 Apache ECharts</a>。</p>\n<h3 id="%E4%BB%8E-cdn-%E8%8E%B7%E5%8F%96" tabindex="-1">从 CDN 获取</h3>\n<p>可以从以下免费 CDN 中获取和引用 ECharts。</p>\n<ul>\n<li><a href="https://www.jsdelivr.com/package/npm/echarts">jsDelivr</a></li>\n<li><a href="https://unpkg.com/browse/echarts/">unpkg</a></li>\n<li><a href="https://cdnjs.com/libraries/echarts">cdnjs</a></li>\n</ul>\n<h3 id="%E4%BB%8E-github-%E8%8E%B7%E5%8F%96" tabindex="-1">从 GitHub 获取</h3>\n<p><a href="https://github.com/apache/echarts">apache/echarts</a> 项目的 <a href="https://github.com/apache/echarts/releases">release</a> 页面可以找到各个版本的链接。点击下载页面下方 Assets 中的 Source code,解压后 <code>dist</code> 目录下的 <code>echarts.js</code> 即为包含完整 ECharts 功能的文件。</p>\n<h3 id="%E5%9C%A8%E7%BA%BF%E5%AE%9A%E5%88%B6" tabindex="-1">在线定制</h3>\n<p>如果只想引入部分模块以减少包体积,可以使用 <a href="https://echarts.apache.org/builder.html">ECharts 在线定制</a>功能。</p>\n',postPath:"zh/basics/download",title:"获取 ECharts - 入门篇"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:r},{title:"入门篇",dir:d,children:[{title:"获取 ECharts",dir:a},{title:"在项目中引入 ECharts",dir:l},{title:"资源列表",dir:n,draft:t},{title:"寻求帮助",dir:h},{title:"版本特性",dir:s,children:[{title:"ECharts 6 特性介绍",dir:c},{title:"v5 升级 v6 指南",dir:o},{title:"5.0",dir:p},{title:"v4 升级 v5 指南",dir:m},{title:5.2,dir:b},{title:5.3,dir:g},{title:5.4,dir:u},{title:5.5,dir:f},{title:5.6,dir:E}]}]},{title:"概念篇",dir:C,children:[{title:"图表容器及大小",dir:B},{title:"配置项",dir:v,draft:t},{title:"系列",dir:w,draft:t},{title:"样式",dir:S},{title:"数据集",dir:P},{title:"数据转换",dir:x},{title:"坐标系",dir:A,draft:t},{title:"坐标轴",dir:k},{title:"视觉映射",dir:e},{title:"图例",dir:G},{title:"事件与行为",dir:D}]},{title:"应用篇",dir:y,children:[{title:"常用图表类型",dir:R,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:L},{title:"堆叠柱状图",dir:F},{title:"动态排序柱状图",dir:M},{title:"极坐标系柱状图",dir:V,draft:t},{title:"阶梯瀑布图",dir:z},{title:"视觉映射的柱状图",dir:e,draft:t}]},{title:"折线图",dir:N,children:[{title:"基础折线图",dir:_},{title:"堆叠折线图",dir:j},{title:"区域面积图",dir:H},{title:"平滑曲线图",dir:T},{title:"阶梯线图",dir:I}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:W},{title:"圆环图",dir:O},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:U,children:[{title:"基础散点图",dir:X}]}]},{title:"常用组件",dir:$,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:J}]}]},{title:"移动端优化",dir:i,draft:t},{title:"跨平台方案",dir:Y,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:Z},{title:"数据下钻",dir:q,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:K}]},{title:"动画",dir:Q,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:it,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:et,draft:t},{title:"智能指针吸附",dir:rt}]}]},{title:"最佳实践",dir:dt,children:[{title:"移动端优化",dir:i,draft:t},{title:at,dir:lt},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:nt}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:ht}]}],en:[{title:"Get Started",dir:r},{title:"Basics",dir:d,children:[{title:"Download ECharts",dir:a},{title:"Import ECharts",dir:l},{title:"Resources",dir:n,draft:t},{title:"Get Help",dir:h},{title:"What's New",dir:s,children:[{title:"ECharts 6 Features",dir:c},{title:"Migration from v5 to v6",dir:o},{title:"5.0",dir:p},{title:"Migration from v4 to v5",dir:m},{title:5.2,dir:b},{title:5.3,dir:g},{title:5.4,dir:u},{title:5.5,dir:f},{title:5.6,dir:E}]}]},{title:"Concepts",dir:C,children:[{title:"Chart Container",dir:B},{title:"Chart Option",dir:v,draft:t},{title:"Series",dir:w,draft:t},{title:"Style",dir:S},{title:"Dataset",dir:P},{title:"Data Transform",dir:x},{title:"Coordinate",dir:A,draft:t},{title:"Axis",dir:k},{title:"Visual Mapping",dir:e},{title:"Legend",dir:G},{title:"Event and Action",dir:D}]},{title:"How To Guides",dir:y,children:[{title:"Common Charts",dir:R,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:L},{title:"Stacked Bar",dir:F},{title:"Bar Racing",dir:M},{title:"Bar Polar",dir:V,draft:t},{title:"Waterfall",dir:z}]},{title:"Line",dir:N,children:[{title:"Basic Line",dir:_},{title:"Stacked Line",dir:j},{title:"Area Chart",dir:H},{title:"Smoothed Line",dir:T},{title:"Step Line",dir:I}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:W},{title:"Ring Style",dir:O},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:U,children:[{title:"Basic Scatter",dir:X}]}]},{title:"Common Components",dir:$,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:J}]}]},{title:"Mobile",dir:i,draft:t},{title:"Cross Platform",dir:Y,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:Z},{title:"Drilldown",dir:q,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:K}]},{title:"Animation",dir:Q,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:it,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:et,draft:t},{title:"Intelligent Pointer Snapping",dir:rt}]}]},{title:"Best Practices",dir:dt,children:[{title:"Mobile Optimization",dir:i,draft:t},{title:at,dir:lt},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:nt}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:ht}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/zh/basics/download",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/zh/basics/help/index.html b/docs/zh/basics/help/index.html
new file mode 100644
index 0000000..1528bf6
--- /dev/null
+++ b/docs/zh/basics/help/index.html
@@ -0,0 +1,13 @@
+<!doctype html>
+<html data-n-head-ssr lang="zh-CN" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh-CN%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>寻求帮助 - 入门篇 - 使用手册 - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="zh"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/zh/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/zh/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/zh/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/zh/index.html" class="navbar-brand"><img src="https://echarts.apache.org/zh/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/zh/index.html">首页</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">文档<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/feature.html">特性</a></li><li><a href="https://echarts.apache.org/handbook/zh/get-started/">使用手册</a></li><li><a href="https://echarts.apache.org/zh/api.html">API</a></li><li><a href="https://echarts.apache.org/zh/option.html">配置项手册</a></li><li><a href="https://echarts.apache.org/zh/changelog.html">版本记录</a></li><li><a href="https://echarts.apache.org/zh/faq.html">常见问题</a></li><li><a href="https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide">v6 升级指南</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">下载<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/download.html">下载</a></li><li><a href="https://echarts.apache.org/zh/download-theme.html">主题下载</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">自定义系列下载<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/download-extension.html">扩展下载</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/zh/index.html">示例</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">资源<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/spreadsheet.html">表格工具</a></li><li><a href="https://echarts.apache.org/zh/theme-builder.html">主题构建工具</a></li><li><a href="https://echarts.apache.org/zh/cheat-sheet.html">术语速查手册</a></li><li><a href="https://echarts.apache.org/zh/resources.html">更多资源</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">社区<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/events.html">活动</a></li><li><a href="https://echarts.apache.org/zh/committers.html">贡献者列表</a></li><li><a href="https://echarts.apache.org/zh/maillist.html">邮件列表</a></li><li><a href="https://echarts.apache.org/zh/contributing.html">如何贡献</a></li><li><a href="https://echarts.apache.org/zh/dependencies.html">依赖项</a></li><li><a href="https://echarts.apache.org/zh/coding-standard.html">代码规范</a></li><li><a href="https://github.com/apache/echarts" target="_blank">源码(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/security.html">安全</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">版权<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">活动<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">捐赠<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">鸣谢<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("en")'>EN</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/zh/get-started" class="nav-link"><span class="title">快速上手</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">入门篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/basics/download" class="nav-link"><span class="title">获取 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/import" class="nav-link"><span class="title">在项目中引入 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/basics/help" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">寻求帮助</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">版本特性</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 特性介绍</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">v5 升级 v6 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">v4 升级 v5 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">概念篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/concepts/chart-size" class="nav-link"><span class="title">图表容器及大小</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/style" class="nav-link"><span class="title">样式</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/dataset" class="nav-link"><span class="title">数据集</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/data-transform" class="nav-link"><span class="title">数据转换</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/axis" class="nav-link"><span class="title">坐标轴</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/visual-map" class="nav-link"><span class="title">视觉映射</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/legend" class="nav-link"><span class="title">图例</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/event" class="nav-link"><span class="title">事件与行为</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">应用篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">常用图表类型</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">柱状图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">基础柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">堆叠柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">动态排序柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">阶梯瀑布图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">折线图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">基础折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">堆叠折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/area-line" class="nav-link"><span class="title">区域面积图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">平滑曲线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/step-line" class="nav-link"><span class="title">阶梯线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">饼图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">基础饼图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">圆环图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/rose" class="nav-link"><span class="title">南丁格尔图(玫瑰图)</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">散点图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">基础散点图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">常用组件</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">地理坐标系(Geo)</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG 底图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">跨平台方案</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/server" class="nav-link"><span class="title">服务端渲染</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/wechat-app" class="nav-link"><span class="title">微信小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/baidu-app" class="nav-link"><span class="title">百度智能小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">数据处理</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/data/dynamic-data" class="nav-link"><span class="title">动态的异步数据</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">标签</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/label/rich-text" class="nav-link"><span class="title">富文本标签</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">动画</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/animation/transition" class="nav-link"><span class="title">数据过渡动画</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">交互</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/drag" class="nav-link"><span class="title">拖拽的实现</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">智能指针吸附</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">最佳实践</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/aria" class="nav-link"><span class="title">无障碍访问</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/security" class="nav-link"><span class="title">安全指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">编辑本文档</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/meta/edit-guide" class="nav-link"><span class="title">文档编辑指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="%E5%AF%BB%E6%B1%82%E5%B8%AE%E5%8A%A9" tabindex="-1">寻求帮助</h1> <h2 id="%E6%8A%80%E6%9C%AF%E9%97%AE%E9%A2%98" tabindex="-1">技术问题</h2> <h3 id="%E7%A1%AE%E4%BF%9D%E7%8E%B0%E6%9C%89%E6%96%87%E6%A1%A3%E7%AD%89%E8%B5%84%E6%96%99%E6%97%A0%E6%B3%95%E8%A7%A3%E5%86%B3%E4%BD%A0%E7%9A%84%E9%97%AE%E9%A2%98" tabindex="-1">确保现有文档等资料无法解决你的问题</h3> <p>ECharts 有非常大量的用户,所以你遇到过的问题很可能别人在此之前也遇到并解决了。通过查看文档以及使用搜索引擎搜索关键字,可以帮助你自助地在第一时间解决问题,而不需要依赖社区的帮助。</p> <p>因此,在做其他操作前,请确保现有文档等资料无法解决你的问题。可以尝试查看或搜索的资料包括:</p> <ul><li><a href="https://echarts.apache.org/api.html">API</a></li> <li><a href="https://echarts.apache.org/option.html">配置项手册</a>:可以尝试使用搜索功能</li> <li>本手册的文章</li> <li><a href="https://echarts.apache.org/faq.html">常见问题</a></li> <li>在 <a href="https://github.com/apache/echarts/issues">GitHub issue</a> 中搜索关键字</li> <li>使用搜索引擎搜索关键字</li></ul> <h3 id="%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E6%9C%80%E7%AE%80%E5%8D%95%E5%8F%AF%E5%A4%8D%E7%8E%B0%E7%9A%84%E4%BE%8B%E5%AD%90" tabindex="-1">创建一个最简单可复现的例子</h3> <p>使用<a href="https://echarts.apache.org/examples/editor.html">官方编辑器</a>、<a href="https://codepen.io/Ovilia/pen/dyYWXWM">CodePen</a>、<a href="https://codesandbox.io/s/echarts-basic-example-template-mpfz1s">CodeSandbox</a> 或 <a href="https://jsfiddle.net/plainheart/e46ozpqj/7/">JSFiddle</a> 创建一个例子,这将使得他人更方便地复现你的问题。</p> <p>例子应尽可能以最简单的方式复现你的问题,去除不必要的配置项和数据,可以让帮助你的人更快速地定位问题,从而让你的问题更快得到解决。更详细的介绍请参见 <a href="https://stackoverflow.com/help/minimal-reproducible-example">如何创建一个最小的可复现代码示例</a>。</p> <h3 id="%E5%88%A4%E6%96%AD%E6%98%AF%E5%90%A6%E6%98%AF-bug" tabindex="-1">判断是否是 bug</h3> <h4 id="%E6%8A%A5%E5%91%8A-bug-%E6%88%96%E8%AF%B7%E6%B1%82%E6%96%B0%E5%8A%9F%E8%83%BD" tabindex="-1">报告 bug 或请求新功能</h4> <p>如果不符合文档描述或你的预期效果,这很有可能是 bug。如果是 bug,或者你有一个想请求实现的功能,请使用 <a href="https://github.com/apache/echarts/issues/new/choose">issue 模板</a> 新建一个 issue 并按照提示详细描述。</p> <h4 id="%E5%92%A8%E8%AF%A2%E7%B1%BB%E9%97%AE%E9%A2%98" tabindex="-1">咨询类问题</h4> <p>如果不是 bug,而是不知道如何实现某种效果,可以尝试在 <a href="https://stackoverflow.com/questions/tagged/echarts">stackoverflow.com</a>、<a href="https://www.oschina.net/question/tag/echarts">开源中国</a> 或 <a href="https://segmentfault.com/t/echarts">SegmentFault 思否</a> 等问答平台上提问。</p> <p>如果没能得到答复,也可以发送邮件至邮件组 <a href="mailto:dev@echarts.apache.org">dev@echarts.apache.org</a>。为了让更多人理解你的问题,并且在将来搜索的时候得到帮助,强烈建议使用英文发送邮件。</p> <h2 id="%E9%9D%9E%E6%8A%80%E6%9C%AF%E7%B1%BB%E9%97%AE%E9%A2%98" tabindex="-1">非技术类问题</h2> <p>其他问题可以发送英文邮件至邮件组 <a href="mailto:dev@echarts.apache.org">dev@echarts.apache.org</a>。</p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">本文贡献者</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/zh/basics/help.md" title="编辑本文" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">在 GitHub 上编辑本页</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/plainheart" target="_blank" class="post-contributor has-avatar"><img alt="plainheart" src="https://echarts.apache.org/en/images/people/plainheart.jpg" loading="lazy" decoding="async" fetchpriority="low"> <span>plainheart</span></a><a href="https://github.com/Ovilia" target="_blank" class="post-contributor has-avatar"><img alt="Ovilia" src="https://echarts.apache.org/en/images/people/羡辙.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>Ovilia</span></a><a href="https://github.com/100pah" target="_blank" class="post-contributor has-avatar"><img alt="100pah" src="https://echarts.apache.org/en/images/people/宿爽.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>100pah</span></a><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,i,e,r,a,d,l,h,n,s,o,c,p,E,f,g,m,u,A,b,B,v,C,x,S,w,P,D,k,F,y,G,R,L,M,z,V,_,T,q,H,I,W,O,j,N,U,X,$,J,Y,K,Q,Z,tt,it,et,rt,at,dt,lt,ht,nt){return{layout:"default",data:[{html:'<h1 id="%E5%AF%BB%E6%B1%82%E5%B8%AE%E5%8A%A9" tabindex="-1">寻求帮助</h1>\n<h2 id="%E6%8A%80%E6%9C%AF%E9%97%AE%E9%A2%98" tabindex="-1">技术问题</h2>\n<h3 id="%E7%A1%AE%E4%BF%9D%E7%8E%B0%E6%9C%89%E6%96%87%E6%A1%A3%E7%AD%89%E8%B5%84%E6%96%99%E6%97%A0%E6%B3%95%E8%A7%A3%E5%86%B3%E4%BD%A0%E7%9A%84%E9%97%AE%E9%A2%98" tabindex="-1">确保现有文档等资料无法解决你的问题</h3>\n<p>ECharts 有非常大量的用户,所以你遇到过的问题很可能别人在此之前也遇到并解决了。通过查看文档以及使用搜索引擎搜索关键字,可以帮助你自助地在第一时间解决问题,而不需要依赖社区的帮助。</p>\n<p>因此,在做其他操作前,请确保现有文档等资料无法解决你的问题。可以尝试查看或搜索的资料包括:</p>\n<ul>\n<li><a href="https://echarts.apache.org/api.html">API</a></li>\n<li><a href="https://echarts.apache.org/option.html">配置项手册</a>:可以尝试使用搜索功能</li>\n<li>本手册的文章</li>\n<li><a href="https://echarts.apache.org/faq.html">常见问题</a></li>\n<li>在 <a href="https://github.com/apache/echarts/issues">GitHub issue</a> 中搜索关键字</li>\n<li>使用搜索引擎搜索关键字</li>\n</ul>\n<h3 id="%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E6%9C%80%E7%AE%80%E5%8D%95%E5%8F%AF%E5%A4%8D%E7%8E%B0%E7%9A%84%E4%BE%8B%E5%AD%90" tabindex="-1">创建一个最简单可复现的例子</h3>\n<p>使用<a href="https://echarts.apache.org/examples/editor.html">官方编辑器</a>、<a href="https://codepen.io/Ovilia/pen/dyYWXWM">CodePen</a>、<a href="https://codesandbox.io/s/echarts-basic-example-template-mpfz1s">CodeSandbox</a> 或 <a href="https://jsfiddle.net/plainheart/e46ozpqj/7/">JSFiddle</a> 创建一个例子,这将使得他人更方便地复现你的问题。</p>\n<p>例子应尽可能以最简单的方式复现你的问题,去除不必要的配置项和数据,可以让帮助你的人更快速地定位问题,从而让你的问题更快得到解决。更详细的介绍请参见 <a href="https://stackoverflow.com/help/minimal-reproducible-example">如何创建一个最小的可复现代码示例</a>。</p>\n<h3 id="%E5%88%A4%E6%96%AD%E6%98%AF%E5%90%A6%E6%98%AF-bug" tabindex="-1">判断是否是 bug</h3>\n<h4 id="%E6%8A%A5%E5%91%8A-bug-%E6%88%96%E8%AF%B7%E6%B1%82%E6%96%B0%E5%8A%9F%E8%83%BD" tabindex="-1">报告 bug 或请求新功能</h4>\n<p>如果不符合文档描述或你的预期效果,这很有可能是 bug。如果是 bug,或者你有一个想请求实现的功能,请使用 <a href="https://github.com/apache/echarts/issues/new/choose">issue 模板</a> 新建一个 issue 并按照提示详细描述。</p>\n<h4 id="%E5%92%A8%E8%AF%A2%E7%B1%BB%E9%97%AE%E9%A2%98" tabindex="-1">咨询类问题</h4>\n<p>如果不是 bug,而是不知道如何实现某种效果,可以尝试在 <a href="https://stackoverflow.com/questions/tagged/echarts">stackoverflow.com</a>、<a href="https://www.oschina.net/question/tag/echarts">开源中国</a> 或 <a href="https://segmentfault.com/t/echarts">SegmentFault 思否</a> 等问答平台上提问。</p>\n<p>如果没能得到答复,也可以发送邮件至邮件组 <a href="mailto:dev@echarts.apache.org">dev@echarts.apache.org</a>。为了让更多人理解你的问题,并且在将来搜索的时候得到帮助,强烈建议使用英文发送邮件。</p>\n<h2 id="%E9%9D%9E%E6%8A%80%E6%9C%AF%E7%B1%BB%E9%97%AE%E9%A2%98" tabindex="-1">非技术类问题</h2>\n<p>其他问题可以发送英文邮件至邮件组 <a href="mailto:dev@echarts.apache.org">dev@echarts.apache.org</a>。</p>\n',postPath:"zh/basics/help",title:"寻求帮助 - 入门篇"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:r},{title:"入门篇",dir:a,children:[{title:"获取 ECharts",dir:d},{title:"在项目中引入 ECharts",dir:l},{title:"资源列表",dir:h,draft:t},{title:"寻求帮助",dir:n},{title:"版本特性",dir:s,children:[{title:"ECharts 6 特性介绍",dir:o},{title:"v5 升级 v6 指南",dir:c},{title:"5.0",dir:p},{title:"v4 升级 v5 指南",dir:E},{title:5.2,dir:f},{title:5.3,dir:g},{title:5.4,dir:m},{title:5.5,dir:u},{title:5.6,dir:A}]}]},{title:"概念篇",dir:b,children:[{title:"图表容器及大小",dir:B},{title:"配置项",dir:v,draft:t},{title:"系列",dir:C,draft:t},{title:"样式",dir:x},{title:"数据集",dir:S},{title:"数据转换",dir:w},{title:"坐标系",dir:P,draft:t},{title:"坐标轴",dir:D},{title:"视觉映射",dir:e},{title:"图例",dir:k},{title:"事件与行为",dir:F}]},{title:"应用篇",dir:y,children:[{title:"常用图表类型",dir:G,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:R},{title:"堆叠柱状图",dir:L},{title:"动态排序柱状图",dir:M},{title:"极坐标系柱状图",dir:z,draft:t},{title:"阶梯瀑布图",dir:V},{title:"视觉映射的柱状图",dir:e,draft:t}]},{title:"折线图",dir:_,children:[{title:"基础折线图",dir:T},{title:"堆叠折线图",dir:q},{title:"区域面积图",dir:H},{title:"平滑曲线图",dir:I},{title:"阶梯线图",dir:W}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:O},{title:"圆环图",dir:j},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:N,children:[{title:"基础散点图",dir:U}]}]},{title:"常用组件",dir:X,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:$}]}]},{title:"移动端优化",dir:i,draft:t},{title:"跨平台方案",dir:J,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:Y},{title:"数据下钻",dir:K,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:Q}]},{title:"动画",dir:Z,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:it,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:et,draft:t},{title:"智能指针吸附",dir:rt}]}]},{title:"最佳实践",dir:at,children:[{title:"移动端优化",dir:i,draft:t},{title:dt,dir:lt},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:ht}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:nt}]}],en:[{title:"Get Started",dir:r},{title:"Basics",dir:a,children:[{title:"Download ECharts",dir:d},{title:"Import ECharts",dir:l},{title:"Resources",dir:h,draft:t},{title:"Get Help",dir:n},{title:"What's New",dir:s,children:[{title:"ECharts 6 Features",dir:o},{title:"Migration from v5 to v6",dir:c},{title:"5.0",dir:p},{title:"Migration from v4 to v5",dir:E},{title:5.2,dir:f},{title:5.3,dir:g},{title:5.4,dir:m},{title:5.5,dir:u},{title:5.6,dir:A}]}]},{title:"Concepts",dir:b,children:[{title:"Chart Container",dir:B},{title:"Chart Option",dir:v,draft:t},{title:"Series",dir:C,draft:t},{title:"Style",dir:x},{title:"Dataset",dir:S},{title:"Data Transform",dir:w},{title:"Coordinate",dir:P,draft:t},{title:"Axis",dir:D},{title:"Visual Mapping",dir:e},{title:"Legend",dir:k},{title:"Event and Action",dir:F}]},{title:"How To Guides",dir:y,children:[{title:"Common Charts",dir:G,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:R},{title:"Stacked Bar",dir:L},{title:"Bar Racing",dir:M},{title:"Bar Polar",dir:z,draft:t},{title:"Waterfall",dir:V}]},{title:"Line",dir:_,children:[{title:"Basic Line",dir:T},{title:"Stacked Line",dir:q},{title:"Area Chart",dir:H},{title:"Smoothed Line",dir:I},{title:"Step Line",dir:W}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:O},{title:"Ring Style",dir:j},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:N,children:[{title:"Basic Scatter",dir:U}]}]},{title:"Common Components",dir:X,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:$}]}]},{title:"Mobile",dir:i,draft:t},{title:"Cross Platform",dir:J,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:Y},{title:"Drilldown",dir:K,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:Q}]},{title:"Animation",dir:Z,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:it,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:et,draft:t},{title:"Intelligent Pointer Snapping",dir:rt}]}]},{title:"Best Practices",dir:at,children:[{title:"Mobile Optimization",dir:i,draft:t},{title:dt,dir:lt},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:ht}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:nt}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/zh/basics/help",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/zh/basics/import/index.html b/docs/zh/basics/import/index.html
new file mode 100644
index 0000000..712b2f2
--- /dev/null
+++ b/docs/zh/basics/import/index.html
@@ -0,0 +1,126 @@
+<!doctype html>
+<html data-n-head-ssr lang="zh-CN" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh-CN%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>在项目中引入 ECharts - 入门篇 - 使用手册 - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="zh"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/zh/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/zh/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/zh/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/zh/index.html" class="navbar-brand"><img src="https://echarts.apache.org/zh/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/zh/index.html">首页</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">文档<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/feature.html">特性</a></li><li><a href="https://echarts.apache.org/handbook/zh/get-started/">使用手册</a></li><li><a href="https://echarts.apache.org/zh/api.html">API</a></li><li><a href="https://echarts.apache.org/zh/option.html">配置项手册</a></li><li><a href="https://echarts.apache.org/zh/changelog.html">版本记录</a></li><li><a href="https://echarts.apache.org/zh/faq.html">常见问题</a></li><li><a href="https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide">v6 升级指南</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">下载<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/download.html">下载</a></li><li><a href="https://echarts.apache.org/zh/download-theme.html">主题下载</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">自定义系列下载<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/download-extension.html">扩展下载</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/zh/index.html">示例</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">资源<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/spreadsheet.html">表格工具</a></li><li><a href="https://echarts.apache.org/zh/theme-builder.html">主题构建工具</a></li><li><a href="https://echarts.apache.org/zh/cheat-sheet.html">术语速查手册</a></li><li><a href="https://echarts.apache.org/zh/resources.html">更多资源</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">社区<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/events.html">活动</a></li><li><a href="https://echarts.apache.org/zh/committers.html">贡献者列表</a></li><li><a href="https://echarts.apache.org/zh/maillist.html">邮件列表</a></li><li><a href="https://echarts.apache.org/zh/contributing.html">如何贡献</a></li><li><a href="https://echarts.apache.org/zh/dependencies.html">依赖项</a></li><li><a href="https://echarts.apache.org/zh/coding-standard.html">代码规范</a></li><li><a href="https://github.com/apache/echarts" target="_blank">源码(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/security.html">安全</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">版权<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">活动<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">捐赠<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">鸣谢<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("en")'>EN</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/zh/get-started" class="nav-link"><span class="title">快速上手</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">入门篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/basics/download" class="nav-link"><span class="title">获取 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/import" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">在项目中引入 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/basics/help" class="nav-link"><span class="title">寻求帮助</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">版本特性</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 特性介绍</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">v5 升级 v6 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">v4 升级 v5 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">概念篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/concepts/chart-size" class="nav-link"><span class="title">图表容器及大小</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/style" class="nav-link"><span class="title">样式</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/dataset" class="nav-link"><span class="title">数据集</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/data-transform" class="nav-link"><span class="title">数据转换</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/axis" class="nav-link"><span class="title">坐标轴</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/visual-map" class="nav-link"><span class="title">视觉映射</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/legend" class="nav-link"><span class="title">图例</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/event" class="nav-link"><span class="title">事件与行为</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">应用篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">常用图表类型</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">柱状图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">基础柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">堆叠柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">动态排序柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">阶梯瀑布图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">折线图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">基础折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">堆叠折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/area-line" class="nav-link"><span class="title">区域面积图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">平滑曲线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/step-line" class="nav-link"><span class="title">阶梯线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">饼图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">基础饼图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">圆环图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/rose" class="nav-link"><span class="title">南丁格尔图(玫瑰图)</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">散点图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">基础散点图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">常用组件</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">地理坐标系(Geo)</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG 底图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">跨平台方案</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/server" class="nav-link"><span class="title">服务端渲染</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/wechat-app" class="nav-link"><span class="title">微信小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/baidu-app" class="nav-link"><span class="title">百度智能小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">数据处理</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/data/dynamic-data" class="nav-link"><span class="title">动态的异步数据</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">标签</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/label/rich-text" class="nav-link"><span class="title">富文本标签</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">动画</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/animation/transition" class="nav-link"><span class="title">数据过渡动画</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">交互</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/drag" class="nav-link"><span class="title">拖拽的实现</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">智能指针吸附</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">最佳实践</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/aria" class="nav-link"><span class="title">无障碍访问</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/security" class="nav-link"><span class="title">安全指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">编辑本文档</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/meta/edit-guide" class="nav-link"><span class="title">文档编辑指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="%E5%9C%A8%E9%A1%B9%E7%9B%AE%E4%B8%AD%E5%BC%95%E5%85%A5-apache-echarts" tabindex="-1">在项目中引入 Apache ECharts</h1> <p>假如你的开发环境使用了 <code>npm</code> 或者 <code>yarn</code> 等包管理工具,并且使用 <code>webpack</code> 等打包工具进行构建,本文将会介绍如何引入 Apache ECharts<sup>TM</sup> 并通过 tree-shaking 特性只打包需要的模块以减少包体积。</p> <h2 id="npm-%E5%AE%89%E8%A3%85-echarts" tabindex="-1">NPM 安装 ECharts</h2> <p>你可以使用如下命令通过 npm 安装 ECharts</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-text line-numbers"><code>npm install echarts --save</code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="%E5%BC%95%E5%85%A5-echarts" tabindex="-1">引入 ECharts</h2> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">import</span> <span class="token operator">*</span> <span class="token keyword">as</span> echarts <span class="token keyword">from</span> <span class="token string">'echarts'</span><span class="token punctuation">;</span>
+
+<span class="token comment">// 基于准备好的dom,初始化echarts实例</span>
+<span class="token keyword">var</span> myChart <span class="token operator">=</span> echarts<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span>document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span><span class="token string">'main'</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token comment">// 绘制图表</span>
+myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+  <span class="token literal-property property">title</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'ECharts 入门示例'</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">tooltip</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'衬衫'</span><span class="token punctuation">,</span> <span class="token string">'羊毛衫'</span><span class="token punctuation">,</span> <span class="token string">'雪纺衫'</span><span class="token punctuation">,</span> <span class="token string">'裤子'</span><span class="token punctuation">,</span> <span class="token string">'高跟鞋'</span><span class="token punctuation">,</span> <span class="token string">'袜子'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'销量'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">20</span><span class="token punctuation">,</span> <span class="token number">36</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">20</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="%E6%8C%89%E9%9C%80%E5%BC%95%E5%85%A5-echarts-%E5%9B%BE%E8%A1%A8%E5%92%8C%E7%BB%84%E4%BB%B6" tabindex="-1">按需引入 ECharts 图表和组件</h2> <p>上面的代码会引入 ECharts 中所有的图表和组件,如果你不想引入所有组件,也可以使用 ECharts 提供的按需引入的接口来打包必须的组件。</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token comment">// 引入 echarts 核心模块,核心模块提供了 echarts 使用必须要的接口。</span>
+<span class="token keyword">import</span> <span class="token operator">*</span> <span class="token keyword">as</span> echarts <span class="token keyword">from</span> <span class="token string">'echarts/core'</span><span class="token punctuation">;</span>
+<span class="token comment">// 引入柱状图图表,图表后缀都为 Chart</span>
+<span class="token keyword">import</span> <span class="token punctuation">{</span> BarChart <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'echarts/charts'</span><span class="token punctuation">;</span>
+<span class="token comment">// 引入标题,提示框,直角坐标系,数据集,内置数据转换器组件,组件后缀都为 Component</span>
+<span class="token keyword">import</span> <span class="token punctuation">{</span>
+  TitleComponent<span class="token punctuation">,</span>
+  TooltipComponent<span class="token punctuation">,</span>
+  GridComponent<span class="token punctuation">,</span>
+  DatasetComponent<span class="token punctuation">,</span>
+  TransformComponent
+<span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'echarts/components'</span><span class="token punctuation">;</span>
+<span class="token comment">// 标签自动布局、全局过渡动画等特性</span>
+<span class="token keyword">import</span> <span class="token punctuation">{</span> LabelLayout<span class="token punctuation">,</span> UniversalTransition <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'echarts/features'</span><span class="token punctuation">;</span>
+<span class="token comment">// 引入 Canvas 渲染器,注意引入 CanvasRenderer 或者 SVGRenderer 是必须的一步</span>
+<span class="token keyword">import</span> <span class="token punctuation">{</span> CanvasRenderer <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'echarts/renderers'</span><span class="token punctuation">;</span>
+
+<span class="token comment">// 注册必须的组件</span>
+echarts<span class="token punctuation">.</span><span class="token function">use</span><span class="token punctuation">(</span><span class="token punctuation">[</span>
+  TitleComponent<span class="token punctuation">,</span>
+  TooltipComponent<span class="token punctuation">,</span>
+  GridComponent<span class="token punctuation">,</span>
+  DatasetComponent<span class="token punctuation">,</span>
+  TransformComponent<span class="token punctuation">,</span>
+  BarChart<span class="token punctuation">,</span>
+  LabelLayout<span class="token punctuation">,</span>
+  UniversalTransition<span class="token punctuation">,</span>
+  CanvasRenderer
+<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+<span class="token comment">// 接下来的使用就跟之前一样,初始化图表,设置配置项</span>
+<span class="token keyword">var</span> myChart <span class="token operator">=</span> echarts<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span>document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span><span class="token string">'main'</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+  <span class="token comment">// ...</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <blockquote><p>需要注意的是为了保证打包的体积是最小的,ECharts 按需引入的时候不再提供任何渲染器,所以需要选择引入 <code>CanvasRenderer</code> 或者 <code>SVGRenderer</code> 作为渲染器。这样的好处是假如你只需要使用 svg 渲染模式,打包的结果中就不会再包含无需使用的 <code>CanvasRenderer</code> 模块。</p></blockquote> <p>我们在示例编辑页的“完整代码”标签提供了非常方便的生成按需引入代码的功能。这个功能会根据当前的配置项动态生成最小的按需引入的代码。你可以直接在你的项目中使用。</p> <blockquote><p>v5.5.0 版本开始使用 ESM 作为默认的模块规范,查看可能的 <a href="https://github.com/apache/echarts/pull/19513#issuecomment-1916237700">Breaking Changes</a> 以及 <a href="https://github.com/apache/echarts/pull/19513">Pull Request</a>。</p></blockquote> <h2 id="%E5%9C%A8-typescript-%E4%B8%AD%E6%8C%89%E9%9C%80%E5%BC%95%E5%85%A5" tabindex="-1">在 TypeScript 中按需引入</h2> <p>对于使用了 TypeScript 来开发 ECharts 的开发者,我们提供了类型接口来组合出最小的 <code>EChartsOption</code> 类型。这个更严格的类型可以有效帮助你检查出是否少加载了组件或者图表。</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code><span class="token keyword">import</span> <span class="token operator">*</span> <span class="token keyword">as</span> echarts <span class="token keyword">from</span> <span class="token string">'echarts/core'</span><span class="token punctuation">;</span>
+<span class="token keyword">import</span> <span class="token punctuation">{</span>
+  BarChart<span class="token punctuation">,</span>
+  LineChart
+<span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'echarts/charts'</span><span class="token punctuation">;</span>
+<span class="token keyword">import</span> <span class="token punctuation">{</span>
+  TitleComponent<span class="token punctuation">,</span>
+  TooltipComponent<span class="token punctuation">,</span>
+  GridComponent<span class="token punctuation">,</span>
+  <span class="token comment">// 数据集组件</span>
+  DatasetComponent<span class="token punctuation">,</span>
+  <span class="token comment">// 内置数据转换器组件 (filter, sort)</span>
+  TransformComponent
+<span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'echarts/components'</span><span class="token punctuation">;</span>
+<span class="token keyword">import</span> <span class="token punctuation">{</span> LabelLayout<span class="token punctuation">,</span> UniversalTransition <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'echarts/features'</span><span class="token punctuation">;</span>
+<span class="token keyword">import</span> <span class="token punctuation">{</span> CanvasRenderer <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'echarts/renderers'</span><span class="token punctuation">;</span>
+<span class="token keyword">import</span> <span class="token keyword">type</span> <span class="token punctuation">{</span>
+  <span class="token comment">// 系列类型的定义后缀都为 SeriesOption</span>
+  BarSeriesOption<span class="token punctuation">,</span>
+  LineSeriesOption
+<span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'echarts/charts'</span><span class="token punctuation">;</span>
+<span class="token keyword">import</span> <span class="token keyword">type</span> <span class="token punctuation">{</span>
+  <span class="token comment">// 组件类型的定义后缀都为 ComponentOption</span>
+  TitleComponentOption<span class="token punctuation">,</span>
+  TooltipComponentOption<span class="token punctuation">,</span>
+  GridComponentOption<span class="token punctuation">,</span>
+  DatasetComponentOption
+<span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'echarts/components'</span><span class="token punctuation">;</span>
+<span class="token keyword">import</span> <span class="token keyword">type</span> <span class="token punctuation">{</span>
+  ComposeOption<span class="token punctuation">,</span>
+<span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'echarts/core'</span><span class="token punctuation">;</span>
+
+<span class="token comment">// 通过 ComposeOption 来组合出一个只有必须组件和图表的 Option 类型</span>
+<span class="token keyword">type</span> <span class="token class-name">ECOption</span> <span class="token operator">=</span> ComposeOption<span class="token operator">&lt;</span>
+  <span class="token operator">|</span> BarSeriesOption
+  <span class="token operator">|</span> LineSeriesOption
+  <span class="token operator">|</span> TitleComponentOption
+  <span class="token operator">|</span> TooltipComponentOption
+  <span class="token operator">|</span> GridComponentOption
+  <span class="token operator">|</span> DatasetComponentOption
+<span class="token operator">></span><span class="token punctuation">;</span>
+
+<span class="token comment">// 注册必须的组件</span>
+echarts<span class="token punctuation">.</span><span class="token function">use</span><span class="token punctuation">(</span><span class="token punctuation">[</span>
+  TitleComponent<span class="token punctuation">,</span>
+  TooltipComponent<span class="token punctuation">,</span>
+  GridComponent<span class="token punctuation">,</span>
+  DatasetComponent<span class="token punctuation">,</span>
+  TransformComponent<span class="token punctuation">,</span>
+  BarChart<span class="token punctuation">,</span>
+  LineChart<span class="token punctuation">,</span>
+  LabelLayout<span class="token punctuation">,</span>
+  UniversalTransition<span class="token punctuation">,</span>
+  CanvasRenderer
+<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+<span class="token keyword">const</span> option<span class="token operator">:</span> ECOption <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token comment">// ...</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">本文贡献者</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/zh/basics/import.md" title="编辑本文" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">在 GitHub 上编辑本页</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a><a href="https://github.com/plainheart" target="_blank" class="post-contributor has-avatar"><img alt="plainheart" src="https://echarts.apache.org/en/images/people/plainheart.jpg" loading="lazy" decoding="async" fetchpriority="low"> <span>plainheart</span></a><a href="https://github.com/michaelxiaohan" target="_blank" class="post-contributor"><!----> <span>michaelxiaohan</span></a><a href="https://github.com/Ovilia" target="_blank" class="post-contributor has-avatar"><img alt="Ovilia" src="https://echarts.apache.org/en/images/people/羡辙.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>Ovilia</span></a><a href="https://github.com/JobbyM" target="_blank" class="post-contributor"><!----> <span>JobbyM</span></a><a href="https://github.com/aimuz" target="_blank" class="post-contributor"><!----> <span>aimuz</span></a><a href="https://github.com/vueadmin" target="_blank" class="post-contributor"><!----> <span>vueadmin</span></a><a href="https://github.com/gugujigua" target="_blank" class="post-contributor"><!----> <span>gugujigua</span></a><a href="https://github.com/btea" target="_blank" class="post-contributor"><!----> <span>btea</span></a><a href="https://github.com/Yechuanjie" target="_blank" class="post-contributor"><!----> <span>Yechuanjie</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,i,e,l,d,r,a,c,n,o,h,b,s,g,p,C,m,u,I,v,G,B,y,W,E,Z,w,A,X,J,R,V,L,Y,K,H,D,k,S,f,N,z,F,O,j,M,Q,x,P,T,U,q,_,$,tt,it,et,lt,dt,rt,at,ct,nt){return{layout:"default",data:[{html:'<h1 id="%E5%9C%A8%E9%A1%B9%E7%9B%AE%E4%B8%AD%E5%BC%95%E5%85%A5-apache-echarts" tabindex="-1">在项目中引入 Apache ECharts</h1>\n<p>假如你的开发环境使用了 <code>npm</code> 或者 <code>yarn</code> 等包管理工具,并且使用 <code>webpack</code> 等打包工具进行构建,本文将会介绍如何引入 Apache ECharts<sup>TM</sup> 并通过 tree-shaking 特性只打包需要的模块以减少包体积。</p>\n<h2 id="npm-%E5%AE%89%E8%A3%85-echarts" tabindex="-1">NPM 安装 ECharts</h2>\n<p>你可以使用如下命令通过 npm 安装 ECharts</p>\n<md-code-block lang="shell" code="\'bnBtIGluc3RhbGwgZWNoYXJ0cyAtLXNhdmU\'" line-highlights="\'\'" />\n<h2 id="%E5%BC%95%E5%85%A5-echarts" tabindex="-1">引入 ECharts</h2>\n<md-code-block lang="js" code="\'aW1wb3J0ICogYXMgZWNoYXJ0cyBmcm9tICdlY2hhcnRzJzsKCi8vIOWfuuS6juWHhuWkh-WlveeahGRvbe-8jOWIneWni-WMlmVjaGFydHPlrp7kvosKdmFyIG15Q2hhcnQgPSBlY2hhcnRzLmluaXQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21haW4nKSk7Ci8vIOe7mOWItuWbvuihqApteUNoYXJ0LnNldE9wdGlvbih7CiAgdGl0bGU6IHsKICAgIHRleHQ6ICdFQ2hhcnRzIOWFpemXqOekuuS-iycKICB9LAogIHRvb2x0aXA6IHt9LAogIHhBeGlzOiB7CiAgICBkYXRhOiBbJ-ihrOihqycsICfnvormr5vooasnLCAn6Zuq57q66KGrJywgJ-ijpOWtkCcsICfpq5jot5_pnosnLCAn6KKc5a2QJ10KICB9LAogIHlBeGlzOiB7fSwKICBzZXJpZXM6IFsKICAgIHsKICAgICAgbmFtZTogJ-mUgOmHjycsCiAgICAgIHR5cGU6ICdiYXInLAogICAgICBkYXRhOiBbNSwgMjAsIDM2LCAxMCwgMTAsIDIwXQogICAgfQogIF0KfSk7\'" line-highlights="\'\'" />\n<h2 id="%E6%8C%89%E9%9C%80%E5%BC%95%E5%85%A5-echarts-%E5%9B%BE%E8%A1%A8%E5%92%8C%E7%BB%84%E4%BB%B6" tabindex="-1">按需引入 ECharts 图表和组件</h2>\n<p>上面的代码会引入 ECharts 中所有的图表和组件,如果你不想引入所有组件,也可以使用 ECharts 提供的按需引入的接口来打包必须的组件。</p>\n<md-code-block lang="js" code="\'Ly8g5byV5YWlIGVjaGFydHMg5qC45b-D5qih5Z2X77yM5qC45b-D5qih5Z2X5o-Q5L6b5LqGIGVjaGFydHMg5L2_55So5b-F6aG76KaB55qE5o6l5Y-j44CCCmltcG9ydCAqIGFzIGVjaGFydHMgZnJvbSAnZWNoYXJ0cy9jb3JlJzsKLy8g5byV5YWl5p-x54q25Zu-5Zu-6KGo77yM5Zu-6KGo5ZCO57yA6YO95Li6IENoYXJ0CmltcG9ydCB7IEJhckNoYXJ0IH0gZnJvbSAnZWNoYXJ0cy9jaGFydHMnOwovLyDlvJXlhaXmoIfpopjvvIzmj5DnpLrmoYbvvIznm7Top5LlnZDmoIfns7vvvIzmlbDmja7pm4bvvIzlhoXnva7mlbDmja7ovazmjaLlmajnu4Tku7bvvIznu4Tku7blkI7nvIDpg73kuLogQ29tcG9uZW50CmltcG9ydCB7CiAgVGl0bGVDb21wb25lbnQsCiAgVG9vbHRpcENvbXBvbmVudCwKICBHcmlkQ29tcG9uZW50LAogIERhdGFzZXRDb21wb25lbnQsCiAgVHJhbnNmb3JtQ29tcG9uZW50Cn0gZnJvbSAnZWNoYXJ0cy9jb21wb25lbnRzJzsKLy8g5qCH562-6Ieq5Yqo5biD5bGA44CB5YWo5bGA6L-H5rih5Yqo55S7562J54m55oCnCmltcG9ydCB7IExhYmVsTGF5b3V0LCBVbml2ZXJzYWxUcmFuc2l0aW9uIH0gZnJvbSAnZWNoYXJ0cy9mZWF0dXJlcyc7Ci8vIOW8leWFpSBDYW52YXMg5riy5p-T5Zmo77yM5rOo5oSP5byV5YWlIENhbnZhc1JlbmRlcmVyIOaIluiAhSBTVkdSZW5kZXJlciDmmK_lv4XpobvnmoTkuIDmraUKaW1wb3J0IHsgQ2FudmFzUmVuZGVyZXIgfSBmcm9tICdlY2hhcnRzL3JlbmRlcmVycyc7CgovLyDms6jlhozlv4XpobvnmoTnu4Tku7YKZWNoYXJ0cy51c2UoWwogIFRpdGxlQ29tcG9uZW50LAogIFRvb2x0aXBDb21wb25lbnQsCiAgR3JpZENvbXBvbmVudCwKICBEYXRhc2V0Q29tcG9uZW50LAogIFRyYW5zZm9ybUNvbXBvbmVudCwKICBCYXJDaGFydCwKICBMYWJlbExheW91dCwKICBVbml2ZXJzYWxUcmFuc2l0aW9uLAogIENhbnZhc1JlbmRlcmVyCl0pOwoKLy8g5o6l5LiL5p2l55qE5L2_55So5bCx6Lef5LmL5YmN5LiA5qC377yM5Yid5aeL5YyW5Zu-6KGo77yM6K6-572u6YWN572u6aG5CnZhciBteUNoYXJ0ID0gZWNoYXJ0cy5pbml0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYWluJykpOwpteUNoYXJ0LnNldE9wdGlvbih7CiAgLy8gLi4uCn0pOw\'" line-highlights="\'\'" />\n<blockquote>\n<p>需要注意的是为了保证打包的体积是最小的,ECharts 按需引入的时候不再提供任何渲染器,所以需要选择引入 <code>CanvasRenderer</code> 或者 <code>SVGRenderer</code> 作为渲染器。这样的好处是假如你只需要使用 svg 渲染模式,打包的结果中就不会再包含无需使用的 <code>CanvasRenderer</code> 模块。</p>\n</blockquote>\n<p>我们在示例编辑页的“完整代码”标签提供了非常方便的生成按需引入代码的功能。这个功能会根据当前的配置项动态生成最小的按需引入的代码。你可以直接在你的项目中使用。</p>\n<blockquote>\n<p>v5.5.0 版本开始使用 ESM 作为默认的模块规范,查看可能的 <a href="https://github.com/apache/echarts/pull/19513#issuecomment-1916237700">Breaking Changes</a> 以及 <a href="https://github.com/apache/echarts/pull/19513">Pull Request</a>。</p>\n</blockquote>\n<h2 id="%E5%9C%A8-typescript-%E4%B8%AD%E6%8C%89%E9%9C%80%E5%BC%95%E5%85%A5" tabindex="-1">在 TypeScript 中按需引入</h2>\n<p>对于使用了 TypeScript 来开发 ECharts 的开发者,我们提供了类型接口来组合出最小的 <code>EChartsOption</code> 类型。这个更严格的类型可以有效帮助你检查出是否少加载了组件或者图表。</p>\n<md-code-block lang="ts" code="\'aW1wb3J0ICogYXMgZWNoYXJ0cyBmcm9tICdlY2hhcnRzL2NvcmUnOwppbXBvcnQgewogIEJhckNoYXJ0LAogIExpbmVDaGFydAp9IGZyb20gJ2VjaGFydHMvY2hhcnRzJzsKaW1wb3J0IHsKICBUaXRsZUNvbXBvbmVudCwKICBUb29sdGlwQ29tcG9uZW50LAogIEdyaWRDb21wb25lbnQsCiAgLy8g5pWw5o2u6ZuG57uE5Lu2CiAgRGF0YXNldENvbXBvbmVudCwKICAvLyDlhoXnva7mlbDmja7ovazmjaLlmajnu4Tku7YgKGZpbHRlciwgc29ydCkKICBUcmFuc2Zvcm1Db21wb25lbnQKfSBmcm9tICdlY2hhcnRzL2NvbXBvbmVudHMnOwppbXBvcnQgeyBMYWJlbExheW91dCwgVW5pdmVyc2FsVHJhbnNpdGlvbiB9IGZyb20gJ2VjaGFydHMvZmVhdHVyZXMnOwppbXBvcnQgeyBDYW52YXNSZW5kZXJlciB9IGZyb20gJ2VjaGFydHMvcmVuZGVyZXJzJzsKaW1wb3J0IHR5cGUgewogIC8vIOezu-WIl-exu-Wei-eahOWumuS5ieWQjue8gOmDveS4uiBTZXJpZXNPcHRpb24KICBCYXJTZXJpZXNPcHRpb24sCiAgTGluZVNlcmllc09wdGlvbgp9IGZyb20gJ2VjaGFydHMvY2hhcnRzJzsKaW1wb3J0IHR5cGUgewogIC8vIOe7hOS7tuexu-Wei-eahOWumuS5ieWQjue8gOmDveS4uiBDb21wb25lbnRPcHRpb24KICBUaXRsZUNvbXBvbmVudE9wdGlvbiwKICBUb29sdGlwQ29tcG9uZW50T3B0aW9uLAogIEdyaWRDb21wb25lbnRPcHRpb24sCiAgRGF0YXNldENvbXBvbmVudE9wdGlvbgp9IGZyb20gJ2VjaGFydHMvY29tcG9uZW50cyc7CmltcG9ydCB0eXBlIHsKICBDb21wb3NlT3B0aW9uLAp9IGZyb20gJ2VjaGFydHMvY29yZSc7CgovLyDpgJrov4cgQ29tcG9zZU9wdGlvbiDmnaXnu4TlkIjlh7rkuIDkuKrlj6rmnInlv4Xpobvnu4Tku7blkozlm77ooajnmoQgT3B0aW9uIOexu-Weiwp0eXBlIEVDT3B0aW9uID0gQ29tcG9zZU9wdGlvbjwKICB8IEJhclNlcmllc09wdGlvbgogIHwgTGluZVNlcmllc09wdGlvbgogIHwgVGl0bGVDb21wb25lbnRPcHRpb24KICB8IFRvb2x0aXBDb21wb25lbnRPcHRpb24KICB8IEdyaWRDb21wb25lbnRPcHRpb24KICB8IERhdGFzZXRDb21wb25lbnRPcHRpb24KPjsKCi8vIOazqOWGjOW_hemhu-eahOe7hOS7tgplY2hhcnRzLnVzZShbCiAgVGl0bGVDb21wb25lbnQsCiAgVG9vbHRpcENvbXBvbmVudCwKICBHcmlkQ29tcG9uZW50LAogIERhdGFzZXRDb21wb25lbnQsCiAgVHJhbnNmb3JtQ29tcG9uZW50LAogIEJhckNoYXJ0LAogIExpbmVDaGFydCwKICBMYWJlbExheW91dCwKICBVbml2ZXJzYWxUcmFuc2l0aW9uLAogIENhbnZhc1JlbmRlcmVyCl0pOwoKY29uc3Qgb3B0aW9uOiBFQ09wdGlvbiA9IHsKICAvLyAuLi4KfTs\'" line-highlights="\'\'" />\n',postPath:"zh/basics/import",title:"在项目中引入 ECharts - 入门篇"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:l},{title:"入门篇",dir:d,children:[{title:"获取 ECharts",dir:r},{title:"在项目中引入 ECharts",dir:a},{title:"资源列表",dir:c,draft:t},{title:"寻求帮助",dir:n},{title:"版本特性",dir:o,children:[{title:"ECharts 6 特性介绍",dir:h},{title:"v5 升级 v6 指南",dir:b},{title:"5.0",dir:s},{title:"v4 升级 v5 指南",dir:g},{title:5.2,dir:p},{title:5.3,dir:C},{title:5.4,dir:m},{title:5.5,dir:u},{title:5.6,dir:I}]}]},{title:"概念篇",dir:v,children:[{title:"图表容器及大小",dir:G},{title:"配置项",dir:B,draft:t},{title:"系列",dir:y,draft:t},{title:"样式",dir:W},{title:"数据集",dir:E},{title:"数据转换",dir:Z},{title:"坐标系",dir:w,draft:t},{title:"坐标轴",dir:A},{title:"视觉映射",dir:e},{title:"图例",dir:X},{title:"事件与行为",dir:J}]},{title:"应用篇",dir:R,children:[{title:"常用图表类型",dir:V,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:L},{title:"堆叠柱状图",dir:Y},{title:"动态排序柱状图",dir:K},{title:"极坐标系柱状图",dir:H,draft:t},{title:"阶梯瀑布图",dir:D},{title:"视觉映射的柱状图",dir:e,draft:t}]},{title:"折线图",dir:k,children:[{title:"基础折线图",dir:S},{title:"堆叠折线图",dir:f},{title:"区域面积图",dir:N},{title:"平滑曲线图",dir:z},{title:"阶梯线图",dir:F}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:O},{title:"圆环图",dir:j},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:M,children:[{title:"基础散点图",dir:Q}]}]},{title:"常用组件",dir:x,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:P}]}]},{title:"移动端优化",dir:i,draft:t},{title:"跨平台方案",dir:T,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:U},{title:"数据下钻",dir:q,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:_}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:it,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:et,draft:t},{title:"智能指针吸附",dir:lt}]}]},{title:"最佳实践",dir:dt,children:[{title:"移动端优化",dir:i,draft:t},{title:rt,dir:at},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:ct}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:nt}]}],en:[{title:"Get Started",dir:l},{title:"Basics",dir:d,children:[{title:"Download ECharts",dir:r},{title:"Import ECharts",dir:a},{title:"Resources",dir:c,draft:t},{title:"Get Help",dir:n},{title:"What's New",dir:o,children:[{title:"ECharts 6 Features",dir:h},{title:"Migration from v5 to v6",dir:b},{title:"5.0",dir:s},{title:"Migration from v4 to v5",dir:g},{title:5.2,dir:p},{title:5.3,dir:C},{title:5.4,dir:m},{title:5.5,dir:u},{title:5.6,dir:I}]}]},{title:"Concepts",dir:v,children:[{title:"Chart Container",dir:G},{title:"Chart Option",dir:B,draft:t},{title:"Series",dir:y,draft:t},{title:"Style",dir:W},{title:"Dataset",dir:E},{title:"Data Transform",dir:Z},{title:"Coordinate",dir:w,draft:t},{title:"Axis",dir:A},{title:"Visual Mapping",dir:e},{title:"Legend",dir:X},{title:"Event and Action",dir:J}]},{title:"How To Guides",dir:R,children:[{title:"Common Charts",dir:V,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:L},{title:"Stacked Bar",dir:Y},{title:"Bar Racing",dir:K},{title:"Bar Polar",dir:H,draft:t},{title:"Waterfall",dir:D}]},{title:"Line",dir:k,children:[{title:"Basic Line",dir:S},{title:"Stacked Line",dir:f},{title:"Area Chart",dir:N},{title:"Smoothed Line",dir:z},{title:"Step Line",dir:F}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:O},{title:"Ring Style",dir:j},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:M,children:[{title:"Basic Scatter",dir:Q}]}]},{title:"Common Components",dir:x,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:P}]}]},{title:"Mobile",dir:i,draft:t},{title:"Cross Platform",dir:T,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:U},{title:"Drilldown",dir:q,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:_}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:it,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:et,draft:t},{title:"Intelligent Pointer Snapping",dir:lt}]}]},{title:"Best Practices",dir:dt,children:[{title:"Mobile Optimization",dir:i,draft:t},{title:rt,dir:at},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:ct}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:nt}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/zh/basics/import",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/zh/basics/release-note/5-2-0/index.html b/docs/zh/basics/release-note/5-2-0/index.html
new file mode 100644
index 0000000..169ee74
--- /dev/null
+++ b/docs/zh/basics/release-note/5-2-0/index.html
@@ -0,0 +1,591 @@
+<!doctype html>
+<html data-n-head-ssr lang="zh-CN" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh-CN%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>5.2 - 版本特性 - 入门篇 - 使用手册 - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="zh"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/zh/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/zh/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/zh/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/zh/index.html" class="navbar-brand"><img src="https://echarts.apache.org/zh/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/zh/index.html">首页</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">文档<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/feature.html">特性</a></li><li><a href="https://echarts.apache.org/handbook/zh/get-started/">使用手册</a></li><li><a href="https://echarts.apache.org/zh/api.html">API</a></li><li><a href="https://echarts.apache.org/zh/option.html">配置项手册</a></li><li><a href="https://echarts.apache.org/zh/changelog.html">版本记录</a></li><li><a href="https://echarts.apache.org/zh/faq.html">常见问题</a></li><li><a href="https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide">v6 升级指南</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">下载<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/download.html">下载</a></li><li><a href="https://echarts.apache.org/zh/download-theme.html">主题下载</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">自定义系列下载<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/download-extension.html">扩展下载</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/zh/index.html">示例</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">资源<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/spreadsheet.html">表格工具</a></li><li><a href="https://echarts.apache.org/zh/theme-builder.html">主题构建工具</a></li><li><a href="https://echarts.apache.org/zh/cheat-sheet.html">术语速查手册</a></li><li><a href="https://echarts.apache.org/zh/resources.html">更多资源</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">社区<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/events.html">活动</a></li><li><a href="https://echarts.apache.org/zh/committers.html">贡献者列表</a></li><li><a href="https://echarts.apache.org/zh/maillist.html">邮件列表</a></li><li><a href="https://echarts.apache.org/zh/contributing.html">如何贡献</a></li><li><a href="https://echarts.apache.org/zh/dependencies.html">依赖项</a></li><li><a href="https://echarts.apache.org/zh/coding-standard.html">代码规范</a></li><li><a href="https://github.com/apache/echarts" target="_blank">源码(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/security.html">安全</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">版权<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">活动<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">捐赠<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">鸣谢<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("en")'>EN</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/zh/get-started" class="nav-link"><span class="title">快速上手</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">入门篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/basics/download" class="nav-link"><span class="title">获取 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/import" class="nav-link"><span class="title">在项目中引入 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/basics/help" class="nav-link"><span class="title">寻求帮助</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">版本特性</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 特性介绍</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">v5 升级 v6 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">v4 升级 v5 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-2-0" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">概念篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/concepts/chart-size" class="nav-link"><span class="title">图表容器及大小</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/style" class="nav-link"><span class="title">样式</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/dataset" class="nav-link"><span class="title">数据集</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/data-transform" class="nav-link"><span class="title">数据转换</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/axis" class="nav-link"><span class="title">坐标轴</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/visual-map" class="nav-link"><span class="title">视觉映射</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/legend" class="nav-link"><span class="title">图例</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/event" class="nav-link"><span class="title">事件与行为</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">应用篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">常用图表类型</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">柱状图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">基础柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">堆叠柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">动态排序柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">阶梯瀑布图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">折线图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">基础折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">堆叠折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/area-line" class="nav-link"><span class="title">区域面积图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">平滑曲线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/step-line" class="nav-link"><span class="title">阶梯线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">饼图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">基础饼图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">圆环图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/rose" class="nav-link"><span class="title">南丁格尔图(玫瑰图)</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">散点图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">基础散点图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">常用组件</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">地理坐标系(Geo)</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG 底图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">跨平台方案</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/server" class="nav-link"><span class="title">服务端渲染</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/wechat-app" class="nav-link"><span class="title">微信小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/baidu-app" class="nav-link"><span class="title">百度智能小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">数据处理</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/data/dynamic-data" class="nav-link"><span class="title">动态的异步数据</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">标签</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/label/rich-text" class="nav-link"><span class="title">富文本标签</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">动画</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/animation/transition" class="nav-link"><span class="title">数据过渡动画</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">交互</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/drag" class="nav-link"><span class="title">拖拽的实现</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">智能指针吸附</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">最佳实践</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/aria" class="nav-link"><span class="title">无障碍访问</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/security" class="nav-link"><span class="title">安全指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">编辑本文档</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/meta/edit-guide" class="nav-link"><span class="title">文档编辑指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="apache-echarts-5.2.0-%E7%89%B9%E6%80%A7%E4%BB%8B%E7%BB%8D" tabindex="-1">Apache ECharts 5.2.0 特性介绍</h1> <h2 id="%E5%85%A8%E5%B1%80%E8%BF%87%E6%B8%A1%E5%8A%A8%E7%94%BB" tabindex="-1">全局过渡动画</h2> <p>在 Apache ECharts 中我们一直把自然流畅的过渡动画作为一个重要特性。通过避免数据带来的突变,不仅仅可以改善视觉效果,更为表达数据的关联和演变提供了可能。因此,在 5.2.0 中,我们进一步将过渡动画从表现系列内部数据的变化,泛化到全局能力。接下来,我们会看到这种<strong>全局过渡动画 Universal Transition</strong>是如何为图表增加表现力和叙事能力的。</p> <p>在之前的版本中,过渡动画有一定的局限性:只能用于相同类型的图形的位置、尺寸、形状,而且只能作用在相同类型的系列上。比如,下面例子就是通过饼图中扇区形状的变化反映了数据分布的变化:</p> <div class="md-live layout-lr"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">function makeRandomData() {
+  return [
+    {
+      value: Math.random(),
+      name: 'A'
+    },
+    {
+      value: Math.random(),
+      name: 'B'
+    },
+    {
+      value: Math.random(),
+      name: 'C'
+    }
+  ];
+}
+option = {
+  series: [
+    {
+      type: 'pie',
+      radius: [0, '50%'],
+      data: makeRandomData()
+    }
+  ]
+};
+
+setInterval(() => {
+  myChart.setOption({
+    series: {
+      data: makeRandomData()
+    }
+  });
+}, 2000);</textarea><pre data-testid="preview" class="prism-editor__editor"><span class="token keyword">function</span> <span class="token function">makeRandomData</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  <span class="token keyword">return</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">value</span><span class="token operator">:</span> Math<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'A'</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">value</span><span class="token operator">:</span> Math<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'B'</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">value</span><span class="token operator">:</span> Math<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'C'</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span>
+option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'pie'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">radius</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token string">'50%'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token function">makeRandomData</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span>
+
+<span class="token function">setInterval</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
+  myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+    <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token function">makeRandomData</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token number">2000</span><span class="token punctuation">)</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>而从 5.2.0 开始,我们引入了更强大的全局过渡动画能力,让过渡动画不再局限于相同类型的系列之间。现在,我们可以使用这种跨系列的形变,为任意类型的系列和任意类型的图形做形变动画。</p> <p>这会有多酷呢?我们一起来感受一下!</p> <h3 id="%E8%B7%A8%E7%B3%BB%E5%88%97%E7%9A%84%E5%BD%A2%E5%8F%98%E5%8A%A8%E7%94%BB" tabindex="-1">跨系列的形变动画</h3> <p>在设置<code>universalTransition: true</code>开启全局过渡动画后,从饼图切换成柱状图,或者从柱状图切换成散点图,甚至旭日图和矩形树图这类复杂的图表之间,都可以通过形变的方式自然的进行动画过渡。</p> <p>如下,饼图和柱状图之间的切换:</p> <div class="md-live layout-bt"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">const dataset = {
+  dimensions: ['name', 'score'],
+  source: [
+    ['Hannah Krause', 314],
+    ['Zhao Qian', 351],
+    ['Jasmin Krause ', 287],
+    ['Li Lei', 219],
+    ['Karle Neumann', 253],
+    ['Mia Neumann', 165],
+    ['Böhm Fuchs', 318],
+    ['Han Meimei', 366]
+  ]
+};
+const pieOption = {
+  dataset: [dataset],
+  series: [
+    {
+      type: 'pie',
+      // 通过 id 关联需要过渡动画的系列
+      id: 'Score',
+      radius: [0, '50%'],
+      universalTransition: true,
+      animationDurationUpdate: 1000
+    }
+  ]
+};
+const barOption = {
+  dataset: [dataset],
+  xAxis: {
+    type: 'category'
+  },
+  yAxis: {},
+  series: [
+    {
+      type: 'bar',
+      // 通过 id 关联需要过渡动画的系列
+      id: 'Score',
+      // 每个数据都是用不同的颜色
+      colorBy: 'data',
+      encode: { x: 'name', y: 'score' },
+      universalTransition: true,
+      animationDurationUpdate: 1000
+    }
+  ]
+};
+
+option = barOption;
+
+setInterval(() => {
+  option = option === pieOption ? barOption : pieOption;
+  // 使用 notMerge 的形式可以移除坐标轴
+  myChart.setOption(option, true);
+}, 2000);</textarea><pre data-testid="preview" class="prism-editor__editor"><span class="token keyword">const</span> dataset <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">dimensions</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'name'</span><span class="token punctuation">,</span> <span class="token string">'score'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">[</span><span class="token string">'Hannah Krause'</span><span class="token punctuation">,</span> <span class="token number">314</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token string">'Zhao Qian'</span><span class="token punctuation">,</span> <span class="token number">351</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token string">'Jasmin Krause '</span><span class="token punctuation">,</span> <span class="token number">287</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token string">'Li Lei'</span><span class="token punctuation">,</span> <span class="token number">219</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token string">'Karle Neumann'</span><span class="token punctuation">,</span> <span class="token number">253</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token string">'Mia Neumann'</span><span class="token punctuation">,</span> <span class="token number">165</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token string">'Böhm Fuchs'</span><span class="token punctuation">,</span> <span class="token number">318</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token string">'Han Meimei'</span><span class="token punctuation">,</span> <span class="token number">366</span><span class="token punctuation">]</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span>
+<span class="token keyword">const</span> pieOption <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">dataset</span><span class="token operator">:</span> <span class="token punctuation">[</span>dataset<span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'pie'</span><span class="token punctuation">,</span>
+      <span class="token comment">// 通过 id 关联需要过渡动画的系列</span>
+      <span class="token literal-property property">id</span><span class="token operator">:</span> <span class="token string">'Score'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">radius</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token string">'50%'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">universalTransition</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">animationDurationUpdate</span><span class="token operator">:</span> <span class="token number">1000</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span>
+<span class="token keyword">const</span> barOption <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">dataset</span><span class="token operator">:</span> <span class="token punctuation">[</span>dataset<span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'category'</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token comment">// 通过 id 关联需要过渡动画的系列</span>
+      <span class="token literal-property property">id</span><span class="token operator">:</span> <span class="token string">'Score'</span><span class="token punctuation">,</span>
+      <span class="token comment">// 每个数据都是用不同的颜色</span>
+      <span class="token literal-property property">colorBy</span><span class="token operator">:</span> <span class="token string">'data'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">encode</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token string">'name'</span><span class="token punctuation">,</span> <span class="token literal-property property">y</span><span class="token operator">:</span> <span class="token string">'score'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">universalTransition</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">animationDurationUpdate</span><span class="token operator">:</span> <span class="token number">1000</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span>
+
+option <span class="token operator">=</span> barOption<span class="token punctuation">;</span>
+
+<span class="token function">setInterval</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
+  option <span class="token operator">=</span> option <span class="token operator">===</span> pieOption <span class="token operator">?</span> barOption <span class="token operator">:</span> pieOption<span class="token punctuation">;</span>
+  <span class="token comment">// 使用 notMerge 的形式可以移除坐标轴</span>
+  myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span>option<span class="token punctuation">,</span> <span class="token boolean">true</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token number">2000</span><span class="token punctuation">)</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>更多的常见基础图表之间的过渡:</p> <p><img src alt data-src="images/5-2-0/universal-transition.gif"></p> <p>这样的动画过渡不再仅仅局限于基础的折、柱、饼中,在柱状图和地图之间:</p> <p><img src alt data-src="images/5-2-0/universal-transition-2.gif"></p> <p>或者旭日图和矩形树图之间,甚至非常灵活的自定义系列之间都可以进行动画的过渡。</p> <p><img src alt data-src="images/5-2-0/universal-transition-3.gif"></p> <blockquote><p>注意需要配置系列的 id 来保证需要动画过渡的系列之间能够一一对应。</p></blockquote> <blockquote><p>按需引入的代码需要单独引入该特性</p> <pre><code class="language-ts">import { UniversalTransition } from 'echarts/features';
+echarts.use([UniversalTransition]);
+</code></pre></blockquote> <h3 id="%E6%95%B0%E6%8D%AE%E7%9A%84%E5%88%86%E8%A3%82%E5%92%8C%E5%90%88%E5%B9%B6%E5%8A%A8%E7%94%BB" tabindex="-1">数据的分裂和合并动画</h3> <p>除了常见的数据值的更新,有时候我们还会碰到数据的聚合、下钻等交互后的更新,这个时候我们就不能直接应用一对一的动画过渡,而需要使用更多像分裂、合并这样的动画效果,来通过正确的图形动画表达出数据的变换。</p> <p>为了能够表达数据之间可能存在的多对多联系,在 5.2.0 中我们新引入了一个数据组<code>groupId</code>的概念,我们可以通过 <a href="https://echarts.apache.org/option.html#series-bar.dataGroupId">series.dataGroupId</a> 设置整个系列所属的组,或者更细粒度的通过 <a href="https://echarts.apache.org/option.html#series-bar.dataGroupId">series.data.groupId</a> 设置每个数据所属的组。如果你使用了<code>dataset</code>管理数据则更方便了,可以使用<code>encode.itemGroupId</code>来指定一个维度编码成<code>groupId</code>。</p> <p>比如我们要实现一个柱状图下钻的动画,可以将下钻后的整个系列的数据都设置同一个<code>groupId</code>,然后跟下钻前的数据对应起来:</p> <div class="md-live layout-lr"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    data: ['Animals', 'Fruits', 'Cars']
+  },
+  yAxis: {},
+  dataGroupId: '',
+  animationDurationUpdate: 500,
+  series: {
+    type: 'bar',
+    id: 'sales',
+    data: [
+      {
+        value: 5,
+        groupId: 'animals'
+      },
+      {
+        value: 2,
+        groupId: 'fruits'
+      },
+      {
+        value: 4,
+        groupId: 'cars'
+      }
+    ],
+    universalTransition: {
+      enabled: true,
+      divideShape: 'clone'
+    }
+  }
+};
+
+const drilldownData = [
+  {
+    dataGroupId: 'animals',
+    data: [
+      ['Cats', 4],
+      ['Dogs', 2],
+      ['Cows', 1],
+      ['Sheep', 2],
+      ['Pigs', 1]
+    ]
+  },
+  {
+    dataGroupId: 'fruits',
+    data: [
+      ['Apples', 4],
+      ['Oranges', 2]
+    ]
+  },
+  {
+    dataGroupId: 'cars',
+    data: [
+      ['Toyota', 4],
+      ['Opel', 2],
+      ['Volkswagen', 2]
+    ]
+  }
+];
+
+myChart.on('click', event => {
+  if (event.data) {
+    const subData = drilldownData.find(data => {
+      return data.dataGroupId === event.data.groupId;
+    });
+    if (!subData) {
+      return;
+    }
+    myChart.setOption({
+      xAxis: {
+        data: subData.data.map(item => {
+          return item[0];
+        })
+      },
+      series: {
+        type: 'bar',
+        id: 'sales',
+        dataGroupId: subData.dataGroupId,
+        data: subData.data.map(item => {
+          return item[1];
+        }),
+        universalTransition: {
+          enabled: true,
+          divideShape: 'clone'
+        }
+      },
+      graphic: [
+        {
+          type: 'text',
+          left: 50,
+          top: 20,
+          style: {
+            text: 'Back',
+            fontSize: 18
+          },
+          onclick: function() {
+            myChart.setOption(option, true);
+          }
+        }
+      ]
+    });
+  }
+});</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'Animals'</span><span class="token punctuation">,</span> <span class="token string">'Fruits'</span><span class="token punctuation">,</span> <span class="token string">'Cars'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">dataGroupId</span><span class="token operator">:</span> <span class="token string">''</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">animationDurationUpdate</span><span class="token operator">:</span> <span class="token number">500</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">id</span><span class="token operator">:</span> <span class="token string">'sales'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token punctuation">{</span>
+        <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">5</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">groupId</span><span class="token operator">:</span> <span class="token string">'animals'</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token punctuation">{</span>
+        <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">2</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">groupId</span><span class="token operator">:</span> <span class="token string">'fruits'</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token punctuation">{</span>
+        <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">4</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">groupId</span><span class="token operator">:</span> <span class="token string">'cars'</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">universalTransition</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">enabled</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">divideShape</span><span class="token operator">:</span> <span class="token string">'clone'</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span>
+
+<span class="token keyword">const</span> drilldownData <span class="token operator">=</span> <span class="token punctuation">[</span>
+  <span class="token punctuation">{</span>
+    <span class="token literal-property property">dataGroupId</span><span class="token operator">:</span> <span class="token string">'animals'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token punctuation">[</span><span class="token string">'Cats'</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token string">'Dogs'</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token string">'Cows'</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token string">'Sheep'</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token string">'Pigs'</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">]</span>
+    <span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token punctuation">{</span>
+    <span class="token literal-property property">dataGroupId</span><span class="token operator">:</span> <span class="token string">'fruits'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token punctuation">[</span><span class="token string">'Apples'</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token string">'Oranges'</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">]</span>
+    <span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token punctuation">{</span>
+    <span class="token literal-property property">dataGroupId</span><span class="token operator">:</span> <span class="token string">'cars'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token punctuation">[</span><span class="token string">'Toyota'</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token string">'Opel'</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token string">'Volkswagen'</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">]</span>
+    <span class="token punctuation">]</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">]</span><span class="token punctuation">;</span>
+
+myChart<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'click'</span><span class="token punctuation">,</span> <span class="token parameter">event</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
+  <span class="token keyword">if</span> <span class="token punctuation">(</span>event<span class="token punctuation">.</span>data<span class="token punctuation">)</span> <span class="token punctuation">{</span>
+    <span class="token keyword">const</span> subData <span class="token operator">=</span> drilldownData<span class="token punctuation">.</span><span class="token function">find</span><span class="token punctuation">(</span><span class="token parameter">data</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
+      <span class="token keyword">return</span> data<span class="token punctuation">.</span>dataGroupId <span class="token operator">===</span> event<span class="token punctuation">.</span>data<span class="token punctuation">.</span>groupId<span class="token punctuation">;</span>
+    <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+    <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>subData<span class="token punctuation">)</span> <span class="token punctuation">{</span>
+      <span class="token keyword">return</span><span class="token punctuation">;</span>
+    <span class="token punctuation">}</span>
+    myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+      <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">data</span><span class="token operator">:</span> subData<span class="token punctuation">.</span>data<span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span><span class="token parameter">item</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
+          <span class="token keyword">return</span> item<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
+        <span class="token punctuation">}</span><span class="token punctuation">)</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">id</span><span class="token operator">:</span> <span class="token string">'sales'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">dataGroupId</span><span class="token operator">:</span> subData<span class="token punctuation">.</span>dataGroupId<span class="token punctuation">,</span>
+        <span class="token literal-property property">data</span><span class="token operator">:</span> subData<span class="token punctuation">.</span>data<span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span><span class="token parameter">item</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
+          <span class="token keyword">return</span> item<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
+        <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">universalTransition</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+          <span class="token literal-property property">enabled</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">divideShape</span><span class="token operator">:</span> <span class="token string">'clone'</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">graphic</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'text'</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">left</span><span class="token operator">:</span> <span class="token number">50</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">top</span><span class="token operator">:</span> <span class="token number">20</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">style</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+            <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'Back'</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">fontSize</span><span class="token operator">:</span> <span class="token number">18</span>
+          <span class="token punctuation">}</span><span class="token punctuation">,</span>
+          <span class="token function-variable function">onclick</span><span class="token operator">:</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+            myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span>option<span class="token punctuation">,</span> <span class="token boolean">true</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+          <span class="token punctuation">}</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>通过<code>groupId</code>,我们还可以实现更丰富的聚合,下钻动画。</p> <p>数据的聚合:</p> <p><img src alt data-src="images/5-2-0/group-transition.gif"></p> <p>单系列下钻成两个系列:</p> <p><img src alt data-src="images/5-2-0/group-transition-2.gif"></p> <p>全局过渡动画使得数据的关系和演变的表达能力走上新的台阶,为你的可视化创作灵感插上翅膀。</p> <p>看到这里,我们知道你已经跃跃欲试了。但是别急,5.2.0 还有更多值得一看的新功能。</p> <h2 id="%E8%B0%83%E8%89%B2%E7%9B%98%E7%9A%84%E5%8F%96%E8%89%B2%E7%AD%96%E7%95%A5" tabindex="-1">调色盘的取色策略</h2> <p>在上面全局过渡动画的示例中,大家可能有注意到我们使用了一个之前版本没有的<code>colorBy</code>配置项,这个配置项也是我们这个版本新增加的一个特性,用来给系列配置不同粒度的调色盘取色。这个配置目前支持两种策略:</p> <ul><li><code>'series'</code> 按照系列分配调色盘中的颜色,同一系列中的所有数据都是用相同的颜色。</li> <li><code>'data'</code> 按照数据项分配调色盘中的颜色,每个数据项都使用不同的颜色。</li></ul> <p>在之前我们是按照系列的类型固定了这个策略,比如柱状图就是固定<code>'series'</code>的策略,而饼图则是固定<code>'data'</code>的策略。</p> <p>而现在新增这个配置项后,我们可以在柱状图中给每个数据项都分配不同的颜色:</p> <div class="md-live layout-lr"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    type: 'category',
+    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
+  },
+  yAxis: {
+    type: 'value'
+  },
+  series: [
+    {
+      data: [120, 200, 150, 80, 70, 110, 130],
+      type: 'bar',
+      colorBy: 'data'
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'category'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'Mon'</span><span class="token punctuation">,</span> <span class="token string">'Tue'</span><span class="token punctuation">,</span> <span class="token string">'Wed'</span><span class="token punctuation">,</span> <span class="token string">'Thu'</span><span class="token punctuation">,</span> <span class="token string">'Fri'</span><span class="token punctuation">,</span> <span class="token string">'Sat'</span><span class="token punctuation">,</span> <span class="token string">'Sun'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'value'</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">120</span><span class="token punctuation">,</span> <span class="token number">200</span><span class="token punctuation">,</span> <span class="token number">150</span><span class="token punctuation">,</span> <span class="token number">80</span><span class="token punctuation">,</span> <span class="token number">70</span><span class="token punctuation">,</span> <span class="token number">110</span><span class="token punctuation">,</span> <span class="token number">130</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">colorBy</span><span class="token operator">:</span> <span class="token string">'data'</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>或者在饼图中统一使用一个颜色:</p> <div class="md-live layout-lr"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  series: {
+    type: 'pie',
+    colorBy: 'series',
+    radius: [0, '50%'],
+    itemStyle: {
+      borderColor: '#fff',
+      borderWidth: 1
+    },
+    data: [
+      {
+        value: 335,
+        name: 'Direct Visit'
+      },
+      {
+        value: 234,
+        name: 'Union Ad'
+      },
+      {
+        value: 1548,
+        name: 'Search Engine'
+      }
+    ]
+  }
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'pie'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">colorBy</span><span class="token operator">:</span> <span class="token string">'series'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">radius</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token string">'50%'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">itemStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">borderColor</span><span class="token operator">:</span> <span class="token string">'#fff'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">borderWidth</span><span class="token operator">:</span> <span class="token number">1</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token punctuation">{</span>
+        <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">335</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Direct Visit'</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token punctuation">{</span>
+        <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">234</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Union Ad'</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token punctuation">{</span>
+        <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">1548</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Search Engine'</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">]</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>这一配置项可以让我们避免了去找调色盘颜色然后去一一设置的麻烦,可能在特定的场景需求中提供便捷。后续我们会对这个配置项做进一步的增强,提供更多的调色盘取色的策略。</p> <h2 id="%E6%9E%81%E5%9D%90%E6%A0%87%E6%9F%B1%E7%8A%B6%E5%9B%BE%E7%9A%84%E6%A0%87%E7%AD%BE" tabindex="-1">极坐标柱状图的标签</h2> <p>这个版本中我们实现了极坐标上的柱状图的标签,并且支持丰富的标签定位配置。下面是一个最常见的标签显示在端点的进度图:</p> <div class="md-live layout-lr"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  angleAxis: {
+    show: false,
+    max: 10
+  },
+  radiusAxis: {
+    show: false,
+    type: 'category',
+    data: ['AAA', 'BBB', 'CCC', 'DDD']
+  },
+  polar: {},
+  series: [
+    {
+      type: 'bar',
+      data: [3, 4, 5, 6],
+      colorBy: 'data',
+      roundCap: true,
+      label: {
+        show: true,
+        // 试试改成 'insideStart'
+        position: 'start',
+        formatter: '{b}'
+      },
+      coordinateSystem: 'polar'
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">angleAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">max</span><span class="token operator">:</span> <span class="token number">10</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">radiusAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'category'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'AAA'</span><span class="token punctuation">,</span> <span class="token string">'BBB'</span><span class="token punctuation">,</span> <span class="token string">'CCC'</span><span class="token punctuation">,</span> <span class="token string">'DDD'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">polar</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">6</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">colorBy</span><span class="token operator">:</span> <span class="token string">'data'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">roundCap</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+        <span class="token comment">// 试试改成 'insideStart'</span>
+        <span class="token literal-property property">position</span><span class="token operator">:</span> <span class="token string">'start'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">formatter</span><span class="token operator">:</span> <span class="token string">'{b}'</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">coordinateSystem</span><span class="token operator">:</span> <span class="token string">'polar'</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>更多标签位置的配置:</p> <p><img src alt data-src="images/5-2-0/polar-bar-label.jpg"></p> <p>这一灵活的标签位置配置项大大丰富了极坐标柱状图的表达能力,让文字清晰地匹配对应的数据。</p> <h2 id="%E7%A9%BA%E6%95%B0%E6%8D%AE%E7%9A%84%E9%A5%BC%E5%9B%BE%E6%A0%B7%E5%BC%8F" tabindex="-1">空数据的饼图样式</h2> <p>在之前的版本中,如果饼图没有数据,画面中可能就是完全空白的。因为没有任何的视觉元素,所以用户会疑惑是不是出现了 bug 导致图中没有内容。</p> <p>为了解决这个问题,这个版本我们会默认在无可显示数据的时候显示一个灰色的占位圆以防止画面中完全空白。我们可以通过<code>emptyCircleStyle</code>配置这个占位圆的样式。</p> <div class="md-live layout-lr"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  series: [
+    {
+      type: 'pie',
+      data: [],
+      // showEmptyCircle: false,
+      emptyCircleStyle: {
+        // 将样式改为空心圆
+        color: 'transparent',
+        borderColor: '#ddd',
+        borderWidth: 1
+      }
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'pie'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token comment">// showEmptyCircle: false,</span>
+      <span class="token literal-property property">emptyCircleStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token comment">// 将样式改为空心圆</span>
+        <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'transparent'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">borderColor</span><span class="token operator">:</span> <span class="token string">'#ddd'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">borderWidth</span><span class="token operator">:</span> <span class="token number">1</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>如果不想要显示这个灰色的圆,也可以设置<code>showEmptyCircle: false</code>关闭。</p> <h2 id="%E9%AB%98%E7%BB%B4%E6%95%B0%E6%8D%AE%E7%9A%84%E6%80%A7%E8%83%BD%E5%A2%9E%E5%BC%BA" tabindex="-1">高维数据的性能增强</h2> <p>我们从 4.0 开始引入了 <a href="https://echarts.apache.org/option.html#dataset">dataset</a> 用来管理图表的数据,通常情况下<code>dataset</code>提供了更方便的数据管理方式而且跟传统的方式不会有什么性能上的差别。但是在一些极端的特别高维(>100)数据的场景下,我们还是会碰到一些性能急剧下降的问题,比如下面这种通过一千个系列去可视化千维数据的场景(<a href="https://github.com/apache/echarts/issues/11907">#11907</a>),甚至可能会卡住。</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">const</span> indices <span class="token operator">=</span> Array<span class="token punctuation">.</span><span class="token function">from</span><span class="token punctuation">(</span><span class="token function">Array</span><span class="token punctuation">(</span><span class="token number">1000</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token parameter">_<span class="token punctuation">,</span> i</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
+  <span class="token keyword">return</span> <span class="token template-string"><span class="token template-punctuation string">`</span><span class="token string">index</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>i<span class="token interpolation-punctuation punctuation">}</span></span><span class="token template-punctuation string">`</span></span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token keyword">const</span> option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'category'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">dataset</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token comment">// dimension: ['date', ...indices],</span>
+    <span class="token literal-property property">source</span><span class="token operator">:</span> Array<span class="token punctuation">.</span><span class="token function">from</span><span class="token punctuation">(</span><span class="token function">Array</span><span class="token punctuation">(</span><span class="token number">10</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token parameter">_<span class="token punctuation">,</span> i</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
+      <span class="token keyword">return</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">date</span><span class="token operator">:</span> i<span class="token punctuation">,</span>
+        <span class="token operator">...</span>indices<span class="token punctuation">.</span><span class="token function">reduce</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token parameter">item<span class="token punctuation">,</span> next</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
+          item<span class="token punctuation">[</span>next<span class="token punctuation">]</span> <span class="token operator">=</span> Math<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">*</span> <span class="token number">100</span><span class="token punctuation">;</span>
+          <span class="token keyword">return</span> item<span class="token punctuation">;</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">)</span>
+      <span class="token punctuation">}</span><span class="token punctuation">;</span>
+    <span class="token punctuation">}</span><span class="token punctuation">)</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> indices<span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span><span class="token parameter">index</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
+    <span class="token keyword">return</span> <span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span><span class="token punctuation">,</span> <span class="token literal-property property">name</span><span class="token operator">:</span> index <span class="token punctuation">}</span><span class="token punctuation">;</span>
+  <span class="token punctuation">}</span><span class="token punctuation">)</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>产生这个性能问题是因为我们在底层每个系列都会按照其需要处理一遍这个 dataset,然后保存一份处理过后的数据以及维度等元信息。这意味着刚才那个例子中需要处理并保存<code>1000 x 1000</code>个维度的信息,这带来了巨大的内存和垃圾回收的压力,从而导致了高维度的性能的急剧下降。</p> <p>在新版本中我们对这个问题做了优化,所有系列都尽可能共享 dataset 的数据(能否共享取决于系列怎么使用这份数据)存储而非每个系列都处理并存储一次,并且只处理和存储了使用到的维度。这些优化保证了内存不会随着 dataset 维度和系列的增长而爆炸,大幅度的提升了极端场景下的初始化性能。刚才例子的渲染耗时也从卡住降低到了可接受的 300 毫秒以下。</p> <p>这次优化带来收益的还不只是这种高维的场景,在使用维度不高但是数据量很大的 dataset 的时候,因为数据的共享所以多个系列只处理了一遍数据,因此也可以带来显著的性能提升。</p> <h2 id="%E8%87%AA%E5%AE%9A%E4%B9%89%E7%B3%BB%E5%88%97%E7%9A%84%E7%B1%BB%E5%9E%8B%E4%BC%98%E5%8C%96" tabindex="-1">自定义系列的类型优化</h2> <p>自定义系列提供了非常灵活的创建系列图形的方式,相对于其它系列,自定义系列的学习曲线可能有些陡峭,而且容易出错。因此在这个版本中,我们进一步的优化了自定义系列中的核心方法<code>renderItem</code>的类型,对于<code>renderItem</code>的参数和返回值类型做了更精确的推断,从而可以根据返回的图形类型推断出可以设置该图形的哪些属性:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code>series <span class="token operator">=</span> <span class="token punctuation">{</span>
+  type<span class="token operator">:</span> <span class="token string">'custom'</span><span class="token punctuation">,</span>
+  <span class="token function">renderItem</span><span class="token punctuation">(</span>params<span class="token punctuation">)</span> <span class="token punctuation">{</span>
+    <span class="token keyword">return</span> <span class="token punctuation">{</span>
+      type<span class="token operator">:</span> <span class="token string">'group'</span><span class="token punctuation">,</span>
+      <span class="token comment">// group 类型使用 children 存储其它类型的子元素</span>
+      children<span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">{</span>
+          type<span class="token operator">:</span> <span class="token string">'circle'</span><span class="token punctuation">,</span>
+          <span class="token comment">// circle 拥有下面这些可以配置的 shape 属性</span>
+          shape<span class="token operator">:</span> <span class="token punctuation">{</span> r<span class="token operator">:</span> <span class="token number">10</span><span class="token punctuation">,</span> cx<span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span> cy<span class="token operator">:</span> <span class="token number">0</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+          <span class="token comment">// 可以配置的样式</span>
+          style<span class="token operator">:</span> <span class="token punctuation">{</span> fill<span class="token operator">:</span> <span class="token string">'red'</span> <span class="token punctuation">}</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span>
+          type<span class="token operator">:</span> <span class="token string">'rect'</span><span class="token punctuation">,</span>
+          <span class="token comment">// rect 拥有下面这些可以配置的 shape 属性</span>
+          shape<span class="token operator">:</span> <span class="token punctuation">{</span> x<span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span> y<span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span> width<span class="token operator">:</span> <span class="token number">100</span><span class="token punctuation">,</span> height<span class="token operator">:</span> <span class="token number">100</span> <span class="token punctuation">}</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span>
+          type<span class="token operator">:</span> <span class="token string">'path'</span><span class="token punctuation">,</span>
+          <span class="token comment">// 自定义路径图形</span>
+          shape<span class="token operator">:</span> <span class="token punctuation">{</span> d<span class="token operator">:</span> <span class="token string">'...'</span> <span class="token punctuation">}</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">;</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="%E5%B0%8F%E7%BB%93" tabindex="-1">小结</h2> <p>以上我们介绍了 5.2.0 中的新特性以及优化,如果你对其中的一些特性感兴趣,不妨更新到最新版本的 Apache ECharts 亲自体验一下。</p> <p>如果你对 Apache ECharts 接下来的计划感兴趣,也可以在 <a href="https://github.com/apache/echarts/milestones">GitHub Milestone</a> 关注我们的开发计划。也非常欢迎加入我们的贡献者行列(在 <a href="https://github.com/apache/echarts/wiki">Wiki</a> 中了解更多)。</p> <h2 id="%E5%AE%8C%E6%95%B4%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95" tabindex="-1">完整更新记录</h2> <p>查看<a href="https://echarts.apache.org//changelog.html#v5-2-0">版本更新</a></p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">本文贡献者</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/zh/basics/release-note/5-2-0.md" title="编辑本文" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">在 GitHub 上编辑本页</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a><a href="https://github.com/Ovilia" target="_blank" class="post-contributor has-avatar"><img alt="Ovilia" src="https://echarts.apache.org/en/images/people/羡辙.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>Ovilia</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(i,g,t,I,C,e,A,d,l,a,r,o,c,n,s,h,p,B,b,m,G,w,u,E,Z,H,J,W,K,X,y,R,v,Y,S,F,V,L,f,k,D,O,T,N,z,U,M,x,Q,j,P,q,_,$,ii,gi,ti,Ii,Ci,ei,Ai,di,li){return{layout:"default",data:[{html:'<h1 id="apache-echarts-5.2.0-%E7%89%B9%E6%80%A7%E4%BB%8B%E7%BB%8D" tabindex="-1">Apache ECharts 5.2.0 特性介绍</h1>\n<h2 id="%E5%85%A8%E5%B1%80%E8%BF%87%E6%B8%A1%E5%8A%A8%E7%94%BB" tabindex="-1">全局过渡动画</h2>\n<p>在 Apache ECharts 中我们一直把自然流畅的过渡动画作为一个重要特性。通过避免数据带来的突变,不仅仅可以改善视觉效果,更为表达数据的关联和演变提供了可能。因此,在 5.2.0 中,我们进一步将过渡动画从表现系列内部数据的变化,泛化到全局能力。接下来,我们会看到这种<strong>全局过渡动画 Universal Transition</strong>是如何为图表增加表现力和叙事能力的。</p>\n<p>在之前的版本中,过渡动画有一定的局限性:只能用于相同类型的图形的位置、尺寸、形状,而且只能作用在相同类型的系列上。比如,下面例子就是通过饼图中扇区形状的变化反映了数据分布的变化:</p>\n<md-live lang="js" code="\'ZnVuY3Rpb24gbWFrZVJhbmRvbURhdGEoKSB7CiAgcmV0dXJuIFsKICAgIHsKICAgICAgdmFsdWU6IE1hdGgucmFuZG9tKCksCiAgICAgIG5hbWU6ICdBJwogICAgfSwKICAgIHsKICAgICAgdmFsdWU6IE1hdGgucmFuZG9tKCksCiAgICAgIG5hbWU6ICdCJwogICAgfSwKICAgIHsKICAgICAgdmFsdWU6IE1hdGgucmFuZG9tKCksCiAgICAgIG5hbWU6ICdDJwogICAgfQogIF07Cn0Kb3B0aW9uID0gewogIHNlcmllczogWwogICAgewogICAgICB0eXBlOiAncGllJywKICAgICAgcmFkaXVzOiBbMCwgJzUwJSddLAogICAgICBkYXRhOiBtYWtlUmFuZG9tRGF0YSgpCiAgICB9CiAgXQp9OwoKc2V0SW50ZXJ2YWwoKCkgPT4gewogIG15Q2hhcnQuc2V0T3B0aW9uKHsKICAgIHNlcmllczogewogICAgICBkYXRhOiBtYWtlUmFuZG9tRGF0YSgpCiAgICB9CiAgfSk7Cn0sIDIwMDApOw\'" v-bind="{layout: \'lr\'}" />\n<p>而从 5.2.0 开始,我们引入了更强大的全局过渡动画能力,让过渡动画不再局限于相同类型的系列之间。现在,我们可以使用这种跨系列的形变,为任意类型的系列和任意类型的图形做形变动画。</p>\n<p>这会有多酷呢?我们一起来感受一下!</p>\n<h3 id="%E8%B7%A8%E7%B3%BB%E5%88%97%E7%9A%84%E5%BD%A2%E5%8F%98%E5%8A%A8%E7%94%BB" tabindex="-1">跨系列的形变动画</h3>\n<p>在设置<code>universalTransition: true</code>开启全局过渡动画后,从饼图切换成柱状图,或者从柱状图切换成散点图,甚至旭日图和矩形树图这类复杂的图表之间,都可以通过形变的方式自然的进行动画过渡。</p>\n<p>如下,饼图和柱状图之间的切换:</p>\n<md-live lang="js" code="\'Y29uc3QgZGF0YXNldCA9IHsKICBkaW1lbnNpb25zOiBbJ25hbWUnLCAnc2NvcmUnXSwKICBzb3VyY2U6IFsKICAgIFsnSGFubmFoIEtyYXVzZScsIDMxNF0sCiAgICBbJ1poYW8gUWlhbicsIDM1MV0sCiAgICBbJ0phc21pbiBLcmF1c2UgJywgMjg3XSwKICAgIFsnTGkgTGVpJywgMjE5XSwKICAgIFsnS2FybGUgTmV1bWFubicsIDI1M10sCiAgICBbJ01pYSBOZXVtYW5uJywgMTY1XSwKICAgIFsnQsO2aG0gRnVjaHMnLCAzMThdLAogICAgWydIYW4gTWVpbWVpJywgMzY2XQogIF0KfTsKY29uc3QgcGllT3B0aW9uID0gewogIGRhdGFzZXQ6IFtkYXRhc2V0XSwKICBzZXJpZXM6IFsKICAgIHsKICAgICAgdHlwZTogJ3BpZScsCiAgICAgIC8vIOmAmui_hyBpZCDlhbPogZTpnIDopoHov4fmuKHliqjnlLvnmoTns7vliJcKICAgICAgaWQ6ICdTY29yZScsCiAgICAgIHJhZGl1czogWzAsICc1MCUnXSwKICAgICAgdW5pdmVyc2FsVHJhbnNpdGlvbjogdHJ1ZSwKICAgICAgYW5pbWF0aW9uRHVyYXRpb25VcGRhdGU6IDEwMDAKICAgIH0KICBdCn07CmNvbnN0IGJhck9wdGlvbiA9IHsKICBkYXRhc2V0OiBbZGF0YXNldF0sCiAgeEF4aXM6IHsKICAgIHR5cGU6ICdjYXRlZ29yeScKICB9LAogIHlBeGlzOiB7fSwKICBzZXJpZXM6IFsKICAgIHsKICAgICAgdHlwZTogJ2JhcicsCiAgICAgIC8vIOmAmui_hyBpZCDlhbPogZTpnIDopoHov4fmuKHliqjnlLvnmoTns7vliJcKICAgICAgaWQ6ICdTY29yZScsCiAgICAgIC8vIOavj-S4quaVsOaNrumDveaYr-eUqOS4jeWQjOeahOminOiJsgogICAgICBjb2xvckJ5OiAnZGF0YScsCiAgICAgIGVuY29kZTogeyB4OiAnbmFtZScsIHk6ICdzY29yZScgfSwKICAgICAgdW5pdmVyc2FsVHJhbnNpdGlvbjogdHJ1ZSwKICAgICAgYW5pbWF0aW9uRHVyYXRpb25VcGRhdGU6IDEwMDAKICAgIH0KICBdCn07CgpvcHRpb24gPSBiYXJPcHRpb247CgpzZXRJbnRlcnZhbCgoKSA9PiB7CiAgb3B0aW9uID0gb3B0aW9uID09PSBwaWVPcHRpb24gPyBiYXJPcHRpb24gOiBwaWVPcHRpb247CiAgLy8g5L2_55SoIG5vdE1lcmdlIOeahOW9ouW8j-WPr-S7peenu-mZpOWdkOagh-i9tAogIG15Q2hhcnQuc2V0T3B0aW9uKG9wdGlvbiwgdHJ1ZSk7Cn0sIDIwMDApOw\'" v-bind="{layout: \'bt\'}" />\n<p>更多的常见基础图表之间的过渡:</p>\n<p><img src="" alt="" data-src="images/5-2-0/universal-transition.gif"></p>\n<p>这样的动画过渡不再仅仅局限于基础的折、柱、饼中,在柱状图和地图之间:</p>\n<p><img src="" alt="" data-src="images/5-2-0/universal-transition-2.gif"></p>\n<p>或者旭日图和矩形树图之间,甚至非常灵活的自定义系列之间都可以进行动画的过渡。</p>\n<p><img src="" alt="" data-src="images/5-2-0/universal-transition-3.gif"></p>\n<blockquote>\n<p>注意需要配置系列的 id 来保证需要动画过渡的系列之间能够一一对应。</p>\n</blockquote>\n<blockquote>\n<p>按需引入的代码需要单独引入该特性</p>\n<pre><code class="language-ts">import { UniversalTransition } from \'echarts/features\';\necharts.use([UniversalTransition]);\n</code></pre>\n</blockquote>\n<h3 id="%E6%95%B0%E6%8D%AE%E7%9A%84%E5%88%86%E8%A3%82%E5%92%8C%E5%90%88%E5%B9%B6%E5%8A%A8%E7%94%BB" tabindex="-1">数据的分裂和合并动画</h3>\n<p>除了常见的数据值的更新,有时候我们还会碰到数据的聚合、下钻等交互后的更新,这个时候我们就不能直接应用一对一的动画过渡,而需要使用更多像分裂、合并这样的动画效果,来通过正确的图形动画表达出数据的变换。</p>\n<p>为了能够表达数据之间可能存在的多对多联系,在 5.2.0 中我们新引入了一个数据组<code>groupId</code>的概念,我们可以通过 <a href="https://echarts.apache.org/option.html#series-bar.dataGroupId">series.dataGroupId</a> 设置整个系列所属的组,或者更细粒度的通过 <a href="https://echarts.apache.org/option.html#series-bar.dataGroupId">series.data.groupId</a> 设置每个数据所属的组。如果你使用了<code>dataset</code>管理数据则更方便了,可以使用<code>encode.itemGroupId</code>来指定一个维度编码成<code>groupId</code>。</p>\n<p>比如我们要实现一个柱状图下钻的动画,可以将下钻后的整个系列的数据都设置同一个<code>groupId</code>,然后跟下钻前的数据对应起来:</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBkYXRhOiBbJ0FuaW1hbHMnLCAnRnJ1aXRzJywgJ0NhcnMnXQogIH0sCiAgeUF4aXM6IHt9LAogIGRhdGFHcm91cElkOiAnJywKICBhbmltYXRpb25EdXJhdGlvblVwZGF0ZTogNTAwLAogIHNlcmllczogewogICAgdHlwZTogJ2JhcicsCiAgICBpZDogJ3NhbGVzJywKICAgIGRhdGE6IFsKICAgICAgewogICAgICAgIHZhbHVlOiA1LAogICAgICAgIGdyb3VwSWQ6ICdhbmltYWxzJwogICAgICB9LAogICAgICB7CiAgICAgICAgdmFsdWU6IDIsCiAgICAgICAgZ3JvdXBJZDogJ2ZydWl0cycKICAgICAgfSwKICAgICAgewogICAgICAgIHZhbHVlOiA0LAogICAgICAgIGdyb3VwSWQ6ICdjYXJzJwogICAgICB9CiAgICBdLAogICAgdW5pdmVyc2FsVHJhbnNpdGlvbjogewogICAgICBlbmFibGVkOiB0cnVlLAogICAgICBkaXZpZGVTaGFwZTogJ2Nsb25lJwogICAgfQogIH0KfTsKCmNvbnN0IGRyaWxsZG93bkRhdGEgPSBbCiAgewogICAgZGF0YUdyb3VwSWQ6ICdhbmltYWxzJywKICAgIGRhdGE6IFsKICAgICAgWydDYXRzJywgNF0sCiAgICAgIFsnRG9ncycsIDJdLAogICAgICBbJ0Nvd3MnLCAxXSwKICAgICAgWydTaGVlcCcsIDJdLAogICAgICBbJ1BpZ3MnLCAxXQogICAgXQogIH0sCiAgewogICAgZGF0YUdyb3VwSWQ6ICdmcnVpdHMnLAogICAgZGF0YTogWwogICAgICBbJ0FwcGxlcycsIDRdLAogICAgICBbJ09yYW5nZXMnLCAyXQogICAgXQogIH0sCiAgewogICAgZGF0YUdyb3VwSWQ6ICdjYXJzJywKICAgIGRhdGE6IFsKICAgICAgWydUb3lvdGEnLCA0XSwKICAgICAgWydPcGVsJywgMl0sCiAgICAgIFsnVm9sa3N3YWdlbicsIDJdCiAgICBdCiAgfQpdOwoKbXlDaGFydC5vbignY2xpY2snLCBldmVudCA9PiB7CiAgaWYgKGV2ZW50LmRhdGEpIHsKICAgIGNvbnN0IHN1YkRhdGEgPSBkcmlsbGRvd25EYXRhLmZpbmQoZGF0YSA9PiB7CiAgICAgIHJldHVybiBkYXRhLmRhdGFHcm91cElkID09PSBldmVudC5kYXRhLmdyb3VwSWQ7CiAgICB9KTsKICAgIGlmICghc3ViRGF0YSkgewogICAgICByZXR1cm47CiAgICB9CiAgICBteUNoYXJ0LnNldE9wdGlvbih7CiAgICAgIHhBeGlzOiB7CiAgICAgICAgZGF0YTogc3ViRGF0YS5kYXRhLm1hcChpdGVtID0-IHsKICAgICAgICAgIHJldHVybiBpdGVtWzBdOwogICAgICAgIH0pCiAgICAgIH0sCiAgICAgIHNlcmllczogewogICAgICAgIHR5cGU6ICdiYXInLAogICAgICAgIGlkOiAnc2FsZXMnLAogICAgICAgIGRhdGFHcm91cElkOiBzdWJEYXRhLmRhdGFHcm91cElkLAogICAgICAgIGRhdGE6IHN1YkRhdGEuZGF0YS5tYXAoaXRlbSA9PiB7CiAgICAgICAgICByZXR1cm4gaXRlbVsxXTsKICAgICAgICB9KSwKICAgICAgICB1bml2ZXJzYWxUcmFuc2l0aW9uOiB7CiAgICAgICAgICBlbmFibGVkOiB0cnVlLAogICAgICAgICAgZGl2aWRlU2hhcGU6ICdjbG9uZScKICAgICAgICB9CiAgICAgIH0sCiAgICAgIGdyYXBoaWM6IFsKICAgICAgICB7CiAgICAgICAgICB0eXBlOiAndGV4dCcsCiAgICAgICAgICBsZWZ0OiA1MCwKICAgICAgICAgIHRvcDogMjAsCiAgICAgICAgICBzdHlsZTogewogICAgICAgICAgICB0ZXh0OiAnQmFjaycsCiAgICAgICAgICAgIGZvbnRTaXplOiAxOAogICAgICAgICAgfSwKICAgICAgICAgIG9uY2xpY2s6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBteUNoYXJ0LnNldE9wdGlvbihvcHRpb24sIHRydWUpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXQogICAgfSk7CiAgfQp9KTs\'" v-bind="{layout: \'lr\'}" />\n<p>通过<code>groupId</code>,我们还可以实现更丰富的聚合,下钻动画。</p>\n<p>数据的聚合:</p>\n<p><img src="" alt="" data-src="images/5-2-0/group-transition.gif"></p>\n<p>单系列下钻成两个系列:</p>\n<p><img src="" alt="" data-src="images/5-2-0/group-transition-2.gif"></p>\n<p>全局过渡动画使得数据的关系和演变的表达能力走上新的台阶,为你的可视化创作灵感插上翅膀。</p>\n<p>看到这里,我们知道你已经跃跃欲试了。但是别急,5.2.0 还有更多值得一看的新功能。</p>\n<h2 id="%E8%B0%83%E8%89%B2%E7%9B%98%E7%9A%84%E5%8F%96%E8%89%B2%E7%AD%96%E7%95%A5" tabindex="-1">调色盘的取色策略</h2>\n<p>在上面全局过渡动画的示例中,大家可能有注意到我们使用了一个之前版本没有的<code>colorBy</code>配置项,这个配置项也是我们这个版本新增加的一个特性,用来给系列配置不同粒度的调色盘取色。这个配置目前支持两种策略:</p>\n<ul>\n<li><code>\'series\'</code> 按照系列分配调色盘中的颜色,同一系列中的所有数据都是用相同的颜色。</li>\n<li><code>\'data\'</code> 按照数据项分配调色盘中的颜色,每个数据项都使用不同的颜色。</li>\n</ul>\n<p>在之前我们是按照系列的类型固定了这个策略,比如柱状图就是固定<code>\'series\'</code>的策略,而饼图则是固定<code>\'data\'</code>的策略。</p>\n<p>而现在新增这个配置项后,我们可以在柱状图中给每个数据项都分配不同的颜色:</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICB0eXBlOiAnY2F0ZWdvcnknLAogICAgZGF0YTogWydNb24nLCAnVHVlJywgJ1dlZCcsICdUaHUnLCAnRnJpJywgJ1NhdCcsICdTdW4nXQogIH0sCiAgeUF4aXM6IHsKICAgIHR5cGU6ICd2YWx1ZScKICB9LAogIHNlcmllczogWwogICAgewogICAgICBkYXRhOiBbMTIwLCAyMDAsIDE1MCwgODAsIDcwLCAxMTAsIDEzMF0sCiAgICAgIHR5cGU6ICdiYXInLAogICAgICBjb2xvckJ5OiAnZGF0YScKICAgIH0KICBdCn07\'" v-bind="{layout: \'lr\'}" />\n<p>或者在饼图中统一使用一个颜色:</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHNlcmllczogewogICAgdHlwZTogJ3BpZScsCiAgICBjb2xvckJ5OiAnc2VyaWVzJywKICAgIHJhZGl1czogWzAsICc1MCUnXSwKICAgIGl0ZW1TdHlsZTogewogICAgICBib3JkZXJDb2xvcjogJyNmZmYnLAogICAgICBib3JkZXJXaWR0aDogMQogICAgfSwKICAgIGRhdGE6IFsKICAgICAgewogICAgICAgIHZhbHVlOiAzMzUsCiAgICAgICAgbmFtZTogJ0RpcmVjdCBWaXNpdCcKICAgICAgfSwKICAgICAgewogICAgICAgIHZhbHVlOiAyMzQsCiAgICAgICAgbmFtZTogJ1VuaW9uIEFkJwogICAgICB9LAogICAgICB7CiAgICAgICAgdmFsdWU6IDE1NDgsCiAgICAgICAgbmFtZTogJ1NlYXJjaCBFbmdpbmUnCiAgICAgIH0KICAgIF0KICB9Cn07\'" v-bind="{layout: \'lr\'}" />\n<p>这一配置项可以让我们避免了去找调色盘颜色然后去一一设置的麻烦,可能在特定的场景需求中提供便捷。后续我们会对这个配置项做进一步的增强,提供更多的调色盘取色的策略。</p>\n<h2 id="%E6%9E%81%E5%9D%90%E6%A0%87%E6%9F%B1%E7%8A%B6%E5%9B%BE%E7%9A%84%E6%A0%87%E7%AD%BE" tabindex="-1">极坐标柱状图的标签</h2>\n<p>这个版本中我们实现了极坐标上的柱状图的标签,并且支持丰富的标签定位配置。下面是一个最常见的标签显示在端点的进度图:</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIGFuZ2xlQXhpczogewogICAgc2hvdzogZmFsc2UsCiAgICBtYXg6IDEwCiAgfSwKICByYWRpdXNBeGlzOiB7CiAgICBzaG93OiBmYWxzZSwKICAgIHR5cGU6ICdjYXRlZ29yeScsCiAgICBkYXRhOiBbJ0FBQScsICdCQkInLCAnQ0NDJywgJ0RERCddCiAgfSwKICBwb2xhcjoge30sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIHR5cGU6ICdiYXInLAogICAgICBkYXRhOiBbMywgNCwgNSwgNl0sCiAgICAgIGNvbG9yQnk6ICdkYXRhJywKICAgICAgcm91bmRDYXA6IHRydWUsCiAgICAgIGxhYmVsOiB7CiAgICAgICAgc2hvdzogdHJ1ZSwKICAgICAgICAvLyDor5Xor5XmlLnmiJAgJ2luc2lkZVN0YXJ0JwogICAgICAgIHBvc2l0aW9uOiAnc3RhcnQnLAogICAgICAgIGZvcm1hdHRlcjogJ3tifScKICAgICAgfSwKICAgICAgY29vcmRpbmF0ZVN5c3RlbTogJ3BvbGFyJwogICAgfQogIF0KfTs\'" v-bind="{layout: \'lr\'}" />\n<p>更多标签位置的配置:</p>\n<p><img src="" alt="" data-src="images/5-2-0/polar-bar-label.jpg"></p>\n<p>这一灵活的标签位置配置项大大丰富了极坐标柱状图的表达能力,让文字清晰地匹配对应的数据。</p>\n<h2 id="%E7%A9%BA%E6%95%B0%E6%8D%AE%E7%9A%84%E9%A5%BC%E5%9B%BE%E6%A0%B7%E5%BC%8F" tabindex="-1">空数据的饼图样式</h2>\n<p>在之前的版本中,如果饼图没有数据,画面中可能就是完全空白的。因为没有任何的视觉元素,所以用户会疑惑是不是出现了 bug 导致图中没有内容。</p>\n<p>为了解决这个问题,这个版本我们会默认在无可显示数据的时候显示一个灰色的占位圆以防止画面中完全空白。我们可以通过<code>emptyCircleStyle</code>配置这个占位圆的样式。</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHNlcmllczogWwogICAgewogICAgICB0eXBlOiAncGllJywKICAgICAgZGF0YTogW10sCiAgICAgIC8vIHNob3dFbXB0eUNpcmNsZTogZmFsc2UsCiAgICAgIGVtcHR5Q2lyY2xlU3R5bGU6IHsKICAgICAgICAvLyDlsIbmoLflvI_mlLnkuLrnqbrlv4PlnIYKICAgICAgICBjb2xvcjogJ3RyYW5zcGFyZW50JywKICAgICAgICBib3JkZXJDb2xvcjogJyNkZGQnLAogICAgICAgIGJvcmRlcldpZHRoOiAxCiAgICAgIH0KICAgIH0KICBdCn07\'" v-bind="{layout: \'lr\'}" />\n<p>如果不想要显示这个灰色的圆,也可以设置<code>showEmptyCircle: false</code>关闭。</p>\n<h2 id="%E9%AB%98%E7%BB%B4%E6%95%B0%E6%8D%AE%E7%9A%84%E6%80%A7%E8%83%BD%E5%A2%9E%E5%BC%BA" tabindex="-1">高维数据的性能增强</h2>\n<p>我们从 4.0 开始引入了 <a href="https://echarts.apache.org/option.html#dataset">dataset</a> 用来管理图表的数据,通常情况下<code>dataset</code>提供了更方便的数据管理方式而且跟传统的方式不会有什么性能上的差别。但是在一些极端的特别高维(&gt;100)数据的场景下,我们还是会碰到一些性能急剧下降的问题,比如下面这种通过一千个系列去可视化千维数据的场景(<a href="https://github.com/apache/echarts/issues/11907">#11907</a>),甚至可能会卡住。</p>\n<md-code-block lang="js" code="\'Y29uc3QgaW5kaWNlcyA9IEFycmF5LmZyb20oQXJyYXkoMTAwMCksIChfLCBpKSA9PiB7CiAgcmV0dXJuIGBpbmRleCR7aX1gOwp9KTsKY29uc3Qgb3B0aW9uID0gewogIHhBeGlzOiB7IHR5cGU6ICdjYXRlZ29yeScgfSwKICB5QXhpczoge30sCiAgZGF0YXNldDogewogICAgLy8gZGltZW5zaW9uOiBbJ2RhdGUnLCAuLi5pbmRpY2VzXSwKICAgIHNvdXJjZTogQXJyYXkuZnJvbShBcnJheSgxMCksIChfLCBpKSA9PiB7CiAgICAgIHJldHVybiB7CiAgICAgICAgZGF0ZTogaSwKICAgICAgICAuLi5pbmRpY2VzLnJlZHVjZSgoaXRlbSwgbmV4dCkgPT4gewogICAgICAgICAgaXRlbVtuZXh0XSA9IE1hdGgucmFuZG9tKCkgKiAxMDA7CiAgICAgICAgICByZXR1cm4gaXRlbTsKICAgICAgICB9LCB7fSkKICAgICAgfTsKICAgIH0pCiAgfSwKICBzZXJpZXM6IGluZGljZXMubWFwKGluZGV4ID0-IHsKICAgIHJldHVybiB7IHR5cGU6ICdsaW5lJywgbmFtZTogaW5kZXggfTsKICB9KQp9Ow\'" line-highlights="\'\'" />\n<p>产生这个性能问题是因为我们在底层每个系列都会按照其需要处理一遍这个 dataset,然后保存一份处理过后的数据以及维度等元信息。这意味着刚才那个例子中需要处理并保存<code>1000 x 1000</code>个维度的信息,这带来了巨大的内存和垃圾回收的压力,从而导致了高维度的性能的急剧下降。</p>\n<p>在新版本中我们对这个问题做了优化,所有系列都尽可能共享 dataset 的数据(能否共享取决于系列怎么使用这份数据)存储而非每个系列都处理并存储一次,并且只处理和存储了使用到的维度。这些优化保证了内存不会随着 dataset 维度和系列的增长而爆炸,大幅度的提升了极端场景下的初始化性能。刚才例子的渲染耗时也从卡住降低到了可接受的 300 毫秒以下。</p>\n<p>这次优化带来收益的还不只是这种高维的场景,在使用维度不高但是数据量很大的 dataset 的时候,因为数据的共享所以多个系列只处理了一遍数据,因此也可以带来显著的性能提升。</p>\n<h2 id="%E8%87%AA%E5%AE%9A%E4%B9%89%E7%B3%BB%E5%88%97%E7%9A%84%E7%B1%BB%E5%9E%8B%E4%BC%98%E5%8C%96" tabindex="-1">自定义系列的类型优化</h2>\n<p>自定义系列提供了非常灵活的创建系列图形的方式,相对于其它系列,自定义系列的学习曲线可能有些陡峭,而且容易出错。因此在这个版本中,我们进一步的优化了自定义系列中的核心方法<code>renderItem</code>的类型,对于<code>renderItem</code>的参数和返回值类型做了更精确的推断,从而可以根据返回的图形类型推断出可以设置该图形的哪些属性:</p>\n<md-code-block lang="ts" code="\'c2VyaWVzID0gewogIHR5cGU6ICdjdXN0b20nLAogIHJlbmRlckl0ZW0ocGFyYW1zKSB7CiAgICByZXR1cm4gewogICAgICB0eXBlOiAnZ3JvdXAnLAogICAgICAvLyBncm91cCDnsbvlnovkvb_nlKggY2hpbGRyZW4g5a2Y5YKo5YW25a6D57G75Z6L55qE5a2Q5YWD57SgCiAgICAgIGNoaWxkcmVuOiBbCiAgICAgICAgewogICAgICAgICAgdHlwZTogJ2NpcmNsZScsCiAgICAgICAgICAvLyBjaXJjbGUg5oul5pyJ5LiL6Z2i6L-Z5Lqb5Y-v5Lul6YWN572u55qEIHNoYXBlIOWxnuaApwogICAgICAgICAgc2hhcGU6IHsgcjogMTAsIGN4OiAwLCBjeTogMCB9LAogICAgICAgICAgLy8g5Y-v5Lul6YWN572u55qE5qC35byPCiAgICAgICAgICBzdHlsZTogeyBmaWxsOiAncmVkJyB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICB0eXBlOiAncmVjdCcsCiAgICAgICAgICAvLyByZWN0IOaLpeacieS4i-mdoui_meS6m-WPr-S7pemFjee9rueahCBzaGFwZSDlsZ7mgKcKICAgICAgICAgIHNoYXBlOiB7IHg6IDAsIHk6IDAsIHdpZHRoOiAxMDAsIGhlaWdodDogMTAwIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgIHR5cGU6ICdwYXRoJywKICAgICAgICAgIC8vIOiHquWumuS5iei3r-W-hOWbvuW9ogogICAgICAgICAgc2hhcGU6IHsgZDogJy4uLicgfQogICAgICAgIH0KICAgICAgXQogICAgfTsKICB9Cn07\'" line-highlights="\'\'" />\n<h2 id="%E5%B0%8F%E7%BB%93" tabindex="-1">小结</h2>\n<p>以上我们介绍了 5.2.0 中的新特性以及优化,如果你对其中的一些特性感兴趣,不妨更新到最新版本的 Apache ECharts 亲自体验一下。</p>\n<p>如果你对 Apache ECharts 接下来的计划感兴趣,也可以在 <a href="https://github.com/apache/echarts/milestones">GitHub Milestone</a> 关注我们的开发计划。也非常欢迎加入我们的贡献者行列(在 <a href="https://github.com/apache/echarts/wiki">Wiki</a> 中了解更多)。</p>\n<h2 id="%E5%AE%8C%E6%95%B4%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95" tabindex="-1">完整更新记录</h2>\n<p>查看<a href="https://echarts.apache.org//changelog.html#v5-2-0">版本更新</a></p>\n',postPath:"zh/basics/release-note/5-2-0",title:"5.2 - 版本特性 - 入门篇"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:I},{title:"入门篇",dir:C,children:[{title:"获取 ECharts",dir:e},{title:"在项目中引入 ECharts",dir:A},{title:"资源列表",dir:d,draft:i},{title:"寻求帮助",dir:l},{title:"版本特性",dir:a,children:[{title:"ECharts 6 特性介绍",dir:r},{title:"v5 升级 v6 指南",dir:o},{title:"5.0",dir:c},{title:"v4 升级 v5 指南",dir:n},{title:5.2,dir:s},{title:5.3,dir:h},{title:5.4,dir:p},{title:5.5,dir:B},{title:5.6,dir:b}]}]},{title:"概念篇",dir:m,children:[{title:"图表容器及大小",dir:G},{title:"配置项",dir:w,draft:i},{title:"系列",dir:u,draft:i},{title:"样式",dir:E},{title:"数据集",dir:Z},{title:"数据转换",dir:H},{title:"坐标系",dir:J,draft:i},{title:"坐标轴",dir:W},{title:"视觉映射",dir:t},{title:"图例",dir:K},{title:"事件与行为",dir:X}]},{title:"应用篇",dir:y,children:[{title:"常用图表类型",dir:R,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:v},{title:"堆叠柱状图",dir:Y},{title:"动态排序柱状图",dir:S},{title:"极坐标系柱状图",dir:F,draft:i},{title:"阶梯瀑布图",dir:V},{title:"视觉映射的柱状图",dir:t,draft:i}]},{title:"折线图",dir:L,children:[{title:"基础折线图",dir:f},{title:"堆叠折线图",dir:k},{title:"区域面积图",dir:D},{title:"平滑曲线图",dir:O},{title:"阶梯线图",dir:T}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:N},{title:"圆环图",dir:z},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:U,children:[{title:"基础散点图",dir:M}]}]},{title:"常用组件",dir:x,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:Q}]}]},{title:"移动端优化",dir:g,draft:i},{title:"跨平台方案",dir:j,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:P},{title:"数据下钻",dir:q,draft:i}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:_}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:ii}]},{title:"交互",dir:gi,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:ti,draft:i},{title:"智能指针吸附",dir:Ii}]}]},{title:"最佳实践",dir:Ci,children:[{title:"移动端优化",dir:g,draft:i},{title:ei,dir:Ai},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:di}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:li}]}],en:[{title:"Get Started",dir:I},{title:"Basics",dir:C,children:[{title:"Download ECharts",dir:e},{title:"Import ECharts",dir:A},{title:"Resources",dir:d,draft:i},{title:"Get Help",dir:l},{title:"What's New",dir:a,children:[{title:"ECharts 6 Features",dir:r},{title:"Migration from v5 to v6",dir:o},{title:"5.0",dir:c},{title:"Migration from v4 to v5",dir:n},{title:5.2,dir:s},{title:5.3,dir:h},{title:5.4,dir:p},{title:5.5,dir:B},{title:5.6,dir:b}]}]},{title:"Concepts",dir:m,children:[{title:"Chart Container",dir:G},{title:"Chart Option",dir:w,draft:i},{title:"Series",dir:u,draft:i},{title:"Style",dir:E},{title:"Dataset",dir:Z},{title:"Data Transform",dir:H},{title:"Coordinate",dir:J,draft:i},{title:"Axis",dir:W},{title:"Visual Mapping",dir:t},{title:"Legend",dir:K},{title:"Event and Action",dir:X}]},{title:"How To Guides",dir:y,children:[{title:"Common Charts",dir:R,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:v},{title:"Stacked Bar",dir:Y},{title:"Bar Racing",dir:S},{title:"Bar Polar",dir:F,draft:i},{title:"Waterfall",dir:V}]},{title:"Line",dir:L,children:[{title:"Basic Line",dir:f},{title:"Stacked Line",dir:k},{title:"Area Chart",dir:D},{title:"Smoothed Line",dir:O},{title:"Step Line",dir:T}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:N},{title:"Ring Style",dir:z},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:U,children:[{title:"Basic Scatter",dir:M}]}]},{title:"Common Components",dir:x,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:Q}]}]},{title:"Mobile",dir:g,draft:i},{title:"Cross Platform",dir:j,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:P},{title:"Drilldown",dir:q,draft:i}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:_}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:ii}]},{title:"Interaction",dir:gi,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:ti,draft:i},{title:"Intelligent Pointer Snapping",dir:Ii}]}]},{title:"Best Practices",dir:Ci,children:[{title:"Mobile Optimization",dir:g,draft:i},{title:ei,dir:Ai},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:di}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:li}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:i,routePath:"/zh/basics/release-note/5-2-0",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/zh/basics/release-note/5-3-0/index.html b/docs/zh/basics/release-note/5-3-0/index.html
new file mode 100644
index 0000000..e9074ac
--- /dev/null
+++ b/docs/zh/basics/release-note/5-3-0/index.html
@@ -0,0 +1,849 @@
+<!doctype html>
+<html data-n-head-ssr lang="zh-CN" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh-CN%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>5.3 - 版本特性 - 入门篇 - 使用手册 - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="zh"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/zh/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/zh/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/zh/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/zh/index.html" class="navbar-brand"><img src="https://echarts.apache.org/zh/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/zh/index.html">首页</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">文档<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/feature.html">特性</a></li><li><a href="https://echarts.apache.org/handbook/zh/get-started/">使用手册</a></li><li><a href="https://echarts.apache.org/zh/api.html">API</a></li><li><a href="https://echarts.apache.org/zh/option.html">配置项手册</a></li><li><a href="https://echarts.apache.org/zh/changelog.html">版本记录</a></li><li><a href="https://echarts.apache.org/zh/faq.html">常见问题</a></li><li><a href="https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide">v6 升级指南</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">下载<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/download.html">下载</a></li><li><a href="https://echarts.apache.org/zh/download-theme.html">主题下载</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">自定义系列下载<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/download-extension.html">扩展下载</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/zh/index.html">示例</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">资源<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/spreadsheet.html">表格工具</a></li><li><a href="https://echarts.apache.org/zh/theme-builder.html">主题构建工具</a></li><li><a href="https://echarts.apache.org/zh/cheat-sheet.html">术语速查手册</a></li><li><a href="https://echarts.apache.org/zh/resources.html">更多资源</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">社区<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/events.html">活动</a></li><li><a href="https://echarts.apache.org/zh/committers.html">贡献者列表</a></li><li><a href="https://echarts.apache.org/zh/maillist.html">邮件列表</a></li><li><a href="https://echarts.apache.org/zh/contributing.html">如何贡献</a></li><li><a href="https://echarts.apache.org/zh/dependencies.html">依赖项</a></li><li><a href="https://echarts.apache.org/zh/coding-standard.html">代码规范</a></li><li><a href="https://github.com/apache/echarts" target="_blank">源码(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/security.html">安全</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">版权<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">活动<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">捐赠<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">鸣谢<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("en")'>EN</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/zh/get-started" class="nav-link"><span class="title">快速上手</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">入门篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/basics/download" class="nav-link"><span class="title">获取 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/import" class="nav-link"><span class="title">在项目中引入 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/basics/help" class="nav-link"><span class="title">寻求帮助</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">版本特性</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 特性介绍</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">v5 升级 v6 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">v4 升级 v5 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-3-0" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">概念篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/concepts/chart-size" class="nav-link"><span class="title">图表容器及大小</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/style" class="nav-link"><span class="title">样式</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/dataset" class="nav-link"><span class="title">数据集</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/data-transform" class="nav-link"><span class="title">数据转换</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/axis" class="nav-link"><span class="title">坐标轴</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/visual-map" class="nav-link"><span class="title">视觉映射</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/legend" class="nav-link"><span class="title">图例</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/event" class="nav-link"><span class="title">事件与行为</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">应用篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">常用图表类型</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">柱状图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">基础柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">堆叠柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">动态排序柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">阶梯瀑布图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">折线图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">基础折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">堆叠折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/area-line" class="nav-link"><span class="title">区域面积图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">平滑曲线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/step-line" class="nav-link"><span class="title">阶梯线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">饼图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">基础饼图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">圆环图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/rose" class="nav-link"><span class="title">南丁格尔图(玫瑰图)</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">散点图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">基础散点图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">常用组件</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">地理坐标系(Geo)</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG 底图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">跨平台方案</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/server" class="nav-link"><span class="title">服务端渲染</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/wechat-app" class="nav-link"><span class="title">微信小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/baidu-app" class="nav-link"><span class="title">百度智能小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">数据处理</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/data/dynamic-data" class="nav-link"><span class="title">动态的异步数据</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">标签</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/label/rich-text" class="nav-link"><span class="title">富文本标签</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">动画</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/animation/transition" class="nav-link"><span class="title">数据过渡动画</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">交互</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/drag" class="nav-link"><span class="title">拖拽的实现</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">智能指针吸附</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">最佳实践</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/aria" class="nav-link"><span class="title">无障碍访问</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/security" class="nav-link"><span class="title">安全指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">编辑本文档</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/meta/edit-guide" class="nav-link"><span class="title">文档编辑指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="apache-echarts-5.3.0-%E7%89%B9%E6%80%A7%E4%BB%8B%E7%BB%8D" tabindex="-1">Apache ECharts 5.3.0 特性介绍</h1> <p>Apache ECharts 5.3.0 在动画表达力、渲染性能、服务端渲染上做了大幅度的增强,同时也新增了多坐标轴刻度自动对齐、tooltip 数值格式化、地图投影等社区中期盼已久的特性。</p> <h2 id="%E5%85%B3%E9%94%AE%E5%B8%A7%E5%8A%A8%E7%94%BB" tabindex="-1">关键帧动画</h2> <p>在之前 ECharts 的动画集中在图形添加、更新以及移除的过渡动画上,过渡动画往往只有开始状态和结束状态。为了表达更复杂的动画效果,我们 5.3.0 中为<a href="https://echarts.apache.org/option.html#series-custom">自定义系列</a>和<a href="https://echarts.apache.org/option.html#graphic">图形组件</a>引入了全新的关键帧动画。</p> <p>下面是一个简单的通过关键帧动画实现的呼吸动画的效果。</p> <div class="md-live layout-lr"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  graphic: {
+    type: 'circle',
+    shape: { r: 100 },
+    left: 'center',
+    top: 'center',
+    keyframeAnimation: [
+      {
+        duration: 3000,
+        loop: true,
+        keyframes: [
+          {
+            percent: 0.5,
+            easing: 'sinusoidalInOut',
+            scaleX: 0.1,
+            scaleY: 0.1
+          },
+          {
+            percent: 1,
+            easing: 'sinusoidalInOut',
+            scaleX: 1,
+            scaleY: 1
+          }
+        ]
+      }
+    ]
+  }
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">graphic</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'circle'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">shape</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">r</span><span class="token operator">:</span> <span class="token number">100</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">left</span><span class="token operator">:</span> <span class="token string">'center'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">top</span><span class="token operator">:</span> <span class="token string">'center'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">keyframeAnimation</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token punctuation">{</span>
+        <span class="token literal-property property">duration</span><span class="token operator">:</span> <span class="token number">3000</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">loop</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">keyframes</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+          <span class="token punctuation">{</span>
+            <span class="token literal-property property">percent</span><span class="token operator">:</span> <span class="token number">0.5</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">easing</span><span class="token operator">:</span> <span class="token string">'sinusoidalInOut'</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">scaleX</span><span class="token operator">:</span> <span class="token number">0.1</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">scaleY</span><span class="token operator">:</span> <span class="token number">0.1</span>
+          <span class="token punctuation">}</span><span class="token punctuation">,</span>
+          <span class="token punctuation">{</span>
+            <span class="token literal-property property">percent</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">easing</span><span class="token operator">:</span> <span class="token string">'sinusoidalInOut'</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">scaleX</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">scaleY</span><span class="token operator">:</span> <span class="token number">1</span>
+          <span class="token punctuation">}</span>
+        <span class="token punctuation">]</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">]</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>在关键帧动画中,你可以配置动画时长、缓动、是否循环、每个关键帧的位置、缓动以及图形属性等。而且每个图形可以同时设置多个不同配置的关键帧动画。灵活的配置让我们可以实现非常复杂的动画效果,下面列举几个可以应用关键帧动画的场景。</p> <h3 id="%E8%87%AA%E5%AE%9A%E4%B9%89%E5%8A%A0%E8%BD%BD%E5%8A%A8%E7%94%BB" tabindex="-1">自定义加载动画</h3> <p>ECharts 默认内置了一个加载动画,可以调用<code>showLoading</code>显示。开发者经常会提需求需要更多的加载动画效果。现在有了关键帧动画后,我们可以通过图形(<a href="https://echarts.apache.org/option.html#graphic">graphic</a>)组件配合关键帧动画实现任何想要的加载动画效果。</p> <p>比如文本描边动画:</p> <div class="md-live layout-lr"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  graphic: {
+    elements: [
+      {
+        type: 'text',
+        left: 'center',
+        top: 'center',
+        style: {
+          text: 'Apache ECharts',
+          fontSize: 40,
+          fontWeight: 'bold',
+          lineDash: [0, 200],
+          lineDashOffset: 0,
+          fill: 'transparent',
+          stroke: '#000',
+          lineWidth: 1
+        },
+        keyframeAnimation: {
+          duration: 3000,
+          loop: true,
+          keyframes: [
+            {
+              percent: 0.7,
+              style: {
+                fill: 'transparent',
+                lineDashOffset: 200,
+                lineDash: [200, 0]
+              }
+            },
+            {
+              // Stop for a while.
+              percent: 0.8,
+              style: {
+                fill: 'transparent'
+              }
+            },
+            {
+              percent: 1,
+              style: {
+                fill: 'black'
+              }
+            }
+          ]
+        }
+      }
+    ]
+  }
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">graphic</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">elements</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token punctuation">{</span>
+        <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'text'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">left</span><span class="token operator">:</span> <span class="token string">'center'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">top</span><span class="token operator">:</span> <span class="token string">'center'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">style</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+          <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'Apache ECharts'</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">fontSize</span><span class="token operator">:</span> <span class="token number">40</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">fontWeight</span><span class="token operator">:</span> <span class="token string">'bold'</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">lineDash</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">200</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">lineDashOffset</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">fill</span><span class="token operator">:</span> <span class="token string">'transparent'</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">stroke</span><span class="token operator">:</span> <span class="token string">'#000'</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">lineWidth</span><span class="token operator">:</span> <span class="token number">1</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">keyframeAnimation</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+          <span class="token literal-property property">duration</span><span class="token operator">:</span> <span class="token number">3000</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">loop</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">keyframes</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+            <span class="token punctuation">{</span>
+              <span class="token literal-property property">percent</span><span class="token operator">:</span> <span class="token number">0.7</span><span class="token punctuation">,</span>
+              <span class="token literal-property property">style</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+                <span class="token literal-property property">fill</span><span class="token operator">:</span> <span class="token string">'transparent'</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">lineDashOffset</span><span class="token operator">:</span> <span class="token number">200</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">lineDash</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">200</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">]</span>
+              <span class="token punctuation">}</span>
+            <span class="token punctuation">}</span><span class="token punctuation">,</span>
+            <span class="token punctuation">{</span>
+              <span class="token comment">// Stop for a while.</span>
+              <span class="token literal-property property">percent</span><span class="token operator">:</span> <span class="token number">0.8</span><span class="token punctuation">,</span>
+              <span class="token literal-property property">style</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+                <span class="token literal-property property">fill</span><span class="token operator">:</span> <span class="token string">'transparent'</span>
+              <span class="token punctuation">}</span>
+            <span class="token punctuation">}</span><span class="token punctuation">,</span>
+            <span class="token punctuation">{</span>
+              <span class="token literal-property property">percent</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+              <span class="token literal-property property">style</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+                <span class="token literal-property property">fill</span><span class="token operator">:</span> <span class="token string">'black'</span>
+              <span class="token punctuation">}</span>
+            <span class="token punctuation">}</span>
+          <span class="token punctuation">]</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">]</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>或者柱状图形状的加载动画:</p> <div class="md-live layout-lr"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">const columns = [];
+for (let i = 0; i &lt; 7; i++) {
+  columns.push({
+    type: 'rect',
+    x: i * 20,
+    shape: {
+      x: 0,
+      y: -40,
+      width: 10,
+      height: 80
+    },
+    style: {
+      fill: '#5470c6'
+    },
+    keyframeAnimation: {
+      duration: 1000,
+      delay: i * 200,
+      loop: true,
+      keyframes: [
+        {
+          percent: 0.5,
+          scaleY: 0.1,
+          easing: 'cubicIn'
+        },
+        {
+          percent: 1,
+          scaleY: 1,
+          easing: 'cubicOut'
+        }
+      ]
+    }
+  });
+}
+option = {
+  graphic: {
+    elements: [
+      {
+        type: 'group',
+        left: 'center',
+        top: 'center',
+        children: columns
+      }
+    ]
+  }
+};</textarea><pre data-testid="preview" class="prism-editor__editor"><span class="token keyword">const</span> columns <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
+<span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">let</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator">&lt;</span> <span class="token number">7</span><span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  columns<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'rect'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">x</span><span class="token operator">:</span> i <span class="token operator">*</span> <span class="token number">20</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">shape</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">y</span><span class="token operator">:</span> <span class="token operator">-</span><span class="token number">40</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">width</span><span class="token operator">:</span> <span class="token number">10</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">height</span><span class="token operator">:</span> <span class="token number">80</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">style</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">fill</span><span class="token operator">:</span> <span class="token string">'#5470c6'</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">keyframeAnimation</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">duration</span><span class="token operator">:</span> <span class="token number">1000</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">delay</span><span class="token operator">:</span> i <span class="token operator">*</span> <span class="token number">200</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">loop</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">keyframes</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">percent</span><span class="token operator">:</span> <span class="token number">0.5</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">scaleY</span><span class="token operator">:</span> <span class="token number">0.1</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">easing</span><span class="token operator">:</span> <span class="token string">'cubicIn'</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">percent</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">scaleY</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">easing</span><span class="token operator">:</span> <span class="token string">'cubicOut'</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span>
+option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">graphic</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">elements</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token punctuation">{</span>
+        <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'group'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">left</span><span class="token operator">:</span> <span class="token string">'center'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">top</span><span class="token operator">:</span> <span class="token string">'center'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">children</span><span class="token operator">:</span> columns
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">]</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <h3 id="%E6%89%A9%E5%B1%95%E6%9B%B4%E4%B8%B0%E5%AF%8C%E7%9A%84%E6%95%A3%E7%82%B9%E5%9B%BE%E5%8A%A8%E7%94%BB%E7%89%B9%E6%95%88" tabindex="-1">扩展更丰富的散点图动画特效</h3> <p>带有特效动画的散点图一直以来是 ECharts 的特色功能。开发者可以使用 <a href="https://echarts.apache.org/option.html#series-effectScatter">effectScatter</a> 系列来实现带有涟漪特效的动态散点图,这种特效动画除了让作品更有趣,也起到了高亮提示用户的效果。跟加载动画一样,开发者也常常提出需要更多动画效果的需求。现在我们可以在自定义系列中通过使用关键帧动画来实现更复杂的特效。</p> <p>比如下面例子在 SVG 地图上给自定义系列绘制的图钉加上了跳动的动画效果,同时配上了涟漪动画。</p> <div class="md-live layout-lr"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" readonly class="prism-editor__textarea">fetch(
+  'https://echarts.apache.org/examples/data/asset/geo/Map_of_Iceland.svg'
+)
+  .then(response => response.text())
+  .then(svg => {
+    echarts.registerMap('iceland_svg', { svg: svg });
+    option = {
+      geo: {
+        map: 'iceland_svg',
+        left: 0,
+        right: 0
+      },
+      series: {
+        type: 'custom',
+        coordinateSystem: 'geo',
+        geoIndex: 0,
+        zlevel: 1,
+        data: [
+          [488, 459, 100],
+          [770, 757, 30],
+          [1180, 743, 80],
+          [894, 1188, 61],
+          [1372, 477, 70],
+          [1378, 935, 81]
+        ],
+        renderItem(params, api) {
+          const coord = api.coord([
+            api.value(0, params.dataIndex),
+            api.value(1, params.dataIndex)
+          ]);
+
+          const circles = [];
+          for (let i = 0; i &lt; 5; i++) {
+            circles.push({
+              type: 'circle',
+              shape: {
+                cx: 0,
+                cy: 0,
+                r: 30
+              },
+              style: {
+                stroke: 'red',
+                fill: 'none',
+                lineWidth: 2
+              },
+              // Ripple animation
+              keyframeAnimation: {
+                duration: 4000,
+                loop: true,
+                delay: (-i / 4) * 4000,
+                keyframes: [
+                  {
+                    percent: 0,
+                    scaleX: 0,
+                    scaleY: 0,
+                    style: {
+                      opacity: 1
+                    }
+                  },
+                  {
+                    percent: 1,
+                    scaleX: 1,
+                    scaleY: 0.4,
+                    style: {
+                      opacity: 0
+                    }
+                  }
+                ]
+              }
+            });
+          }
+          return {
+            type: 'group',
+            x: coord[0],
+            y: coord[1],
+            children: [
+              ...circles,
+              {
+                type: 'path',
+                shape: {
+                  d:
+                    'M16 0c-5.523 0-10 4.477-10 10 0 10 10 22 10 22s10-12 10-22c0-5.523-4.477-10-10-10zM16 16c-3.314 0-6-2.686-6-6s2.686-6 6-6 6 2.686 6 6-2.686 6-6 6z',
+                  x: -10,
+                  y: -35,
+                  width: 20,
+                  height: 40
+                },
+                style: {
+                  fill: 'red'
+                },
+                // Jump animation.
+                keyframeAnimation: {
+                  duration: 1000,
+                  loop: true,
+                  delay: Math.random() * 1000,
+                  keyframes: [
+                    {
+                      y: -10,
+                      percent: 0.5,
+                      easing: 'cubicOut'
+                    },
+                    {
+                      y: 0,
+                      percent: 1,
+                      easing: 'bounceOut'
+                    }
+                  ]
+                }
+              }
+            ]
+          };
+        }
+      }
+    };
+
+    myChart.setOption(option);
+  });</textarea><pre data-testid="preview" class="prism-editor__editor"><span class="token function">fetch</span><span class="token punctuation">(</span>
+  <span class="token string">'https://echarts.apache.org/examples/data/asset/geo/Map_of_Iceland.svg'</span>
+<span class="token punctuation">)</span>
+  <span class="token punctuation">.</span><span class="token function">then</span><span class="token punctuation">(</span><span class="token parameter">response</span> <span class="token operator">=></span> response<span class="token punctuation">.</span><span class="token function">text</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
+  <span class="token punctuation">.</span><span class="token function">then</span><span class="token punctuation">(</span><span class="token parameter">svg</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
+    echarts<span class="token punctuation">.</span><span class="token function">registerMap</span><span class="token punctuation">(</span><span class="token string">'iceland_svg'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token literal-property property">svg</span><span class="token operator">:</span> svg <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+    option <span class="token operator">=</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">geo</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">map</span><span class="token operator">:</span> <span class="token string">'iceland_svg'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">left</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">right</span><span class="token operator">:</span> <span class="token number">0</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'custom'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">coordinateSystem</span><span class="token operator">:</span> <span class="token string">'geo'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">geoIndex</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">zlevel</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+          <span class="token punctuation">[</span><span class="token number">488</span><span class="token punctuation">,</span> <span class="token number">459</span><span class="token punctuation">,</span> <span class="token number">100</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+          <span class="token punctuation">[</span><span class="token number">770</span><span class="token punctuation">,</span> <span class="token number">757</span><span class="token punctuation">,</span> <span class="token number">30</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+          <span class="token punctuation">[</span><span class="token number">1180</span><span class="token punctuation">,</span> <span class="token number">743</span><span class="token punctuation">,</span> <span class="token number">80</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+          <span class="token punctuation">[</span><span class="token number">894</span><span class="token punctuation">,</span> <span class="token number">1188</span><span class="token punctuation">,</span> <span class="token number">61</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+          <span class="token punctuation">[</span><span class="token number">1372</span><span class="token punctuation">,</span> <span class="token number">477</span><span class="token punctuation">,</span> <span class="token number">70</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+          <span class="token punctuation">[</span><span class="token number">1378</span><span class="token punctuation">,</span> <span class="token number">935</span><span class="token punctuation">,</span> <span class="token number">81</span><span class="token punctuation">]</span>
+        <span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token function">renderItem</span><span class="token punctuation">(</span><span class="token parameter">params<span class="token punctuation">,</span> api</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+          <span class="token keyword">const</span> coord <span class="token operator">=</span> api<span class="token punctuation">.</span><span class="token function">coord</span><span class="token punctuation">(</span><span class="token punctuation">[</span>
+            api<span class="token punctuation">.</span><span class="token function">value</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span> params<span class="token punctuation">.</span>dataIndex<span class="token punctuation">)</span><span class="token punctuation">,</span>
+            api<span class="token punctuation">.</span><span class="token function">value</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span> params<span class="token punctuation">.</span>dataIndex<span class="token punctuation">)</span>
+          <span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+          <span class="token keyword">const</span> circles <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
+          <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">let</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator">&lt;</span> <span class="token number">5</span><span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+            circles<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+              <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'circle'</span><span class="token punctuation">,</span>
+              <span class="token literal-property property">shape</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+                <span class="token literal-property property">cx</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">cy</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">r</span><span class="token operator">:</span> <span class="token number">30</span>
+              <span class="token punctuation">}</span><span class="token punctuation">,</span>
+              <span class="token literal-property property">style</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+                <span class="token literal-property property">stroke</span><span class="token operator">:</span> <span class="token string">'red'</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">fill</span><span class="token operator">:</span> <span class="token string">'none'</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">lineWidth</span><span class="token operator">:</span> <span class="token number">2</span>
+              <span class="token punctuation">}</span><span class="token punctuation">,</span>
+              <span class="token comment">// Ripple animation</span>
+              <span class="token literal-property property">keyframeAnimation</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+                <span class="token literal-property property">duration</span><span class="token operator">:</span> <span class="token number">4000</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">loop</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">delay</span><span class="token operator">:</span> <span class="token punctuation">(</span><span class="token operator">-</span>i <span class="token operator">/</span> <span class="token number">4</span><span class="token punctuation">)</span> <span class="token operator">*</span> <span class="token number">4000</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">keyframes</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+                  <span class="token punctuation">{</span>
+                    <span class="token literal-property property">percent</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+                    <span class="token literal-property property">scaleX</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+                    <span class="token literal-property property">scaleY</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+                    <span class="token literal-property property">style</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+                      <span class="token literal-property property">opacity</span><span class="token operator">:</span> <span class="token number">1</span>
+                    <span class="token punctuation">}</span>
+                  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+                  <span class="token punctuation">{</span>
+                    <span class="token literal-property property">percent</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+                    <span class="token literal-property property">scaleX</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+                    <span class="token literal-property property">scaleY</span><span class="token operator">:</span> <span class="token number">0.4</span><span class="token punctuation">,</span>
+                    <span class="token literal-property property">style</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+                      <span class="token literal-property property">opacity</span><span class="token operator">:</span> <span class="token number">0</span>
+                    <span class="token punctuation">}</span>
+                  <span class="token punctuation">}</span>
+                <span class="token punctuation">]</span>
+              <span class="token punctuation">}</span>
+            <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+          <span class="token punctuation">}</span>
+          <span class="token keyword">return</span> <span class="token punctuation">{</span>
+            <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'group'</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">x</span><span class="token operator">:</span> coord<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">y</span><span class="token operator">:</span> coord<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">children</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+              <span class="token operator">...</span>circles<span class="token punctuation">,</span>
+              <span class="token punctuation">{</span>
+                <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'path'</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">shape</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+                  <span class="token literal-property property">d</span><span class="token operator">:</span>
+                    <span class="token string">'M16 0c-5.523 0-10 4.477-10 10 0 10 10 22 10 22s10-12 10-22c0-5.523-4.477-10-10-10zM16 16c-3.314 0-6-2.686-6-6s2.686-6 6-6 6 2.686 6 6-2.686 6-6 6z'</span><span class="token punctuation">,</span>
+                  <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token operator">-</span><span class="token number">10</span><span class="token punctuation">,</span>
+                  <span class="token literal-property property">y</span><span class="token operator">:</span> <span class="token operator">-</span><span class="token number">35</span><span class="token punctuation">,</span>
+                  <span class="token literal-property property">width</span><span class="token operator">:</span> <span class="token number">20</span><span class="token punctuation">,</span>
+                  <span class="token literal-property property">height</span><span class="token operator">:</span> <span class="token number">40</span>
+                <span class="token punctuation">}</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">style</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+                  <span class="token literal-property property">fill</span><span class="token operator">:</span> <span class="token string">'red'</span>
+                <span class="token punctuation">}</span><span class="token punctuation">,</span>
+                <span class="token comment">// Jump animation.</span>
+                <span class="token literal-property property">keyframeAnimation</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+                  <span class="token literal-property property">duration</span><span class="token operator">:</span> <span class="token number">1000</span><span class="token punctuation">,</span>
+                  <span class="token literal-property property">loop</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+                  <span class="token literal-property property">delay</span><span class="token operator">:</span> Math<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">*</span> <span class="token number">1000</span><span class="token punctuation">,</span>
+                  <span class="token literal-property property">keyframes</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+                    <span class="token punctuation">{</span>
+                      <span class="token literal-property property">y</span><span class="token operator">:</span> <span class="token operator">-</span><span class="token number">10</span><span class="token punctuation">,</span>
+                      <span class="token literal-property property">percent</span><span class="token operator">:</span> <span class="token number">0.5</span><span class="token punctuation">,</span>
+                      <span class="token literal-property property">easing</span><span class="token operator">:</span> <span class="token string">'cubicOut'</span>
+                    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+                    <span class="token punctuation">{</span>
+                      <span class="token literal-property property">y</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+                      <span class="token literal-property property">percent</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+                      <span class="token literal-property property">easing</span><span class="token operator">:</span> <span class="token string">'bounceOut'</span>
+                    <span class="token punctuation">}</span>
+                  <span class="token punctuation">]</span>
+                <span class="token punctuation">}</span>
+              <span class="token punctuation">}</span>
+            <span class="token punctuation">]</span>
+          <span class="token punctuation">}</span><span class="token punctuation">;</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span><span class="token punctuation">;</span>
+
+    myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span>option<span class="token punctuation">)</span><span class="token punctuation">;</span>
+  <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <h3 id="%E5%8A%A0%E8%BD%BD-lottie-%E5%8A%A8%E7%94%BB" tabindex="-1">加载 Lottie 动画</h3> <p>为了充分发掘出新的关键帧动画的能力,ECharts 团队的沈毅写了一个 <a href="https://github.com/pissang/lottie-parser">Lottie 动画的解析库</a>,可以将 Lottie 动画文件解析成 ECharts 的图形格式进行渲染。结合 Lottie 的表达力我们可以进一步的在我们的项目中绘制出细腻的动画。</p> <h2 id="%E5%9B%BE%E5%BD%A2%E7%BB%84%E4%BB%B6%E8%BF%87%E6%B8%A1%E5%8A%A8%E7%94%BB" tabindex="-1">图形组件过渡动画</h2> <p>我们在 5.0 里为自定义系列中返回的图形提供了更灵活的过渡动画配置。可以通过<code>transition</code>, <code>enterFrom</code>, <code>leaveTo</code>三个配置项来配置每个图形哪些属性会拥有过渡动画,当图形创建和被移除的时候该执行怎么样的动画。例如:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">function</span> <span class="token function">renderItem</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  <span class="token comment">//...</span>
+  <span class="token keyword">return</span> <span class="token punctuation">{</span>
+    <span class="token comment">//...</span>
+    <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token number">100</span><span class="token punctuation">,</span>
+    <span class="token comment">// 'style', 'x', 'y' 会被动画</span>
+    <span class="token literal-property property">transition</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'style'</span><span class="token punctuation">,</span> <span class="token string">'x'</span><span class="token punctuation">,</span> <span class="token string">'y'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">enterFrom</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">style</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token comment">// 淡入</span>
+        <span class="token literal-property property">opacity</span><span class="token operator">:</span> <span class="token number">0</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token comment">//从左侧飞入</span>
+      <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token number">0</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">leaveTo</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token comment">// 淡出</span>
+      <span class="token literal-property property">opacity</span><span class="token operator">:</span> <span class="token number">0</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token comment">// 向右侧飞出</span>
+    <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token number">200</span>
+  <span class="token punctuation">}</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>在 5.3.0 中我们把这些过渡动画的配置扩展到了图形(graphic)组件中,并且做了更多的增强:</p> <p>如果你不想一一写出每个要动画的属性,现在你可以直接配置<code>transition: 'all'</code>为所有属性都加上动画过渡。</p> <p>与此同时我们还新增了<code>enterAnimation</code>、<code>updateAnimation</code>、<code>leaveAnimation</code>分别配置每个图形入场、更新、出场动画的时长(duration)、延迟(delay)和缓动(easing)。除此之外,渐变色现在也支持动画了。</p> <h2 id="%E5%85%A8%E6%96%B0%E7%9A%84-svg-%E6%B8%B2%E6%9F%93%E5%99%A8" tabindex="-1">全新的 SVG 渲染器</h2> <p>在 5.3.0 中我们重构了我们的 SVG 渲染器,新的 SVG 渲染器能够带来 2x ~ 10x 的性能提升,在某些特殊场景中甚至能有数十倍的提升。</p> <p>之前的 SVG 渲染器我们直接从渲染队列更新到 DOM。但是因为 zrender 的图形属性跟 DOM 并不是一一对应的,因此中间需要实现非常复杂的 Diff 逻辑,容易出错而且在某些场景下性能并不能做到最好。在这个版本我们重构成先全量渲染到 VDOM,然后再将 VDOM patch 到 DOM 完成渲染。全量渲染可以避免复杂的 Diff 逻辑带来的潜在 Bug。而 VDOM 和 DOM 的一一对应可以保证在 patch 的时候保证更新是最少的,从而带来巨大的性能提升。</p> <p><a href="https://echarts.apache.org/examples/zh/editor.html?c=geo-svg-scatter-simple&renderer=svg">这个例子</a> 可以给大家带来比较直观的性能提升的感受。新的版本在 SVG 模式下拖动的交互上比之前版本流畅非常多。</p> <table><thead><tr><th style="text-align:center">5.2.2 (Before)</th> <th style="text-align:center">5.3.0 (After)</th></tr></thead> <tbody><tr><td style="text-align:center"><img src alt="before" data-src="images/5-3-0/svg-before.gif"></td> <td style="text-align:center"><img src alt="after" data-src="images/5-3-0/svg-after.gif"></td></tr></tbody></table> <p>除了性能的提升,我们还可以使用中间全量渲染得到的 VDom 做更多的事情,比如下面会介绍的服务端渲染。</p> <h2 id="%E9%9B%B6%E4%BE%9D%E8%B5%96%E7%9A%84%E6%9C%8D%E5%8A%A1%E7%AB%AF%E6%B8%B2%E6%9F%93" tabindex="-1">零依赖的服务端渲染</h2> <p>在之前的版本 ECharts 也可以实现服务端的渲染,但是必须得依赖 <a href="https://github.com/Automattic/node-canvas">node-canvas</a>,如果是使用 SVG 模式则需要依赖 <a href="https://github.com/jsdom/jsdom">JSDOM</a> 来模拟 DOM 环境。这些依赖一是带来了额外的体积和使用要求,二是也会有更多的性能损耗。</p> <p>这次新的 SVG 渲染器可以让我们从中间的 VDOM 渲染得到字符串,带来了完全零依赖的服务端渲染,输出更精简并且带有 CSS 动画的 SVG 字符串。</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code><span class="token keyword">const</span> echarts <span class="token operator">=</span> <span class="token keyword">require</span><span class="token punctuation">(</span><span class="token string">'echarts'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+<span class="token comment">// 在 SSR 模式下第一个参数不需要再传入 DOM 对象</span>
+<span class="token keyword">const</span> chart <span class="token operator">=</span> echarts<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span><span class="token keyword">null</span><span class="token punctuation">,</span> <span class="token keyword">null</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
+  renderer<span class="token operator">:</span> <span class="token string">'svg'</span><span class="token punctuation">,</span> <span class="token comment">// 必须使用 SVG 模式</span>
+  ssr<span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span> <span class="token comment">// 开启 SSR</span>
+  width<span class="token operator">:</span> <span class="token number">400</span><span class="token punctuation">,</span> <span class="token comment">// 需要指明高和宽</span>
+  height<span class="token operator">:</span> <span class="token number">300</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+<span class="token comment">// 像正常使用一样 setOption</span>
+chart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+  xAxis<span class="token operator">:</span> <span class="token punctuation">{</span>
+    type<span class="token operator">:</span> <span class="token string">'category'</span><span class="token punctuation">,</span>
+    data<span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'Mon'</span><span class="token punctuation">,</span> <span class="token string">'Tue'</span><span class="token punctuation">,</span> <span class="token string">'Wed'</span><span class="token punctuation">,</span> <span class="token string">'Thu'</span><span class="token punctuation">,</span> <span class="token string">'Fri'</span><span class="token punctuation">,</span> <span class="token string">'Sat'</span><span class="token punctuation">,</span> <span class="token string">'Sun'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  yAxis<span class="token operator">:</span> <span class="token punctuation">{</span>
+    type<span class="token operator">:</span> <span class="token string">'value'</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  series<span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      data<span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">120</span><span class="token punctuation">,</span> <span class="token number">200</span><span class="token punctuation">,</span> <span class="token number">150</span><span class="token punctuation">,</span> <span class="token number">80</span><span class="token punctuation">,</span> <span class="token number">70</span><span class="token punctuation">,</span> <span class="token number">110</span><span class="token punctuation">,</span> <span class="token number">130</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      type<span class="token operator">:</span> <span class="token string">'bar'</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+<span class="token comment">// 输出字符串</span>
+<span class="token keyword">const</span> svgStr <span class="token operator">=</span> chart<span class="token punctuation">.</span><span class="token function">renderToSVGString</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>在此基础上,我们优化了输出的 SVG 字符串,使其在诸如 PowerPoint 等更多的平台上有更好的显示效果。</p> <h2 id="%E8%87%AA%E5%AE%9A%E4%B9%89%E5%9C%B0%E5%9B%BE%E6%8A%95%E5%BD%B1" tabindex="-1">自定义地图投影</h2> <p>地图一直是 ECharts 中使用非常广泛的组件。一般地图组件会使用存储了经纬度的 GeoJSON 格式的数据。而 ECharts 则计算出合适的显示区域然后把经纬度线性映射到这个区域。这是一种最简单的地图投影方式。但是简单的线性投影并无法满足某些复杂的地图场景,例如使用 <a href="https://en.wikipedia.org/wiki/Albers_projection">Albers</a> 投影解决线性投影中面积失真的问题,或者在世界地图中让太平洋显示在中间等等。</p> <p>因此在 5.3.0 里中我们引入了自定义的地图投影,可以通过<code>project</code>和<code>unproject</code>两个方法告诉 ECharts 如何投影坐标,以及如何根据投影后坐标计算经纬度。下面是简单的使用墨卡托投影的例子:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code>series <span class="token operator">=</span> <span class="token punctuation">{</span>
+  type<span class="token operator">:</span> <span class="token string">'map'</span><span class="token punctuation">,</span>
+  projection<span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token function-variable function">project</span><span class="token operator">:</span> point <span class="token operator">=></span> <span class="token punctuation">[</span>
+      <span class="token punctuation">(</span>point<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token operator">/</span> <span class="token number">180</span><span class="token punctuation">)</span> <span class="token operator">*</span> Math<span class="token punctuation">.</span><span class="token constant">PI</span><span class="token punctuation">,</span>
+      <span class="token operator">-</span>Math<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>Math<span class="token punctuation">.</span><span class="token function">tan</span><span class="token punctuation">(</span><span class="token punctuation">(</span>Math<span class="token punctuation">.</span><span class="token constant">PI</span> <span class="token operator">/</span> <span class="token number">2</span> <span class="token operator">+</span> <span class="token punctuation">(</span>point<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span> <span class="token operator">/</span> <span class="token number">180</span><span class="token punctuation">)</span> <span class="token operator">*</span> Math<span class="token punctuation">.</span><span class="token constant">PI</span><span class="token punctuation">)</span> <span class="token operator">/</span> <span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
+    <span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token function-variable function">unproject</span><span class="token operator">:</span> point <span class="token operator">=></span> <span class="token punctuation">[</span>
+      <span class="token punctuation">(</span>point<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token operator">*</span> <span class="token number">180</span><span class="token punctuation">)</span> <span class="token operator">/</span> Math<span class="token punctuation">.</span><span class="token constant">PI</span><span class="token punctuation">,</span>
+      <span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token number">2</span> <span class="token operator">*</span> <span class="token number">180</span><span class="token punctuation">)</span> <span class="token operator">/</span> Math<span class="token punctuation">.</span><span class="token constant">PI</span><span class="token punctuation">)</span> <span class="token operator">*</span> Math<span class="token punctuation">.</span><span class="token function">atan</span><span class="token punctuation">(</span>Math<span class="token punctuation">.</span><span class="token function">exp</span><span class="token punctuation">(</span>point<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token number">90</span>
+    <span class="token punctuation">]</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>除了我们自己实现投影公式,我们也可以使用 <a href="https://github.com/d3/d3-geo">d3-geo</a> 等第三方库提供的现成的投影实现:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code><span class="token keyword">const</span> projection <span class="token operator">=</span> d3<span class="token punctuation">.</span><span class="token function">geoConicEqualArea</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token comment">// ...</span>
+series <span class="token operator">=</span> <span class="token punctuation">{</span>
+  type<span class="token operator">:</span> <span class="token string">'map'</span><span class="token punctuation">,</span>
+  projection<span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token function-variable function">project</span><span class="token operator">:</span> point <span class="token operator">=></span> <span class="token function">projection</span><span class="token punctuation">(</span>point<span class="token punctuation">)</span><span class="token punctuation">,</span>
+    <span class="token function-variable function">unproject</span><span class="token operator">:</span> point <span class="token operator">=></span> projection<span class="token punctuation">.</span><span class="token function">invert</span><span class="token punctuation">(</span>point<span class="token punctuation">)</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>配合在 5.2 里新增的全局过渡动画特性,我们可以实现不同投影效果之间的动画过渡:</p> <p><img src alt="地图投影动画" data-src="images/5-3-0/map-projection.gif"></p> <p>除了地图的投影之外,我们在这个版本对于地图还做了下面两个增强:</p> <ul><li>对 GeoJSON 数据提供了<code>'LineString'</code>和<code>'MultiLineString'</code>的支持。</li> <li>将默认标签位置的计算从包围盒中心改为最大区域的重心坐标,计算结果更加准确。</li></ul> <h2 id="%E5%A4%9A%E5%9D%90%E6%A0%87%E8%BD%B4%E7%9A%84%E5%88%BB%E5%BA%A6%E5%AF%B9%E9%BD%90" tabindex="-1">多坐标轴的刻度对齐</h2> <p>多坐标轴的刻度对齐是社区中提了很久的一个需求,我们在网上也可以看到很多开发者写的如何在 ECharts 中实现坐标轴对齐的文章,通常都会比较麻烦而且会有比较多的局限性。</p> <p>在 5.3.0 中我们终于引入了数值轴坐标轴刻度对齐的功能。可以在需要对齐刻度的坐标轴中配置<code>alignTicks: true</code>。该坐标轴就会根据第一个坐标轴的刻度划分去调整自己的刻度,实现自动对齐。</p> <div class="md-live layout-bt"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  tooltip: {
+    trigger: 'axis'
+  },
+  legend: {},
+  xAxis: [
+    {
+      type: 'category',
+      data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
+      axisPointer: {
+        type: 'shadow'
+      }
+    }
+  ],
+  yAxis: [
+    {
+      type: 'value',
+      name: 'Precipitation',
+      alignTicks: true,
+      axisLabel: {
+        formatter: '{value} ml'
+      }
+    },
+    {
+      type: 'value',
+      name: 'Temperature',
+      axisLabel: {
+        formatter: '{value} °C'
+      }
+    }
+  ],
+  series: [
+    {
+      name: 'Evaporation',
+      type: 'bar',
+      // prettier-ignore
+      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: 'Precipitation',
+      type: 'bar',
+      // prettier-ignore
+      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: 'Temperature',
+      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]
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">tooltip</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">trigger</span><span class="token operator">:</span> <span class="token string">'axis'</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">legend</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'category'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'Mon'</span><span class="token punctuation">,</span> <span class="token string">'Tue'</span><span class="token punctuation">,</span> <span class="token string">'Wed'</span><span class="token punctuation">,</span> <span class="token string">'Thu'</span><span class="token punctuation">,</span> <span class="token string">'Fri'</span><span class="token punctuation">,</span> <span class="token string">'Sat'</span><span class="token punctuation">,</span> <span class="token string">'Sun'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">axisPointer</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'shadow'</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'value'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Precipitation'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">alignTicks</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">axisLabel</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">formatter</span><span class="token operator">:</span> <span class="token string">'{value} ml'</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'value'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Temperature'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">axisLabel</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">formatter</span><span class="token operator">:</span> <span class="token string">'{value} °C'</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Evaporation'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token comment">// prettier-ignore</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">2.0</span><span class="token punctuation">,</span> <span class="token number">4.9</span><span class="token punctuation">,</span> <span class="token number">7.0</span><span class="token punctuation">,</span> <span class="token number">23.2</span><span class="token punctuation">,</span> <span class="token number">25.6</span><span class="token punctuation">,</span> <span class="token number">76.7</span><span class="token punctuation">,</span> <span class="token number">135.6</span><span class="token punctuation">,</span> <span class="token number">162.2</span><span class="token punctuation">,</span> <span class="token number">32.6</span><span class="token punctuation">,</span> <span class="token number">20.0</span><span class="token punctuation">,</span> <span class="token number">6.4</span><span class="token punctuation">,</span> <span class="token number">3.3</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Precipitation'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token comment">// prettier-ignore</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">2.6</span><span class="token punctuation">,</span> <span class="token number">5.9</span><span class="token punctuation">,</span> <span class="token number">9.0</span><span class="token punctuation">,</span> <span class="token number">26.4</span><span class="token punctuation">,</span> <span class="token number">28.7</span><span class="token punctuation">,</span> <span class="token number">70.7</span><span class="token punctuation">,</span> <span class="token number">175.6</span><span class="token punctuation">,</span> <span class="token number">182.2</span><span class="token punctuation">,</span> <span class="token number">48.7</span><span class="token punctuation">,</span> <span class="token number">18.8</span><span class="token punctuation">,</span> <span class="token number">6.0</span><span class="token punctuation">,</span> <span class="token number">2.3</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Temperature'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">yAxisIndex</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">2.0</span><span class="token punctuation">,</span> <span class="token number">2.2</span><span class="token punctuation">,</span> <span class="token number">3.3</span><span class="token punctuation">,</span> <span class="token number">4.5</span><span class="token punctuation">,</span> <span class="token number">6.3</span><span class="token punctuation">,</span> <span class="token number">10.2</span><span class="token punctuation">,</span> <span class="token number">20.3</span><span class="token punctuation">,</span> <span class="token number">23.4</span><span class="token punctuation">,</span> <span class="token number">23.0</span><span class="token punctuation">,</span> <span class="token number">16.5</span><span class="token punctuation">,</span> <span class="token number">12.0</span><span class="token punctuation">,</span> <span class="token number">6.2</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <h2 id="%E6%94%AF%E6%8C%81%E9%AB%98%E4%BA%AE%E5%92%8C%E9%80%89%E4%B8%AD%E7%8A%B6%E6%80%81%E7%9A%84%E5%85%B3%E9%97%AD" tabindex="-1">支持高亮和选中状态的关闭</h2> <p>ECharts 中高亮状态可以在鼠标移到图形上的时候给用户提供反馈,但是在图表中有海量图形的时候,高亮的动画也可能带来交互上的性能问题。特别在 <a href="https://echarts.apache.org/option.html#tooltip">tooltip</a> 或者<a href="https://echarts.apache.org/option.html#legend">图例组件</a>联动触发的高亮会同时高亮多个图形。</p> <p>因此在这个版本中我们新增了<code>emphasis.disabled</code>配置项。如果不需要高亮的反馈,又对交互性能非常在意的话,可以通过这个配置项来关闭高亮状态。</p> <p>与此同时,对于选中状态,我们也新增了<code>select.disabled</code>。该配置项可以用于细粒度配置部分数据不可选。</p> <h2 id="%E6%94%AF%E6%8C%81%E6%95%B4%E4%B8%AA%E7%B3%BB%E5%88%97%E7%9A%84%E9%80%89%E4%B8%AD" tabindex="-1">支持整个系列的选中</h2> <p>在 5.3.0 中我们支持将<code>selectedMode</code>配置为<code>'series'</code>以实现系列所有数据的选中。</p> <h2 id="tooltip-%E4%B8%AD%E7%9A%84%E6%95%B0%E5%80%BC%E6%A0%BC%E5%BC%8F%E5%8C%96" tabindex="-1">tooltip 中的数值格式化</h2> <p>tooltip 可以在用户移到图形上的时候通过提示框显示更详细的相关信息,ECharts 也提供了<code>formatter</code>回调函数可以让开发者更灵活的自定义提示框的内容。</p> <p>但是我们发现大部分时候开发者只是需要格式化提示框中的数字部分,例如固定精度,加上<code>$</code>前缀等等,而之前为了格式化数字开发者只能通过<code>formatter</code>重写整个提示框的内容。特别是在 5.0 后 ECharts 的提示框结构更复杂,样式更美观了,重写变得成本很大而且很难达到默认的效果。</p> <p>因此在这个版本我们为 tooltip 新增了<code>valueFormatter</code>配置项用于数值部分的格式化。</p> <p>还是刚才那个坐标轴对齐的例子,我们可以为提示框中的数值部分加上 °C 和 ml 的后缀。</p> <div class="md-live layout-bt"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  tooltip: {
+    trigger: 'axis'
+  },
+  legend: {},
+  xAxis: [
+    {
+      type: 'category',
+      data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
+      axisPointer: {
+        type: 'shadow'
+      }
+    }
+  ],
+  yAxis: [
+    {
+      type: 'value',
+      name: 'Precipitation',
+      alignTicks: true,
+      axisLabel: {
+        formatter: '{value} ml'
+      }
+    },
+    {
+      type: 'value',
+      name: 'Temperature',
+      axisLabel: {
+        formatter: '{value} °C'
+      }
+    }
+  ],
+  series: [
+    {
+      name: 'Evaporation',
+      type: 'bar',
+      tooltip: {
+        valueFormatter: value => value + ' ml'
+      },
+      // prettier-ignore
+      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: 'Precipitation',
+      type: 'bar',
+      tooltip: {
+        valueFormatter: value => value + ' ml'
+      },
+      // prettier-ignore
+      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: 'Temperature',
+      type: 'line',
+      yAxisIndex: 1,
+      tooltip: {
+        valueFormatter: value => value + ' °C'
+      },
+      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]
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">tooltip</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">trigger</span><span class="token operator">:</span> <span class="token string">'axis'</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">legend</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'category'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'Mon'</span><span class="token punctuation">,</span> <span class="token string">'Tue'</span><span class="token punctuation">,</span> <span class="token string">'Wed'</span><span class="token punctuation">,</span> <span class="token string">'Thu'</span><span class="token punctuation">,</span> <span class="token string">'Fri'</span><span class="token punctuation">,</span> <span class="token string">'Sat'</span><span class="token punctuation">,</span> <span class="token string">'Sun'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">axisPointer</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'shadow'</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'value'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Precipitation'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">alignTicks</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">axisLabel</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">formatter</span><span class="token operator">:</span> <span class="token string">'{value} ml'</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'value'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Temperature'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">axisLabel</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">formatter</span><span class="token operator">:</span> <span class="token string">'{value} °C'</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Evaporation'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">tooltip</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token function-variable function">valueFormatter</span><span class="token operator">:</span> <span class="token parameter">value</span> <span class="token operator">=></span> value <span class="token operator">+</span> <span class="token string">' ml'</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token comment">// prettier-ignore</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">2.0</span><span class="token punctuation">,</span> <span class="token number">4.9</span><span class="token punctuation">,</span> <span class="token number">7.0</span><span class="token punctuation">,</span> <span class="token number">23.2</span><span class="token punctuation">,</span> <span class="token number">25.6</span><span class="token punctuation">,</span> <span class="token number">76.7</span><span class="token punctuation">,</span> <span class="token number">135.6</span><span class="token punctuation">,</span> <span class="token number">162.2</span><span class="token punctuation">,</span> <span class="token number">32.6</span><span class="token punctuation">,</span> <span class="token number">20.0</span><span class="token punctuation">,</span> <span class="token number">6.4</span><span class="token punctuation">,</span> <span class="token number">3.3</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Precipitation'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">tooltip</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token function-variable function">valueFormatter</span><span class="token operator">:</span> <span class="token parameter">value</span> <span class="token operator">=></span> value <span class="token operator">+</span> <span class="token string">' ml'</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token comment">// prettier-ignore</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">2.6</span><span class="token punctuation">,</span> <span class="token number">5.9</span><span class="token punctuation">,</span> <span class="token number">9.0</span><span class="token punctuation">,</span> <span class="token number">26.4</span><span class="token punctuation">,</span> <span class="token number">28.7</span><span class="token punctuation">,</span> <span class="token number">70.7</span><span class="token punctuation">,</span> <span class="token number">175.6</span><span class="token punctuation">,</span> <span class="token number">182.2</span><span class="token punctuation">,</span> <span class="token number">48.7</span><span class="token punctuation">,</span> <span class="token number">18.8</span><span class="token punctuation">,</span> <span class="token number">6.0</span><span class="token punctuation">,</span> <span class="token number">2.3</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Temperature'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">yAxisIndex</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">tooltip</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token function-variable function">valueFormatter</span><span class="token operator">:</span> <span class="token parameter">value</span> <span class="token operator">=></span> value <span class="token operator">+</span> <span class="token string">' °C'</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">2.0</span><span class="token punctuation">,</span> <span class="token number">2.2</span><span class="token punctuation">,</span> <span class="token number">3.3</span><span class="token punctuation">,</span> <span class="token number">4.5</span><span class="token punctuation">,</span> <span class="token number">6.3</span><span class="token punctuation">,</span> <span class="token number">10.2</span><span class="token punctuation">,</span> <span class="token number">20.3</span><span class="token punctuation">,</span> <span class="token number">23.4</span><span class="token punctuation">,</span> <span class="token number">23.0</span><span class="token punctuation">,</span> <span class="token number">16.5</span><span class="token punctuation">,</span> <span class="token number">12.0</span><span class="token punctuation">,</span> <span class="token number">6.2</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>每个系列都可以根据自己的数值格式配置自己的<code>valueFormatter</code>。</p> <h2 id="%E6%9B%B4%E7%81%B5%E6%B4%BB%E7%9A%84%E6%89%87%E5%8C%BA%E5%9C%86%E8%A7%92" tabindex="-1">更灵活的扇区圆角</h2> <p>在 5.0 中我们为扇区新增了圆角的配置,可以让饼图,旭日图变得更有趣。之前圆角的配置只支持内半径和外半径分开配置,这次我们更进一步,支持扇区的四个角都配置成不同的圆角大小,带来更灵活的呈现。</p> <div class="md-live layout-lr"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  tooltip: {
+    trigger: 'item'
+  },
+  legend: {
+    top: '5%',
+    left: 'center'
+  },
+  series: [
+    {
+      name: 'Access From',
+      type: 'pie',
+      radius: ['30%', '70%'],
+      roseType: 'angle',
+      itemStyle: {
+        borderRadius: [20, 5, 5, 10],
+        borderColor: '#fff',
+        borderWidth: 2
+      },
+      label: {
+        show: false
+      },
+      data: [
+        { value: 800, name: 'Search Engine' },
+        { value: 735, name: 'Direct' },
+        { value: 580, name: 'Email' },
+        { value: 484, name: 'Union Ads' },
+        { value: 400, name: 'Video Ads' }
+      ]
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">tooltip</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">trigger</span><span class="token operator">:</span> <span class="token string">'item'</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">legend</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">top</span><span class="token operator">:</span> <span class="token string">'5%'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">left</span><span class="token operator">:</span> <span class="token string">'center'</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Access From'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'pie'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">radius</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'30%'</span><span class="token punctuation">,</span> <span class="token string">'70%'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">roseType</span><span class="token operator">:</span> <span class="token string">'angle'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">itemStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">borderRadius</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">20</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">borderColor</span><span class="token operator">:</span> <span class="token string">'#fff'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">borderWidth</span><span class="token operator">:</span> <span class="token number">2</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">false</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">{</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">800</span><span class="token punctuation">,</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Search Engine'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">735</span><span class="token punctuation">,</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Direct'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">580</span><span class="token punctuation">,</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Email'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">484</span><span class="token punctuation">,</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Union Ads'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">400</span><span class="token punctuation">,</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Video Ads'</span> <span class="token punctuation">}</span>
+      <span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <h2 id="%E9%A5%BC%E5%9B%BE%E7%9A%84%E5%A4%8D%E6%9D%82%E6%A0%87%E7%AD%BE%E4%BC%98%E5%8C%96" tabindex="-1">饼图的复杂标签优化</h2> <p>饼图一直是 ECharts 中标签呈现最复杂的图表之一,我们从 5.0 开始就一直在饼图的标签布局、显示上做了很多的优化。</p> <p>这次我们针对使用了换行,背景色,富文本等格式比较复杂的饼图标签做了深度的优化。在宽度的自适应、超出容器、引导线的计算上比之前有了更好的效果:</p> <table><thead><tr><th style="text-align:center">5.2.2 (Before)</th> <th style="text-align:center">5.3.0 (After)</th></tr></thead> <tbody><tr><td style="text-align:center"><img src alt="before" data-src="images/5-3-0/pie-label-before.png"></td> <td style="text-align:center"><img src alt="after" data-src="images/5-3-0/pie-label-after.png"></td></tr> <tr><td style="text-align:center"><img src alt="before" data-src="images/5-3-0/pie-label-before2.png"></td> <td style="text-align:center"><img src alt="after" data-src="images/5-3-0/pie-label-after2.png"></td></tr></tbody></table> <h2 id="%E6%9F%B1%E7%8A%B6%E5%9B%BE-large-%E6%A8%A1%E5%BC%8F%E4%BC%98%E5%8C%96" tabindex="-1">柱状图 large 模式优化</h2> <p>在数据量很多(> 2k)的时候,我们支持柱状图通过开启 <a href="https://echarts.apache.org/option.html#series-bar.large">large</a> 模式来加速渲染,提升交互性能,但是之前 <a href="https://echarts.apache.org/option.html#series-bar.large">large</a> 模式下对柱状图布局比较简单,不支持多系列堆叠后的布局。在 5.3.0 中我们对 <a href="https://echarts.apache.org/option.html#series-bar.large">large</a> 模式的布局进行了优化,跟普通模式保持了一致性。我们可以在更多的场景中通过开启 <a href="https://echarts.apache.org/option.html#series-bar.large">large</a> 来优化柱状图的性能。</p> <p>除此之外,优化后的柱状图布局也修复了在对数轴这样的非线性轴上堆叠效果不正确的 bug。</p> <h2 id="%E9%9D%9E%E5%85%BC%E5%AE%B9%E6%94%B9%E5%8A%A8" tabindex="-1">非兼容改动</h2> <h3 id="registermap-%E5%92%8C-getmap-%E6%96%B9%E6%B3%95%E9%9C%80%E8%A6%81%E5%9C%A8%E5%BC%95%E5%85%A5%E5%9C%B0%E5%9B%BE%E7%BB%84%E4%BB%B6%E5%90%8E%E6%89%8D%E8%83%BD%E4%BD%BF%E7%94%A8" tabindex="-1">registerMap 和 getMap 方法需要在引入地图组件后才能使用</h3> <p>为了减少最小打包的体积,我们从核心模块中移除了地图数据管理的方法<code>getMap</code>和<code>registerMap</code>。</p> <p>如果你是<a href="https://echarts.apache.org/handbook/zh/basics/import/#%E6%8C%89%E9%9C%80%E5%BC%95%E5%85%A5-echarts-%E5%9B%BE%E8%A1%A8%E5%92%8C%E7%BB%84%E4%BB%B6">按需引入</a> ECharts 组件的话,需要保证先引入了<code>GeoComponent</code>或者<code>MapChart</code>之后,才能使用<code>registerMap</code>注册地图数据。</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code><span class="token keyword">import</span> <span class="token operator">*</span> <span class="token keyword">as</span> echarts <span class="token keyword">from</span> <span class="token string">'echarts/core'</span><span class="token punctuation">;</span>
+<span class="token keyword">import</span> <span class="token punctuation">{</span> MapChart <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'echarts/charts'</span><span class="token punctuation">;</span>
+
+echarts<span class="token punctuation">.</span><span class="token function">use</span><span class="token punctuation">(</span><span class="token punctuation">[</span>MapChart<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+<span class="token comment">// 必须在使用 use 方法注册了 MapChart 后才能使用 registerMap 注册地图</span>
+echarts<span class="token punctuation">.</span><span class="token function">registerMap</span><span class="token punctuation">(</span><span class="token string">'world'</span><span class="token punctuation">,</span> worldJSON<span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>如果你是使用<code>import * as echarts from 'echarts'</code>全量引入,这次改动不会对你产生任何影响。</p> <h3 id="%E6%8A%98%E7%BA%BF%E5%9B%BE%E7%A7%BB%E9%99%A4%E9%BB%98%E8%AE%A4%E9%AB%98%E4%BA%AE%E5%8A%A0%E7%B2%97%E7%9A%84%E6%95%88%E6%9E%9C" tabindex="-1">折线图移除默认高亮加粗的效果</h3> <p>我们在 5.0 里对折线图引入了默认高亮加粗的效果,但是社区反馈这个在很多场景效果并不好,所以在这个版本我们将这个效果从默认开启改为默认关闭,如果需要使用高亮加粗,则可以显式配置:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code>series <span class="token operator">=</span> <span class="token punctuation">{</span>
+  type<span class="token operator">:</span> <span class="token string">'line'</span><span class="token punctuation">,</span>
+  <span class="token comment">//...</span>
+  emphasis<span class="token operator">:</span> <span class="token punctuation">{</span>
+    lineStyle<span class="token operator">:</span> <span class="token punctuation">{</span>
+      width<span class="token operator">:</span> <span class="token string">'bolder'</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="%E5%AE%8C%E6%95%B4%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95" tabindex="-1">完整更新记录</h2> <p>查看<a href="https://echarts.apache.org//changelog.html#v5-3-0">版本更新</a></p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">本文贡献者</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/zh/basics/release-note/5-3-0.md" title="编辑本文" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">在 GitHub 上编辑本页</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a><a href="https://github.com/Ovilia" target="_blank" class="post-contributor has-avatar"><img alt="Ovilia" src="https://echarts.apache.org/en/images/people/羡辙.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>Ovilia</span></a><a href="https://github.com/plainheart" target="_blank" class="post-contributor has-avatar"><img alt="plainheart" src="https://echarts.apache.org/en/images/people/plainheart.jpg" loading="lazy" decoding="async" fetchpriority="low"> <span>plainheart</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(g,C,I,A,i,t,e,d,l,o,a,r,c,n,s,B,h,p,b,w,E,m,y,G,W,L,Z,H,K,V,M,D,u,J,Y,O,N,v,F,X,S,f,R,x,z,j,T,k,Q,U,P,q,_,$,gg,Cg,Ig,Ag,ig,tg,eg,dg,lg){return{layout:"default",data:[{html:'<h1 id="apache-echarts-5.3.0-%E7%89%B9%E6%80%A7%E4%BB%8B%E7%BB%8D" tabindex="-1">Apache ECharts 5.3.0 特性介绍</h1>\n<p>Apache ECharts 5.3.0 在动画表达力、渲染性能、服务端渲染上做了大幅度的增强,同时也新增了多坐标轴刻度自动对齐、tooltip 数值格式化、地图投影等社区中期盼已久的特性。</p>\n<h2 id="%E5%85%B3%E9%94%AE%E5%B8%A7%E5%8A%A8%E7%94%BB" tabindex="-1">关键帧动画</h2>\n<p>在之前 ECharts 的动画集中在图形添加、更新以及移除的过渡动画上,过渡动画往往只有开始状态和结束状态。为了表达更复杂的动画效果,我们 5.3.0 中为<a href="https://echarts.apache.org/option.html#series-custom">自定义系列</a>和<a href="https://echarts.apache.org/option.html#graphic">图形组件</a>引入了全新的关键帧动画。</p>\n<p>下面是一个简单的通过关键帧动画实现的呼吸动画的效果。</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIGdyYXBoaWM6IHsKICAgIHR5cGU6ICdjaXJjbGUnLAogICAgc2hhcGU6IHsgcjogMTAwIH0sCiAgICBsZWZ0OiAnY2VudGVyJywKICAgIHRvcDogJ2NlbnRlcicsCiAgICBrZXlmcmFtZUFuaW1hdGlvbjogWwogICAgICB7CiAgICAgICAgZHVyYXRpb246IDMwMDAsCiAgICAgICAgbG9vcDogdHJ1ZSwKICAgICAgICBrZXlmcmFtZXM6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgcGVyY2VudDogMC41LAogICAgICAgICAgICBlYXNpbmc6ICdzaW51c29pZGFsSW5PdXQnLAogICAgICAgICAgICBzY2FsZVg6IDAuMSwKICAgICAgICAgICAgc2NhbGVZOiAwLjEKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgIHBlcmNlbnQ6IDEsCiAgICAgICAgICAgIGVhc2luZzogJ3NpbnVzb2lkYWxJbk91dCcsCiAgICAgICAgICAgIHNjYWxlWDogMSwKICAgICAgICAgICAgc2NhbGVZOiAxCiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9CiAgICBdCiAgfQp9Ow\'" v-bind="{layout: \'lr\', height:300}" />\n<p>在关键帧动画中,你可以配置动画时长、缓动、是否循环、每个关键帧的位置、缓动以及图形属性等。而且每个图形可以同时设置多个不同配置的关键帧动画。灵活的配置让我们可以实现非常复杂的动画效果,下面列举几个可以应用关键帧动画的场景。</p>\n<h3 id="%E8%87%AA%E5%AE%9A%E4%B9%89%E5%8A%A0%E8%BD%BD%E5%8A%A8%E7%94%BB" tabindex="-1">自定义加载动画</h3>\n<p>ECharts 默认内置了一个加载动画,可以调用<code>showLoading</code>显示。开发者经常会提需求需要更多的加载动画效果。现在有了关键帧动画后,我们可以通过图形(<a href="https://echarts.apache.org/option.html#graphic">graphic</a>)组件配合关键帧动画实现任何想要的加载动画效果。</p>\n<p>比如文本描边动画:</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIGdyYXBoaWM6IHsKICAgIGVsZW1lbnRzOiBbCiAgICAgIHsKICAgICAgICB0eXBlOiAndGV4dCcsCiAgICAgICAgbGVmdDogJ2NlbnRlcicsCiAgICAgICAgdG9wOiAnY2VudGVyJywKICAgICAgICBzdHlsZTogewogICAgICAgICAgdGV4dDogJ0FwYWNoZSBFQ2hhcnRzJywKICAgICAgICAgIGZvbnRTaXplOiA0MCwKICAgICAgICAgIGZvbnRXZWlnaHQ6ICdib2xkJywKICAgICAgICAgIGxpbmVEYXNoOiBbMCwgMjAwXSwKICAgICAgICAgIGxpbmVEYXNoT2Zmc2V0OiAwLAogICAgICAgICAgZmlsbDogJ3RyYW5zcGFyZW50JywKICAgICAgICAgIHN0cm9rZTogJyMwMDAnLAogICAgICAgICAgbGluZVdpZHRoOiAxCiAgICAgICAgfSwKICAgICAgICBrZXlmcmFtZUFuaW1hdGlvbjogewogICAgICAgICAgZHVyYXRpb246IDMwMDAsCiAgICAgICAgICBsb29wOiB0cnVlLAogICAgICAgICAga2V5ZnJhbWVzOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBwZXJjZW50OiAwLjcsCiAgICAgICAgICAgICAgc3R5bGU6IHsKICAgICAgICAgICAgICAgIGZpbGw6ICd0cmFuc3BhcmVudCcsCiAgICAgICAgICAgICAgICBsaW5lRGFzaE9mZnNldDogMjAwLAogICAgICAgICAgICAgICAgbGluZURhc2g6IFsyMDAsIDBdCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgLy8gU3RvcCBmb3IgYSB3aGlsZS4KICAgICAgICAgICAgICBwZXJjZW50OiAwLjgsCiAgICAgICAgICAgICAgc3R5bGU6IHsKICAgICAgICAgICAgICAgIGZpbGw6ICd0cmFuc3BhcmVudCcKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBwZXJjZW50OiAxLAogICAgICAgICAgICAgIHN0eWxlOiB7CiAgICAgICAgICAgICAgICBmaWxsOiAnYmxhY2snCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICBdCiAgICAgICAgfQogICAgICB9CiAgICBdCiAgfQp9Ow\'" v-bind="{layout: \'lr\', height:300}" />\n<p>或者柱状图形状的加载动画:</p>\n<md-live lang="js" code="\'Y29uc3QgY29sdW1ucyA9IFtdOwpmb3IgKGxldCBpID0gMDsgaSA8IDc7IGkrKykgewogIGNvbHVtbnMucHVzaCh7CiAgICB0eXBlOiAncmVjdCcsCiAgICB4OiBpICogMjAsCiAgICBzaGFwZTogewogICAgICB4OiAwLAogICAgICB5OiAtNDAsCiAgICAgIHdpZHRoOiAxMCwKICAgICAgaGVpZ2h0OiA4MAogICAgfSwKICAgIHN0eWxlOiB7CiAgICAgIGZpbGw6ICcjNTQ3MGM2JwogICAgfSwKICAgIGtleWZyYW1lQW5pbWF0aW9uOiB7CiAgICAgIGR1cmF0aW9uOiAxMDAwLAogICAgICBkZWxheTogaSAqIDIwMCwKICAgICAgbG9vcDogdHJ1ZSwKICAgICAga2V5ZnJhbWVzOiBbCiAgICAgICAgewogICAgICAgICAgcGVyY2VudDogMC41LAogICAgICAgICAgc2NhbGVZOiAwLjEsCiAgICAgICAgICBlYXNpbmc6ICdjdWJpY0luJwogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgcGVyY2VudDogMSwKICAgICAgICAgIHNjYWxlWTogMSwKICAgICAgICAgIGVhc2luZzogJ2N1YmljT3V0JwogICAgICAgIH0KICAgICAgXQogICAgfQogIH0pOwp9Cm9wdGlvbiA9IHsKICBncmFwaGljOiB7CiAgICBlbGVtZW50czogWwogICAgICB7CiAgICAgICAgdHlwZTogJ2dyb3VwJywKICAgICAgICBsZWZ0OiAnY2VudGVyJywKICAgICAgICB0b3A6ICdjZW50ZXInLAogICAgICAgIGNoaWxkcmVuOiBjb2x1bW5zCiAgICAgIH0KICAgIF0KICB9Cn07\'" v-bind="{layout: \'lr\', height:300}" />\n<h3 id="%E6%89%A9%E5%B1%95%E6%9B%B4%E4%B8%B0%E5%AF%8C%E7%9A%84%E6%95%A3%E7%82%B9%E5%9B%BE%E5%8A%A8%E7%94%BB%E7%89%B9%E6%95%88" tabindex="-1">扩展更丰富的散点图动画特效</h3>\n<p>带有特效动画的散点图一直以来是 ECharts 的特色功能。开发者可以使用 <a href="https://echarts.apache.org/option.html#series-effectScatter">effectScatter</a> 系列来实现带有涟漪特效的动态散点图,这种特效动画除了让作品更有趣,也起到了高亮提示用户的效果。跟加载动画一样,开发者也常常提出需要更多动画效果的需求。现在我们可以在自定义系列中通过使用关键帧动画来实现更复杂的特效。</p>\n<p>比如下面例子在 SVG 地图上给自定义系列绘制的图钉加上了跳动的动画效果,同时配上了涟漪动画。</p>\n\x3c!-- <md-example src="geo-svg-custom-effect" width="100%" height="500" /> --\x3e\n<md-live lang="js" code="\'ZmV0Y2goCiAgJ2h0dHBzOi8vZWNoYXJ0cy5hcGFjaGUub3JnL2V4YW1wbGVzL2RhdGEvYXNzZXQvZ2VvL01hcF9vZl9JY2VsYW5kLnN2ZycKKQogIC50aGVuKHJlc3BvbnNlID0-IHJlc3BvbnNlLnRleHQoKSkKICAudGhlbihzdmcgPT4gewogICAgZWNoYXJ0cy5yZWdpc3Rlck1hcCgnaWNlbGFuZF9zdmcnLCB7IHN2Zzogc3ZnIH0pOwogICAgb3B0aW9uID0gewogICAgICBnZW86IHsKICAgICAgICBtYXA6ICdpY2VsYW5kX3N2ZycsCiAgICAgICAgbGVmdDogMCwKICAgICAgICByaWdodDogMAogICAgICB9LAogICAgICBzZXJpZXM6IHsKICAgICAgICB0eXBlOiAnY3VzdG9tJywKICAgICAgICBjb29yZGluYXRlU3lzdGVtOiAnZ2VvJywKICAgICAgICBnZW9JbmRleDogMCwKICAgICAgICB6bGV2ZWw6IDEsCiAgICAgICAgZGF0YTogWwogICAgICAgICAgWzQ4OCwgNDU5LCAxMDBdLAogICAgICAgICAgWzc3MCwgNzU3LCAzMF0sCiAgICAgICAgICBbMTE4MCwgNzQzLCA4MF0sCiAgICAgICAgICBbODk0LCAxMTg4LCA2MV0sCiAgICAgICAgICBbMTM3MiwgNDc3LCA3MF0sCiAgICAgICAgICBbMTM3OCwgOTM1LCA4MV0KICAgICAgICBdLAogICAgICAgIHJlbmRlckl0ZW0ocGFyYW1zLCBhcGkpIHsKICAgICAgICAgIGNvbnN0IGNvb3JkID0gYXBpLmNvb3JkKFsKICAgICAgICAgICAgYXBpLnZhbHVlKDAsIHBhcmFtcy5kYXRhSW5kZXgpLAogICAgICAgICAgICBhcGkudmFsdWUoMSwgcGFyYW1zLmRhdGFJbmRleCkKICAgICAgICAgIF0pOwoKICAgICAgICAgIGNvbnN0IGNpcmNsZXMgPSBbXTsKICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTsgaSsrKSB7CiAgICAgICAgICAgIGNpcmNsZXMucHVzaCh7CiAgICAgICAgICAgICAgdHlwZTogJ2NpcmNsZScsCiAgICAgICAgICAgICAgc2hhcGU6IHsKICAgICAgICAgICAgICAgIGN4OiAwLAogICAgICAgICAgICAgICAgY3k6IDAsCiAgICAgICAgICAgICAgICByOiAzMAogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgc3R5bGU6IHsKICAgICAgICAgICAgICAgIHN0cm9rZTogJ3JlZCcsCiAgICAgICAgICAgICAgICBmaWxsOiAnbm9uZScsCiAgICAgICAgICAgICAgICBsaW5lV2lkdGg6IDIKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgIC8vIFJpcHBsZSBhbmltYXRpb24KICAgICAgICAgICAgICBrZXlmcmFtZUFuaW1hdGlvbjogewogICAgICAgICAgICAgICAgZHVyYXRpb246IDQwMDAsCiAgICAgICAgICAgICAgICBsb29wOiB0cnVlLAogICAgICAgICAgICAgICAgZGVsYXk6ICgtaSAvIDQpICogNDAwMCwKICAgICAgICAgICAgICAgIGtleWZyYW1lczogWwogICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgcGVyY2VudDogMCwKICAgICAgICAgICAgICAgICAgICBzY2FsZVg6IDAsCiAgICAgICAgICAgICAgICAgICAgc2NhbGVZOiAwLAogICAgICAgICAgICAgICAgICAgIHN0eWxlOiB7CiAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAxCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgcGVyY2VudDogMSwKICAgICAgICAgICAgICAgICAgICBzY2FsZVg6IDEsCiAgICAgICAgICAgICAgICAgICAgc2NhbGVZOiAwLjQsCiAgICAgICAgICAgICAgICAgICAgc3R5bGU6IHsKICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgdHlwZTogJ2dyb3VwJywKICAgICAgICAgICAgeDogY29vcmRbMF0sCiAgICAgICAgICAgIHk6IGNvb3JkWzFdLAogICAgICAgICAgICBjaGlsZHJlbjogWwogICAgICAgICAgICAgIC4uLmNpcmNsZXMsCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdHlwZTogJ3BhdGgnLAogICAgICAgICAgICAgICAgc2hhcGU6IHsKICAgICAgICAgICAgICAgICAgZDoKICAgICAgICAgICAgICAgICAgICAnTTE2IDBjLTUuNTIzIDAtMTAgNC40NzctMTAgMTAgMCAxMCAxMCAyMiAxMCAyMnMxMC0xMiAxMC0yMmMwLTUuNTIzLTQuNDc3LTEwLTEwLTEwek0xNiAxNmMtMy4zMTQgMC02LTIuNjg2LTYtNnMyLjY4Ni02IDYtNiA2IDIuNjg2IDYgNi0yLjY4NiA2LTYgNnonLAogICAgICAgICAgICAgICAgICB4OiAtMTAsCiAgICAgICAgICAgICAgICAgIHk6IC0zNSwKICAgICAgICAgICAgICAgICAgd2lkdGg6IDIwLAogICAgICAgICAgICAgICAgICBoZWlnaHQ6IDQwCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgc3R5bGU6IHsKICAgICAgICAgICAgICAgICAgZmlsbDogJ3JlZCcKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAvLyBKdW1wIGFuaW1hdGlvbi4KICAgICAgICAgICAgICAgIGtleWZyYW1lQW5pbWF0aW9uOiB7CiAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiAxMDAwLAogICAgICAgICAgICAgICAgICBsb29wOiB0cnVlLAogICAgICAgICAgICAgICAgICBkZWxheTogTWF0aC5yYW5kb20oKSAqIDEwMDAsCiAgICAgICAgICAgICAgICAgIGtleWZyYW1lczogWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgIHk6IC0xMCwKICAgICAgICAgICAgICAgICAgICAgIHBlcmNlbnQ6IDAuNSwKICAgICAgICAgICAgICAgICAgICAgIGVhc2luZzogJ2N1YmljT3V0JwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgeTogMCwKICAgICAgICAgICAgICAgICAgICAgIHBlcmNlbnQ6IDEsCiAgICAgICAgICAgICAgICAgICAgICBlYXNpbmc6ICdib3VuY2VPdXQnCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICBdCiAgICAgICAgICB9OwogICAgICAgIH0KICAgICAgfQogICAgfTsKCiAgICBteUNoYXJ0LnNldE9wdGlvbihvcHRpb24pOwogIH0pOw\'" v-bind="{layout: \'lr\', readOnly: true }" />\n\x3c!-- ### 在大屏图表上放入科技感的动画特效 --\x3e\n<h3 id="%E5%8A%A0%E8%BD%BD-lottie-%E5%8A%A8%E7%94%BB" tabindex="-1">加载 Lottie 动画</h3>\n<p>为了充分发掘出新的关键帧动画的能力,ECharts 团队的沈毅写了一个 <a href="https://github.com/pissang/lottie-parser">Lottie 动画的解析库</a>,可以将 Lottie 动画文件解析成 ECharts 的图形格式进行渲染。结合 Lottie 的表达力我们可以进一步的在我们的项目中绘制出细腻的动画。</p>\n<h2 id="%E5%9B%BE%E5%BD%A2%E7%BB%84%E4%BB%B6%E8%BF%87%E6%B8%A1%E5%8A%A8%E7%94%BB" tabindex="-1">图形组件过渡动画</h2>\n<p>我们在 5.0 里为自定义系列中返回的图形提供了更灵活的过渡动画配置。可以通过<code>transition</code>, <code>enterFrom</code>, <code>leaveTo</code>三个配置项来配置每个图形哪些属性会拥有过渡动画,当图形创建和被移除的时候该执行怎么样的动画。例如:</p>\n<md-code-block lang="js" code="\'ZnVuY3Rpb24gcmVuZGVySXRlbSgpIHsKICAvLy4uLgogIHJldHVybiB7CiAgICAvLy4uLgogICAgeDogMTAwLAogICAgLy8gJ3N0eWxlJywgJ3gnLCAneScg5Lya6KKr5Yqo55S7CiAgICB0cmFuc2l0aW9uOiBbJ3N0eWxlJywgJ3gnLCAneSddLAogICAgZW50ZXJGcm9tOiB7CiAgICAgIHN0eWxlOiB7CiAgICAgICAgLy8g5reh5YWlCiAgICAgICAgb3BhY2l0eTogMAogICAgICB9LAogICAgICAvL-S7juW3puS-p-mjnuWFpQogICAgICB4OiAwCiAgICB9LAogICAgbGVhdmVUbzogewogICAgICAvLyDmt6Hlh7oKICAgICAgb3BhY2l0eTogMAogICAgfSwKICAgIC8vIOWQkeWPs-S-p-mjnuWHugogICAgeDogMjAwCiAgfTsKfQ\'" line-highlights="\'\'" />\n<p>在 5.3.0 中我们把这些过渡动画的配置扩展到了图形(graphic)组件中,并且做了更多的增强:</p>\n<p>如果你不想一一写出每个要动画的属性,现在你可以直接配置<code>transition: \'all\'</code>为所有属性都加上动画过渡。</p>\n<p>与此同时我们还新增了<code>enterAnimation</code>、<code>updateAnimation</code>、<code>leaveAnimation</code>分别配置每个图形入场、更新、出场动画的时长(duration)、延迟(delay)和缓动(easing)。除此之外,渐变色现在也支持动画了。</p>\n<h2 id="%E5%85%A8%E6%96%B0%E7%9A%84-svg-%E6%B8%B2%E6%9F%93%E5%99%A8" tabindex="-1">全新的 SVG 渲染器</h2>\n<p>在 5.3.0 中我们重构了我们的 SVG 渲染器,新的 SVG 渲染器能够带来 2x ~ 10x 的性能提升,在某些特殊场景中甚至能有数十倍的提升。</p>\n<p>之前的 SVG 渲染器我们直接从渲染队列更新到 DOM。但是因为 zrender 的图形属性跟 DOM 并不是一一对应的,因此中间需要实现非常复杂的 Diff 逻辑,容易出错而且在某些场景下性能并不能做到最好。在这个版本我们重构成先全量渲染到 VDOM,然后再将 VDOM patch 到 DOM 完成渲染。全量渲染可以避免复杂的 Diff 逻辑带来的潜在 Bug。而 VDOM 和 DOM 的一一对应可以保证在 patch 的时候保证更新是最少的,从而带来巨大的性能提升。</p>\n<p><a href="https://echarts.apache.org/examples/zh/editor.html?c=geo-svg-scatter-simple&amp;renderer=svg">这个例子</a> 可以给大家带来比较直观的性能提升的感受。新的版本在 SVG 模式下拖动的交互上比之前版本流畅非常多。</p>\n<table>\n<thead>\n<tr>\n<th style="text-align:center">5.2.2 (Before)</th>\n<th style="text-align:center">5.3.0 (After)</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td style="text-align:center"><img src="" alt="before" data-src="images/5-3-0/svg-before.gif"></td>\n<td style="text-align:center"><img src="" alt="after" data-src="images/5-3-0/svg-after.gif"></td>\n</tr>\n</tbody>\n</table>\n<p>除了性能的提升,我们还可以使用中间全量渲染得到的 VDom 做更多的事情,比如下面会介绍的服务端渲染。</p>\n<h2 id="%E9%9B%B6%E4%BE%9D%E8%B5%96%E7%9A%84%E6%9C%8D%E5%8A%A1%E7%AB%AF%E6%B8%B2%E6%9F%93" tabindex="-1">零依赖的服务端渲染</h2>\n<p>在之前的版本 ECharts 也可以实现服务端的渲染,但是必须得依赖 <a href="https://github.com/Automattic/node-canvas">node-canvas</a>,如果是使用 SVG 模式则需要依赖 <a href="https://github.com/jsdom/jsdom">JSDOM</a> 来模拟 DOM 环境。这些依赖一是带来了额外的体积和使用要求,二是也会有更多的性能损耗。</p>\n<p>这次新的 SVG 渲染器可以让我们从中间的 VDOM 渲染得到字符串,带来了完全零依赖的服务端渲染,输出更精简并且带有 CSS 动画的 SVG 字符串。</p>\n<md-code-block lang="ts" code="\'Y29uc3QgZWNoYXJ0cyA9IHJlcXVpcmUoJ2VjaGFydHMnKTsKCi8vIOWcqCBTU1Ig5qih5byP5LiL56ys5LiA5Liq5Y-C5pWw5LiN6ZyA6KaB5YaN5Lyg5YWlIERPTSDlr7nosaEKY29uc3QgY2hhcnQgPSBlY2hhcnRzLmluaXQobnVsbCwgbnVsbCwgewogIHJlbmRlcmVyOiAnc3ZnJywgLy8g5b-F6aG75L2_55SoIFNWRyDmqKHlvI8KICBzc3I6IHRydWUsIC8vIOW8gOWQryBTU1IKICB3aWR0aDogNDAwLCAvLyDpnIDopoHmjIfmmI7pq5jlkozlrr0KICBoZWlnaHQ6IDMwMAp9KTsKCi8vIOWDj-ato-W4uOS9v-eUqOS4gOagtyBzZXRPcHRpb24KY2hhcnQuc2V0T3B0aW9uKHsKICB4QXhpczogewogICAgdHlwZTogJ2NhdGVnb3J5JywKICAgIGRhdGE6IFsnTW9uJywgJ1R1ZScsICdXZWQnLCAnVGh1JywgJ0ZyaScsICdTYXQnLCAnU3VuJ10KICB9LAogIHlBeGlzOiB7CiAgICB0eXBlOiAndmFsdWUnCiAgfSwKICBzZXJpZXM6IFsKICAgIHsKICAgICAgZGF0YTogWzEyMCwgMjAwLCAxNTAsIDgwLCA3MCwgMTEwLCAxMzBdLAogICAgICB0eXBlOiAnYmFyJwogICAgfQogIF0KfSk7CgovLyDovpPlh7rlrZfnrKbkuLIKY29uc3Qgc3ZnU3RyID0gY2hhcnQucmVuZGVyVG9TVkdTdHJpbmcoKTs\'" line-highlights="\'\'" />\n<p>在此基础上,我们优化了输出的 SVG 字符串,使其在诸如 PowerPoint 等更多的平台上有更好的显示效果。</p>\n<h2 id="%E8%87%AA%E5%AE%9A%E4%B9%89%E5%9C%B0%E5%9B%BE%E6%8A%95%E5%BD%B1" tabindex="-1">自定义地图投影</h2>\n<p>地图一直是 ECharts 中使用非常广泛的组件。一般地图组件会使用存储了经纬度的 GeoJSON 格式的数据。而 ECharts 则计算出合适的显示区域然后把经纬度线性映射到这个区域。这是一种最简单的地图投影方式。但是简单的线性投影并无法满足某些复杂的地图场景,例如使用 <a href="https://en.wikipedia.org/wiki/Albers_projection">Albers</a> 投影解决线性投影中面积失真的问题,或者在世界地图中让太平洋显示在中间等等。</p>\n<p>因此在 5.3.0 里中我们引入了自定义的地图投影,可以通过<code>project</code>和<code>unproject</code>两个方法告诉 ECharts 如何投影坐标,以及如何根据投影后坐标计算经纬度。下面是简单的使用墨卡托投影的例子:</p>\n<md-code-block lang="ts" code="\'c2VyaWVzID0gewogIHR5cGU6ICdtYXAnLAogIHByb2plY3Rpb246IHsKICAgIHByb2plY3Q6IHBvaW50ID0-IFsKICAgICAgKHBvaW50WzBdIC8gMTgwKSAqIE1hdGguUEksCiAgICAgIC1NYXRoLmxvZyhNYXRoLnRhbigoTWF0aC5QSSAvIDIgKyAocG9pbnRbMV0gLyAxODApICogTWF0aC5QSSkgLyAyKSkKICAgIF0sCiAgICB1bnByb2plY3Q6IHBvaW50ID0-IFsKICAgICAgKHBvaW50WzBdICogMTgwKSAvIE1hdGguUEksCiAgICAgICgoMiAqIDE4MCkgLyBNYXRoLlBJKSAqIE1hdGguYXRhbihNYXRoLmV4cChwb2ludFsxXSkpIC0gOTAKICAgIF0KICB9Cn07\'" line-highlights="\'\'" />\n<p>除了我们自己实现投影公式,我们也可以使用 <a href="https://github.com/d3/d3-geo">d3-geo</a> 等第三方库提供的现成的投影实现:</p>\n<md-code-block lang="ts" code="\'Y29uc3QgcHJvamVjdGlvbiA9IGQzLmdlb0NvbmljRXF1YWxBcmVhKCk7Ci8vIC4uLgpzZXJpZXMgPSB7CiAgdHlwZTogJ21hcCcsCiAgcHJvamVjdGlvbjogewogICAgcHJvamVjdDogcG9pbnQgPT4gcHJvamVjdGlvbihwb2ludCksCiAgICB1bnByb2plY3Q6IHBvaW50ID0-IHByb2plY3Rpb24uaW52ZXJ0KHBvaW50KQogIH0KfTs\'" line-highlights="\'\'" />\n<p>配合在 5.2 里新增的全局过渡动画特性,我们可以实现不同投影效果之间的动画过渡:</p>\n<p><img src="" alt="地图投影动画" data-src="images/5-3-0/map-projection.gif"></p>\n<p>除了地图的投影之外,我们在这个版本对于地图还做了下面两个增强:</p>\n<ul>\n<li>对 GeoJSON 数据提供了<code>\'LineString\'</code>和<code>\'MultiLineString\'</code>的支持。</li>\n<li>将默认标签位置的计算从包围盒中心改为最大区域的重心坐标,计算结果更加准确。</li>\n</ul>\n<h2 id="%E5%A4%9A%E5%9D%90%E6%A0%87%E8%BD%B4%E7%9A%84%E5%88%BB%E5%BA%A6%E5%AF%B9%E9%BD%90" tabindex="-1">多坐标轴的刻度对齐</h2>\n<p>多坐标轴的刻度对齐是社区中提了很久的一个需求,我们在网上也可以看到很多开发者写的如何在 ECharts 中实现坐标轴对齐的文章,通常都会比较麻烦而且会有比较多的局限性。</p>\n<p>在 5.3.0 中我们终于引入了数值轴坐标轴刻度对齐的功能。可以在需要对齐刻度的坐标轴中配置<code>alignTicks: true</code>。该坐标轴就会根据第一个坐标轴的刻度划分去调整自己的刻度,实现自动对齐。</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHRvb2x0aXA6IHsKICAgIHRyaWdnZXI6ICdheGlzJwogIH0sCiAgbGVnZW5kOiB7fSwKICB4QXhpczogWwogICAgewogICAgICB0eXBlOiAnY2F0ZWdvcnknLAogICAgICBkYXRhOiBbJ01vbicsICdUdWUnLCAnV2VkJywgJ1RodScsICdGcmknLCAnU2F0JywgJ1N1biddLAogICAgICBheGlzUG9pbnRlcjogewogICAgICAgIHR5cGU6ICdzaGFkb3cnCiAgICAgIH0KICAgIH0KICBdLAogIHlBeGlzOiBbCiAgICB7CiAgICAgIHR5cGU6ICd2YWx1ZScsCiAgICAgIG5hbWU6ICdQcmVjaXBpdGF0aW9uJywKICAgICAgYWxpZ25UaWNrczogdHJ1ZSwKICAgICAgYXhpc0xhYmVsOiB7CiAgICAgICAgZm9ybWF0dGVyOiAne3ZhbHVlfSBtbCcKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgdHlwZTogJ3ZhbHVlJywKICAgICAgbmFtZTogJ1RlbXBlcmF0dXJlJywKICAgICAgYXhpc0xhYmVsOiB7CiAgICAgICAgZm9ybWF0dGVyOiAne3ZhbHVlfSDCsEMnCiAgICAgIH0KICAgIH0KICBdLAogIHNlcmllczogWwogICAgewogICAgICBuYW1lOiAnRXZhcG9yYXRpb24nLAogICAgICB0eXBlOiAnYmFyJywKICAgICAgLy8gcHJldHRpZXItaWdub3JlCiAgICAgIGRhdGE6IFsyLjAsIDQuOSwgNy4wLCAyMy4yLCAyNS42LCA3Ni43LCAxMzUuNiwgMTYyLjIsIDMyLjYsIDIwLjAsIDYuNCwgMy4zXQogICAgfSwKICAgIHsKICAgICAgbmFtZTogJ1ByZWNpcGl0YXRpb24nLAogICAgICB0eXBlOiAnYmFyJywKICAgICAgLy8gcHJldHRpZXItaWdub3JlCiAgICAgIGRhdGE6IFsyLjYsIDUuOSwgOS4wLCAyNi40LCAyOC43LCA3MC43LCAxNzUuNiwgMTgyLjIsIDQ4LjcsIDE4LjgsIDYuMCwgMi4zXQogICAgfSwKICAgIHsKICAgICAgbmFtZTogJ1RlbXBlcmF0dXJlJywKICAgICAgdHlwZTogJ2xpbmUnLAogICAgICB5QXhpc0luZGV4OiAxLAogICAgICBkYXRhOiBbMi4wLCAyLjIsIDMuMywgNC41LCA2LjMsIDEwLjIsIDIwLjMsIDIzLjQsIDIzLjAsIDE2LjUsIDEyLjAsIDYuMl0KICAgIH0KICBdCn07\'" v-bind="{ layout: \'bt\' }" />\n<h2 id="%E6%94%AF%E6%8C%81%E9%AB%98%E4%BA%AE%E5%92%8C%E9%80%89%E4%B8%AD%E7%8A%B6%E6%80%81%E7%9A%84%E5%85%B3%E9%97%AD" tabindex="-1">支持高亮和选中状态的关闭</h2>\n<p>ECharts 中高亮状态可以在鼠标移到图形上的时候给用户提供反馈,但是在图表中有海量图形的时候,高亮的动画也可能带来交互上的性能问题。特别在 <a href="https://echarts.apache.org/option.html#tooltip">tooltip</a> 或者<a href="https://echarts.apache.org/option.html#legend">图例组件</a>联动触发的高亮会同时高亮多个图形。</p>\n<p>因此在这个版本中我们新增了<code>emphasis.disabled</code>配置项。如果不需要高亮的反馈,又对交互性能非常在意的话,可以通过这个配置项来关闭高亮状态。</p>\n<p>与此同时,对于选中状态,我们也新增了<code>select.disabled</code>。该配置项可以用于细粒度配置部分数据不可选。</p>\n<h2 id="%E6%94%AF%E6%8C%81%E6%95%B4%E4%B8%AA%E7%B3%BB%E5%88%97%E7%9A%84%E9%80%89%E4%B8%AD" tabindex="-1">支持整个系列的选中</h2>\n<p>在 5.3.0 中我们支持将<code>selectedMode</code>配置为<code>\'series\'</code>以实现系列所有数据的选中。</p>\n<h2 id="tooltip-%E4%B8%AD%E7%9A%84%E6%95%B0%E5%80%BC%E6%A0%BC%E5%BC%8F%E5%8C%96" tabindex="-1">tooltip 中的数值格式化</h2>\n<p>tooltip 可以在用户移到图形上的时候通过提示框显示更详细的相关信息,ECharts 也提供了<code>formatter</code>回调函数可以让开发者更灵活的自定义提示框的内容。</p>\n<p>但是我们发现大部分时候开发者只是需要格式化提示框中的数字部分,例如固定精度,加上<code>$</code>前缀等等,而之前为了格式化数字开发者只能通过<code>formatter</code>重写整个提示框的内容。特别是在 5.0 后 ECharts 的提示框结构更复杂,样式更美观了,重写变得成本很大而且很难达到默认的效果。</p>\n<p>因此在这个版本我们为 tooltip 新增了<code>valueFormatter</code>配置项用于数值部分的格式化。</p>\n<p>还是刚才那个坐标轴对齐的例子,我们可以为提示框中的数值部分加上 °C 和 ml 的后缀。</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHRvb2x0aXA6IHsKICAgIHRyaWdnZXI6ICdheGlzJwogIH0sCiAgbGVnZW5kOiB7fSwKICB4QXhpczogWwogICAgewogICAgICB0eXBlOiAnY2F0ZWdvcnknLAogICAgICBkYXRhOiBbJ01vbicsICdUdWUnLCAnV2VkJywgJ1RodScsICdGcmknLCAnU2F0JywgJ1N1biddLAogICAgICBheGlzUG9pbnRlcjogewogICAgICAgIHR5cGU6ICdzaGFkb3cnCiAgICAgIH0KICAgIH0KICBdLAogIHlBeGlzOiBbCiAgICB7CiAgICAgIHR5cGU6ICd2YWx1ZScsCiAgICAgIG5hbWU6ICdQcmVjaXBpdGF0aW9uJywKICAgICAgYWxpZ25UaWNrczogdHJ1ZSwKICAgICAgYXhpc0xhYmVsOiB7CiAgICAgICAgZm9ybWF0dGVyOiAne3ZhbHVlfSBtbCcKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgdHlwZTogJ3ZhbHVlJywKICAgICAgbmFtZTogJ1RlbXBlcmF0dXJlJywKICAgICAgYXhpc0xhYmVsOiB7CiAgICAgICAgZm9ybWF0dGVyOiAne3ZhbHVlfSDCsEMnCiAgICAgIH0KICAgIH0KICBdLAogIHNlcmllczogWwogICAgewogICAgICBuYW1lOiAnRXZhcG9yYXRpb24nLAogICAgICB0eXBlOiAnYmFyJywKICAgICAgdG9vbHRpcDogewogICAgICAgIHZhbHVlRm9ybWF0dGVyOiB2YWx1ZSA9PiB2YWx1ZSArICcgbWwnCiAgICAgIH0sCiAgICAgIC8vIHByZXR0aWVyLWlnbm9yZQogICAgICBkYXRhOiBbMi4wLCA0LjksIDcuMCwgMjMuMiwgMjUuNiwgNzYuNywgMTM1LjYsIDE2Mi4yLCAzMi42LCAyMC4wLCA2LjQsIDMuM10KICAgIH0sCiAgICB7CiAgICAgIG5hbWU6ICdQcmVjaXBpdGF0aW9uJywKICAgICAgdHlwZTogJ2JhcicsCiAgICAgIHRvb2x0aXA6IHsKICAgICAgICB2YWx1ZUZvcm1hdHRlcjogdmFsdWUgPT4gdmFsdWUgKyAnIG1sJwogICAgICB9LAogICAgICAvLyBwcmV0dGllci1pZ25vcmUKICAgICAgZGF0YTogWzIuNiwgNS45LCA5LjAsIDI2LjQsIDI4LjcsIDcwLjcsIDE3NS42LCAxODIuMiwgNDguNywgMTguOCwgNi4wLCAyLjNdCiAgICB9LAogICAgewogICAgICBuYW1lOiAnVGVtcGVyYXR1cmUnLAogICAgICB0eXBlOiAnbGluZScsCiAgICAgIHlBeGlzSW5kZXg6IDEsCiAgICAgIHRvb2x0aXA6IHsKICAgICAgICB2YWx1ZUZvcm1hdHRlcjogdmFsdWUgPT4gdmFsdWUgKyAnIMKwQycKICAgICAgfSwKICAgICAgZGF0YTogWzIuMCwgMi4yLCAzLjMsIDQuNSwgNi4zLCAxMC4yLCAyMC4zLCAyMy40LCAyMy4wLCAxNi41LCAxMi4wLCA2LjJdCiAgICB9CiAgXQp9Ow\'" v-bind="{ layout: \'bt\' }" />\n<p>每个系列都可以根据自己的数值格式配置自己的<code>valueFormatter</code>。</p>\n<h2 id="%E6%9B%B4%E7%81%B5%E6%B4%BB%E7%9A%84%E6%89%87%E5%8C%BA%E5%9C%86%E8%A7%92" tabindex="-1">更灵活的扇区圆角</h2>\n<p>在 5.0 中我们为扇区新增了圆角的配置,可以让饼图,旭日图变得更有趣。之前圆角的配置只支持内半径和外半径分开配置,这次我们更进一步,支持扇区的四个角都配置成不同的圆角大小,带来更灵活的呈现。</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHRvb2x0aXA6IHsKICAgIHRyaWdnZXI6ICdpdGVtJwogIH0sCiAgbGVnZW5kOiB7CiAgICB0b3A6ICc1JScsCiAgICBsZWZ0OiAnY2VudGVyJwogIH0sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIG5hbWU6ICdBY2Nlc3MgRnJvbScsCiAgICAgIHR5cGU6ICdwaWUnLAogICAgICByYWRpdXM6IFsnMzAlJywgJzcwJSddLAogICAgICByb3NlVHlwZTogJ2FuZ2xlJywKICAgICAgaXRlbVN0eWxlOiB7CiAgICAgICAgYm9yZGVyUmFkaXVzOiBbMjAsIDUsIDUsIDEwXSwKICAgICAgICBib3JkZXJDb2xvcjogJyNmZmYnLAogICAgICAgIGJvcmRlcldpZHRoOiAyCiAgICAgIH0sCiAgICAgIGxhYmVsOiB7CiAgICAgICAgc2hvdzogZmFsc2UKICAgICAgfSwKICAgICAgZGF0YTogWwogICAgICAgIHsgdmFsdWU6IDgwMCwgbmFtZTogJ1NlYXJjaCBFbmdpbmUnIH0sCiAgICAgICAgeyB2YWx1ZTogNzM1LCBuYW1lOiAnRGlyZWN0JyB9LAogICAgICAgIHsgdmFsdWU6IDU4MCwgbmFtZTogJ0VtYWlsJyB9LAogICAgICAgIHsgdmFsdWU6IDQ4NCwgbmFtZTogJ1VuaW9uIEFkcycgfSwKICAgICAgICB7IHZhbHVlOiA0MDAsIG5hbWU6ICdWaWRlbyBBZHMnIH0KICAgICAgXQogICAgfQogIF0KfTs\'" v-bind="{ layout: \'lr\', height: 400 }" />\n<h2 id="%E9%A5%BC%E5%9B%BE%E7%9A%84%E5%A4%8D%E6%9D%82%E6%A0%87%E7%AD%BE%E4%BC%98%E5%8C%96" tabindex="-1">饼图的复杂标签优化</h2>\n<p>饼图一直是 ECharts 中标签呈现最复杂的图表之一,我们从 5.0 开始就一直在饼图的标签布局、显示上做了很多的优化。</p>\n<p>这次我们针对使用了换行,背景色,富文本等格式比较复杂的饼图标签做了深度的优化。在宽度的自适应、超出容器、引导线的计算上比之前有了更好的效果:</p>\n<table>\n<thead>\n<tr>\n<th style="text-align:center">5.2.2 (Before)</th>\n<th style="text-align:center">5.3.0 (After)</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td style="text-align:center"><img src="" alt="before" data-src="images/5-3-0/pie-label-before.png"></td>\n<td style="text-align:center"><img src="" alt="after" data-src="images/5-3-0/pie-label-after.png"></td>\n</tr>\n<tr>\n<td style="text-align:center"><img src="" alt="before" data-src="images/5-3-0/pie-label-before2.png"></td>\n<td style="text-align:center"><img src="" alt="after" data-src="images/5-3-0/pie-label-after2.png"></td>\n</tr>\n</tbody>\n</table>\n<h2 id="%E6%9F%B1%E7%8A%B6%E5%9B%BE-large-%E6%A8%A1%E5%BC%8F%E4%BC%98%E5%8C%96" tabindex="-1">柱状图 large 模式优化</h2>\n<p>在数据量很多(&gt; 2k)的时候,我们支持柱状图通过开启 <a href="https://echarts.apache.org/option.html#series-bar.large">large</a> 模式来加速渲染,提升交互性能,但是之前 <a href="https://echarts.apache.org/option.html#series-bar.large">large</a> 模式下对柱状图布局比较简单,不支持多系列堆叠后的布局。在 5.3.0 中我们对 <a href="https://echarts.apache.org/option.html#series-bar.large">large</a> 模式的布局进行了优化,跟普通模式保持了一致性。我们可以在更多的场景中通过开启 <a href="https://echarts.apache.org/option.html#series-bar.large">large</a> 来优化柱状图的性能。</p>\n<p>除此之外,优化后的柱状图布局也修复了在对数轴这样的非线性轴上堆叠效果不正确的 bug。</p>\n<h2 id="%E9%9D%9E%E5%85%BC%E5%AE%B9%E6%94%B9%E5%8A%A8" tabindex="-1">非兼容改动</h2>\n<h3 id="registermap-%E5%92%8C-getmap-%E6%96%B9%E6%B3%95%E9%9C%80%E8%A6%81%E5%9C%A8%E5%BC%95%E5%85%A5%E5%9C%B0%E5%9B%BE%E7%BB%84%E4%BB%B6%E5%90%8E%E6%89%8D%E8%83%BD%E4%BD%BF%E7%94%A8" tabindex="-1">registerMap 和 getMap 方法需要在引入地图组件后才能使用</h3>\n<p>为了减少最小打包的体积,我们从核心模块中移除了地图数据管理的方法<code>getMap</code>和<code>registerMap</code>。</p>\n<p>如果你是<a href="https://echarts.apache.org/handbook/zh/basics/import/#%E6%8C%89%E9%9C%80%E5%BC%95%E5%85%A5-echarts-%E5%9B%BE%E8%A1%A8%E5%92%8C%E7%BB%84%E4%BB%B6">按需引入</a> ECharts 组件的话,需要保证先引入了<code>GeoComponent</code>或者<code>MapChart</code>之后,才能使用<code>registerMap</code>注册地图数据。</p>\n<md-code-block lang="ts" code="\'aW1wb3J0ICogYXMgZWNoYXJ0cyBmcm9tICdlY2hhcnRzL2NvcmUnOwppbXBvcnQgeyBNYXBDaGFydCB9IGZyb20gJ2VjaGFydHMvY2hhcnRzJzsKCmVjaGFydHMudXNlKFtNYXBDaGFydF0pOwoKLy8g5b-F6aG75Zyo5L2_55SoIHVzZSDmlrnms5Xms6jlhozkuoYgTWFwQ2hhcnQg5ZCO5omN6IO95L2_55SoIHJlZ2lzdGVyTWFwIOazqOWGjOWcsOWbvgplY2hhcnRzLnJlZ2lzdGVyTWFwKCd3b3JsZCcsIHdvcmxkSlNPTik7\'" line-highlights="\'\'" />\n<p>如果你是使用<code>import * as echarts from \'echarts\'</code>全量引入,这次改动不会对你产生任何影响。</p>\n<h3 id="%E6%8A%98%E7%BA%BF%E5%9B%BE%E7%A7%BB%E9%99%A4%E9%BB%98%E8%AE%A4%E9%AB%98%E4%BA%AE%E5%8A%A0%E7%B2%97%E7%9A%84%E6%95%88%E6%9E%9C" tabindex="-1">折线图移除默认高亮加粗的效果</h3>\n<p>我们在 5.0 里对折线图引入了默认高亮加粗的效果,但是社区反馈这个在很多场景效果并不好,所以在这个版本我们将这个效果从默认开启改为默认关闭,如果需要使用高亮加粗,则可以显式配置:</p>\n<md-code-block lang="ts" code="\'c2VyaWVzID0gewogIHR5cGU6ICdsaW5lJywKICAvLy4uLgogIGVtcGhhc2lzOiB7CiAgICBsaW5lU3R5bGU6IHsKICAgICAgd2lkdGg6ICdib2xkZXInCiAgICB9CiAgfQp9Ow\'" line-highlights="\'\'" />\n<h2 id="%E5%AE%8C%E6%95%B4%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95" tabindex="-1">完整更新记录</h2>\n<p>查看<a href="https://echarts.apache.org//changelog.html#v5-3-0">版本更新</a></p>\n',postPath:"zh/basics/release-note/5-3-0",title:"5.3 - 版本特性 - 入门篇"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:A},{title:"入门篇",dir:i,children:[{title:"获取 ECharts",dir:t},{title:"在项目中引入 ECharts",dir:e},{title:"资源列表",dir:d,draft:g},{title:"寻求帮助",dir:l},{title:"版本特性",dir:o,children:[{title:"ECharts 6 特性介绍",dir:a},{title:"v5 升级 v6 指南",dir:r},{title:"5.0",dir:c},{title:"v4 升级 v5 指南",dir:n},{title:5.2,dir:s},{title:5.3,dir:B},{title:5.4,dir:h},{title:5.5,dir:p},{title:5.6,dir:b}]}]},{title:"概念篇",dir:w,children:[{title:"图表容器及大小",dir:E},{title:"配置项",dir:m,draft:g},{title:"系列",dir:y,draft:g},{title:"样式",dir:G},{title:"数据集",dir:W},{title:"数据转换",dir:L},{title:"坐标系",dir:Z,draft:g},{title:"坐标轴",dir:H},{title:"视觉映射",dir:I},{title:"图例",dir:K},{title:"事件与行为",dir:V}]},{title:"应用篇",dir:M,children:[{title:"常用图表类型",dir:D,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:u},{title:"堆叠柱状图",dir:J},{title:"动态排序柱状图",dir:Y},{title:"极坐标系柱状图",dir:O,draft:g},{title:"阶梯瀑布图",dir:N},{title:"视觉映射的柱状图",dir:I,draft:g}]},{title:"折线图",dir:v,children:[{title:"基础折线图",dir:F},{title:"堆叠折线图",dir:X},{title:"区域面积图",dir:S},{title:"平滑曲线图",dir:f},{title:"阶梯线图",dir:R}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:x},{title:"圆环图",dir:z},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:j,children:[{title:"基础散点图",dir:T}]}]},{title:"常用组件",dir:k,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:Q}]}]},{title:"移动端优化",dir:C,draft:g},{title:"跨平台方案",dir:U,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:P},{title:"数据下钻",dir:q,draft:g}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:_}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:gg}]},{title:"交互",dir:Cg,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:Ig,draft:g},{title:"智能指针吸附",dir:Ag}]}]},{title:"最佳实践",dir:ig,children:[{title:"移动端优化",dir:C,draft:g},{title:tg,dir:eg},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:dg}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:lg}]}],en:[{title:"Get Started",dir:A},{title:"Basics",dir:i,children:[{title:"Download ECharts",dir:t},{title:"Import ECharts",dir:e},{title:"Resources",dir:d,draft:g},{title:"Get Help",dir:l},{title:"What's New",dir:o,children:[{title:"ECharts 6 Features",dir:a},{title:"Migration from v5 to v6",dir:r},{title:"5.0",dir:c},{title:"Migration from v4 to v5",dir:n},{title:5.2,dir:s},{title:5.3,dir:B},{title:5.4,dir:h},{title:5.5,dir:p},{title:5.6,dir:b}]}]},{title:"Concepts",dir:w,children:[{title:"Chart Container",dir:E},{title:"Chart Option",dir:m,draft:g},{title:"Series",dir:y,draft:g},{title:"Style",dir:G},{title:"Dataset",dir:W},{title:"Data Transform",dir:L},{title:"Coordinate",dir:Z,draft:g},{title:"Axis",dir:H},{title:"Visual Mapping",dir:I},{title:"Legend",dir:K},{title:"Event and Action",dir:V}]},{title:"How To Guides",dir:M,children:[{title:"Common Charts",dir:D,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:u},{title:"Stacked Bar",dir:J},{title:"Bar Racing",dir:Y},{title:"Bar Polar",dir:O,draft:g},{title:"Waterfall",dir:N}]},{title:"Line",dir:v,children:[{title:"Basic Line",dir:F},{title:"Stacked Line",dir:X},{title:"Area Chart",dir:S},{title:"Smoothed Line",dir:f},{title:"Step Line",dir:R}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:x},{title:"Ring Style",dir:z},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:j,children:[{title:"Basic Scatter",dir:T}]}]},{title:"Common Components",dir:k,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:Q}]}]},{title:"Mobile",dir:C,draft:g},{title:"Cross Platform",dir:U,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:P},{title:"Drilldown",dir:q,draft:g}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:_}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:gg}]},{title:"Interaction",dir:Cg,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:Ig,draft:g},{title:"Intelligent Pointer Snapping",dir:Ag}]}]},{title:"Best Practices",dir:ig,children:[{title:"Mobile Optimization",dir:C,draft:g},{title:tg,dir:eg},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:dg}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:lg}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:g,routePath:"/zh/basics/release-note/5-3-0",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/zh/basics/release-note/5-4-0/index.html b/docs/zh/basics/release-note/5-4-0/index.html
new file mode 100644
index 0000000..47588ad
--- /dev/null
+++ b/docs/zh/basics/release-note/5-4-0/index.html
@@ -0,0 +1,13 @@
+<!doctype html>
+<html data-n-head-ssr lang="zh-CN" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh-CN%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>5.4 - 版本特性 - 入门篇 - 使用手册 - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="zh"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/zh/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/zh/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/zh/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/zh/index.html" class="navbar-brand"><img src="https://echarts.apache.org/zh/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/zh/index.html">首页</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">文档<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/feature.html">特性</a></li><li><a href="https://echarts.apache.org/handbook/zh/get-started/">使用手册</a></li><li><a href="https://echarts.apache.org/zh/api.html">API</a></li><li><a href="https://echarts.apache.org/zh/option.html">配置项手册</a></li><li><a href="https://echarts.apache.org/zh/changelog.html">版本记录</a></li><li><a href="https://echarts.apache.org/zh/faq.html">常见问题</a></li><li><a href="https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide">v6 升级指南</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">下载<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/download.html">下载</a></li><li><a href="https://echarts.apache.org/zh/download-theme.html">主题下载</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">自定义系列下载<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/download-extension.html">扩展下载</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/zh/index.html">示例</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">资源<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/spreadsheet.html">表格工具</a></li><li><a href="https://echarts.apache.org/zh/theme-builder.html">主题构建工具</a></li><li><a href="https://echarts.apache.org/zh/cheat-sheet.html">术语速查手册</a></li><li><a href="https://echarts.apache.org/zh/resources.html">更多资源</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">社区<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/events.html">活动</a></li><li><a href="https://echarts.apache.org/zh/committers.html">贡献者列表</a></li><li><a href="https://echarts.apache.org/zh/maillist.html">邮件列表</a></li><li><a href="https://echarts.apache.org/zh/contributing.html">如何贡献</a></li><li><a href="https://echarts.apache.org/zh/dependencies.html">依赖项</a></li><li><a href="https://echarts.apache.org/zh/coding-standard.html">代码规范</a></li><li><a href="https://github.com/apache/echarts" target="_blank">源码(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/security.html">安全</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">版权<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">活动<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">捐赠<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">鸣谢<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("en")'>EN</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/zh/get-started" class="nav-link"><span class="title">快速上手</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">入门篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/basics/download" class="nav-link"><span class="title">获取 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/import" class="nav-link"><span class="title">在项目中引入 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/basics/help" class="nav-link"><span class="title">寻求帮助</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">版本特性</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 特性介绍</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">v5 升级 v6 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">v4 升级 v5 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-4-0" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">概念篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/concepts/chart-size" class="nav-link"><span class="title">图表容器及大小</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/style" class="nav-link"><span class="title">样式</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/dataset" class="nav-link"><span class="title">数据集</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/data-transform" class="nav-link"><span class="title">数据转换</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/axis" class="nav-link"><span class="title">坐标轴</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/visual-map" class="nav-link"><span class="title">视觉映射</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/legend" class="nav-link"><span class="title">图例</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/event" class="nav-link"><span class="title">事件与行为</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">应用篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">常用图表类型</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">柱状图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">基础柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">堆叠柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">动态排序柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">阶梯瀑布图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">折线图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">基础折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">堆叠折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/area-line" class="nav-link"><span class="title">区域面积图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">平滑曲线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/step-line" class="nav-link"><span class="title">阶梯线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">饼图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">基础饼图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">圆环图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/rose" class="nav-link"><span class="title">南丁格尔图(玫瑰图)</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">散点图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">基础散点图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">常用组件</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">地理坐标系(Geo)</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG 底图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">跨平台方案</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/server" class="nav-link"><span class="title">服务端渲染</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/wechat-app" class="nav-link"><span class="title">微信小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/baidu-app" class="nav-link"><span class="title">百度智能小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">数据处理</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/data/dynamic-data" class="nav-link"><span class="title">动态的异步数据</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">标签</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/label/rich-text" class="nav-link"><span class="title">富文本标签</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">动画</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/animation/transition" class="nav-link"><span class="title">数据过渡动画</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">交互</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/drag" class="nav-link"><span class="title">拖拽的实现</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">智能指针吸附</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">最佳实践</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/aria" class="nav-link"><span class="title">无障碍访问</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/security" class="nav-link"><span class="title">安全指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">编辑本文档</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/meta/edit-guide" class="nav-link"><span class="title">文档编辑指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="apache-echarts-5.4.0-%E7%89%B9%E6%80%A7%E4%BB%8B%E7%BB%8D" tabindex="-1">Apache ECharts 5.4.0 特性介绍</h1> <h2 id="%E6%99%BA%E8%83%BD%E6%8C%87%E9%92%88%E5%90%B8%E9%99%84" tabindex="-1">智能指针吸附</h2> <p>在图表中,部分可交互元素可能比较小,有时候用户不易准确地进行点击等操作,移动端尤其如此。因此,在 Apache ECharts 5.4.0 中,我们引入了“智能指针吸附”的概念。</p> <p>具体请参见<a href="zh/how-to/interaction/coarse-pointer">智能指针吸附</a>。</p> <h2 id="%E5%9C%A8%E6%9B%B4%E5%A4%9A%E5%9D%90%E6%A0%87%E7%B3%BB%E4%B8%AD%E4%BD%BF%E7%94%A8%E9%A5%BC%E5%9B%BE" tabindex="-1">在更多坐标系中使用饼图</h2> <p>Apache ECharts 一个很强大的功能就是各种图表类型、坐标系、组件的组合。在这个版本中,我们为饼图增加了坐标系的配置项。</p> <p>于是,饼图可以出现在直角坐标系:</p> <p><img src alt data-src="images/5-4-0/pie-grid.png"></p> <p>日历坐标系:</p> <p><img src alt data-src="images/5-4-0/pie-calendar.png"></p> <p>地理坐标系:</p> <p><img src alt data-src="images/5-4-0/pie-geo.png"></p> <p>等等各种坐标系中,甚至可以和百度地图扩展联动,在地图上显示饼图:</p> <p><img src alt data-src="images/5-4-0/pie-bmap.png"></p> <p><img src alt data-src="images/5-4-0/pie-amap.png"></p> <p>这大大扩展了饼图的灵活性,让开发者可以使用 Apache ECharts 创作出更多图表的组合效果。</p> <h2 id="%E6%96%B0%E5%A2%9E%E4%B9%8C%E5%85%8B%E5%85%B0%E8%AF%AD%E7%BF%BB%E8%AF%91" tabindex="-1">新增乌克兰语翻译</h2> <p>在这个版本中,我们支持了乌克兰语。<strong>目前 Apache ECharts 已支持 17 种语言!</strong></p> <blockquote><p>如果需要使用除中英文以外的语言,需要在初始化图表前,先调用 <code>echarts.registerLocale</code> 初始化,然后在 <code>init</code> 时候传入 <code>opts.locale</code> 修改图表语言。</p></blockquote> <h2 id="%E4%BB%AA%E8%A1%A8%E7%9B%98%E6%96%87%E5%AD%97%E6%97%8B%E8%BD%AC" tabindex="-1">仪表盘文字旋转</h2> <p>在这个版本中,我们支持了仪表盘的文字旋转。</p> <iframe width="100%" height="400" src=""></iframe> <p><code>axisLabel.rotate</code> 可以设为 <code>'tangential' | 'radial' | number</code>。如果是 <code>number</code> 类型,则表示标签的旋转角,从 -90 度到 90 度,正值是逆时针。除此之外,还可以是字符串 <code>'radial'</code> 表示径向旋转、<code>'tangential'</code> 表示切向旋转。</p> <h2 id="%E5%AE%8C%E6%95%B4%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95" tabindex="-1">完整更新记录</h2> <p>查看<a href="https://echarts.apache.org//changelog.html#v5-4-0">版本更新</a></p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">本文贡献者</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/zh/basics/release-note/5-4-0.md" title="编辑本文" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">在 GitHub 上编辑本页</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/Ovilia" target="_blank" class="post-contributor has-avatar"><img alt="Ovilia" src="https://echarts.apache.org/en/images/people/羡辙.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>Ovilia</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,i,e,r,d,a,l,n,c,o,s,h,p,g,E,m,B,b,f,u,A,C,v,S,x,D,P,w,k,y,G,L,R,M,V,z,_,F,T,H,I,q,N,O,U,W,$,X,j,J,K,Q,Y,Z,tt,it,et,rt,dt,at,lt,nt,ct){return{layout:"default",data:[{html:'<h1 id="apache-echarts-5.4.0-%E7%89%B9%E6%80%A7%E4%BB%8B%E7%BB%8D" tabindex="-1">Apache ECharts 5.4.0 特性介绍</h1>\n<h2 id="%E6%99%BA%E8%83%BD%E6%8C%87%E9%92%88%E5%90%B8%E9%99%84" tabindex="-1">智能指针吸附</h2>\n<p>在图表中,部分可交互元素可能比较小,有时候用户不易准确地进行点击等操作,移动端尤其如此。因此,在 Apache ECharts 5.4.0 中,我们引入了“智能指针吸附”的概念。</p>\n<p>具体请参见<a href="zh/how-to/interaction/coarse-pointer">智能指针吸附</a>。</p>\n<h2 id="%E5%9C%A8%E6%9B%B4%E5%A4%9A%E5%9D%90%E6%A0%87%E7%B3%BB%E4%B8%AD%E4%BD%BF%E7%94%A8%E9%A5%BC%E5%9B%BE" tabindex="-1">在更多坐标系中使用饼图</h2>\n<p>Apache ECharts 一个很强大的功能就是各种图表类型、坐标系、组件的组合。在这个版本中,我们为饼图增加了坐标系的配置项。</p>\n<p>于是,饼图可以出现在直角坐标系:</p>\n<p><img src="" alt="" data-src="images/5-4-0/pie-grid.png"></p>\n<p>日历坐标系:</p>\n<p><img src="" alt="" data-src="images/5-4-0/pie-calendar.png"></p>\n<p>地理坐标系:</p>\n<p><img src="" alt="" data-src="images/5-4-0/pie-geo.png"></p>\n<p>等等各种坐标系中,甚至可以和百度地图扩展联动,在地图上显示饼图:</p>\n<p><img src="" alt="" data-src="images/5-4-0/pie-bmap.png"></p>\n<p><img src="" alt="" data-src="images/5-4-0/pie-amap.png"></p>\n<p>这大大扩展了饼图的灵活性,让开发者可以使用 Apache ECharts 创作出更多图表的组合效果。</p>\n<h2 id="%E6%96%B0%E5%A2%9E%E4%B9%8C%E5%85%8B%E5%85%B0%E8%AF%AD%E7%BF%BB%E8%AF%91" tabindex="-1">新增乌克兰语翻译</h2>\n<p>在这个版本中,我们支持了乌克兰语。<strong>目前 Apache ECharts 已支持 17 种语言!</strong></p>\n<blockquote>\n<p>如果需要使用除中英文以外的语言,需要在初始化图表前,先调用 <code>echarts.registerLocale</code> 初始化,然后在 <code>init</code> 时候传入 <code>opts.locale</code> 修改图表语言。</p>\n</blockquote>\n<h2 id="%E4%BB%AA%E8%A1%A8%E7%9B%98%E6%96%87%E5%AD%97%E6%97%8B%E8%BD%AC" tabindex="-1">仪表盘文字旋转</h2>\n<p>在这个版本中,我们支持了仪表盘的文字旋转。</p>\n<md-example src="gauge-grade" width="100%" height="400" />\n<p><code>axisLabel.rotate</code> 可以设为 <code>\'tangential\' | \'radial\' | number</code>。如果是 <code>number</code> 类型,则表示标签的旋转角,从 -90 度到 90 度,正值是逆时针。除此之外,还可以是字符串 <code>\'radial\'</code> 表示径向旋转、<code>\'tangential\'</code> 表示切向旋转。</p>\n<h2 id="%E5%AE%8C%E6%95%B4%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95" tabindex="-1">完整更新记录</h2>\n<p>查看<a href="https://echarts.apache.org//changelog.html#v5-4-0">版本更新</a></p>\n',postPath:"zh/basics/release-note/5-4-0",title:"5.4 - 版本特性 - 入门篇"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:r},{title:"入门篇",dir:d,children:[{title:"获取 ECharts",dir:a},{title:"在项目中引入 ECharts",dir:l},{title:"资源列表",dir:n,draft:t},{title:"寻求帮助",dir:c},{title:"版本特性",dir:o,children:[{title:"ECharts 6 特性介绍",dir:s},{title:"v5 升级 v6 指南",dir:h},{title:"5.0",dir:p},{title:"v4 升级 v5 指南",dir:g},{title:5.2,dir:E},{title:5.3,dir:m},{title:5.4,dir:B},{title:5.5,dir:b},{title:5.6,dir:f}]}]},{title:"概念篇",dir:u,children:[{title:"图表容器及大小",dir:A},{title:"配置项",dir:C,draft:t},{title:"系列",dir:v,draft:t},{title:"样式",dir:S},{title:"数据集",dir:x},{title:"数据转换",dir:D},{title:"坐标系",dir:P,draft:t},{title:"坐标轴",dir:w},{title:"视觉映射",dir:e},{title:"图例",dir:k},{title:"事件与行为",dir:y}]},{title:"应用篇",dir:G,children:[{title:"常用图表类型",dir:L,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:R},{title:"堆叠柱状图",dir:M},{title:"动态排序柱状图",dir:V},{title:"极坐标系柱状图",dir:z,draft:t},{title:"阶梯瀑布图",dir:_},{title:"视觉映射的柱状图",dir:e,draft:t}]},{title:"折线图",dir:F,children:[{title:"基础折线图",dir:T},{title:"堆叠折线图",dir:H},{title:"区域面积图",dir:I},{title:"平滑曲线图",dir:q},{title:"阶梯线图",dir:N}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:O},{title:"圆环图",dir:U},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:W,children:[{title:"基础散点图",dir:$}]}]},{title:"常用组件",dir:X,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:j}]}]},{title:"移动端优化",dir:i,draft:t},{title:"跨平台方案",dir:J,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:K},{title:"数据下钻",dir:Q,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:Y}]},{title:"动画",dir:Z,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:it,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:et,draft:t},{title:"智能指针吸附",dir:rt}]}]},{title:"最佳实践",dir:dt,children:[{title:"移动端优化",dir:i,draft:t},{title:at,dir:lt},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:nt}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:ct}]}],en:[{title:"Get Started",dir:r},{title:"Basics",dir:d,children:[{title:"Download ECharts",dir:a},{title:"Import ECharts",dir:l},{title:"Resources",dir:n,draft:t},{title:"Get Help",dir:c},{title:"What's New",dir:o,children:[{title:"ECharts 6 Features",dir:s},{title:"Migration from v5 to v6",dir:h},{title:"5.0",dir:p},{title:"Migration from v4 to v5",dir:g},{title:5.2,dir:E},{title:5.3,dir:m},{title:5.4,dir:B},{title:5.5,dir:b},{title:5.6,dir:f}]}]},{title:"Concepts",dir:u,children:[{title:"Chart Container",dir:A},{title:"Chart Option",dir:C,draft:t},{title:"Series",dir:v,draft:t},{title:"Style",dir:S},{title:"Dataset",dir:x},{title:"Data Transform",dir:D},{title:"Coordinate",dir:P,draft:t},{title:"Axis",dir:w},{title:"Visual Mapping",dir:e},{title:"Legend",dir:k},{title:"Event and Action",dir:y}]},{title:"How To Guides",dir:G,children:[{title:"Common Charts",dir:L,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:R},{title:"Stacked Bar",dir:M},{title:"Bar Racing",dir:V},{title:"Bar Polar",dir:z,draft:t},{title:"Waterfall",dir:_}]},{title:"Line",dir:F,children:[{title:"Basic Line",dir:T},{title:"Stacked Line",dir:H},{title:"Area Chart",dir:I},{title:"Smoothed Line",dir:q},{title:"Step Line",dir:N}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:O},{title:"Ring Style",dir:U},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:W,children:[{title:"Basic Scatter",dir:$}]}]},{title:"Common Components",dir:X,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:j}]}]},{title:"Mobile",dir:i,draft:t},{title:"Cross Platform",dir:J,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:K},{title:"Drilldown",dir:Q,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:Y}]},{title:"Animation",dir:Z,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:it,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:et,draft:t},{title:"Intelligent Pointer Snapping",dir:rt}]}]},{title:"Best Practices",dir:dt,children:[{title:"Mobile Optimization",dir:i,draft:t},{title:at,dir:lt},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:nt}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:ct}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/zh/basics/release-note/5-4-0",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/zh/basics/release-note/5-5-0/index.html b/docs/zh/basics/release-note/5-5-0/index.html
new file mode 100644
index 0000000..27fd68c
--- /dev/null
+++ b/docs/zh/basics/release-note/5-5-0/index.html
@@ -0,0 +1,80 @@
+<!doctype html>
+<html data-n-head-ssr lang="zh-CN" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh-CN%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>5.5 - 版本特性 - 入门篇 - 使用手册 - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="zh"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/zh/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/zh/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/zh/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/zh/index.html" class="navbar-brand"><img src="https://echarts.apache.org/zh/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/zh/index.html">首页</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">文档<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/feature.html">特性</a></li><li><a href="https://echarts.apache.org/handbook/zh/get-started/">使用手册</a></li><li><a href="https://echarts.apache.org/zh/api.html">API</a></li><li><a href="https://echarts.apache.org/zh/option.html">配置项手册</a></li><li><a href="https://echarts.apache.org/zh/changelog.html">版本记录</a></li><li><a href="https://echarts.apache.org/zh/faq.html">常见问题</a></li><li><a href="https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide">v6 升级指南</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">下载<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/download.html">下载</a></li><li><a href="https://echarts.apache.org/zh/download-theme.html">主题下载</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">自定义系列下载<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/download-extension.html">扩展下载</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/zh/index.html">示例</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">资源<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/spreadsheet.html">表格工具</a></li><li><a href="https://echarts.apache.org/zh/theme-builder.html">主题构建工具</a></li><li><a href="https://echarts.apache.org/zh/cheat-sheet.html">术语速查手册</a></li><li><a href="https://echarts.apache.org/zh/resources.html">更多资源</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">社区<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/events.html">活动</a></li><li><a href="https://echarts.apache.org/zh/committers.html">贡献者列表</a></li><li><a href="https://echarts.apache.org/zh/maillist.html">邮件列表</a></li><li><a href="https://echarts.apache.org/zh/contributing.html">如何贡献</a></li><li><a href="https://echarts.apache.org/zh/dependencies.html">依赖项</a></li><li><a href="https://echarts.apache.org/zh/coding-standard.html">代码规范</a></li><li><a href="https://github.com/apache/echarts" target="_blank">源码(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/security.html">安全</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">版权<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">活动<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">捐赠<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">鸣谢<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("en")'>EN</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/zh/get-started" class="nav-link"><span class="title">快速上手</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">入门篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/basics/download" class="nav-link"><span class="title">获取 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/import" class="nav-link"><span class="title">在项目中引入 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/basics/help" class="nav-link"><span class="title">寻求帮助</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">版本特性</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 特性介绍</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">v5 升级 v6 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">v4 升级 v5 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-5-0" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">概念篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/concepts/chart-size" class="nav-link"><span class="title">图表容器及大小</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/style" class="nav-link"><span class="title">样式</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/dataset" class="nav-link"><span class="title">数据集</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/data-transform" class="nav-link"><span class="title">数据转换</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/axis" class="nav-link"><span class="title">坐标轴</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/visual-map" class="nav-link"><span class="title">视觉映射</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/legend" class="nav-link"><span class="title">图例</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/event" class="nav-link"><span class="title">事件与行为</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">应用篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">常用图表类型</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">柱状图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">基础柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">堆叠柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">动态排序柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">阶梯瀑布图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">折线图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">基础折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">堆叠折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/area-line" class="nav-link"><span class="title">区域面积图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">平滑曲线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/step-line" class="nav-link"><span class="title">阶梯线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">饼图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">基础饼图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">圆环图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/rose" class="nav-link"><span class="title">南丁格尔图(玫瑰图)</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">散点图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">基础散点图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">常用组件</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">地理坐标系(Geo)</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG 底图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">跨平台方案</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/server" class="nav-link"><span class="title">服务端渲染</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/wechat-app" class="nav-link"><span class="title">微信小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/baidu-app" class="nav-link"><span class="title">百度智能小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">数据处理</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/data/dynamic-data" class="nav-link"><span class="title">动态的异步数据</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">标签</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/label/rich-text" class="nav-link"><span class="title">富文本标签</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">动画</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/animation/transition" class="nav-link"><span class="title">数据过渡动画</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">交互</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/drag" class="nav-link"><span class="title">拖拽的实现</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">智能指针吸附</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">最佳实践</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/aria" class="nav-link"><span class="title">无障碍访问</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/security" class="nav-link"><span class="title">安全指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">编辑本文档</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/meta/edit-guide" class="nav-link"><span class="title">文档编辑指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="apache-echarts-5.5.0-%E7%89%B9%E6%80%A7%E4%BB%8B%E7%BB%8D" tabindex="-1">Apache ECharts 5.5.0 特性介绍</h1> <h2 id="%E5%A2%9E%E5%BC%BA%E7%9A%84-esm-%E6%94%AF%E6%8C%81" tabindex="-1">增强的 ESM 支持</h2> <p>为了让开发者在测试和 Node.js 环境使用更方便,我们在这个版本中对 ESM 的识别问题进行了优化。</p> <p>以前,ECharts 只在 npm(npm 包的 lib 目录中)导出 <code>*.esm</code> 文件。虽然这在 bundlers 环境表现良好,但 Node.js 环境和一些基于 Node.js 的测试框架(如 vitest 和 jest)中的表现并不理想。</p> <p>有了这个新功能,我们做了几个改变以改善这个问题:</p> <ul><li>在 <code>package.json</code> 中添加了 <code>"type": "module"</code></li> <li>在 <code>package.json</code> 中添加了 <code>"exports": {...}</code></li> <li>在子目录中添加了一些只包含 <code>"type": "commonjs"</code> 的 <code>package.json</code> 文件</li></ul> <p>这些改变意味着,像 <code>echarts/core.js</code> 这样的文件现在可以在像纯 Node.js、vitest、jest 和 create-react-app 这样的环境中解析为 ESM。</p> <p>我们还确保了这个新功能与各种环境兼容,包括运行时(Node.js/vitest/jest(create-react-app)/ssr/…)和打包器(webpack/rollup/vite/esbuild/…)。</p> <p>我们非常期待这一新功能,并相信它将极大地改善开发者的体验。</p> <h2 id="%E6%9C%8D%E5%8A%A1%E7%AB%AF%E6%B8%B2%E6%9F%93-%EF%BC%8B-%E5%AE%A2%E6%88%B7%E7%AB%AF%E8%BD%BB%E9%87%8F%E8%BF%90%E8%A1%8C%E6%97%B6" tabindex="-1">服务端渲染 + 客户端轻量运行时</h2> <p>Apache ECharts 功能强大,相应地,包体积也比较大。我们在之前的版本中也做了各种努力来改进这一点。开发者可以使用 TreeShaking 按需加载部分代码,以减少加载的代码量。从 Apache ECharts 5.3 版本起,我们支持了零依赖的服务端 SVG 字符串渲染方案,并支持图表的初始动画。这样,使用服务端渲染的结果作为首屏渲染的画面,可以大大减少首屏加载时间。</p> <p>服务端渲染虽然是一种很有效减少包体积的解决方案,但如果需要在客户端实现一些交互,那么不得不仍旧加载 echarts.js,这可能会增加更多的加载时间。对于一些对页面加载速度要求较高的场景,这可能不是一个理想的选择。</p> <p>在 5.5.0 版本中,我们新增了客户端轻量运行时,客户端无需加载完整 ECharts 即可实现部分交互。这样,我们可以在服务端渲染图表,然后在客户端加载轻量运行时,实现一些常见的交互。这意味着,只需要加载 4KB 的轻量运行时(gzip 后 1KB),即可实现带初始动画和部分常用交互形式的图表。这一改进将极大地提升页面加载速度,特别是对于移动端的体验。</p> <p><img src alt data-src="images/5-5-0/ssr-example.png"></p> <p>以这个带标题的饼图为例,如果按客户端仅打包饼图和标题组件的方案,gzip 后需要 135KB;如果按服务端渲染的方案,渲染结果 SVG gzip 后 1 KB、客户端运行时 gzip 后 1KB,仅为前者体积的 1.5%。交互方面,后者也可以做到初始动画、鼠标移动到图表元素后的高亮,并且获取到点击事件,能够满足大部分的常见交互需求。</p> <p>如需使用这一方案,服务端代码和之前一样,但需要保证 ECharts 版本号在 5.5.0 以上。</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code><span class="token comment">// 服务端代码</span>
+<span class="token keyword">const</span> echarts <span class="token operator">=</span> <span class="token keyword">require</span><span class="token punctuation">(</span><span class="token string">'echarts'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+<span class="token comment">// 在 SSR 模式下第一个参数不需要再传入 DOM 对象</span>
+<span class="token keyword">let</span> chart <span class="token operator">=</span> echarts<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span><span class="token keyword">null</span><span class="token punctuation">,</span> <span class="token keyword">null</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
+  renderer<span class="token operator">:</span> <span class="token string">'svg'</span><span class="token punctuation">,</span> <span class="token comment">// 必须使用 SVG 模式</span>
+  ssr<span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span> <span class="token comment">// 开启 SSR</span>
+  width<span class="token operator">:</span> <span class="token number">400</span><span class="token punctuation">,</span> <span class="token comment">// 需要指明高和宽,如果是根据客户端容器大小动态的,该值需要从客户端得到</span>
+  height<span class="token operator">:</span> <span class="token number">300</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+<span class="token comment">// 像正常使用一样 setOption</span>
+chart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+  <span class="token comment">//...</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+<span class="token comment">// 输出字符串</span>
+<span class="token keyword">const</span> svgStr <span class="token operator">=</span> chart<span class="token punctuation">.</span><span class="token function">renderToSVGString</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+<span class="token comment">// 调用 dispose 以释放内存</span>
+chart<span class="token punctuation">.</span><span class="token function">dispose</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+chart <span class="token operator">=</span> <span class="token keyword">null</span><span class="token punctuation">;</span>
+
+<span class="token comment">// 通过 HTTP Response 返回 svgStr 给前端或者缓存到本地(这里以 Express.js 为例):</span>
+res<span class="token punctuation">.</span><span class="token function">writeHead</span><span class="token punctuation">(</span><span class="token number">200</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
+  <span class="token string-property property">'Content-Type'</span><span class="token operator">:</span> <span class="token string">'application/xml'</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+res<span class="token punctuation">.</span><span class="token function">write</span><span class="token punctuation">(</span>svgStr<span class="token punctuation">)</span><span class="token punctuation">;</span>
+res<span class="token punctuation">.</span><span class="token function">end</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>客户端将得到的 SVG 字符串添加到容器中,并绑定轻量运行时:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-html line-numbers"><code><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>chart-container<span class="token punctuation">"</span></span> <span class="token special-attr"><span class="token attr-name">style</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token value css language-css"><span class="token property">width</span><span class="token punctuation">:</span>800px<span class="token punctuation">;</span><span class="token property">height</span><span class="token punctuation">:</span>600px</span><span class="token punctuation">"</span></span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">></span></span>
+
+<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://cdn.jsdelivr.net/npm/echarts/ssr/client/dist/index.min.js<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">></span></span>
+<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span><span class="token punctuation">></span></span>
+const ssrClient = window['echarts-ssr-client'];
+
+const isSeriesShown = {
+  a: true,
+  b: true
+};
+
+function updateChart(svgStr) {
+  const container = document.getElementById('chart-container');
+  container.innerHTML = svgStr;
+
+  // 使用轻量运行时赋予图表交互能力
+  ssrClient.hydrate(container, {
+    on: {
+      click: (params) => {
+        if (params.ssrType === 'legend') {
+          // 点击图例元素,请求服务器进行二次渲染
+          isSeriesShown[params.seriesName] = !isSeriesShown[params.seriesName];
+          fetch('...?series=' + JSON.stringify(isSeriesShown))
+            .then(res => res.text())
+            .then(svgStr => {
+              updateChart(svgStr);
+            });
+        }
+      }
+    }
+  });
+}
+
+// 通过 AJAX 请求获取服务端渲染的 SVG 字符串
+fetch('...')
+  .then(res => res.text())
+  .then(svgStr => {
+    updateChart(svgStr);
+  });
+<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">></span></span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>客户端轻量运行时必须配合 SVG 形式的服务端渲染结果使用,支持以下交互:</p> <ul><li>图表初始动画(实现原理:服务端渲染的 SVG 带有 CSS 动画)</li> <li>高亮样式(实现原理:服务端渲染的 SVG 带有 CSS 动画)</li> <li>动态改变数据(实现原理:轻量运行时请求服务器进行二次渲染)</li> <li>点击图例切换系列是否显示(实现原理:轻量运行时请求服务器进行二次渲染)</li></ul> <p>可以发现,这能够满足大部分的交互场景需求。如果需要更复杂的交互,则客户端需要加载 <code>echarts.js</code> 实现完整功能。完整的介绍请参见<a href="zh/how-to/cross-platform/server">服务端渲染 ECharts 图表</a>。</p> <h2 id="%E6%95%B0%E6%8D%AE%E4%B8%8B%E9%92%BB%E6%94%AF%E6%8C%81%E8%BF%87%E6%B8%A1%E5%8A%A8%E7%94%BB" tabindex="-1">数据下钻支持过渡动画</h2> <p>在 5.5.0 版本中,我们新增了 <code>childGroupId</code> 配置项,可以实现数据下钻的过渡动画功能。</p> <p>在之前的版本中,我们已经支持使用 <code>groupId</code>,用以表示当前数据所属的组别。而这次新增的 <code>childGroupId</code> 则可以用来表明当前数据本身的组别,与 <code>groupId</code> 配合使用后形成一个“父-子-孙”的关系链条。当用户点击图表中的数据元素时,图表会以过渡动画的形式展示下钻的数据。</p> <iframe width="100%" height="400" src=""></iframe> <p>开发者只需要指定 <code>groupId</code> 和 <code>childGroupId</code>,ECharts 就会自动处理层级关系,实现过渡动画。</p> <h2 id="%E9%A5%BC%E5%9B%BE%E6%94%AF%E6%8C%81%E6%89%87%E5%8C%BA%E4%B9%8B%E9%97%B4%E7%9A%84%E9%97%B4%E9%9A%94" tabindex="-1">饼图支持扇区之间的间隔</h2> <p>通过设置饼图扇区之间的间隔,可以让饼图的数据块之间更加清晰,并且形成独特的视觉效果。参见(<a href="https://echarts.apache.org/option.html#series-pie.padAngle">series-pie.padAngle</a>)。</p> <iframe width="100%" height="400" src=""></iframe> <h2 id="%E9%A5%BC%E5%9B%BE%E5%92%8C%E6%9E%81%E5%9D%90%E6%A0%87%E7%B3%BB%E6%94%AF%E6%8C%81%E7%BB%93%E6%9D%9F%E8%A7%92%E5%BA%A6" tabindex="-1">饼图和极坐标系支持结束角度</h2> <p>结束角度的配置项使得我们可以制作半圆形等不完整的饼图。参见(<a href="https://echarts.apache.org/option.html#series-pie.endAngle">series-pie.endAngle</a>)。</p> <iframe width="100%" height="400" src=""></iframe> <p>极坐标系也同样支持了结束角度,可以制作出更加丰富的极坐标图表。参见(<a href="https://echarts.apache.org/option.html#angleAxis.endAngle">angleAxis.endAngle</a>)。</p> <iframe width="100%" height="400" src=""></iframe> <h2 id="%E6%96%B0%E5%A2%9E-min-max-%E9%87%87%E6%A0%B7%E6%96%B9%E5%BC%8F" tabindex="-1">新增 <code>min-max</code> 采样方式</h2> <p>ECharts 的 <a href="https://echarts.apache.org/option.html#series-line.sampling">sampling</a> 配置项允许设置折线图在数据量远大于像素点时候的降采样策略,开启后可以有效的优化图表的绘制效率。在 5.5.0 版本中,我们新增了 <code>min-max</code> 采样方式,可以在保留数据的整体趋势的同时,更加精确的展示数据的极值。</p> <h2 id="%E6%96%B0%E5%A2%9E%E4%B8%A4%E7%A7%8D%E8%AF%AD%E8%A8%80%EF%BC%9A%E9%98%BF%E6%8B%89%E4%BC%AF%E8%AF%AD%E5%92%8C%E8%8D%B7%E5%85%B0%E8%AF%AD" tabindex="-1">新增两种语言:阿拉伯语和荷兰语</h2> <p>在 5.5.0 版本中,我们新增了阿拉伯语(AR)和荷兰语(NL)两种语言的支持。开发者可以通过 <a href="https://echarts.apache.org/api.html#echarts.registerLocale">echarts.registerLocale</a> 方法注册新的语言包。</p> <h2 id="%E6%8F%90%E7%A4%BA%E6%A1%86%E6%94%AF%E6%8C%81%E6%8C%87%E5%AE%9A%E5%AE%B9%E5%99%A8" tabindex="-1">提示框支持指定容器</h2> <p>在之前的版本中,提示框(Tooltip)只能插入到图表容器或者 <code>document.body</code> 中。现在,可以通过 <a href="https://echarts.apache.org/option.html#tooltip.appendTo">tooltip.appendTo</a> 指定容器,从而能更灵活地控制提示框的位置。</p> <h2 id="%E5%9D%90%E6%A0%87%E8%BD%B4%E6%9C%80%E5%A4%A7%E3%80%81%E6%9C%80%E5%B0%8F%E6%A0%87%E7%AD%BE%E7%9A%84%E5%AF%B9%E9%BD%90%E6%96%B9%E5%BC%8F" tabindex="-1">坐标轴最大、最小标签的对齐方式</h2> <p>在 5.5.0 版本中,我们新增了 <a href="https://echarts.apache.org/option.html#xAxis.axisLabel.alignMinLabel">axisLabel.alignMinLabel</a> 和 <a href="https://echarts.apache.org/option.html#xAxis.axisLabel.alignMaxLabel">axisLabel.alignMaxLabel</a> 配置项,可以控制坐标轴最大、最小标签的对齐方式。如果图表绘图区域比较大,不希望坐标轴标签溢出,可以将最大、最小标签分别对齐到右和左。</p> <iframe width="100%" height="400" src=""></iframe> <h2 id="%E8%B1%A1%E5%BD%A2%E6%9F%B1%E5%9B%BE%E6%94%AF%E6%8C%81%E8%A3%81%E5%89%AA" tabindex="-1">象形柱图支持裁剪</h2> <p>象形柱图可能存在超过绘图区域的情况,如果希望避免这种情况,可以通过 <a href="https://echarts.apache.org/option.html#series-pictorialBar.clip">series-pictorialBar.clip</a> 配置项进行裁剪。</p> <h2 id="%E6%8F%90%E7%A4%BA%E6%A1%86-valueformatter-%E5%A2%9E%E5%8A%A0-dataindex-%E5%8F%82%E6%95%B0" tabindex="-1">提示框 valueFormatter 增加 dataIndex 参数</h2> <p><code>valueFormatter</code> 可以用来自定义提示框内容中数值的部分,现在新增了 <code>dataIndex</code> 参数,可以用来获取当前数据的索引。</p> <h2 id="%E5%AE%8C%E6%95%B4%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95" tabindex="-1">完整更新记录</h2> <p>查看<a href="https://echarts.apache.org/changelog.html#v5-5-0">版本更新</a></p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">本文贡献者</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/zh/basics/release-note/5-5-0.md" title="编辑本文" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">在 GitHub 上编辑本页</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/Ovilia" target="_blank" class="post-contributor has-avatar"><img alt="Ovilia" src="https://echarts.apache.org/en/images/people/羡辙.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>Ovilia</span></a><a href="https://github.com/plainheart" target="_blank" class="post-contributor has-avatar"><img alt="plainheart" src="https://echarts.apache.org/en/images/people/plainheart.jpg" loading="lazy" decoding="async" fetchpriority="low"> <span>plainheart</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,e,i,r,d,a,l,o,n,c,h,p,s,g,E,A,C,m,B,I,u,b,v,y,G,L,S,W,x,f,Z,w,F,j,N,z,D,K,O,R,V,H,k,Y,X,P,J,M,T,U,q,Q,_,$,tt,et,it,rt,dt,at,lt,ot,nt){return{layout:"default",data:[{html:'<h1 id="apache-echarts-5.5.0-%E7%89%B9%E6%80%A7%E4%BB%8B%E7%BB%8D" tabindex="-1">Apache ECharts 5.5.0 特性介绍</h1>\n<h2 id="%E5%A2%9E%E5%BC%BA%E7%9A%84-esm-%E6%94%AF%E6%8C%81" tabindex="-1">增强的 ESM 支持</h2>\n<p>为了让开发者在测试和 Node.js 环境使用更方便,我们在这个版本中对 ESM 的识别问题进行了优化。</p>\n<p>以前,ECharts 只在 npm(npm 包的 lib 目录中)导出 <code>*.esm</code> 文件。虽然这在 bundlers 环境表现良好,但 Node.js 环境和一些基于 Node.js 的测试框架(如 vitest 和 jest)中的表现并不理想。</p>\n<p>有了这个新功能,我们做了几个改变以改善这个问题:</p>\n<ul>\n<li>在 <code>package.json</code> 中添加了 <code>&quot;type&quot;: &quot;module&quot;</code></li>\n<li>在 <code>package.json</code> 中添加了 <code>&quot;exports&quot;: {...}</code></li>\n<li>在子目录中添加了一些只包含 <code>&quot;type&quot;: &quot;commonjs&quot;</code> 的 <code>package.json</code> 文件</li>\n</ul>\n<p>这些改变意味着,像 <code>echarts/core.js</code> 这样的文件现在可以在像纯 Node.js、vitest、jest 和 create-react-app 这样的环境中解析为 ESM。</p>\n<p>我们还确保了这个新功能与各种环境兼容,包括运行时(Node.js/vitest/jest(create-react-app)/ssr/…)和打包器(webpack/rollup/vite/esbuild/…)。</p>\n<p>我们非常期待这一新功能,并相信它将极大地改善开发者的体验。</p>\n<h2 id="%E6%9C%8D%E5%8A%A1%E7%AB%AF%E6%B8%B2%E6%9F%93-%EF%BC%8B-%E5%AE%A2%E6%88%B7%E7%AB%AF%E8%BD%BB%E9%87%8F%E8%BF%90%E8%A1%8C%E6%97%B6" tabindex="-1">服务端渲染 + 客户端轻量运行时</h2>\n<p>Apache ECharts 功能强大,相应地,包体积也比较大。我们在之前的版本中也做了各种努力来改进这一点。开发者可以使用 TreeShaking 按需加载部分代码,以减少加载的代码量。从 Apache ECharts 5.3 版本起,我们支持了零依赖的服务端 SVG 字符串渲染方案,并支持图表的初始动画。这样,使用服务端渲染的结果作为首屏渲染的画面,可以大大减少首屏加载时间。</p>\n<p>服务端渲染虽然是一种很有效减少包体积的解决方案,但如果需要在客户端实现一些交互,那么不得不仍旧加载 echarts.js,这可能会增加更多的加载时间。对于一些对页面加载速度要求较高的场景,这可能不是一个理想的选择。</p>\n<p>在 5.5.0 版本中,我们新增了客户端轻量运行时,客户端无需加载完整 ECharts 即可实现部分交互。这样,我们可以在服务端渲染图表,然后在客户端加载轻量运行时,实现一些常见的交互。这意味着,只需要加载 4KB 的轻量运行时(gzip 后 1KB),即可实现带初始动画和部分常用交互形式的图表。这一改进将极大地提升页面加载速度,特别是对于移动端的体验。</p>\n<p><img src="" alt="" data-src="images/5-5-0/ssr-example.png"></p>\n<p>以这个带标题的饼图为例,如果按客户端仅打包饼图和标题组件的方案,gzip 后需要 135KB;如果按服务端渲染的方案,渲染结果 SVG gzip 后 1 KB、客户端运行时 gzip 后 1KB,仅为前者体积的 1.5%。交互方面,后者也可以做到初始动画、鼠标移动到图表元素后的高亮,并且获取到点击事件,能够满足大部分的常见交互需求。</p>\n<p>如需使用这一方案,服务端代码和之前一样,但需要保证 ECharts 版本号在 5.5.0 以上。</p>\n<md-code-block lang="ts" code="\'Ly8g5pyN5Yqh56uv5Luj56CBCmNvbnN0IGVjaGFydHMgPSByZXF1aXJlKCdlY2hhcnRzJyk7CgovLyDlnKggU1NSIOaooeW8j-S4i-esrOS4gOS4quWPguaVsOS4jemcgOimgeWGjeS8oOWFpSBET00g5a-56LGhCmxldCBjaGFydCA9IGVjaGFydHMuaW5pdChudWxsLCBudWxsLCB7CiAgcmVuZGVyZXI6ICdzdmcnLCAvLyDlv4Xpobvkvb_nlKggU1ZHIOaooeW8jwogIHNzcjogdHJ1ZSwgLy8g5byA5ZCvIFNTUgogIHdpZHRoOiA0MDAsIC8vIOmcgOimgeaMh-aYjumrmOWSjOWuve-8jOWmguaenOaYr-agueaNruWuouaIt-err-WuueWZqOWkp-Wwj-WKqOaAgeeahO-8jOivpeWAvOmcgOimgeS7juWuouaIt-err-W-l-WIsAogIGhlaWdodDogMzAwCn0pOwoKLy8g5YOP5q2j5bi45L2_55So5LiA5qC3IHNldE9wdGlvbgpjaGFydC5zZXRPcHRpb24oewogIC8vLi4uCn0pOwoKLy8g6L6T5Ye65a2X56ym5LiyCmNvbnN0IHN2Z1N0ciA9IGNoYXJ0LnJlbmRlclRvU1ZHU3RyaW5nKCk7CgovLyDosIPnlKggZGlzcG9zZSDku6Xph4rmlL7lhoXlrZgKY2hhcnQuZGlzcG9zZSgpOwpjaGFydCA9IG51bGw7CgovLyDpgJrov4cgSFRUUCBSZXNwb25zZSDov5Tlm54gc3ZnU3RyIOe7meWJjeerr-aIluiAhee8k-WtmOWIsOacrOWcsO-8iOi_memHjOS7pSBFeHByZXNzLmpzIOS4uuS-i--8ie-8mgpyZXMud3JpdGVIZWFkKDIwMCwgewogICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veG1sJwp9KTsKcmVzLndyaXRlKHN2Z1N0cik7CnJlcy5lbmQoKTs\'" line-highlights="\'\'" />\n<p>客户端将得到的 SVG 字符串添加到容器中,并绑定轻量运行时:</p>\n<md-code-block lang="html" code="\'PGRpdiBpZD0iY2hhcnQtY29udGFpbmVyIiBzdHlsZT0id2lkdGg6ODAwcHg7aGVpZ2h0OjYwMHB4Ij48L2Rpdj4KCjxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2VjaGFydHMvc3NyL2NsaWVudC9kaXN0L2luZGV4Lm1pbi5qcyI-PC9zY3JpcHQ-CjxzY3JpcHQ-CmNvbnN0IHNzckNsaWVudCA9IHdpbmRvd1snZWNoYXJ0cy1zc3ItY2xpZW50J107Cgpjb25zdCBpc1Nlcmllc1Nob3duID0gewogIGE6IHRydWUsCiAgYjogdHJ1ZQp9OwoKZnVuY3Rpb24gdXBkYXRlQ2hhcnQoc3ZnU3RyKSB7CiAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoYXJ0LWNvbnRhaW5lcicpOwogIGNvbnRhaW5lci5pbm5lckhUTUwgPSBzdmdTdHI7CgogIC8vIOS9v-eUqOi9u-mHj-i_kOihjOaXtui1i-S6iOWbvuihqOS6pOS6kuiDveWKmwogIHNzckNsaWVudC5oeWRyYXRlKGNvbnRhaW5lciwgewogICAgb246IHsKICAgICAgY2xpY2s6IChwYXJhbXMpID0-IHsKICAgICAgICBpZiAocGFyYW1zLnNzclR5cGUgPT09ICdsZWdlbmQnKSB7CiAgICAgICAgICAvLyDngrnlh7vlm77kvovlhYPntKDvvIzor7fmsYLmnI3liqHlmajov5vooYzkuozmrKHmuLLmn5MKICAgICAgICAgIGlzU2VyaWVzU2hvd25bcGFyYW1zLnNlcmllc05hbWVdID0gIWlzU2VyaWVzU2hvd25bcGFyYW1zLnNlcmllc05hbWVdOwogICAgICAgICAgZmV0Y2goJy4uLj9zZXJpZXM9JyArIEpTT04uc3RyaW5naWZ5KGlzU2VyaWVzU2hvd24pKQogICAgICAgICAgICAudGhlbihyZXMgPT4gcmVzLnRleHQoKSkKICAgICAgICAgICAgLnRoZW4oc3ZnU3RyID0-IHsKICAgICAgICAgICAgICB1cGRhdGVDaGFydChzdmdTdHIpOwogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9KTsKfQoKLy8g6YCa6L-HIEFKQVgg6K-35rGC6I635Y-W5pyN5Yqh56uv5riy5p-T55qEIFNWRyDlrZfnrKbkuLIKZmV0Y2goJy4uLicpCiAgLnRoZW4ocmVzID0-IHJlcy50ZXh0KCkpCiAgLnRoZW4oc3ZnU3RyID0-IHsKICAgIHVwZGF0ZUNoYXJ0KHN2Z1N0cik7CiAgfSk7Cjwvc2NyaXB0Pg\'" line-highlights="\'\'" />\n<p>客户端轻量运行时必须配合 SVG 形式的服务端渲染结果使用,支持以下交互:</p>\n<ul>\n<li>图表初始动画(实现原理:服务端渲染的 SVG 带有 CSS 动画)</li>\n<li>高亮样式(实现原理:服务端渲染的 SVG 带有 CSS 动画)</li>\n<li>动态改变数据(实现原理:轻量运行时请求服务器进行二次渲染)</li>\n<li>点击图例切换系列是否显示(实现原理:轻量运行时请求服务器进行二次渲染)</li>\n</ul>\n<p>可以发现,这能够满足大部分的交互场景需求。如果需要更复杂的交互,则客户端需要加载 <code>echarts.js</code> 实现完整功能。完整的介绍请参见<a href="zh/how-to/cross-platform/server">服务端渲染 ECharts 图表</a>。</p>\n<h2 id="%E6%95%B0%E6%8D%AE%E4%B8%8B%E9%92%BB%E6%94%AF%E6%8C%81%E8%BF%87%E6%B8%A1%E5%8A%A8%E7%94%BB" tabindex="-1">数据下钻支持过渡动画</h2>\n<p>在 5.5.0 版本中,我们新增了 <code>childGroupId</code> 配置项,可以实现数据下钻的过渡动画功能。</p>\n<p>在之前的版本中,我们已经支持使用 <code>groupId</code>,用以表示当前数据所属的组别。而这次新增的 <code>childGroupId</code> 则可以用来表明当前数据本身的组别,与 <code>groupId</code> 配合使用后形成一个“父-子-孙”的关系链条。当用户点击图表中的数据元素时,图表会以过渡动画的形式展示下钻的数据。</p>\n<md-example src="bar-multi-drilldown" width="100%" height="400" />\n<p>开发者只需要指定 <code>groupId</code> 和 <code>childGroupId</code>,ECharts 就会自动处理层级关系,实现过渡动画。</p>\n<h2 id="%E9%A5%BC%E5%9B%BE%E6%94%AF%E6%8C%81%E6%89%87%E5%8C%BA%E4%B9%8B%E9%97%B4%E7%9A%84%E9%97%B4%E9%9A%94" tabindex="-1">饼图支持扇区之间的间隔</h2>\n<p>通过设置饼图扇区之间的间隔,可以让饼图的数据块之间更加清晰,并且形成独特的视觉效果。参见(<a href="https://echarts.apache.org/option.html#series-pie.padAngle">series-pie.padAngle</a>)。</p>\n<md-example src="pie-padAngle" width="100%" height="400" />\n<h2 id="%E9%A5%BC%E5%9B%BE%E5%92%8C%E6%9E%81%E5%9D%90%E6%A0%87%E7%B3%BB%E6%94%AF%E6%8C%81%E7%BB%93%E6%9D%9F%E8%A7%92%E5%BA%A6" tabindex="-1">饼图和极坐标系支持结束角度</h2>\n<p>结束角度的配置项使得我们可以制作半圆形等不完整的饼图。参见(<a href="https://echarts.apache.org/option.html#series-pie.endAngle">series-pie.endAngle</a>)。</p>\n<md-example src="pie-half-donut" width="100%" height="400" />\n<p>极坐标系也同样支持了结束角度,可以制作出更加丰富的极坐标图表。参见(<a href="https://echarts.apache.org/option.html#angleAxis.endAngle">angleAxis.endAngle</a>)。</p>\n<md-example src="polar-endAngle" width="100%" height="400" />\n<h2 id="%E6%96%B0%E5%A2%9E-min-max-%E9%87%87%E6%A0%B7%E6%96%B9%E5%BC%8F" tabindex="-1">新增 <code>min-max</code> 采样方式</h2>\n<p>ECharts 的 <a href="https://echarts.apache.org/option.html#series-line.sampling">sampling</a> 配置项允许设置折线图在数据量远大于像素点时候的降采样策略,开启后可以有效的优化图表的绘制效率。在 5.5.0 版本中,我们新增了 <code>min-max</code> 采样方式,可以在保留数据的整体趋势的同时,更加精确的展示数据的极值。</p>\n<h2 id="%E6%96%B0%E5%A2%9E%E4%B8%A4%E7%A7%8D%E8%AF%AD%E8%A8%80%EF%BC%9A%E9%98%BF%E6%8B%89%E4%BC%AF%E8%AF%AD%E5%92%8C%E8%8D%B7%E5%85%B0%E8%AF%AD" tabindex="-1">新增两种语言:阿拉伯语和荷兰语</h2>\n<p>在 5.5.0 版本中,我们新增了阿拉伯语(AR)和荷兰语(NL)两种语言的支持。开发者可以通过 <a href="https://echarts.apache.org/api.html#echarts.registerLocale">echarts.registerLocale</a> 方法注册新的语言包。</p>\n<h2 id="%E6%8F%90%E7%A4%BA%E6%A1%86%E6%94%AF%E6%8C%81%E6%8C%87%E5%AE%9A%E5%AE%B9%E5%99%A8" tabindex="-1">提示框支持指定容器</h2>\n<p>在之前的版本中,提示框(Tooltip)只能插入到图表容器或者 <code>document.body</code> 中。现在,可以通过 <a href="https://echarts.apache.org/option.html#tooltip.appendTo">tooltip.appendTo</a> 指定容器,从而能更灵活地控制提示框的位置。</p>\n<h2 id="%E5%9D%90%E6%A0%87%E8%BD%B4%E6%9C%80%E5%A4%A7%E3%80%81%E6%9C%80%E5%B0%8F%E6%A0%87%E7%AD%BE%E7%9A%84%E5%AF%B9%E9%BD%90%E6%96%B9%E5%BC%8F" tabindex="-1">坐标轴最大、最小标签的对齐方式</h2>\n<p>在 5.5.0 版本中,我们新增了 <a href="https://echarts.apache.org/option.html#xAxis.axisLabel.alignMinLabel">axisLabel.alignMinLabel</a> 和 <a href="https://echarts.apache.org/option.html#xAxis.axisLabel.alignMaxLabel">axisLabel.alignMaxLabel</a> 配置项,可以控制坐标轴最大、最小标签的对齐方式。如果图表绘图区域比较大,不希望坐标轴标签溢出,可以将最大、最小标签分别对齐到右和左。</p>\n<md-example src="doc-example/axis-label-align-min-max" width="100%" height="400" />\n<h2 id="%E8%B1%A1%E5%BD%A2%E6%9F%B1%E5%9B%BE%E6%94%AF%E6%8C%81%E8%A3%81%E5%89%AA" tabindex="-1">象形柱图支持裁剪</h2>\n<p>象形柱图可能存在超过绘图区域的情况,如果希望避免这种情况,可以通过 <a href="https://echarts.apache.org/option.html#series-pictorialBar.clip">series-pictorialBar.clip</a> 配置项进行裁剪。</p>\n<h2 id="%E6%8F%90%E7%A4%BA%E6%A1%86-valueformatter-%E5%A2%9E%E5%8A%A0-dataindex-%E5%8F%82%E6%95%B0" tabindex="-1">提示框 valueFormatter 增加 dataIndex 参数</h2>\n<p><code>valueFormatter</code> 可以用来自定义提示框内容中数值的部分,现在新增了 <code>dataIndex</code> 参数,可以用来获取当前数据的索引。</p>\n<h2 id="%E5%AE%8C%E6%95%B4%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95" tabindex="-1">完整更新记录</h2>\n<p>查看<a href="https://echarts.apache.org/changelog.html#v5-5-0">版本更新</a></p>\n',postPath:"zh/basics/release-note/5-5-0",title:"5.5 - 版本特性 - 入门篇"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:r},{title:"入门篇",dir:d,children:[{title:"获取 ECharts",dir:a},{title:"在项目中引入 ECharts",dir:l},{title:"资源列表",dir:o,draft:t},{title:"寻求帮助",dir:n},{title:"版本特性",dir:c,children:[{title:"ECharts 6 特性介绍",dir:h},{title:"v5 升级 v6 指南",dir:p},{title:"5.0",dir:s},{title:"v4 升级 v5 指南",dir:g},{title:5.2,dir:E},{title:5.3,dir:A},{title:5.4,dir:C},{title:5.5,dir:m},{title:5.6,dir:B}]}]},{title:"概念篇",dir:I,children:[{title:"图表容器及大小",dir:u},{title:"配置项",dir:b,draft:t},{title:"系列",dir:v,draft:t},{title:"样式",dir:y},{title:"数据集",dir:G},{title:"数据转换",dir:L},{title:"坐标系",dir:S,draft:t},{title:"坐标轴",dir:W},{title:"视觉映射",dir:i},{title:"图例",dir:x},{title:"事件与行为",dir:f}]},{title:"应用篇",dir:Z,children:[{title:"常用图表类型",dir:w,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:F},{title:"堆叠柱状图",dir:j},{title:"动态排序柱状图",dir:N},{title:"极坐标系柱状图",dir:z,draft:t},{title:"阶梯瀑布图",dir:D},{title:"视觉映射的柱状图",dir:i,draft:t}]},{title:"折线图",dir:K,children:[{title:"基础折线图",dir:O},{title:"堆叠折线图",dir:R},{title:"区域面积图",dir:V},{title:"平滑曲线图",dir:H},{title:"阶梯线图",dir:k}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:Y},{title:"圆环图",dir:X},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:P,children:[{title:"基础散点图",dir:J}]}]},{title:"常用组件",dir:M,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:T}]}]},{title:"移动端优化",dir:e,draft:t},{title:"跨平台方案",dir:U,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:q},{title:"数据下钻",dir:Q,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:_}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:et,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:it,draft:t},{title:"智能指针吸附",dir:rt}]}]},{title:"最佳实践",dir:dt,children:[{title:"移动端优化",dir:e,draft:t},{title:at,dir:lt},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:ot}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:nt}]}],en:[{title:"Get Started",dir:r},{title:"Basics",dir:d,children:[{title:"Download ECharts",dir:a},{title:"Import ECharts",dir:l},{title:"Resources",dir:o,draft:t},{title:"Get Help",dir:n},{title:"What's New",dir:c,children:[{title:"ECharts 6 Features",dir:h},{title:"Migration from v5 to v6",dir:p},{title:"5.0",dir:s},{title:"Migration from v4 to v5",dir:g},{title:5.2,dir:E},{title:5.3,dir:A},{title:5.4,dir:C},{title:5.5,dir:m},{title:5.6,dir:B}]}]},{title:"Concepts",dir:I,children:[{title:"Chart Container",dir:u},{title:"Chart Option",dir:b,draft:t},{title:"Series",dir:v,draft:t},{title:"Style",dir:y},{title:"Dataset",dir:G},{title:"Data Transform",dir:L},{title:"Coordinate",dir:S,draft:t},{title:"Axis",dir:W},{title:"Visual Mapping",dir:i},{title:"Legend",dir:x},{title:"Event and Action",dir:f}]},{title:"How To Guides",dir:Z,children:[{title:"Common Charts",dir:w,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:F},{title:"Stacked Bar",dir:j},{title:"Bar Racing",dir:N},{title:"Bar Polar",dir:z,draft:t},{title:"Waterfall",dir:D}]},{title:"Line",dir:K,children:[{title:"Basic Line",dir:O},{title:"Stacked Line",dir:R},{title:"Area Chart",dir:V},{title:"Smoothed Line",dir:H},{title:"Step Line",dir:k}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:Y},{title:"Ring Style",dir:X},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:P,children:[{title:"Basic Scatter",dir:J}]}]},{title:"Common Components",dir:M,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:T}]}]},{title:"Mobile",dir:e,draft:t},{title:"Cross Platform",dir:U,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:q},{title:"Drilldown",dir:Q,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:_}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:et,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:it,draft:t},{title:"Intelligent Pointer Snapping",dir:rt}]}]},{title:"Best Practices",dir:dt,children:[{title:"Mobile Optimization",dir:e,draft:t},{title:at,dir:lt},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:ot}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:nt}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/zh/basics/release-note/5-5-0",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/zh/basics/release-note/5-6-0/index.html b/docs/zh/basics/release-note/5-6-0/index.html
new file mode 100644
index 0000000..7a3cb1b
--- /dev/null
+++ b/docs/zh/basics/release-note/5-6-0/index.html
@@ -0,0 +1,43 @@
+<!doctype html>
+<html data-n-head-ssr lang="zh-CN" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh-CN%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>5.6 - 版本特性 - 入门篇 - 使用手册 - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="zh"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/zh/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/zh/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/zh/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/zh/index.html" class="navbar-brand"><img src="https://echarts.apache.org/zh/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/zh/index.html">首页</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">文档<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/feature.html">特性</a></li><li><a href="https://echarts.apache.org/handbook/zh/get-started/">使用手册</a></li><li><a href="https://echarts.apache.org/zh/api.html">API</a></li><li><a href="https://echarts.apache.org/zh/option.html">配置项手册</a></li><li><a href="https://echarts.apache.org/zh/changelog.html">版本记录</a></li><li><a href="https://echarts.apache.org/zh/faq.html">常见问题</a></li><li><a href="https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide">v6 升级指南</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">下载<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/download.html">下载</a></li><li><a href="https://echarts.apache.org/zh/download-theme.html">主题下载</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">自定义系列下载<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/download-extension.html">扩展下载</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/zh/index.html">示例</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">资源<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/spreadsheet.html">表格工具</a></li><li><a href="https://echarts.apache.org/zh/theme-builder.html">主题构建工具</a></li><li><a href="https://echarts.apache.org/zh/cheat-sheet.html">术语速查手册</a></li><li><a href="https://echarts.apache.org/zh/resources.html">更多资源</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">社区<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/events.html">活动</a></li><li><a href="https://echarts.apache.org/zh/committers.html">贡献者列表</a></li><li><a href="https://echarts.apache.org/zh/maillist.html">邮件列表</a></li><li><a href="https://echarts.apache.org/zh/contributing.html">如何贡献</a></li><li><a href="https://echarts.apache.org/zh/dependencies.html">依赖项</a></li><li><a href="https://echarts.apache.org/zh/coding-standard.html">代码规范</a></li><li><a href="https://github.com/apache/echarts" target="_blank">源码(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/security.html">安全</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">版权<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">活动<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">捐赠<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">鸣谢<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("en")'>EN</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/zh/get-started" class="nav-link"><span class="title">快速上手</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">入门篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/basics/download" class="nav-link"><span class="title">获取 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/import" class="nav-link"><span class="title">在项目中引入 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/basics/help" class="nav-link"><span class="title">寻求帮助</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">版本特性</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 特性介绍</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">v5 升级 v6 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">v4 升级 v5 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-6-0" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">概念篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/concepts/chart-size" class="nav-link"><span class="title">图表容器及大小</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/style" class="nav-link"><span class="title">样式</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/dataset" class="nav-link"><span class="title">数据集</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/data-transform" class="nav-link"><span class="title">数据转换</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/axis" class="nav-link"><span class="title">坐标轴</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/visual-map" class="nav-link"><span class="title">视觉映射</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/legend" class="nav-link"><span class="title">图例</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/event" class="nav-link"><span class="title">事件与行为</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">应用篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">常用图表类型</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">柱状图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">基础柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">堆叠柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">动态排序柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">阶梯瀑布图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">折线图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">基础折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">堆叠折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/area-line" class="nav-link"><span class="title">区域面积图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">平滑曲线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/step-line" class="nav-link"><span class="title">阶梯线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">饼图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">基础饼图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">圆环图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/rose" class="nav-link"><span class="title">南丁格尔图(玫瑰图)</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">散点图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">基础散点图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">常用组件</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">地理坐标系(Geo)</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG 底图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">跨平台方案</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/server" class="nav-link"><span class="title">服务端渲染</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/wechat-app" class="nav-link"><span class="title">微信小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/baidu-app" class="nav-link"><span class="title">百度智能小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">数据处理</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/data/dynamic-data" class="nav-link"><span class="title">动态的异步数据</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">标签</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/label/rich-text" class="nav-link"><span class="title">富文本标签</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">动画</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/animation/transition" class="nav-link"><span class="title">数据过渡动画</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">交互</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/drag" class="nav-link"><span class="title">拖拽的实现</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">智能指针吸附</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">最佳实践</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/aria" class="nav-link"><span class="title">无障碍访问</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/security" class="nav-link"><span class="title">安全指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">编辑本文档</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/meta/edit-guide" class="nav-link"><span class="title">文档编辑指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="apache-echarts-5.6.0-%E7%89%B9%E6%80%A7%E4%BB%8B%E7%BB%8D" tabindex="-1">Apache ECharts 5.6.0 特性介绍</h1> <h2 id="%E5%9C%A8%E5%8E%9F%E5%A7%8B-geojson-%E6%95%B0%E6%8D%AE%E4%B8%AD%E5%AE%9A%E4%B9%89%E5%8C%BA%E5%9F%9F%E6%A0%B7%E5%BC%8F" tabindex="-1">在原始 GeoJSON 数据中定义区域样式</h2> <p>ECharts 地图使用 GeoJson 格式定义数据。理论上出于“数据、样式分离的原则”,GeoJson 只负责定义数据,样式应该在 ECharts 中定义。但有些情况下,样式本身也是数据的一种表达(例如:对于争议国界使用虚线表示,这时候“虚线”是一种样式,但是它实际上表达的是数据的概念,所以在 GeoJson 中定义样式是合理的)。</p> <p>在 ECharts 5.6.0 中,我们支持在原始 GeoJson 数据中定义区域样式,通过指定 <code>features[].properties.echartsStyle</code> 来定义样式,和 <a href="https://echarts.apache.org/option.html#series-map.data">data</a> 一样,支持配置 <code>itemStyle</code>、<code>label</code>、<code>tooltip</code> 等属性。示例:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code>geoJSON<span class="token punctuation">.</span>features<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">.</span>properties<span class="token punctuation">.</span>echartsStyle <span class="token operator">=</span> <span class="token punctuation">{</span>
+    itemStyle<span class="token operator">:</span> <span class="token punctuation">{</span>
+        areaColor<span class="token operator">:</span> <span class="token string">'green'</span>
+    <span class="token punctuation">}</span>
+<span class="token punctuation">}</span>
+
+geoJSON<span class="token punctuation">.</span>features<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">.</span>properties<span class="token punctuation">.</span>echartsStyle <span class="token operator">=</span> <span class="token punctuation">{</span>
+    selected<span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+    label<span class="token operator">:</span> <span class="token punctuation">{</span>
+        formatter<span class="token operator">:</span> <span class="token string">'Default Selected:\n{b}'</span>
+    <span class="token punctuation">}</span>
+<span class="token punctuation">}</span>
+
+geoJSON<span class="token punctuation">.</span>features<span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">.</span>properties<span class="token punctuation">.</span>echartsStyle <span class="token operator">=</span> <span class="token punctuation">{</span>
+    itemStyle<span class="token operator">:</span> <span class="token punctuation">{</span>
+        borderType<span class="token operator">:</span> <span class="token string">'dotted'</span><span class="token punctuation">,</span>
+        borderColor<span class="token operator">:</span> <span class="token string">'blue'</span>
+    <span class="token punctuation">}</span>
+<span class="token punctuation">}</span>
+
+geoJSON<span class="token punctuation">.</span>features<span class="token punctuation">[</span><span class="token number">11</span><span class="token punctuation">]</span><span class="token punctuation">.</span>properties<span class="token punctuation">.</span>echartsStyle <span class="token operator">=</span> <span class="token punctuation">{</span>
+    itemStyle<span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token comment">// This region will be overridden as `cyan` by the data item option</span>
+        areaColor<span class="token operator">:</span> <span class="token string">'black'</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    tooltip<span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token function-variable function">formatter</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span>params<span class="token punctuation">)</span> <span class="token punctuation">{</span>
+            <span class="token keyword">return</span> <span class="token string">'This is a custom tooltip from GeoJSON: '</span> <span class="token operator">+</span> params<span class="token punctuation">.</span>name<span class="token punctuation">;</span>
+        <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+<span class="token punctuation">}</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="%E5%9D%90%E6%A0%87%E8%BD%B4%E6%A0%87%E7%AD%BE%E6%94%AF%E6%8C%81%E6%8F%90%E7%A4%BA%E6%A1%86" tabindex="-1">坐标轴标签支持提示框</h2> <p>在有些情况下,坐标轴标签过长,或我们希望在坐标轴标签上显示更多信息,在 ECharts 5.6.0 中,我们支持在坐标轴标签上添加提示框。使用方法和 <code>tooltip</code> 的配置项一致,具体可以参考 <a href="https://echarts.apache.org/option.html#xAxis.tooltip">axis.tooltip 文档</a>。</p> <p><img src alt data-src="images/5-6-0/axis-tooltip.png"></p> <h2 id="%E6%97%AD%E6%97%A5%E5%9B%BE%E6%94%AF%E6%8C%81%E8%81%9A%E7%84%A6%E6%89%80%E6%9C%89%E5%AD%90%E5%AD%99%E5%92%8C%E7%A5%96%E5%85%88%E8%8A%82%E7%82%B9" tabindex="-1">旭日图支持聚焦所有子孙和祖先节点</h2> <p>在之前版本的旭日图中,<a href="https://echarts.apache.org/option.html#series-sunburst.emphasis.focus">emphasis.focus</a> 支持以下几种值:</p> <ul><li><code>'none'</code> 不淡出其它图形,默认使用该配置。</li> <li><code>'self'</code> 只聚焦(不淡出)当前高亮的数据的图形。</li> <li><code>'series'</code> 聚焦当前高亮的数据所在的系列的所有图形。</li> <li><code>'adjacency'</code> 聚焦关系图中的邻接点和边的图形。</li></ul> <p>在 ECharts 5.6.0 中,我们新增了 <code>'relative'</code> ,表示聚焦所有子孙和祖先节点。</p> <p><img src alt data-src="images/5-6-0/sunburst-emphasis-relative.png"></p> <h2 id="%E6%96%B0%E5%A2%9E%E4%B8%A4%E7%A7%8D%E8%AF%AD%E8%A8%80%E6%94%AF%E6%8C%81" tabindex="-1">新增两种语言支持</h2> <p>在这个版本中,新增了瑞典语和波斯语的支持。至此,ECharts 已经支持 22 种语言。</p> <h2 id="%E6%8A%98%E7%BA%BF%E5%9B%BE%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96" tabindex="-1">折线图性能优化</h2> <p>在这个版本中,我们优化了折线图的渲染性能,解决了折线图内存随时间增长的问题。</p> <h2 id="%E5%AE%8C%E6%95%B4%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95" tabindex="-1">完整更新记录</h2> <p>查看<a href="https://echarts.apache.org/changelog.html#v5-6-0">版本更新</a></p> <p>下一个大版本 Apache ECharts 6.0.0 正在火热开发中,预计于 2025 年一季度末发布,敬请期待。</p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">本文贡献者</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/zh/basics/release-note/5-6-0.md" title="编辑本文" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">在 GitHub 上编辑本页</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/Ovilia" target="_blank" class="post-contributor has-avatar"><img alt="Ovilia" src="https://echarts.apache.org/en/images/people/羡辙.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>Ovilia</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,i,e,r,d,l,a,n,o,s,c,h,p,g,E,C,A,B,m,b,I,u,f,G,v,Z,y,S,x,W,D,J,V,w,F,X,R,H,P,k,N,U,z,L,T,Y,M,K,j,O,Q,_,$,q,tt,it,et,rt,dt,lt,at,nt,ot){return{layout:"default",data:[{html:'<h1 id="apache-echarts-5.6.0-%E7%89%B9%E6%80%A7%E4%BB%8B%E7%BB%8D" tabindex="-1">Apache ECharts 5.6.0 特性介绍</h1>\n<h2 id="%E5%9C%A8%E5%8E%9F%E5%A7%8B-geojson-%E6%95%B0%E6%8D%AE%E4%B8%AD%E5%AE%9A%E4%B9%89%E5%8C%BA%E5%9F%9F%E6%A0%B7%E5%BC%8F" tabindex="-1">在原始 GeoJSON 数据中定义区域样式</h2>\n<p>ECharts 地图使用 GeoJson 格式定义数据。理论上出于“数据、样式分离的原则”,GeoJson 只负责定义数据,样式应该在 ECharts 中定义。但有些情况下,样式本身也是数据的一种表达(例如:对于争议国界使用虚线表示,这时候“虚线”是一种样式,但是它实际上表达的是数据的概念,所以在 GeoJson 中定义样式是合理的)。</p>\n<p>在 ECharts 5.6.0 中,我们支持在原始 GeoJson 数据中定义区域样式,通过指定 <code>features[].properties.echartsStyle</code> 来定义样式,和 <a href="https://echarts.apache.org/option.html#series-map.data">data</a> 一样,支持配置 <code>itemStyle</code>、<code>label</code>、<code>tooltip</code> 等属性。示例:</p>\n<md-code-block lang="ts" code="\'Z2VvSlNPTi5mZWF0dXJlc1swXS5wcm9wZXJ0aWVzLmVjaGFydHNTdHlsZSA9IHsKICAgIGl0ZW1TdHlsZTogewogICAgICAgIGFyZWFDb2xvcjogJ2dyZWVuJwogICAgfQp9CgpnZW9KU09OLmZlYXR1cmVzWzFdLnByb3BlcnRpZXMuZWNoYXJ0c1N0eWxlID0gewogICAgc2VsZWN0ZWQ6IHRydWUsCiAgICBsYWJlbDogewogICAgICAgIGZvcm1hdHRlcjogJ0RlZmF1bHQgU2VsZWN0ZWQ6XG57Yn0nCiAgICB9Cn0KCmdlb0pTT04uZmVhdHVyZXNbMl0ucHJvcGVydGllcy5lY2hhcnRzU3R5bGUgPSB7CiAgICBpdGVtU3R5bGU6IHsKICAgICAgICBib3JkZXJUeXBlOiAnZG90dGVkJywKICAgICAgICBib3JkZXJDb2xvcjogJ2JsdWUnCiAgICB9Cn0KCmdlb0pTT04uZmVhdHVyZXNbMTFdLnByb3BlcnRpZXMuZWNoYXJ0c1N0eWxlID0gewogICAgaXRlbVN0eWxlOiB7CiAgICAgICAgLy8gVGhpcyByZWdpb24gd2lsbCBiZSBvdmVycmlkZGVuIGFzIGBjeWFuYCBieSB0aGUgZGF0YSBpdGVtIG9wdGlvbgogICAgICAgIGFyZWFDb2xvcjogJ2JsYWNrJwogICAgfSwKICAgIHRvb2x0aXA6IHsKICAgICAgICBmb3JtYXR0ZXI6IGZ1bmN0aW9uIChwYXJhbXMpIHsKICAgICAgICAgICAgcmV0dXJuICdUaGlzIGlzIGEgY3VzdG9tIHRvb2x0aXAgZnJvbSBHZW9KU09OOiAnICsgcGFyYW1zLm5hbWU7CiAgICAgICAgfQogICAgfQp9\'" line-highlights="\'\'" />\n<h2 id="%E5%9D%90%E6%A0%87%E8%BD%B4%E6%A0%87%E7%AD%BE%E6%94%AF%E6%8C%81%E6%8F%90%E7%A4%BA%E6%A1%86" tabindex="-1">坐标轴标签支持提示框</h2>\n<p>在有些情况下,坐标轴标签过长,或我们希望在坐标轴标签上显示更多信息,在 ECharts 5.6.0 中,我们支持在坐标轴标签上添加提示框。使用方法和 <code>tooltip</code> 的配置项一致,具体可以参考 <a href="https://echarts.apache.org/option.html#xAxis.tooltip">axis.tooltip 文档</a>。</p>\n<p><img src="" alt="" data-src="images/5-6-0/axis-tooltip.png"></p>\n<h2 id="%E6%97%AD%E6%97%A5%E5%9B%BE%E6%94%AF%E6%8C%81%E8%81%9A%E7%84%A6%E6%89%80%E6%9C%89%E5%AD%90%E5%AD%99%E5%92%8C%E7%A5%96%E5%85%88%E8%8A%82%E7%82%B9" tabindex="-1">旭日图支持聚焦所有子孙和祖先节点</h2>\n<p>在之前版本的旭日图中,<a href="https://echarts.apache.org/option.html#series-sunburst.emphasis.focus">emphasis.focus</a> 支持以下几种值:</p>\n<ul>\n<li><code>\'none\'</code> 不淡出其它图形,默认使用该配置。</li>\n<li><code>\'self\'</code> 只聚焦(不淡出)当前高亮的数据的图形。</li>\n<li><code>\'series\'</code> 聚焦当前高亮的数据所在的系列的所有图形。</li>\n<li><code>\'adjacency\'</code> 聚焦关系图中的邻接点和边的图形。</li>\n</ul>\n<p>在 ECharts 5.6.0 中,我们新增了 <code>\'relative\'</code> ,表示聚焦所有子孙和祖先节点。</p>\n<p><img src="" alt="" data-src="images/5-6-0/sunburst-emphasis-relative.png"></p>\n<h2 id="%E6%96%B0%E5%A2%9E%E4%B8%A4%E7%A7%8D%E8%AF%AD%E8%A8%80%E6%94%AF%E6%8C%81" tabindex="-1">新增两种语言支持</h2>\n<p>在这个版本中,新增了瑞典语和波斯语的支持。至此,ECharts 已经支持 22 种语言。</p>\n<h2 id="%E6%8A%98%E7%BA%BF%E5%9B%BE%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96" tabindex="-1">折线图性能优化</h2>\n<p>在这个版本中,我们优化了折线图的渲染性能,解决了折线图内存随时间增长的问题。</p>\n<h2 id="%E5%AE%8C%E6%95%B4%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95" tabindex="-1">完整更新记录</h2>\n<p>查看<a href="https://echarts.apache.org/changelog.html#v5-6-0">版本更新</a></p>\n<p>下一个大版本 Apache ECharts 6.0.0 正在火热开发中,预计于 2025 年一季度末发布,敬请期待。</p>\n',postPath:"zh/basics/release-note/5-6-0",title:"5.6 - 版本特性 - 入门篇"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:r},{title:"入门篇",dir:d,children:[{title:"获取 ECharts",dir:l},{title:"在项目中引入 ECharts",dir:a},{title:"资源列表",dir:n,draft:t},{title:"寻求帮助",dir:o},{title:"版本特性",dir:s,children:[{title:"ECharts 6 特性介绍",dir:c},{title:"v5 升级 v6 指南",dir:h},{title:"5.0",dir:p},{title:"v4 升级 v5 指南",dir:g},{title:5.2,dir:E},{title:5.3,dir:C},{title:5.4,dir:A},{title:5.5,dir:B},{title:5.6,dir:m}]}]},{title:"概念篇",dir:b,children:[{title:"图表容器及大小",dir:I},{title:"配置项",dir:u,draft:t},{title:"系列",dir:f,draft:t},{title:"样式",dir:G},{title:"数据集",dir:v},{title:"数据转换",dir:Z},{title:"坐标系",dir:y,draft:t},{title:"坐标轴",dir:S},{title:"视觉映射",dir:e},{title:"图例",dir:x},{title:"事件与行为",dir:W}]},{title:"应用篇",dir:D,children:[{title:"常用图表类型",dir:J,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:V},{title:"堆叠柱状图",dir:w},{title:"动态排序柱状图",dir:F},{title:"极坐标系柱状图",dir:X,draft:t},{title:"阶梯瀑布图",dir:R},{title:"视觉映射的柱状图",dir:e,draft:t}]},{title:"折线图",dir:H,children:[{title:"基础折线图",dir:P},{title:"堆叠折线图",dir:k},{title:"区域面积图",dir:N},{title:"平滑曲线图",dir:U},{title:"阶梯线图",dir:z}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:L},{title:"圆环图",dir:T},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:Y,children:[{title:"基础散点图",dir:M}]}]},{title:"常用组件",dir:K,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:j}]}]},{title:"移动端优化",dir:i,draft:t},{title:"跨平台方案",dir:O,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:Q},{title:"数据下钻",dir:_,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:$}]},{title:"动画",dir:q,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:it,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:et,draft:t},{title:"智能指针吸附",dir:rt}]}]},{title:"最佳实践",dir:dt,children:[{title:"移动端优化",dir:i,draft:t},{title:lt,dir:at},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:nt}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:ot}]}],en:[{title:"Get Started",dir:r},{title:"Basics",dir:d,children:[{title:"Download ECharts",dir:l},{title:"Import ECharts",dir:a},{title:"Resources",dir:n,draft:t},{title:"Get Help",dir:o},{title:"What's New",dir:s,children:[{title:"ECharts 6 Features",dir:c},{title:"Migration from v5 to v6",dir:h},{title:"5.0",dir:p},{title:"Migration from v4 to v5",dir:g},{title:5.2,dir:E},{title:5.3,dir:C},{title:5.4,dir:A},{title:5.5,dir:B},{title:5.6,dir:m}]}]},{title:"Concepts",dir:b,children:[{title:"Chart Container",dir:I},{title:"Chart Option",dir:u,draft:t},{title:"Series",dir:f,draft:t},{title:"Style",dir:G},{title:"Dataset",dir:v},{title:"Data Transform",dir:Z},{title:"Coordinate",dir:y,draft:t},{title:"Axis",dir:S},{title:"Visual Mapping",dir:e},{title:"Legend",dir:x},{title:"Event and Action",dir:W}]},{title:"How To Guides",dir:D,children:[{title:"Common Charts",dir:J,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:V},{title:"Stacked Bar",dir:w},{title:"Bar Racing",dir:F},{title:"Bar Polar",dir:X,draft:t},{title:"Waterfall",dir:R}]},{title:"Line",dir:H,children:[{title:"Basic Line",dir:P},{title:"Stacked Line",dir:k},{title:"Area Chart",dir:N},{title:"Smoothed Line",dir:U},{title:"Step Line",dir:z}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:L},{title:"Ring Style",dir:T},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:Y,children:[{title:"Basic Scatter",dir:M}]}]},{title:"Common Components",dir:K,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:j}]}]},{title:"Mobile",dir:i,draft:t},{title:"Cross Platform",dir:O,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:Q},{title:"Drilldown",dir:_,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:$}]},{title:"Animation",dir:q,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:it,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:et,draft:t},{title:"Intelligent Pointer Snapping",dir:rt}]}]},{title:"Best Practices",dir:dt,children:[{title:"Mobile Optimization",dir:i,draft:t},{title:lt,dir:at},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:nt}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:ot}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/zh/basics/release-note/5-6-0",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/zh/basics/release-note/v5-feature/index.html b/docs/zh/basics/release-note/v5-feature/index.html
new file mode 100644
index 0000000..11dba6a
--- /dev/null
+++ b/docs/zh/basics/release-note/v5-feature/index.html
@@ -0,0 +1,17 @@
+<!doctype html>
+<html data-n-head-ssr lang="zh-CN" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh-CN%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>5.0 - 版本特性 - 入门篇 - 使用手册 - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="zh"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/zh/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/zh/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/zh/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/zh/index.html" class="navbar-brand"><img src="https://echarts.apache.org/zh/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/zh/index.html">首页</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">文档<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/feature.html">特性</a></li><li><a href="https://echarts.apache.org/handbook/zh/get-started/">使用手册</a></li><li><a href="https://echarts.apache.org/zh/api.html">API</a></li><li><a href="https://echarts.apache.org/zh/option.html">配置项手册</a></li><li><a href="https://echarts.apache.org/zh/changelog.html">版本记录</a></li><li><a href="https://echarts.apache.org/zh/faq.html">常见问题</a></li><li><a href="https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide">v6 升级指南</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">下载<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/download.html">下载</a></li><li><a href="https://echarts.apache.org/zh/download-theme.html">主题下载</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">自定义系列下载<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/download-extension.html">扩展下载</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/zh/index.html">示例</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">资源<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/spreadsheet.html">表格工具</a></li><li><a href="https://echarts.apache.org/zh/theme-builder.html">主题构建工具</a></li><li><a href="https://echarts.apache.org/zh/cheat-sheet.html">术语速查手册</a></li><li><a href="https://echarts.apache.org/zh/resources.html">更多资源</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">社区<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/events.html">活动</a></li><li><a href="https://echarts.apache.org/zh/committers.html">贡献者列表</a></li><li><a href="https://echarts.apache.org/zh/maillist.html">邮件列表</a></li><li><a href="https://echarts.apache.org/zh/contributing.html">如何贡献</a></li><li><a href="https://echarts.apache.org/zh/dependencies.html">依赖项</a></li><li><a href="https://echarts.apache.org/zh/coding-standard.html">代码规范</a></li><li><a href="https://github.com/apache/echarts" target="_blank">源码(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/security.html">安全</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">版权<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">活动<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">捐赠<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">鸣谢<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("en")'>EN</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/zh/get-started" class="nav-link"><span class="title">快速上手</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">入门篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/basics/download" class="nav-link"><span class="title">获取 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/import" class="nav-link"><span class="title">在项目中引入 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/basics/help" class="nav-link"><span class="title">寻求帮助</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">版本特性</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 特性介绍</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">v5 升级 v6 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-feature" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">v4 升级 v5 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">概念篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/concepts/chart-size" class="nav-link"><span class="title">图表容器及大小</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/style" class="nav-link"><span class="title">样式</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/dataset" class="nav-link"><span class="title">数据集</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/data-transform" class="nav-link"><span class="title">数据转换</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/axis" class="nav-link"><span class="title">坐标轴</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/visual-map" class="nav-link"><span class="title">视觉映射</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/legend" class="nav-link"><span class="title">图例</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/event" class="nav-link"><span class="title">事件与行为</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">应用篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">常用图表类型</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">柱状图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">基础柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">堆叠柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">动态排序柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">阶梯瀑布图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">折线图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">基础折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">堆叠折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/area-line" class="nav-link"><span class="title">区域面积图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">平滑曲线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/step-line" class="nav-link"><span class="title">阶梯线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">饼图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">基础饼图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">圆环图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/rose" class="nav-link"><span class="title">南丁格尔图(玫瑰图)</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">散点图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">基础散点图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">常用组件</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">地理坐标系(Geo)</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG 底图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">跨平台方案</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/server" class="nav-link"><span class="title">服务端渲染</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/wechat-app" class="nav-link"><span class="title">微信小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/baidu-app" class="nav-link"><span class="title">百度智能小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">数据处理</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/data/dynamic-data" class="nav-link"><span class="title">动态的异步数据</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">标签</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/label/rich-text" class="nav-link"><span class="title">富文本标签</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">动画</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/animation/transition" class="nav-link"><span class="title">数据过渡动画</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">交互</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/drag" class="nav-link"><span class="title">拖拽的实现</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">智能指针吸附</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">最佳实践</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/aria" class="nav-link"><span class="title">无障碍访问</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/security" class="nav-link"><span class="title">安全指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">编辑本文档</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/meta/edit-guide" class="nav-link"><span class="title">文档编辑指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="apache-echarts-5-%E6%96%B0%E7%89%B9%E6%80%A7" tabindex="-1">Apache ECharts 5 新特性</h1> <p>数据可视化在过去的几年中得到了长足的发展。开发者对于可视化产品的期待不再是简单的图表创建工具,而在交互、性能、数据处理等方面有了更高级的需求。</p> <p>Apache ECharts 始终致力于让开发者以更方便的方式创造灵活丰富的可视化作品。在最新推出的 Apache ECharts 5,我们着力加强了图表的叙事能力,让开发者可以以更简单的方式,讲述数据背后的故事。</p> <img data-src="images/feature-v5/echarts-5.png" width="800px"> <p>“表·达”是 Apache ECharts 5 的核心,通过五大模块、十五项特性的全面升级,围绕可视化作品的叙事表达能力,让图“表”更能传“达”数据背后的故事,帮助开发者更轻松地创造满足各种场景需求的可视化作品。</p> <h2 id="%E5%8A%A8%E6%80%81%E5%8F%99%E4%BA%8B" tabindex="-1">动态叙事</h2> <p>动画对于人类认知的重要性不言而喻。在之前的作品中,我们会通过初始化动画和过渡动画帮助用户理解数据变换之间的联系,让图表的出现和变换显得不那么生硬。这次,我们更是大幅度增强了我们的动画叙事能力,希望能够进一步发挥动画对于用户认知的帮助作用,借助图表的动态叙事功能,帮助用户更容易理解图表背后表达的故事。</p> <h4 id="%E5%8A%A8%E6%80%81%E6%8E%92%E5%BA%8F%E5%9B%BE" tabindex="-1">动态排序图</h4> <p>Apache ECharts 5 新增支持动态排序柱状图(bar-racing)以及动态排序折线图(line-racing),帮助开发者方便地创建带有时序性的图表,展现数据随着时间维度上的变化,讲述数据的演变过程。</p> <iframe width="700" height="400" src=""></iframe> <iframe width="700" height="400" src=""></iframe> <p>动态排序图展现了不同的类目随着时间在排名上的衍变。而开发者只需要通过几行简单的配置项就可以在 ECharts 中开启这样的效果。</p> <h4 id="%E8%87%AA%E5%AE%9A%E4%B9%89%E7%B3%BB%E5%88%97%E5%8A%A8%E7%94%BB" tabindex="-1">自定义系列动画</h4> <p>除了动态排序图,Apache ECharts 5 在自定义系列中提供了更加丰富强大的动画效果,支持标签数值文本的插值动画,图形的形变(morph)、分裂(separate)、合并(combine)等效果的过渡动画。</p> <p>想象一下,用这些动态效果,你可以创造出多么令人称奇的可视化作品!</p> <h2 id="%E8%A7%86%E8%A7%89%E8%AE%BE%E8%AE%A1" tabindex="-1">视觉设计</h2> <p>视觉设计的作用并不仅仅是为了让图表更好看,更重要的是,符合可视化原理的设计可以帮用户更快速地理解图表想表达的内容,并且尽可能消除不良设计带来的误解。</p> <h4 id="%E9%BB%98%E8%AE%A4%E8%AE%BE%E8%AE%A1" tabindex="-1">默认设计</h4> <p>我们发现,有很大一部分开发者使用了 ECharts 默认的主题样式,因而设计优雅、符合可视化原理的默认主题设计是非常重要的。在 Apache ECharts 5 中,我们重新设计了默认的主题样式,针对不同的系列和组件分别做了优化调整。以主题色为例,我们考量了颜色之间的区分度、与背景色的对比度、相邻颜色的和谐度等因素,并且确保色觉辨识障碍人士也能清楚地区分数据。</p> <img data-src="images/feature-v5/theme-color.png" width="400px"> <p>我们以最常用的柱状图为例,来看看新版本浅色主题和深色主题的样式:</p> <img data-src="images/feature-v5/new-theme-light.png" width="500px"> <img data-src="images/feature-v5/new-theme-dark.png" width="500px"> <p>对于折线图,我们做了比较直观的一个改变就是去掉了直角坐标系最左侧数据轴Y轴的默认显示。左侧是原本默认的折线图的样式,其实通过中间的几条数据分割线,我们就已经可以定位折线图的每个数据值。因此我们希望通过减少不必要的图形元素,来达到更清晰地传递信息的目的。</p> <img data-src="images/feature-v5/yAxis-default-style-change.webp" width="500px"> <p>对于数据区域缩放,时间轴等交互组件,我们也设计了全新的样式并且提供了更好的交互体验:</p> <img data-src="images/feature-v5/dataZoom.png" width="500px"> <img data-src="images/feature-v5/timeline.png" width="500px"> <h4 id="%E6%A0%87%E7%AD%BE" tabindex="-1">标签</h4> <p>标签是图表中的核心元素之一,清晰而明确的标签可以帮助用户对数据有更准确的理解。Apache ECharts 5 提供了多种新的标签功能,让密集的标签能清晰显示、准确表意。</p> <p>Apache ECharts 5 可以通过一个配置项开启自动隐藏重叠的标签。对于超出显示区域的标签,可以选择自动截断或者换行。密集的饼图标签,现在有了更美观的自动排布。</p> <p>这些功能可以帮助避免文字过于密集影响可读性。并且,无需开发者编写额外的代码就能默认生效,大大简化了开发者的开发成本。</p> <p>我们也提供了多个配置项来让开发者主动控制标签的布局策略,例如标签拖动、整体显示在画布边缘,用引导线和图形元素连接,并且仍可联动高亮表达关联关系。</p> <p>新的标签功能可以让你在移动端这样局限的空间内也可以有很优雅的标签展示:</p> <img data-src="images/feature-v5/pie-label.png" width="400px"> <h4 id="%E6%97%B6%E9%97%B4%E8%BD%B4" tabindex="-1">时间轴</h4> <p>Apache ECharts 5 带来了适于表达时间标签刻度的时间轴。时间轴的默认设计更突出重要的信息,并且提供了更灵活的定制化能力,让开发者根据不同的需求定制时间轴的标签内容。</p> <p>首先,时间轴不再如之前般绝对平均分割,而是选取年、月、日、整点这类更有意义的点来展示,并且能同时显示不同层级的刻度。标签的 <code>formatter</code> 支持了时间模版(例如 <code>{yyyy}-{MM}-{dd}</code>),并且可以为不同时间粒度的标签指定不同的 <code>formatter</code>,结合已有的富文本标签,可以定制出醒目而多样的时间效果。</p> <p>不同的 dataZoom 粒度下时间刻度的显示:</p> <img data-src="images/feature-v5/time-axis.png" width="600px"> <img data-src="images/feature-v5/time-axis-2.png" width="600px"> <h4 id="%E6%8F%90%E7%A4%BA%E6%A1%86" tabindex="-1">提示框</h4> <p>提示框(Tooltip)是一种最常用的可视化组件,可以帮助用户交互式地了解数据的详细信息。在 Apache ECharts 5 中,我们对提示框的样式进行了优化,通过对字体样式,颜色的调整,指向图形的箭头,跟随图形颜色的边框色等功能,让提示框的默认展示优雅又清晰。并且改进了富文本的渲染逻辑,确保显示效果与 HTML 方式一致,让用户在不同场景下可以选择不同的技术方案实现同样的效果。</p> <img data-src="images/feature-v5/new-tooltip.png" width="400px"> <img data-src="images/feature-v5/new-tooltip-2.png" width="400px"> <p>除此之外,我们这次也加上了提示框内的列表按照数值大小或者类目顺序排序的功能。</p> <h4 id="%E4%BB%AA%E8%A1%A8%E7%9B%98" tabindex="-1">仪表盘</h4> <p>我们看到社区用户创建了很多酷炫的仪表盘图表,但是他们的配置方式往往比较复杂而取巧。因此,我们对仪表盘的功能作了全面升级,支持了图片或者矢量路径绘制指针、也支持了锚点(anchor)配置项、进度条(progress)、圆角效果等等配置项。</p> <p>不同样式的仪表盘指针:</p> <img data-src="images/feature-v5/gauge-pointer.png" width="600px"> <p>这些升级,不仅可以让开发者用更简单的配置项实现酷炫的效果,而且带来了更丰富的定制能力。</p> <iframe width="600" height="600" src=""></iframe> <h4 id="%E6%89%87%E5%BD%A2%E5%9C%86%E8%A7%92" tabindex="-1">扇形圆角</h4> <p>圆角可以带来更美观而柔和的视觉,也能够赋予更多的创造力。Apache ECharts 5 支持了饼图、旭日图、矩形树图的扇形圆角。可不要小看了简单的圆角配置项,合理地搭配其他的效果,就可以形成更具个性的的可视化作品。</p> <iframe width="400" height="400" src=""></iframe> <h2 id="%E4%BA%A4%E4%BA%92%E8%83%BD%E5%8A%9B" tabindex="-1">交互能力</h2> <p>可视化作品的交互能力帮助用户探索了解作品,加深对于图表主旨的理解。</p> <h4 id="%E7%8A%B6%E6%80%81%E7%AE%A1%E7%90%86" tabindex="-1">状态管理</h4> <p>在 ECharts 4 中有高亮(emphasis)和普通(normal)两个交互的状态,在鼠标移到图形上的时候会进入高亮状态以区分该数据,开发者可以分别设置这两个状态的颜色,阴影等样式。</p> <p>这次在 Apache ECharts 5 中,我们在原先的鼠标 hover 高亮的基础上,新增加了<strong>淡出</strong>其它非相关元素的效果,从而可以达到聚焦目标数据的目的。</p> <p>比如在这个<a href="https://echarts.apache.org/examples/zh/editor.html?c=bar-y-category-stack">柱状图</a>的例子中,鼠标移到一个系列上的时候,其它非相关的系列就会淡出,从而可以更清晰的突出聚焦系列中数据的对比。在关系图,树图,旭日图,桑基等更复杂数据结构的图上,也可以通过淡出非相关元素来观察数据之间的联系。而且颜色,阴影等在高亮(emphasis)中可以设置的样式,现在也可以在淡出(blur)状态中设置了。</p> <p>除此之外,我们为所有系列还添加了<strong>点击选中</strong>这个之前只有在饼图、地图等少数系列中才能开启的交互,开发者可以设置为单选或多选模式,并且通过监听 <code>selectchanged</code> 事件获取到选中的所有图形然后进行更进一步的处理。与高亮和淡出一样,选中的样式也可以在 <code>select</code> 中配置。</p> <h4 id="%E6%80%A7%E8%83%BD%E6%8F%90%E5%8D%87" tabindex="-1">性能提升</h4> <h5 id="%E8%84%8F%E7%9F%A9%E5%BD%A2%E6%B8%B2%E6%9F%93" tabindex="-1">脏矩形渲染</h5> <p>Apache ECharts 5 新支持了脏矩形渲染,解决只有局部变化的场景下的性能瓶颈。在使用 Canvas 渲染器时,脏矩形渲染技术探测并只更新视图变化的部分,而不是任何变动都引起画布完全重绘。这能在一些特殊场景下帮助提高渲染帧率,例如在图形很多时候,鼠标频繁触发一些图形高亮的场景。以往这类场景,会使用额外的 Canvas 层以优化性能,但是这种方式不是所有场景都通用,而且对于复杂的样式的效果并不理想。脏矩形渲染很好地同时满足了性能和显示正确。</p> <p>脏矩形的可视化演示,红色框选部分为该帧重绘区域:</p> <img data-src="images/feature-v5/dirty-rect.gif" width="500px"> <p>大家在新的示例页面选择开启脏矩形优化就可以看到该效果。</p> <h5 id="%E5%AE%9E%E6%97%B6%E6%97%B6%E5%BA%8F%E6%95%B0%E6%8D%AE%E7%9A%84%E6%8A%98%E7%BA%BF%E5%9B%BE%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96" tabindex="-1">实时时序数据的折线图性能优化</h5> <p>除此之外,海量数据下折线图的性能也有了大幅度的性能提升。我们经常碰到大量的实时时序数据的高性能绘制的需求,这些数据可能需要几百或者几十毫秒更新一次。</p> <p>Apache ECharts 5 对这些场景下的 CPU 消耗、内存占用、初始化时间都进行了深度的优化,使得百万量级的数据也能做到实时的更新(每次更新耗时少于 30ms),甚至对于千万级的数据,也可以在 1s 内渲染完,并且保持很小的内存占用以及流畅的提示框(tooltip)等交互。</p> <h2 id="%E5%BC%80%E5%8F%91%E4%BD%93%E9%AA%8C" tabindex="-1">开发体验</h2> <p>我们希望如此强大的可视化工具可以被更多开发者以更简单的方式使用,因而开发者的开发体验也是我们非常关注的方面。</p> <h4 id="%E6%95%B0%E6%8D%AE%E9%9B%86" tabindex="-1">数据集</h4> <p>ECharts 5 加强了数据集的数据转换能力,让开发者可以使用简单的方式实现常用的数据处理,如:数据过滤(filter)、排序(sort)、聚合(aggregate)、直方图(histogram)、简单聚类(clustering)、回归线计算(regression)等。开发者可以用统一的声明式方式来使用这些功能,可以方便地实现常用的数据操作。</p> <h4 id="%E5%9B%BD%E9%99%85%E5%8C%96" tabindex="-1">国际化</h4> <p>ECharts 原有的国际化方案,采用的是根据不同的语言参数打包出不同的部署文件的形式。​ 这种方式,使动态的语言和静态的代码包绑定在一起,使用的时候只能通过重新加载不同语言版本的 ECharts 代码来达到切换语言的目的。</p> <p>因此,从 Apache ECharts 5 开始,动态的语言包和静态的代码包分离开。切换语言的时候,只需要加载相应语言包 ​,通过类似挂载主题的方式,使用 <code>registerLocale</code> 函数挂载语言包对象 ​,重新初始化后就完成了语言的切换 ​。</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token comment">// import the lang object and set when init​</span>
+echarts<span class="token punctuation">.</span><span class="token function">registerLocale</span><span class="token punctuation">(</span><span class="token string">'DE'</span><span class="token punctuation">,</span> lang<span class="token punctuation">)</span><span class="token punctuation">;</span>​
+echarts<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span>DomElement<span class="token punctuation">,</span> <span class="token keyword">null</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>​
+   <span class="token literal-property property">locale</span><span class="token operator">:</span> <span class="token string">'DE'</span>​
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h4 id="typescript-%E9%87%8D%E6%9E%84" tabindex="-1">TypeScript 重构</h4> <p>在近 8 年的时间里,Apache ECharts 已经发展成一个非常复杂的可视化库了,为了可以更安全高效的进行重构和新功能的开发,我们在 Apache ECharts 5 的开发之初,使用 TypeScript 对代码进行了重写,TypeScript 所带来的强类型让我们更有信心地在 ECharts 5 开发的时候对代码进行大刀阔斧的重构以实现更多令人激动人心的特性。</p> <p>对于开发者,我们也可以从 TypeScript 代码直接生成更好更符合代码的<code>DTS</code>类型描述文件。在此之前,ECharts 的类型描述文件一直是由社区开发者帮我们维护并发布到 <a href="https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/echarts">DefinitelyTyped</a>,这个有着不小的工作量,非常感谢大家的贡献。</p> <p>除此之外,如果开发者的组件是按需引入的,我们还提供了一个 <code>ComposeOption</code> 类型方法,可以组合出一个只包含了引入组件的配置项类型,可以带来更严格的类型检查,帮助你提前检测到未引入的组件类型。</p> <h2 id="%E5%8F%AF%E8%AE%BF%E9%97%AE%E6%80%A7" tabindex="-1">可访问性</h2> <p>Apache ECharts 一直非常重视无障碍设计,我们希望让视觉障碍人士也能平等了解图表传递的信息。并且也希望图表的开发者能以极低的开发成本实现这一点,因而有利于让开发者更愿意为视觉障碍人士提供支持。</p> <p>在上一个大版本中,我们支持了根据不同的图表类型和数据自动一键智能生成图表描述的功能,帮助开发者非常方便地支持图表的 DOM 描述信息。在 ECharts 5 中,我们也做了更多提高可访问性的设计,帮助视觉障碍人士更好地理解图表内容。</p> <h4 id="%E4%B8%BB%E9%A2%98%E9%85%8D%E8%89%B2" tabindex="-1">主题配色</h4> <p>我们在设计新版默认主题样式的时候,将无障碍设计作为一个重要的考量依据,对颜色的明度和色值都进行反复测试,帮助视觉辨识障碍用户清楚地识别图表数据。​</p> <p>并且,针对有更进一步无障碍需求的开发者,我们还提供了特殊的高对比度主题,以更高对比度颜色的主题将数据作进一步区分。</p> <h4 id="%E8%B4%B4%E8%8A%B1%E5%9B%BE%E6%A1%88" tabindex="-1">贴花图案</h4> <p>ECharts 5 还新增提供了贴花的功能,用图案辅助颜色表达,进一步帮助用户区分数据。</p> <iframe width="600" height="350" src=""></iframe> <p>此外,贴花图案还能在一些其他的场景下提供帮助,比如:在报纸、书籍之类只有单色或者非常少的颜色的印刷品中,帮助更好地区分数据;用图形元素方便用户对数据产生更直观的理解等。</p> <iframe width="600" height="350" src=""></iframe> <h2 id="%E5%B0%8F%E7%BB%93" tabindex="-1">小结</h2> <p>除了以上介绍的功能,Apache ECharts 还在非常多的细节中做了改进,帮助开发者更轻松地创建默认好用、配置灵活的图表,用图表讲述数据背后的故事。</p> <p>感谢所有使用过 ECharts,甚至参与过社区贡献的开发者,正是你们才使得 Apache ECharts 5 成为可能。我们会以更大的热情投入到未来的开发中,Apache ECharts 也会以更大的诚意和大家在 6 相见!</p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">本文贡献者</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/zh/basics/release-note/v5-feature.md" title="编辑本文" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">在 GitHub 上编辑本页</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/plainheart" target="_blank" class="post-contributor has-avatar"><img alt="plainheart" src="https://echarts.apache.org/en/images/people/plainheart.jpg" loading="lazy" decoding="async" fetchpriority="low"> <span>plainheart</span></a><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a><a href="https://github.com/jiangmaniu" target="_blank" class="post-contributor"><!----> <span>jiangmaniu</span></a><a href="https://github.com/LuckyHookin" target="_blank" class="post-contributor"><!----> <span>LuckyHookin</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,i,e,r,a,d,n,l,h,p,s,c,o,E,g,m,A,B,b,C,f,x,u,v,w,y,D,S,P,R,k,G,T,F,L,V,M,I,z,W,H,O,_,K,Y,Z,U,j,N,J,Q,X,$,q,tt,it,et,rt,at,dt,nt,lt,ht){return{layout:"default",data:[{html:'<h1 id="apache-echarts-5-%E6%96%B0%E7%89%B9%E6%80%A7" tabindex="-1">Apache ECharts 5 新特性</h1>\n<p>数据可视化在过去的几年中得到了长足的发展。开发者对于可视化产品的期待不再是简单的图表创建工具,而在交互、性能、数据处理等方面有了更高级的需求。</p>\n<p>Apache ECharts 始终致力于让开发者以更方便的方式创造灵活丰富的可视化作品。在最新推出的 Apache ECharts 5,我们着力加强了图表的叙事能力,让开发者可以以更简单的方式,讲述数据背后的故事。</p>\n<img data-src="images/feature-v5/echarts-5.png" width="800px" />\n<p>“表·达”是 Apache ECharts 5 的核心,通过五大模块、十五项特性的全面升级,围绕可视化作品的叙事表达能力,让图“表”更能传“达”数据背后的故事,帮助开发者更轻松地创造满足各种场景需求的可视化作品。</p>\n<h2 id="%E5%8A%A8%E6%80%81%E5%8F%99%E4%BA%8B" tabindex="-1">动态叙事</h2>\n<p>动画对于人类认知的重要性不言而喻。在之前的作品中,我们会通过初始化动画和过渡动画帮助用户理解数据变换之间的联系,让图表的出现和变换显得不那么生硬。这次,我们更是大幅度增强了我们的动画叙事能力,希望能够进一步发挥动画对于用户认知的帮助作用,借助图表的动态叙事功能,帮助用户更容易理解图表背后表达的故事。</p>\n<h4 id="%E5%8A%A8%E6%80%81%E6%8E%92%E5%BA%8F%E5%9B%BE" tabindex="-1">动态排序图</h4>\n<p>Apache ECharts 5 新增支持动态排序柱状图(bar-racing)以及动态排序折线图(line-racing),帮助开发者方便地创建带有时序性的图表,展现数据随着时间维度上的变化,讲述数据的演变过程。</p>\n<md-example src="bar-race-country" width="700" height="400" />\n<md-example src="line-race" width="700" height="400" />\n<p>动态排序图展现了不同的类目随着时间在排名上的衍变。而开发者只需要通过几行简单的配置项就可以在 ECharts 中开启这样的效果。</p>\n<h4 id="%E8%87%AA%E5%AE%9A%E4%B9%89%E7%B3%BB%E5%88%97%E5%8A%A8%E7%94%BB" tabindex="-1">自定义系列动画</h4>\n<p>除了动态排序图,Apache ECharts 5 在自定义系列中提供了更加丰富强大的动画效果,支持标签数值文本的插值动画,图形的形变(morph)、分裂(separate)、合并(combine)等效果的过渡动画。</p>\n<p>想象一下,用这些动态效果,你可以创造出多么令人称奇的可视化作品!</p>\n<h2 id="%E8%A7%86%E8%A7%89%E8%AE%BE%E8%AE%A1" tabindex="-1">视觉设计</h2>\n<p>视觉设计的作用并不仅仅是为了让图表更好看,更重要的是,符合可视化原理的设计可以帮用户更快速地理解图表想表达的内容,并且尽可能消除不良设计带来的误解。</p>\n<h4 id="%E9%BB%98%E8%AE%A4%E8%AE%BE%E8%AE%A1" tabindex="-1">默认设计</h4>\n<p>我们发现,有很大一部分开发者使用了 ECharts 默认的主题样式,因而设计优雅、符合可视化原理的默认主题设计是非常重要的。在 Apache ECharts 5 中,我们重新设计了默认的主题样式,针对不同的系列和组件分别做了优化调整。以主题色为例,我们考量了颜色之间的区分度、与背景色的对比度、相邻颜色的和谐度等因素,并且确保色觉辨识障碍人士也能清楚地区分数据。</p>\n<img data-src="images/feature-v5/theme-color.png" width="400px" />\n<p>我们以最常用的柱状图为例,来看看新版本浅色主题和深色主题的样式:</p>\n<img data-src="images/feature-v5/new-theme-light.png" width="500px" />\n<img data-src="images/feature-v5/new-theme-dark.png" width="500px" />\n<p>对于折线图,我们做了比较直观的一个改变就是去掉了直角坐标系最左侧数据轴Y轴的默认显示。左侧是原本默认的折线图的样式,其实通过中间的几条数据分割线,我们就已经可以定位折线图的每个数据值。因此我们希望通过减少不必要的图形元素,来达到更清晰地传递信息的目的。</p>\n<img data-src="images/feature-v5/yAxis-default-style-change.webp" width="500px" />\n<p>对于数据区域缩放,时间轴等交互组件,我们也设计了全新的样式并且提供了更好的交互体验:</p>\n<img data-src="images/feature-v5/dataZoom.png" width="500px" />\n<img data-src="images/feature-v5/timeline.png" width="500px" />\n<h4 id="%E6%A0%87%E7%AD%BE" tabindex="-1">标签</h4>\n<p>标签是图表中的核心元素之一,清晰而明确的标签可以帮助用户对数据有更准确的理解。Apache ECharts 5 提供了多种新的标签功能,让密集的标签能清晰显示、准确表意。</p>\n<p>Apache ECharts 5 可以通过一个配置项开启自动隐藏重叠的标签。对于超出显示区域的标签,可以选择自动截断或者换行。密集的饼图标签,现在有了更美观的自动排布。</p>\n<p>这些功能可以帮助避免文字过于密集影响可读性。并且,无需开发者编写额外的代码就能默认生效,大大简化了开发者的开发成本。</p>\n<p>我们也提供了多个配置项来让开发者主动控制标签的布局策略,例如标签拖动、整体显示在画布边缘,用引导线和图形元素连接,并且仍可联动高亮表达关联关系。</p>\n<p>新的标签功能可以让你在移动端这样局限的空间内也可以有很优雅的标签展示:</p>\n<img data-src="images/feature-v5/pie-label.png" width="400px" />\n<h4 id="%E6%97%B6%E9%97%B4%E8%BD%B4" tabindex="-1">时间轴</h4>\n<p>Apache ECharts 5 带来了适于表达时间标签刻度的时间轴。时间轴的默认设计更突出重要的信息,并且提供了更灵活的定制化能力,让开发者根据不同的需求定制时间轴的标签内容。</p>\n<p>首先,时间轴不再如之前般绝对平均分割,而是选取年、月、日、整点这类更有意义的点来展示,并且能同时显示不同层级的刻度。标签的 <code>formatter</code> 支持了时间模版(例如 <code>{yyyy}-{MM}-{dd}</code>),并且可以为不同时间粒度的标签指定不同的 <code>formatter</code>,结合已有的富文本标签,可以定制出醒目而多样的时间效果。</p>\n<p>不同的 dataZoom 粒度下时间刻度的显示:</p>\n<img data-src="images/feature-v5/time-axis.png" width="600px" />\n<img data-src="images/feature-v5/time-axis-2.png" width="600px" />\n<h4 id="%E6%8F%90%E7%A4%BA%E6%A1%86" tabindex="-1">提示框</h4>\n<p>提示框(Tooltip)是一种最常用的可视化组件,可以帮助用户交互式地了解数据的详细信息。在 Apache ECharts 5 中,我们对提示框的样式进行了优化,通过对字体样式,颜色的调整,指向图形的箭头,跟随图形颜色的边框色等功能,让提示框的默认展示优雅又清晰。并且改进了富文本的渲染逻辑,确保显示效果与 HTML 方式一致,让用户在不同场景下可以选择不同的技术方案实现同样的效果。</p>\n<img data-src="images/feature-v5/new-tooltip.png" width="400px" />\n<img data-src="images/feature-v5/new-tooltip-2.png" width="400px" />\n<p>除此之外,我们这次也加上了提示框内的列表按照数值大小或者类目顺序排序的功能。</p>\n<h4 id="%E4%BB%AA%E8%A1%A8%E7%9B%98" tabindex="-1">仪表盘</h4>\n<p>我们看到社区用户创建了很多酷炫的仪表盘图表,但是他们的配置方式往往比较复杂而取巧。因此,我们对仪表盘的功能作了全面升级,支持了图片或者矢量路径绘制指针、也支持了锚点(anchor)配置项、进度条(progress)、圆角效果等等配置项。</p>\n<p>不同样式的仪表盘指针:</p>\n<img data-src="images/feature-v5/gauge-pointer.png" width="600px" />\n<p>这些升级,不仅可以让开发者用更简单的配置项实现酷炫的效果,而且带来了更丰富的定制能力。</p>\n<md-example src="gauge-clock" width="600" height="600" />\n<h4 id="%E6%89%87%E5%BD%A2%E5%9C%86%E8%A7%92" tabindex="-1">扇形圆角</h4>\n<p>圆角可以带来更美观而柔和的视觉,也能够赋予更多的创造力。Apache ECharts 5 支持了饼图、旭日图、矩形树图的扇形圆角。可不要小看了简单的圆角配置项,合理地搭配其他的效果,就可以形成更具个性的的可视化作品。</p>\n<md-example src="sunburst-borderRadius" width="400" height="400" />\n<h2 id="%E4%BA%A4%E4%BA%92%E8%83%BD%E5%8A%9B" tabindex="-1">交互能力</h2>\n<p>可视化作品的交互能力帮助用户探索了解作品,加深对于图表主旨的理解。</p>\n<h4 id="%E7%8A%B6%E6%80%81%E7%AE%A1%E7%90%86" tabindex="-1">状态管理</h4>\n<p>在 ECharts 4 中有高亮(emphasis)和普通(normal)两个交互的状态,在鼠标移到图形上的时候会进入高亮状态以区分该数据,开发者可以分别设置这两个状态的颜色,阴影等样式。</p>\n<p>这次在 Apache ECharts 5 中,我们在原先的鼠标 hover 高亮的基础上,新增加了<strong>淡出</strong>其它非相关元素的效果,从而可以达到聚焦目标数据的目的。</p>\n<p>比如在这个<a href="https://echarts.apache.org/examples/zh/editor.html?c=bar-y-category-stack">柱状图</a>的例子中,鼠标移到一个系列上的时候,其它非相关的系列就会淡出,从而可以更清晰的突出聚焦系列中数据的对比。在关系图,树图,旭日图,桑基等更复杂数据结构的图上,也可以通过淡出非相关元素来观察数据之间的联系。而且颜色,阴影等在高亮(emphasis)中可以设置的样式,现在也可以在淡出(blur)状态中设置了。</p>\n<p>除此之外,我们为所有系列还添加了<strong>点击选中</strong>这个之前只有在饼图、地图等少数系列中才能开启的交互,开发者可以设置为单选或多选模式,并且通过监听 <code>selectchanged</code> 事件获取到选中的所有图形然后进行更进一步的处理。与高亮和淡出一样,选中的样式也可以在 <code>select</code> 中配置。</p>\n<h4 id="%E6%80%A7%E8%83%BD%E6%8F%90%E5%8D%87" tabindex="-1">性能提升</h4>\n<h5 id="%E8%84%8F%E7%9F%A9%E5%BD%A2%E6%B8%B2%E6%9F%93" tabindex="-1">脏矩形渲染</h5>\n<p>Apache ECharts 5 新支持了脏矩形渲染,解决只有局部变化的场景下的性能瓶颈。在使用 Canvas 渲染器时,脏矩形渲染技术探测并只更新视图变化的部分,而不是任何变动都引起画布完全重绘。这能在一些特殊场景下帮助提高渲染帧率,例如在图形很多时候,鼠标频繁触发一些图形高亮的场景。以往这类场景,会使用额外的 Canvas 层以优化性能,但是这种方式不是所有场景都通用,而且对于复杂的样式的效果并不理想。脏矩形渲染很好地同时满足了性能和显示正确。</p>\n<p>脏矩形的可视化演示,红色框选部分为该帧重绘区域:</p>\n<img data-src="images/feature-v5/dirty-rect.gif" width="500px" />\n<p>大家在新的示例页面选择开启脏矩形优化就可以看到该效果。</p>\n<h5 id="%E5%AE%9E%E6%97%B6%E6%97%B6%E5%BA%8F%E6%95%B0%E6%8D%AE%E7%9A%84%E6%8A%98%E7%BA%BF%E5%9B%BE%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96" tabindex="-1">实时时序数据的折线图性能优化</h5>\n<p>除此之外,海量数据下折线图的性能也有了大幅度的性能提升。我们经常碰到大量的实时时序数据的高性能绘制的需求,这些数据可能需要几百或者几十毫秒更新一次。</p>\n<p>Apache ECharts 5 对这些场景下的 CPU 消耗、内存占用、初始化时间都进行了深度的优化,使得百万量级的数据也能做到实时的更新(每次更新耗时少于 30ms),甚至对于千万级的数据,也可以在 1s 内渲染完,并且保持很小的内存占用以及流畅的提示框(tooltip)等交互。</p>\n<h2 id="%E5%BC%80%E5%8F%91%E4%BD%93%E9%AA%8C" tabindex="-1">开发体验</h2>\n<p>我们希望如此强大的可视化工具可以被更多开发者以更简单的方式使用,因而开发者的开发体验也是我们非常关注的方面。</p>\n<h4 id="%E6%95%B0%E6%8D%AE%E9%9B%86" tabindex="-1">数据集</h4>\n<p>ECharts 5 加强了数据集的数据转换能力,让开发者可以使用简单的方式实现常用的数据处理,如:数据过滤(filter)、排序(sort)、聚合(aggregate)、直方图(histogram)、简单聚类(clustering)、回归线计算(regression)等。开发者可以用统一的声明式方式来使用这些功能,可以方便地实现常用的数据操作。</p>\n<h4 id="%E5%9B%BD%E9%99%85%E5%8C%96" tabindex="-1">国际化</h4>\n<p>ECharts 原有的国际化方案,采用的是根据不同的语言参数打包出不同的部署文件的形式。​ 这种方式,使动态的语言和静态的代码包绑定在一起,使用的时候只能通过重新加载不同语言版本的 ECharts 代码来达到切换语言的目的。</p>\n<p>因此,从 Apache ECharts 5 开始,动态的语言包和静态的代码包分离开。切换语言的时候,只需要加载相应语言包 ​,通过类似挂载主题的方式,使用 <code>registerLocale</code> 函数挂载语言包对象 ​,重新初始化后就完成了语言的切换 ​。</p>\n<md-code-block lang="js" code="\'Ly8gaW1wb3J0IHRoZSBsYW5nIG9iamVjdCBhbmQgc2V0IHdoZW4gaW5pdOKAiwplY2hhcnRzLnJlZ2lzdGVyTG9jYWxlKCdERScsIGxhbmcpO-KAiwplY2hhcnRzLmluaXQoRG9tRWxlbWVudCwgbnVsbCwge-KAiwogICBsb2NhbGU6ICdERSfigIsKfSk7\'" line-highlights="\'\'" />\n<h4 id="typescript-%E9%87%8D%E6%9E%84" tabindex="-1">TypeScript 重构</h4>\n<p>在近 8 年的时间里,Apache ECharts 已经发展成一个非常复杂的可视化库了,为了可以更安全高效的进行重构和新功能的开发,我们在 Apache ECharts 5 的开发之初,使用 TypeScript 对代码进行了重写,TypeScript 所带来的强类型让我们更有信心地在 ECharts 5 开发的时候对代码进行大刀阔斧的重构以实现更多令人激动人心的特性。</p>\n<p>对于开发者,我们也可以从 TypeScript 代码直接生成更好更符合代码的<code>DTS</code>类型描述文件。在此之前,ECharts 的类型描述文件一直是由社区开发者帮我们维护并发布到 <a href="https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/echarts">DefinitelyTyped</a>,这个有着不小的工作量,非常感谢大家的贡献。</p>\n<p>除此之外,如果开发者的组件是按需引入的,我们还提供了一个 <code>ComposeOption</code> 类型方法,可以组合出一个只包含了引入组件的配置项类型,可以带来更严格的类型检查,帮助你提前检测到未引入的组件类型。</p>\n<h2 id="%E5%8F%AF%E8%AE%BF%E9%97%AE%E6%80%A7" tabindex="-1">可访问性</h2>\n<p>Apache ECharts 一直非常重视无障碍设计,我们希望让视觉障碍人士也能平等了解图表传递的信息。并且也希望图表的开发者能以极低的开发成本实现这一点,因而有利于让开发者更愿意为视觉障碍人士提供支持。</p>\n<p>在上一个大版本中,我们支持了根据不同的图表类型和数据自动一键智能生成图表描述的功能,帮助开发者非常方便地支持图表的 DOM 描述信息。在 ECharts 5 中,我们也做了更多提高可访问性的设计,帮助视觉障碍人士更好地理解图表内容。</p>\n<h4 id="%E4%B8%BB%E9%A2%98%E9%85%8D%E8%89%B2" tabindex="-1">主题配色</h4>\n<p>我们在设计新版默认主题样式的时候,将无障碍设计作为一个重要的考量依据,对颜色的明度和色值都进行反复测试,帮助视觉辨识障碍用户清楚地识别图表数据。​</p>\n<p>并且,针对有更进一步无障碍需求的开发者,我们还提供了特殊的高对比度主题,以更高对比度颜色的主题将数据作进一步区分。</p>\n<h4 id="%E8%B4%B4%E8%8A%B1%E5%9B%BE%E6%A1%88" tabindex="-1">贴花图案</h4>\n<p>ECharts 5 还新增提供了贴花的功能,用图案辅助颜色表达,进一步帮助用户区分数据。</p>\n<md-example src="doc-example/aria-decal-simple" width="600" height="350" />\n<p>此外,贴花图案还能在一些其他的场景下提供帮助,比如:在报纸、书籍之类只有单色或者非常少的颜色的印刷品中,帮助更好地区分数据;用图形元素方便用户对数据产生更直观的理解等。</p>\n<md-example src="doc-example/aria-decal-newspaper" width="600" height="350" />\n<h2 id="%E5%B0%8F%E7%BB%93" tabindex="-1">小结</h2>\n<p>除了以上介绍的功能,Apache ECharts 还在非常多的细节中做了改进,帮助开发者更轻松地创建默认好用、配置灵活的图表,用图表讲述数据背后的故事。</p>\n<p>感谢所有使用过 ECharts,甚至参与过社区贡献的开发者,正是你们才使得 Apache ECharts 5 成为可能。我们会以更大的热情投入到未来的开发中,Apache ECharts 也会以更大的诚意和大家在 6 相见!</p>\n',postPath:"zh/basics/release-note/v5-feature",title:"5.0 - 版本特性 - 入门篇"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:r},{title:"入门篇",dir:a,children:[{title:"获取 ECharts",dir:d},{title:"在项目中引入 ECharts",dir:n},{title:"资源列表",dir:l,draft:t},{title:"寻求帮助",dir:h},{title:"版本特性",dir:p,children:[{title:"ECharts 6 特性介绍",dir:s},{title:"v5 升级 v6 指南",dir:c},{title:"5.0",dir:o},{title:"v4 升级 v5 指南",dir:E},{title:5.2,dir:g},{title:5.3,dir:m},{title:5.4,dir:A},{title:5.5,dir:B},{title:5.6,dir:b}]}]},{title:"概念篇",dir:C,children:[{title:"图表容器及大小",dir:f},{title:"配置项",dir:x,draft:t},{title:"系列",dir:u,draft:t},{title:"样式",dir:v},{title:"数据集",dir:w},{title:"数据转换",dir:y},{title:"坐标系",dir:D,draft:t},{title:"坐标轴",dir:S},{title:"视觉映射",dir:e},{title:"图例",dir:P},{title:"事件与行为",dir:R}]},{title:"应用篇",dir:k,children:[{title:"常用图表类型",dir:G,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:T},{title:"堆叠柱状图",dir:F},{title:"动态排序柱状图",dir:L},{title:"极坐标系柱状图",dir:V,draft:t},{title:"阶梯瀑布图",dir:M},{title:"视觉映射的柱状图",dir:e,draft:t}]},{title:"折线图",dir:I,children:[{title:"基础折线图",dir:z},{title:"堆叠折线图",dir:W},{title:"区域面积图",dir:H},{title:"平滑曲线图",dir:O},{title:"阶梯线图",dir:_}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:K},{title:"圆环图",dir:Y},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:Z,children:[{title:"基础散点图",dir:U}]}]},{title:"常用组件",dir:j,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:N}]}]},{title:"移动端优化",dir:i,draft:t},{title:"跨平台方案",dir:J,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:Q},{title:"数据下钻",dir:X,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:$}]},{title:"动画",dir:q,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:it,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:et,draft:t},{title:"智能指针吸附",dir:rt}]}]},{title:"最佳实践",dir:at,children:[{title:"移动端优化",dir:i,draft:t},{title:dt,dir:nt},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:lt}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:ht}]}],en:[{title:"Get Started",dir:r},{title:"Basics",dir:a,children:[{title:"Download ECharts",dir:d},{title:"Import ECharts",dir:n},{title:"Resources",dir:l,draft:t},{title:"Get Help",dir:h},{title:"What's New",dir:p,children:[{title:"ECharts 6 Features",dir:s},{title:"Migration from v5 to v6",dir:c},{title:"5.0",dir:o},{title:"Migration from v4 to v5",dir:E},{title:5.2,dir:g},{title:5.3,dir:m},{title:5.4,dir:A},{title:5.5,dir:B},{title:5.6,dir:b}]}]},{title:"Concepts",dir:C,children:[{title:"Chart Container",dir:f},{title:"Chart Option",dir:x,draft:t},{title:"Series",dir:u,draft:t},{title:"Style",dir:v},{title:"Dataset",dir:w},{title:"Data Transform",dir:y},{title:"Coordinate",dir:D,draft:t},{title:"Axis",dir:S},{title:"Visual Mapping",dir:e},{title:"Legend",dir:P},{title:"Event and Action",dir:R}]},{title:"How To Guides",dir:k,children:[{title:"Common Charts",dir:G,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:T},{title:"Stacked Bar",dir:F},{title:"Bar Racing",dir:L},{title:"Bar Polar",dir:V,draft:t},{title:"Waterfall",dir:M}]},{title:"Line",dir:I,children:[{title:"Basic Line",dir:z},{title:"Stacked Line",dir:W},{title:"Area Chart",dir:H},{title:"Smoothed Line",dir:O},{title:"Step Line",dir:_}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:K},{title:"Ring Style",dir:Y},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:Z,children:[{title:"Basic Scatter",dir:U}]}]},{title:"Common Components",dir:j,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:N}]}]},{title:"Mobile",dir:i,draft:t},{title:"Cross Platform",dir:J,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:Q},{title:"Drilldown",dir:X,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:$}]},{title:"Animation",dir:q,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:it,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:et,draft:t},{title:"Intelligent Pointer Snapping",dir:rt}]}]},{title:"Best Practices",dir:at,children:[{title:"Mobile Optimization",dir:i,draft:t},{title:dt,dir:nt},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:lt}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:ht}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/zh/basics/release-note/v5-feature",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/zh/basics/release-note/v5-upgrade-guide/index.html b/docs/zh/basics/release-note/v5-upgrade-guide/index.html
new file mode 100644
index 0000000..c87d53d
--- /dev/null
+++ b/docs/zh/basics/release-note/v5-upgrade-guide/index.html
@@ -0,0 +1,95 @@
+<!doctype html>
+<html data-n-head-ssr lang="zh-CN" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh-CN%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>v4 升级 v5 指南 - 版本特性 - 入门篇 - 使用手册 - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="zh"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/zh/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/zh/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/zh/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/zh/index.html" class="navbar-brand"><img src="https://echarts.apache.org/zh/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/zh/index.html">首页</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">文档<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/feature.html">特性</a></li><li><a href="https://echarts.apache.org/handbook/zh/get-started/">使用手册</a></li><li><a href="https://echarts.apache.org/zh/api.html">API</a></li><li><a href="https://echarts.apache.org/zh/option.html">配置项手册</a></li><li><a href="https://echarts.apache.org/zh/changelog.html">版本记录</a></li><li><a href="https://echarts.apache.org/zh/faq.html">常见问题</a></li><li><a href="https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide">v6 升级指南</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">下载<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/download.html">下载</a></li><li><a href="https://echarts.apache.org/zh/download-theme.html">主题下载</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">自定义系列下载<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/download-extension.html">扩展下载</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/zh/index.html">示例</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">资源<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/spreadsheet.html">表格工具</a></li><li><a href="https://echarts.apache.org/zh/theme-builder.html">主题构建工具</a></li><li><a href="https://echarts.apache.org/zh/cheat-sheet.html">术语速查手册</a></li><li><a href="https://echarts.apache.org/zh/resources.html">更多资源</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">社区<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/events.html">活动</a></li><li><a href="https://echarts.apache.org/zh/committers.html">贡献者列表</a></li><li><a href="https://echarts.apache.org/zh/maillist.html">邮件列表</a></li><li><a href="https://echarts.apache.org/zh/contributing.html">如何贡献</a></li><li><a href="https://echarts.apache.org/zh/dependencies.html">依赖项</a></li><li><a href="https://echarts.apache.org/zh/coding-standard.html">代码规范</a></li><li><a href="https://github.com/apache/echarts" target="_blank">源码(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/security.html">安全</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">版权<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">活动<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">捐赠<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">鸣谢<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("en")'>EN</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/zh/get-started" class="nav-link"><span class="title">快速上手</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">入门篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/basics/download" class="nav-link"><span class="title">获取 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/import" class="nav-link"><span class="title">在项目中引入 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/basics/help" class="nav-link"><span class="title">寻求帮助</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">版本特性</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 特性介绍</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">v5 升级 v6 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-upgrade-guide" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">v4 升级 v5 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">概念篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/concepts/chart-size" class="nav-link"><span class="title">图表容器及大小</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/style" class="nav-link"><span class="title">样式</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/dataset" class="nav-link"><span class="title">数据集</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/data-transform" class="nav-link"><span class="title">数据转换</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/axis" class="nav-link"><span class="title">坐标轴</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/visual-map" class="nav-link"><span class="title">视觉映射</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/legend" class="nav-link"><span class="title">图例</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/event" class="nav-link"><span class="title">事件与行为</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">应用篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">常用图表类型</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">柱状图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">基础柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">堆叠柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">动态排序柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">阶梯瀑布图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">折线图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">基础折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">堆叠折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/area-line" class="nav-link"><span class="title">区域面积图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">平滑曲线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/step-line" class="nav-link"><span class="title">阶梯线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">饼图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">基础饼图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">圆环图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/rose" class="nav-link"><span class="title">南丁格尔图(玫瑰图)</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">散点图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">基础散点图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">常用组件</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">地理坐标系(Geo)</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG 底图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">跨平台方案</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/server" class="nav-link"><span class="title">服务端渲染</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/wechat-app" class="nav-link"><span class="title">微信小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/baidu-app" class="nav-link"><span class="title">百度智能小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">数据处理</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/data/dynamic-data" class="nav-link"><span class="title">动态的异步数据</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">标签</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/label/rich-text" class="nav-link"><span class="title">富文本标签</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">动画</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/animation/transition" class="nav-link"><span class="title">数据过渡动画</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">交互</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/drag" class="nav-link"><span class="title">拖拽的实现</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">智能指针吸附</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">最佳实践</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/aria" class="nav-link"><span class="title">无障碍访问</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/security" class="nav-link"><span class="title">安全指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">编辑本文档</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/meta/edit-guide" class="nav-link"><span class="title">文档编辑指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="apache-echarts-5-%E5%8D%87%E7%BA%A7%E6%8C%87%E5%8D%97" tabindex="-1">Apache ECharts 5 升级指南</h1> <p>本指南面向那些希望将 echarts 4.x(以下简称 <code>v4</code>)升级到 echarts 5.x(以下简称 <code>v5</code>)的用户。大家可以在 <a href="zh/basics/release-note/v5-feature">ECharts 5 新特性</a> 中了解这次<code>v5</code>带来了哪些值得升级的新特性。在绝大多数情况下,开发者用不着为这个升级做什么额外的事,因为 echarts 一直尽可能地保持 API 的稳定和向后兼容。但是,<code>v5</code> 仍然带来了一些非兼容改动,需要特别关注。此外,在一些情况下,<code>v5</code> 提供了更好的 API 用来取代之前的 API,这些被取代的 API 将不再被推荐使用(当然,我们尽量兼容了这些改动)。我们会在这篇文档里尽量详尽得解释这些改动。</p> <h2 id="%E9%9D%9E%E5%85%BC%E5%AE%B9%E6%80%A7%E6%94%B9%E5%8F%98" tabindex="-1">非兼容性改变</h2> <h3 id="%E9%BB%98%E8%AE%A4%E4%B8%BB%E9%A2%98%EF%BC%88theme%EF%BC%89" tabindex="-1">默认主题(theme)</h3> <p>首先是默认主题的改动,<code>v5</code> 在配色等主题设计上做了很多的优化来达到更好的视觉效果。如果大家依旧想保留旧版本的颜色,可以手动声明颜色,如下:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>chart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+  <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token string">'#c23531'</span><span class="token punctuation">,</span>
+    <span class="token string">'#2f4554'</span><span class="token punctuation">,</span>
+    <span class="token string">'#61a0a8'</span><span class="token punctuation">,</span>
+    <span class="token string">'#d48265'</span><span class="token punctuation">,</span>
+    <span class="token string">'#91c7ae'</span><span class="token punctuation">,</span>
+    <span class="token string">'#749f83'</span><span class="token punctuation">,</span>
+    <span class="token string">'#ca8622'</span><span class="token punctuation">,</span>
+    <span class="token string">'#bda29a'</span><span class="token punctuation">,</span>
+    <span class="token string">'#6e7074'</span><span class="token punctuation">,</span>
+    <span class="token string">'#546570'</span><span class="token punctuation">,</span>
+    <span class="token string">'#c4ccd3'</span>
+  <span class="token punctuation">]</span>
+  <span class="token comment">// ...</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>或者,做一个简单的 <code>v4</code> 主题:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">var</span> themeEC4 <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token string">'#c23531'</span><span class="token punctuation">,</span>
+    <span class="token string">'#2f4554'</span><span class="token punctuation">,</span>
+    <span class="token string">'#61a0a8'</span><span class="token punctuation">,</span>
+    <span class="token string">'#d48265'</span><span class="token punctuation">,</span>
+    <span class="token string">'#91c7ae'</span><span class="token punctuation">,</span>
+    <span class="token string">'#749f83'</span><span class="token punctuation">,</span>
+    <span class="token string">'#ca8622'</span><span class="token punctuation">,</span>
+    <span class="token string">'#bda29a'</span><span class="token punctuation">,</span>
+    <span class="token string">'#6e7074'</span><span class="token punctuation">,</span>
+    <span class="token string">'#546570'</span><span class="token punctuation">,</span>
+    <span class="token string">'#c4ccd3'</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span>
+<span class="token keyword">var</span> chart <span class="token operator">=</span> echarts<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span>dom<span class="token punctuation">,</span> themeEC4<span class="token punctuation">)</span><span class="token punctuation">;</span>
+chart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token comment">/* ... */</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h3 id="%E5%BC%95%E7%94%A8-echarts" tabindex="-1">引用 ECharts</h3> <h4 id="%E5%8E%BB%E9%99%A4-default-exports-%E7%9A%84%E6%94%AF%E6%8C%81" tabindex="-1">去除 default exports 的支持</h4> <p>如果使用者在 <code>v4</code> 中这样引用了 echarts:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">import</span> echarts <span class="token keyword">from</span> <span class="token string">'echarts'</span><span class="token punctuation">;</span>
+<span class="token comment">// 或者按需引入</span>
+<span class="token keyword">import</span> echarts <span class="token keyword">from</span> <span class="token string">'echarts/lib/echarts'</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>这两种方式,<code>v5</code> 中不再支持了。</p> <p>使用者需要如下更改代码解决这个问题:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">import</span> <span class="token operator">*</span> <span class="token keyword">as</span> echarts <span class="token keyword">from</span> <span class="token string">'echarts'</span><span class="token punctuation">;</span>
+<span class="token comment">// 按需引入</span>
+<span class="token keyword">import</span> <span class="token operator">*</span> <span class="token keyword">as</span> echarts <span class="token keyword">from</span> <span class="token string">'echarts/lib/echarts'</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h4 id="%E6%8C%89%E9%9C%80%E5%BC%95%E5%85%A5" tabindex="-1">按需引入</h4> <p>在 5.0.1 中,我们引入了新的<a href="zh/basics/import">按需引入接口</a></p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">import</span> <span class="token operator">*</span> <span class="token keyword">as</span> echarts <span class="token keyword">from</span> <span class="token string">'echarts/core'</span><span class="token punctuation">;</span>
+<span class="token keyword">import</span> <span class="token punctuation">{</span> BarChart <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'echarts/charts'</span><span class="token punctuation">;</span>
+<span class="token keyword">import</span> <span class="token punctuation">{</span> GridComponent <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'echarts/components'</span><span class="token punctuation">;</span>
+<span class="token comment">// 注意,新的接口中默认不再包含 Canvas 渲染器,需要显示引入,如果需要使用 SVG 渲染模式则使用 SVGRenderer</span>
+<span class="token keyword">import</span> <span class="token punctuation">{</span> CanvasRenderer <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'echarts/renderers'</span><span class="token punctuation">;</span>
+
+echarts<span class="token punctuation">.</span><span class="token function">use</span><span class="token punctuation">(</span><span class="token punctuation">[</span>BarChart<span class="token punctuation">,</span> GridComponent<span class="token punctuation">,</span> CanvasRenderer<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>如果之前是使用<code>import 'echarts/lib/chart/bar'</code>引入,新的接口对应的是<code>import {BarChart} from 'echarts/charts'</code>;</p> <p>为了方便大家了解自己的配置项需要引入哪些模块,我们新的示例编辑页面添加了生成按需引入代码的功能,大家可以在示例编辑页的<code>完整代码</code>标签下选中按需引入后查看需要引入的模块以及相关代码。</p> <p>在大部分情况下,我们都推荐大家尽可能用这套新的按需引入接口,它可以最大程度的利用打包工具 tree-shaking 的能力,并且可以有效解决命名空间冲突的问题而且防止了内部结构的暴露。如果你依旧在使用 CommonJS 的模块写法,之前的方式我们也依旧是支持的:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">const</span> echarts <span class="token operator">=</span> <span class="token function">require</span><span class="token punctuation">(</span><span class="token string">'echarts/lib/echarts'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token function">require</span><span class="token punctuation">(</span><span class="token string">'echarts/lib/chart/bar'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token function">require</span><span class="token punctuation">(</span><span class="token string">'echarts/lib/component/grid'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>其次,因为我们的源代码已使用 TypeScript 重写,<code>v5</code> 将不再支持从 <code>echarts/src</code> 引用文件,需要改为从<code>echarts/lib</code>引入。</p> <h4 id="%E4%BE%9D%E8%B5%96%E8%B0%83%E6%95%B4" tabindex="-1">依赖调整</h4> <blockquote><p>注意:该部分只针对为了保证较小的打包体积而是用按需引入接口的开发者,如果是全量引入的不需要关注</p></blockquote> <p>为了保证 tree-shaking 后的体积足够小,我们去除了一些之前会默认被打包进来的依赖。比如前面提到的在使用新的按需引入接口的时候,<code>CanvasRenderer</code>将不再被默认引入,这样可以保证只需要使用 SVG 渲染模式的时候不会把不需要的 Canvas 渲染代码也一起打包进来,除此之外,还有下面这些依赖的改动:</p> <ul><li>在使用折线图,柱状图中不再默认引入直角坐标系组件,因此之前使用下面的引入方式</li></ul> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">const</span> echarts <span class="token operator">=</span> <span class="token function">require</span><span class="token punctuation">(</span><span class="token string">'echarts/lib/echarts'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token function">require</span><span class="token punctuation">(</span><span class="token string">'echarts/lib/chart/bar'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token function">require</span><span class="token punctuation">(</span><span class="token string">'echarts/lib/chart/line'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>需要再单独引入<code>grid</code>组件</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token function">require</span><span class="token punctuation">(</span><span class="token string">'echarts/lib/component/grid'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>参考 issue:<a href="https://github.com/apache/echarts/issues/14080">#14080</a>, <a href="https://github.com/apache/echarts/issues/13764">#13764</a></p> <ul><li>默认不再引入<code>aria</code>组件,如果需要的话可以手动引入。</li></ul> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">import</span> <span class="token punctuation">{</span> AriaComponent <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'echarts/components'</span><span class="token punctuation">;</span>
+echarts<span class="token punctuation">.</span><span class="token function">use</span><span class="token punctuation">(</span>AriaComponent<span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>或者:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token function">require</span><span class="token punctuation">(</span><span class="token string">'echarts/lib/component/aria'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h3 id="%E5%8E%BB%E9%99%A4%E5%86%85%E7%BD%AE%E7%9A%84-geojson" tabindex="-1">去除内置的 geoJSON</h3> <p><code>v5</code> 移除了内置的 geoJSON(原先在 <code>echarts/map</code> 文件夹下)。这些 geoJSON 文件本就一直来源于第三方。如果使用者仍然需要他们,可以去从老版本中得到,或者自己寻找更合适的数据然后通过 registerMap 接口注册到 ECharts 中。</p> <h3 id="%E6%B5%8F%E8%A7%88%E5%99%A8%E5%85%BC%E5%AE%B9%E6%80%A7" tabindex="-1">浏览器兼容性</h3> <p><code>v5</code> 不再支持 IE8 浏览器。我们不再继续维护和升级之前的 <a href="https://github.com/ecomfe/zrender/tree/4.3.2/src/vml">VML 渲染器</a> 来实现 IE8 的兼容。如果使用者确实有很强的需求,那么欢迎提 pull request 来升级 VML 渲染器,或者单独维护一个第三方 VML 渲染器,我们从 <code>v5.0.1</code> 开始支持注册独立的渲染器了。</p> <h3 id="%E9%85%8D%E7%BD%AE%E9%A1%B9%E8%B0%83%E6%95%B4" tabindex="-1">配置项调整</h3> <h4 id="y-%E8%BD%B4%E9%BB%98%E8%AE%A4%E4%B8%8D%E6%98%BE%E7%A4%BA%E8%BD%B4%E7%BA%BF%E5%92%8C%E5%88%BB%E5%BA%A6%E7%BA%BF" tabindex="-1">Y 轴默认不显示轴线和刻度线</h4> <p><code>v5</code> 去掉了直角坐标系最左侧数据轴 Y 轴的默认显示。如果仍希望展示轴线和刻度线,需要显式配置:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'value'</span><span class="token punctuation">,</span>
+  <span class="token comment">// 显式设置 `axisLine.show` 和 `axisTick.show` 为 `true`</span>
+  <span class="token literal-property property">axisLine</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">true</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">axisTick</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">true</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h4 id="%E8%A7%86%E8%A7%89%E6%A0%B7%E5%BC%8F%E8%AE%BE%E7%BD%AE%E7%9A%84%E4%BC%98%E5%85%88%E7%BA%A7%E6%94%B9%E5%8F%98" tabindex="-1">视觉样式设置的优先级改变</h4> <p><code>v5</code> 对调了 <a href="https://echarts.apache.org/option.html#visualMap">visualMap 组件</a> 和 <a href="https://echarts.apache.org/option.html#series-scatter.itemStyle">itemStyle</a> | <a href="https://echarts.apache.org/option.html#series-scatter.lineStyle">lineStyle</a> | <a href="https://echarts.apache.org/option.html#series-scatter.areaStyle">areaStyle</a> 的视觉样式优先级。</p> <p>具体来说,<code>v4</code> 中,<a href="https://echarts.apache.org/option.html#visualMap">visualMap 组件</a> 中生成的视觉样式(如,颜色、图形类型、图形尺寸等)的优先级,比开发者在 <a href="https://echarts.apache.org/option.html#series-scatter.itemStyle">itemStyle</a> | <a href="https://echarts.apache.org/option.html#series-scatter.lineStyle">lineStyle</a> | <a href="https://echarts.apache.org/option.html#series-scatter.areaStyle">areaStyle</a> 中设置的样式的优先级高,也就是说如果他们同时设置的话,前者会生效而后者不会生效。这带来了些麻烦:假如使用者在使用 <a href="https://echarts.apache.org/option.html#visualMap">visualMap 组件</a> 时,又想针对某个数据项对应的图形,设置 <a href="https://echarts.apache.org/option.html#series-scatter.itemStyle">itemStyle</a> 样式,则做不到。<code>v5</code> 中于是提高了 <a href="https://echarts.apache.org/option.html#series-scatter.itemStyle">itemStyle</a> | <a href="https://echarts.apache.org/option.html#series-scatter.lineStyle">lineStyle</a> | <a href="https://echarts.apache.org/option.html#series-scatter.areaStyle">areaStyle</a> 的优先级,使他们能生效。</p> <p>在绝大多处情况下,这个变化并不会带来什么影响。但是为保险起见,使用者在升级 <code>v4</code> 到 <code>v5</code> 时,还是可以检查下,是否有同时使用 <a href="https://echarts.apache.org/option.html#visualMap">visualMap</a> 和 <a href="https://echarts.apache.org/option.html#series-scatter.itemStyle">itemStyle</a> | <a href="https://echarts.apache.org/option.html#series-scatter.lineStyle">lineStyle</a> | <a href="https://echarts.apache.org/option.html#series-scatter.areaStyle">areaStyle</a> 的情况。</p> <h4 id="%E5%AF%8C%E6%96%87%E6%9C%AC%E7%9A%84-padding" tabindex="-1">富文本的 <code>padding</code></h4> <p><code>v5</code> 调整了 <a href="https://echarts.apache.org/option.html#series-scatter.label.rich.%3Cstyle_name%3E.padding">rich.?.padding</a> 的格式使其更符合 CSS 的规范。<code>v4</code> 里,例如 <code>rich.?.padding: [11, 22, 33, 44]</code> 表示 <code>padding-top</code> 是 <code>33</code> 且 <code>padding-bottom</code> 是 <code>11</code>。在 <code>v5</code> 中调整了上下的位置,<code>rich.?.padding: [11, 22, 33, 44]</code> 表示 <code>padding-top</code> 是 <code>11</code> 且 <code>padding-bottom</code> 是 <code>33</code>。</p> <p>如果使用者有在使用 <a href="https://echarts.apache.org/option.html#series-scatter.label.rich.%3Cstyle_name%3E.padding">rich.?.padding</a>,需要注意调整下这个顺序。</p> <h2 id="%E6%89%A9%E5%B1%95%E7%9A%84%E5%85%BC%E5%AE%B9" tabindex="-1">扩展的兼容</h2> <p>如果想要升级到 <code>v5</code> ,下面这些扩展需要升级到最新的版本实现兼容。</p> <ul><li><a href="https://github.com/ecomfe/echarts-gl">echarts-gl</a></li> <li><a href="https://github.com/ecomfe/echarts-wordcloud">echarts-wordcloud</a></li> <li><a href="https://github.com/ecomfe/echarts-liquidfill">echarts-liquidfill</a></li></ul> <h2 id="%E4%B8%8D%E5%86%8D%E6%8E%A8%E8%8D%90%E4%BD%BF%E7%94%A8%E7%9A%84-api" tabindex="-1">不再推荐使用的 API</h2> <p>一些 API(包括接口调用,事件监听和配置项)在 <code>v5</code> 中不再推荐使用。当然,使用者仍然可以用他们,只是会在 dev 模式下,在 console 中打印一些 warning,并不会影响功能。但是从长远维护考虑,我们还是推荐升级成新的 API。</p> <p>下面是不再推荐使用的 API 以及推荐的新 API:</p> <ul><li>图形元素 transform 相关的属性被改变了:
+<ul><li>变更点:
+<ul><li><code>position: [number, number]</code> 改为 <code>x: number</code> / <code>y: number</code>。</li> <li><code>scale: [number, number]</code> 改为 <code>scaleX: number</code> / <code>scaleY: number</code>。</li> <li><code>origin: [number, number]</code> 改为 <code>originX: number</code> / <code>originY: number</code>。</li></ul></li> <li><code>position</code>、<code>scale</code> 和 <code>origin</code> 仍然支持,但已不推荐使用。</li> <li>它影响到这些地方:
+<ul><li>在<code>graphic</code>组件中:每个元素的声明。</li> <li>在 <code>custom series</code> 中:<code>renderItem</code> 返回的每个元素的声明。</li> <li>直接使用 zrender 图形元素时。</li></ul></li></ul></li> <li>Text 相关的属性被改变:
+<ul><li>变更点:
+<ul><li>图形元素附带的文本的声明方式被改变:
+<ul><li>除了 <code>Text</code> 元素之外,其他元素中的属性 <code>style.text</code> 都不推荐使用了。取而代之的是新属性 <code>textContent</code> 和 <code>textConfig</code>,他们能带来更丰富的功能。</li> <li>其中,下面左边部分的这些属性已不推荐使用或废弃。请使用下面的右边部分的属性:
+<ul><li>textPosition => textConfig.position</li> <li>textOffset => textConfig.offset</li> <li>textRotation => textConfig.rotation</li> <li>textDistance => textConfig.distance</li></ul></li></ul></li> <li>下面左边部分的属性在 <code>style</code> 和 <code>style.rich.?</code> 中已不推荐使用或废弃。请使用下面右边的属性:
+<ul><li>textFill => fill</li> <li>textStroke => stroke</li> <li>textFont => font</li> <li>textStrokeWidth => lineWidth</li> <li>textAlign => align</li> <li>textVerticalAlign => verticalAlign</li> <li>textLineHeight => lineHeight</li> <li>textWidth => width</li> <li>textHeight => hight</li> <li>textBackgroundColor => backgroundColor</li> <li>textPadding => padding</li> <li>textBorderColor => borderColor</li> <li>textBorderWidth => borderWidth</li> <li>textBorderRadius => borderRadius</li> <li>textBoxShadowColor => shadowColor</li> <li>textBoxShadowBlur => shadowBlur</li> <li>textBoxShadowOffsetX => shadowOffsetX</li> <li>textBoxShadowOffsetY => shadowOffsetY</li></ul></li> <li>注:这些属性并没有变化:
+<ul><li>textShadowColor</li> <li>textShadowBlur</li> <li>textShadowOffsetX</li> <li>textShadowOffsetY</li></ul></li></ul></li> <li>它影响到这些地方:
+<ul><li>在 <code>graphic</code> 组件中:每个元素的声明。(原来的写法仍兼容,但在一些很复杂的情况下,可能效果不完全一致。)</li> <li>在自定义系列(<code>custom series</code>)中:<code>renderItem</code> 返回中的每个元素的声明。(原来的写法仍兼容,但在一些很复杂的情况下,可能效果不完全一致。)</li> <li>直接使用 zrender API 创建图形元素。(不再兼容,原写法被废弃。)</li></ul></li></ul></li> <li>图表实例上的 API:
+<ul><li><code>chart.one(...)</code> 已不推荐使用。</li></ul></li> <li><code>label</code>。
+<ul><li>属性 <code>color</code>、<code>textBorderColor</code>、<code>backgroundColor</code>、<code>borderColor</code> 中,值 <code>auto</code> 已不推荐使用,而推荐使用 <code>'inherit'</code> 代替。</li></ul></li> <li><code>hoverAnimation</code>:
+<ul><li>选项 <code>series.hoverAnimation</code> 已不推荐使用,使用 <code>series.emphasis.scale</code> 代替之。</li></ul></li> <li>折线图(<code>line series</code>):
+<ul><li>选项 <code>series.clipOverflow</code> 已不推荐使用,使用 <code>series.clip</code> 代替之。</li></ul></li> <li>自定义系列(<code>custom series</code>)。
+<ul><li>在 <code>renderItem</code> 中,<code>api.style(...)</code> 和 <code>api.styleEmphasis(...)</code> 已不推荐使用。因为这两个接口其实并不真正必要,也很难保证向后兼容。用户可以通过 <code>api.visual(...)</code> 获取系统自动分配的视觉信息。</li></ul></li> <li>旭日图(<code>sunburst</code>):
+<ul><li>动作类型 <code>sunburstHighlight</code> 已被弃用,请使用 <code>highlight</code> 代替。</li> <li>动作类型 <code>sunburstUnhighlight</code> 已被弃用,请使用 <code>downplay</code> 代替。</li> <li>选项 <code>series.downplay</code> 已被弃用,请使用 <code>series.blur</code> 代替。</li> <li>选项 <code>series.highlightPolicy</code> 已不适用,请使用 <code>series.emphasis.focus</code> 代替。</li></ul></li> <li>饼图(<code>pie</code>):
+<ul><li>下面左边部分的 action 名已经不推荐使用。请使用右边的 action 名。
+<ul><li><code>pieToggleSelect</code> => <code>toggleSelect</code>。</li> <li><code>pieSelect</code> => <code>select</code>。</li> <li><code>pieUnSelect</code> => <code>unselect</code>。</li></ul></li> <li>下面左边部分的事件名已经不推荐使用。请使用右边的事件名。
+<ul><li><code>pieselectchanged</code> => <code>selectchanged</code>。</li> <li><code>pieselected</code> => <code>selected</code>。</li> <li><code>pieunselected</code> => <code>unselected</code>。</li></ul></li> <li>选项 <code>series.label.margin</code> 已经不推荐使用。使用 <code>series.label.edgeDistance</code> 代替。</li> <li>选项 <code>series.clockWise</code> 已经不推荐使用。使用 <code>series.clockwise</code> 代替。</li> <li>选项 <code>series.hoverOffset</code> 已经不推荐使用。使用 <code>series.emphasis.scaleSize</code> 代替。</li></ul></li> <li>地图(<code>map series</code>):
+<ul><li>下文左边部分的 action 名已经不推荐使用。请使用右边的 action 名。
+<ul><li><code>mapToggleSelect</code> => <code>toggleSelect</code>。</li> <li><code>mapSelect</code> => <code>select</code>。</li> <li><code>mapUnSelect</code> => <code>unselect</code>。</li></ul></li> <li>下面左边部分的事件名已经不推荐使用。请使用右边的事件名。
+<ul><li><code>mapselectchanged</code> => <code>selectchanged</code>。</li> <li><code>mapselected</code> => <code>selected</code>。</li> <li><code>mapunselected</code> => <code>unselected</code>。</li></ul></li> <li>选项 <code>series.mapType</code> 已经不推荐使用。使用 <code>series.map</code> 代替。</li> <li>选项 <code>series.mapLocation</code> 已经不推荐使用。</li></ul></li> <li>关系图(<code>graph series</code>):
+<ul><li>选项 <code>series.focusNodeAdjacency</code> 已经不推荐使用。使用 <code>series.emphasis: { focus: 'adjacency'}</code> 代替。</li></ul></li> <li>仪表盘(<code>gauge series</code>):
+<ul><li>选项 <code>series.clockWise</code> 已经不推荐使用。使用 <code>series.clockwise</code> 代替。</li> <li>选项 <code>series.hoverOffset</code> 已经不推荐使用。使用 <code>series.emphasis.scaleSize</code> 代替。</li></ul></li> <li><code>dataZoom</code> 组件:
+<ul><li>选项 <code>dataZoom.handleIcon</code> 如果使用 <code>SVGPath</code>,需要前缀 <code>path://</code>。</li></ul></li> <li>雷达图(<code>radar</code>):
+<ul><li>选项 <code>radar.name</code> 已经不推荐使用。使用 <code>radar.axisName</code> 代替。</li> <li>选项 <code>radar.nameGap</code> 已经不推荐使用。使用 <code>radar.axisNameGap</code> 代替。</li></ul></li> <li>Parse and format:
+<ul><li><code>echarts.format.formatTime</code> 已经不推荐使用。使用 <code>echarts.time.format</code> 代替。</li> <li><code>echarts.number.parseDate</code> 已经不推荐使用。使用 <code>echarts.time.parse</code> 代替。</li> <li><code>echarts.format.getTextRect</code> 已经不推荐使用。</li></ul></li></ul></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">本文贡献者</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/zh/basics/release-note/v5-upgrade-guide.md" title="编辑本文" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">在 GitHub 上编辑本页</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/plainheart" target="_blank" class="post-contributor has-avatar"><img alt="plainheart" src="https://echarts.apache.org/en/images/people/plainheart.jpg" loading="lazy" decoding="async" fetchpriority="low"> <span>plainheart</span></a><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a><a href="https://github.com/Ovilia" target="_blank" class="post-contributor has-avatar"><img alt="Ovilia" src="https://echarts.apache.org/en/images/people/羡辙.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>Ovilia</span></a><a href="https://github.com/fredricen" target="_blank" class="post-contributor"><!----> <span>fredricen</span></a><a href="https://github.com/onlinelemon" target="_blank" class="post-contributor"><!----> <span>onlinelemon</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(e,i,t,l,d,c,o,a,r,n,s,h,p,g,m,u,b,y,C,A,E,B,f,v,I,S,x,W,M,Y,J,G,N,V,k,Z,w,j,F,L,X,z,D,O,H,P,R,T,U,K,Q,q,_,$,ee,ie,te,le,de,ce,oe,ae,re){return{layout:"default",data:[{html:'<h1 id="apache-echarts-5-%E5%8D%87%E7%BA%A7%E6%8C%87%E5%8D%97" tabindex="-1">Apache ECharts 5 升级指南</h1>\n<p>本指南面向那些希望将 echarts 4.x(以下简称 <code>v4</code>)升级到 echarts 5.x(以下简称 <code>v5</code>)的用户。大家可以在 <a href="zh/basics/release-note/v5-feature">ECharts 5 新特性</a> 中了解这次<code>v5</code>带来了哪些值得升级的新特性。在绝大多数情况下,开发者用不着为这个升级做什么额外的事,因为 echarts 一直尽可能地保持 API 的稳定和向后兼容。但是,<code>v5</code> 仍然带来了一些非兼容改动,需要特别关注。此外,在一些情况下,<code>v5</code> 提供了更好的 API 用来取代之前的 API,这些被取代的 API 将不再被推荐使用(当然,我们尽量兼容了这些改动)。我们会在这篇文档里尽量详尽得解释这些改动。</p>\n<h2 id="%E9%9D%9E%E5%85%BC%E5%AE%B9%E6%80%A7%E6%94%B9%E5%8F%98" tabindex="-1">非兼容性改变</h2>\n<h3 id="%E9%BB%98%E8%AE%A4%E4%B8%BB%E9%A2%98%EF%BC%88theme%EF%BC%89" tabindex="-1">默认主题(theme)</h3>\n<p>首先是默认主题的改动,<code>v5</code> 在配色等主题设计上做了很多的优化来达到更好的视觉效果。如果大家依旧想保留旧版本的颜色,可以手动声明颜色,如下:</p>\n<md-code-block lang="js" code="\'Y2hhcnQuc2V0T3B0aW9uKHsKICBjb2xvcjogWwogICAgJyNjMjM1MzEnLAogICAgJyMyZjQ1NTQnLAogICAgJyM2MWEwYTgnLAogICAgJyNkNDgyNjUnLAogICAgJyM5MWM3YWUnLAogICAgJyM3NDlmODMnLAogICAgJyNjYTg2MjInLAogICAgJyNiZGEyOWEnLAogICAgJyM2ZTcwNzQnLAogICAgJyM1NDY1NzAnLAogICAgJyNjNGNjZDMnCiAgXQogIC8vIC4uLgp9KTs\'" line-highlights="\'\'" />\n<p>或者,做一个简单的 <code>v4</code> 主题:</p>\n<md-code-block lang="js" code="\'dmFyIHRoZW1lRUM0ID0gewogIGNvbG9yOiBbCiAgICAnI2MyMzUzMScsCiAgICAnIzJmNDU1NCcsCiAgICAnIzYxYTBhOCcsCiAgICAnI2Q0ODI2NScsCiAgICAnIzkxYzdhZScsCiAgICAnIzc0OWY4MycsCiAgICAnI2NhODYyMicsCiAgICAnI2JkYTI5YScsCiAgICAnIzZlNzA3NCcsCiAgICAnIzU0NjU3MCcsCiAgICAnI2M0Y2NkMycKICBdCn07CnZhciBjaGFydCA9IGVjaGFydHMuaW5pdChkb20sIHRoZW1lRUM0KTsKY2hhcnQuc2V0T3B0aW9uKC8qIC4uLiAqLyk7\'" line-highlights="\'\'" />\n<h3 id="%E5%BC%95%E7%94%A8-echarts" tabindex="-1">引用 ECharts</h3>\n<h4 id="%E5%8E%BB%E9%99%A4-default-exports-%E7%9A%84%E6%94%AF%E6%8C%81" tabindex="-1">去除 default exports 的支持</h4>\n<p>如果使用者在 <code>v4</code> 中这样引用了 echarts:</p>\n<md-code-block lang="js" code="\'aW1wb3J0IGVjaGFydHMgZnJvbSAnZWNoYXJ0cyc7Ci8vIOaIluiAheaMiemcgOW8leWFpQppbXBvcnQgZWNoYXJ0cyBmcm9tICdlY2hhcnRzL2xpYi9lY2hhcnRzJzs\'" line-highlights="\'\'" />\n<p>这两种方式,<code>v5</code> 中不再支持了。</p>\n<p>使用者需要如下更改代码解决这个问题:</p>\n<md-code-block lang="js" code="\'aW1wb3J0ICogYXMgZWNoYXJ0cyBmcm9tICdlY2hhcnRzJzsKLy8g5oyJ6ZyA5byV5YWlCmltcG9ydCAqIGFzIGVjaGFydHMgZnJvbSAnZWNoYXJ0cy9saWIvZWNoYXJ0cyc7\'" line-highlights="\'\'" />\n<h4 id="%E6%8C%89%E9%9C%80%E5%BC%95%E5%85%A5" tabindex="-1">按需引入</h4>\n<p>在 5.0.1 中,我们引入了新的<a href="zh/basics/import">按需引入接口</a></p>\n<md-code-block lang="js" code="\'aW1wb3J0ICogYXMgZWNoYXJ0cyBmcm9tICdlY2hhcnRzL2NvcmUnOwppbXBvcnQgeyBCYXJDaGFydCB9IGZyb20gJ2VjaGFydHMvY2hhcnRzJzsKaW1wb3J0IHsgR3JpZENvbXBvbmVudCB9IGZyb20gJ2VjaGFydHMvY29tcG9uZW50cyc7Ci8vIOazqOaEj--8jOaWsOeahOaOpeWPo-S4rem7mOiupOS4jeWGjeWMheWQqyBDYW52YXMg5riy5p-T5Zmo77yM6ZyA6KaB5pi-56S65byV5YWl77yM5aaC5p6c6ZyA6KaB5L2_55SoIFNWRyDmuLLmn5PmqKHlvI_liJnkvb_nlKggU1ZHUmVuZGVyZXIKaW1wb3J0IHsgQ2FudmFzUmVuZGVyZXIgfSBmcm9tICdlY2hhcnRzL3JlbmRlcmVycyc7CgplY2hhcnRzLnVzZShbQmFyQ2hhcnQsIEdyaWRDb21wb25lbnQsIENhbnZhc1JlbmRlcmVyXSk7\'" line-highlights="\'\'" />\n<p>如果之前是使用<code>import \'echarts/lib/chart/bar\'</code>引入,新的接口对应的是<code>import {BarChart} from \'echarts/charts\'</code>;</p>\n<p>为了方便大家了解自己的配置项需要引入哪些模块,我们新的示例编辑页面添加了生成按需引入代码的功能,大家可以在示例编辑页的<code>完整代码</code>标签下选中按需引入后查看需要引入的模块以及相关代码。</p>\n<p>在大部分情况下,我们都推荐大家尽可能用这套新的按需引入接口,它可以最大程度的利用打包工具 tree-shaking 的能力,并且可以有效解决命名空间冲突的问题而且防止了内部结构的暴露。如果你依旧在使用 CommonJS 的模块写法,之前的方式我们也依旧是支持的:</p>\n<md-code-block lang="js" code="\'Y29uc3QgZWNoYXJ0cyA9IHJlcXVpcmUoJ2VjaGFydHMvbGliL2VjaGFydHMnKTsKcmVxdWlyZSgnZWNoYXJ0cy9saWIvY2hhcnQvYmFyJyk7CnJlcXVpcmUoJ2VjaGFydHMvbGliL2NvbXBvbmVudC9ncmlkJyk7\'" line-highlights="\'\'" />\n<p>其次,因为我们的源代码已使用 TypeScript 重写,<code>v5</code> 将不再支持从 <code>echarts/src</code> 引用文件,需要改为从<code>echarts/lib</code>引入。</p>\n<h4 id="%E4%BE%9D%E8%B5%96%E8%B0%83%E6%95%B4" tabindex="-1">依赖调整</h4>\n<blockquote>\n<p>注意:该部分只针对为了保证较小的打包体积而是用按需引入接口的开发者,如果是全量引入的不需要关注</p>\n</blockquote>\n<p>为了保证 tree-shaking 后的体积足够小,我们去除了一些之前会默认被打包进来的依赖。比如前面提到的在使用新的按需引入接口的时候,<code>CanvasRenderer</code>将不再被默认引入,这样可以保证只需要使用 SVG 渲染模式的时候不会把不需要的 Canvas 渲染代码也一起打包进来,除此之外,还有下面这些依赖的改动:</p>\n<ul>\n<li>在使用折线图,柱状图中不再默认引入直角坐标系组件,因此之前使用下面的引入方式</li>\n</ul>\n<md-code-block lang="js" code="\'Y29uc3QgZWNoYXJ0cyA9IHJlcXVpcmUoJ2VjaGFydHMvbGliL2VjaGFydHMnKTsKcmVxdWlyZSgnZWNoYXJ0cy9saWIvY2hhcnQvYmFyJyk7CnJlcXVpcmUoJ2VjaGFydHMvbGliL2NoYXJ0L2xpbmUnKTs\'" line-highlights="\'\'" />\n<p>需要再单独引入<code>grid</code>组件</p>\n<md-code-block lang="js" code="\'cmVxdWlyZSgnZWNoYXJ0cy9saWIvY29tcG9uZW50L2dyaWQnKTs\'" line-highlights="\'\'" />\n<p>参考 issue:<a href="https://github.com/apache/echarts/issues/14080">#14080</a>, <a href="https://github.com/apache/echarts/issues/13764">#13764</a></p>\n<ul>\n<li>默认不再引入<code>aria</code>组件,如果需要的话可以手动引入。</li>\n</ul>\n<md-code-block lang="js" code="\'aW1wb3J0IHsgQXJpYUNvbXBvbmVudCB9IGZyb20gJ2VjaGFydHMvY29tcG9uZW50cyc7CmVjaGFydHMudXNlKEFyaWFDb21wb25lbnQpOw\'" line-highlights="\'\'" />\n<p>或者:</p>\n<md-code-block lang="js" code="\'cmVxdWlyZSgnZWNoYXJ0cy9saWIvY29tcG9uZW50L2FyaWEnKTs\'" line-highlights="\'\'" />\n<h3 id="%E5%8E%BB%E9%99%A4%E5%86%85%E7%BD%AE%E7%9A%84-geojson" tabindex="-1">去除内置的 geoJSON</h3>\n<p><code>v5</code> 移除了内置的 geoJSON(原先在 <code>echarts/map</code> 文件夹下)。这些 geoJSON 文件本就一直来源于第三方。如果使用者仍然需要他们,可以去从老版本中得到,或者自己寻找更合适的数据然后通过 registerMap 接口注册到 ECharts 中。</p>\n<h3 id="%E6%B5%8F%E8%A7%88%E5%99%A8%E5%85%BC%E5%AE%B9%E6%80%A7" tabindex="-1">浏览器兼容性</h3>\n<p><code>v5</code> 不再支持 IE8 浏览器。我们不再继续维护和升级之前的 <a href="https://github.com/ecomfe/zrender/tree/4.3.2/src/vml">VML 渲染器</a> 来实现 IE8 的兼容。如果使用者确实有很强的需求,那么欢迎提 pull request 来升级 VML 渲染器,或者单独维护一个第三方 VML 渲染器,我们从 <code>v5.0.1</code> 开始支持注册独立的渲染器了。</p>\n<h3 id="%E9%85%8D%E7%BD%AE%E9%A1%B9%E8%B0%83%E6%95%B4" tabindex="-1">配置项调整</h3>\n<h4 id="y-%E8%BD%B4%E9%BB%98%E8%AE%A4%E4%B8%8D%E6%98%BE%E7%A4%BA%E8%BD%B4%E7%BA%BF%E5%92%8C%E5%88%BB%E5%BA%A6%E7%BA%BF" tabindex="-1">Y 轴默认不显示轴线和刻度线</h4>\n<p><code>v5</code> 去掉了直角坐标系最左侧数据轴 Y 轴的默认显示。如果仍希望展示轴线和刻度线,需要显式配置:</p>\n<md-code-block lang="js" code="\'eUF4aXM6IHsKICB0eXBlOiAndmFsdWUnLAogIC8vIOaYvuW8j-iuvue9riBgYXhpc0xpbmUuc2hvd2Ag5ZKMIGBheGlzVGljay5zaG93YCDkuLogYHRydWVgCiAgYXhpc0xpbmU6IHsKICAgIHNob3c6IHRydWUKICB9LAogIGF4aXNUaWNrOiB7CiAgICBzaG93OiB0cnVlCiAgfQp9\'" line-highlights="\'\'" />\n<h4 id="%E8%A7%86%E8%A7%89%E6%A0%B7%E5%BC%8F%E8%AE%BE%E7%BD%AE%E7%9A%84%E4%BC%98%E5%85%88%E7%BA%A7%E6%94%B9%E5%8F%98" tabindex="-1">视觉样式设置的优先级改变</h4>\n<p><code>v5</code> 对调了 <a href="https://echarts.apache.org/option.html#visualMap">visualMap 组件</a> 和 <a href="https://echarts.apache.org/option.html#series-scatter.itemStyle">itemStyle</a> | <a href="https://echarts.apache.org/option.html#series-scatter.lineStyle">lineStyle</a> | <a href="https://echarts.apache.org/option.html#series-scatter.areaStyle">areaStyle</a> 的视觉样式优先级。</p>\n<p>具体来说,<code>v4</code> 中,<a href="https://echarts.apache.org/option.html#visualMap">visualMap 组件</a> 中生成的视觉样式(如,颜色、图形类型、图形尺寸等)的优先级,比开发者在 <a href="https://echarts.apache.org/option.html#series-scatter.itemStyle">itemStyle</a> | <a href="https://echarts.apache.org/option.html#series-scatter.lineStyle">lineStyle</a> | <a href="https://echarts.apache.org/option.html#series-scatter.areaStyle">areaStyle</a> 中设置的样式的优先级高,也就是说如果他们同时设置的话,前者会生效而后者不会生效。这带来了些麻烦:假如使用者在使用 <a href="https://echarts.apache.org/option.html#visualMap">visualMap 组件</a> 时,又想针对某个数据项对应的图形,设置 <a href="https://echarts.apache.org/option.html#series-scatter.itemStyle">itemStyle</a> 样式,则做不到。<code>v5</code> 中于是提高了 <a href="https://echarts.apache.org/option.html#series-scatter.itemStyle">itemStyle</a> | <a href="https://echarts.apache.org/option.html#series-scatter.lineStyle">lineStyle</a> | <a href="https://echarts.apache.org/option.html#series-scatter.areaStyle">areaStyle</a> 的优先级,使他们能生效。</p>\n<p>在绝大多处情况下,这个变化并不会带来什么影响。但是为保险起见,使用者在升级 <code>v4</code> 到 <code>v5</code> 时,还是可以检查下,是否有同时使用 <a href="https://echarts.apache.org/option.html#visualMap">visualMap</a> 和 <a href="https://echarts.apache.org/option.html#series-scatter.itemStyle">itemStyle</a> | <a href="https://echarts.apache.org/option.html#series-scatter.lineStyle">lineStyle</a> | <a href="https://echarts.apache.org/option.html#series-scatter.areaStyle">areaStyle</a> 的情况。</p>\n<h4 id="%E5%AF%8C%E6%96%87%E6%9C%AC%E7%9A%84-padding" tabindex="-1">富文本的 <code>padding</code></h4>\n<p><code>v5</code> 调整了 <a href="https://echarts.apache.org/option.html#series-scatter.label.rich.%3Cstyle_name%3E.padding">rich.?.padding</a> 的格式使其更符合 CSS 的规范。<code>v4</code> 里,例如 <code>rich.?.padding: [11, 22, 33, 44]</code> 表示 <code>padding-top</code> 是 <code>33</code> 且 <code>padding-bottom</code> 是 <code>11</code>。在 <code>v5</code> 中调整了上下的位置,<code>rich.?.padding: [11, 22, 33, 44]</code> 表示 <code>padding-top</code> 是 <code>11</code> 且 <code>padding-bottom</code> 是 <code>33</code>。</p>\n<p>如果使用者有在使用 <a href="https://echarts.apache.org/option.html#series-scatter.label.rich.%3Cstyle_name%3E.padding">rich.?.padding</a>,需要注意调整下这个顺序。</p>\n<h2 id="%E6%89%A9%E5%B1%95%E7%9A%84%E5%85%BC%E5%AE%B9" tabindex="-1">扩展的兼容</h2>\n<p>如果想要升级到 <code>v5</code> ,下面这些扩展需要升级到最新的版本实现兼容。</p>\n<ul>\n<li><a href="https://github.com/ecomfe/echarts-gl">echarts-gl</a></li>\n<li><a href="https://github.com/ecomfe/echarts-wordcloud">echarts-wordcloud</a></li>\n<li><a href="https://github.com/ecomfe/echarts-liquidfill">echarts-liquidfill</a></li>\n</ul>\n<h2 id="%E4%B8%8D%E5%86%8D%E6%8E%A8%E8%8D%90%E4%BD%BF%E7%94%A8%E7%9A%84-api" tabindex="-1">不再推荐使用的 API</h2>\n<p>一些 API(包括接口调用,事件监听和配置项)在 <code>v5</code> 中不再推荐使用。当然,使用者仍然可以用他们,只是会在 dev 模式下,在 console 中打印一些 warning,并不会影响功能。但是从长远维护考虑,我们还是推荐升级成新的 API。</p>\n<p>下面是不再推荐使用的 API 以及推荐的新 API:</p>\n<ul>\n<li>图形元素 transform 相关的属性被改变了:\n<ul>\n<li>变更点:\n<ul>\n<li><code>position: [number, number]</code> 改为 <code>x: number</code> / <code>y: number</code>。</li>\n<li><code>scale: [number, number]</code> 改为 <code>scaleX: number</code> / <code>scaleY: number</code>。</li>\n<li><code>origin: [number, number]</code> 改为 <code>originX: number</code> / <code>originY: number</code>。</li>\n</ul>\n</li>\n<li><code>position</code>、<code>scale</code> 和 <code>origin</code> 仍然支持,但已不推荐使用。</li>\n<li>它影响到这些地方:\n<ul>\n<li>在<code>graphic</code>组件中:每个元素的声明。</li>\n<li>在 <code>custom series</code> 中:<code>renderItem</code> 返回的每个元素的声明。</li>\n<li>直接使用 zrender 图形元素时。</li>\n</ul>\n</li>\n</ul>\n</li>\n<li>Text 相关的属性被改变:\n<ul>\n<li>变更点:\n<ul>\n<li>图形元素附带的文本的声明方式被改变:\n<ul>\n<li>除了 <code>Text</code> 元素之外,其他元素中的属性 <code>style.text</code> 都不推荐使用了。取而代之的是新属性 <code>textContent</code> 和 <code>textConfig</code>,他们能带来更丰富的功能。</li>\n<li>其中,下面左边部分的这些属性已不推荐使用或废弃。请使用下面的右边部分的属性:\n<ul>\n<li>textPosition =&gt; textConfig.position</li>\n<li>textOffset =&gt; textConfig.offset</li>\n<li>textRotation =&gt; textConfig.rotation</li>\n<li>textDistance =&gt; textConfig.distance</li>\n</ul>\n</li>\n</ul>\n</li>\n<li>下面左边部分的属性在 <code>style</code> 和 <code>style.rich.?</code> 中已不推荐使用或废弃。请使用下面右边的属性:\n<ul>\n<li>textFill =&gt; fill</li>\n<li>textStroke =&gt; stroke</li>\n<li>textFont =&gt; font</li>\n<li>textStrokeWidth =&gt; lineWidth</li>\n<li>textAlign =&gt; align</li>\n<li>textVerticalAlign =&gt; verticalAlign</li>\n<li>textLineHeight =&gt; lineHeight</li>\n<li>textWidth =&gt; width</li>\n<li>textHeight =&gt; hight</li>\n<li>textBackgroundColor =&gt; backgroundColor</li>\n<li>textPadding =&gt; padding</li>\n<li>textBorderColor =&gt; borderColor</li>\n<li>textBorderWidth =&gt; borderWidth</li>\n<li>textBorderRadius =&gt; borderRadius</li>\n<li>textBoxShadowColor =&gt; shadowColor</li>\n<li>textBoxShadowBlur =&gt; shadowBlur</li>\n<li>textBoxShadowOffsetX =&gt; shadowOffsetX</li>\n<li>textBoxShadowOffsetY =&gt; shadowOffsetY</li>\n</ul>\n</li>\n<li>注:这些属性并没有变化:\n<ul>\n<li>textShadowColor</li>\n<li>textShadowBlur</li>\n<li>textShadowOffsetX</li>\n<li>textShadowOffsetY</li>\n</ul>\n</li>\n</ul>\n</li>\n<li>它影响到这些地方:\n<ul>\n<li>在 <code>graphic</code> 组件中:每个元素的声明。(原来的写法仍兼容,但在一些很复杂的情况下,可能效果不完全一致。)</li>\n<li>在自定义系列(<code>custom series</code>)中:<code>renderItem</code> 返回中的每个元素的声明。(原来的写法仍兼容,但在一些很复杂的情况下,可能效果不完全一致。)</li>\n<li>直接使用 zrender API 创建图形元素。(不再兼容,原写法被废弃。)</li>\n</ul>\n</li>\n</ul>\n</li>\n<li>图表实例上的 API:\n<ul>\n<li><code>chart.one(...)</code> 已不推荐使用。</li>\n</ul>\n</li>\n<li><code>label</code>。\n<ul>\n<li>属性 <code>color</code>、<code>textBorderColor</code>、<code>backgroundColor</code>、<code>borderColor</code> 中,值 <code>auto</code> 已不推荐使用,而推荐使用 <code>\'inherit\'</code> 代替。</li>\n</ul>\n</li>\n<li><code>hoverAnimation</code>:\n<ul>\n<li>选项 <code>series.hoverAnimation</code> 已不推荐使用,使用 <code>series.emphasis.scale</code> 代替之。</li>\n</ul>\n</li>\n<li>折线图(<code>line series</code>):\n<ul>\n<li>选项 <code>series.clipOverflow</code> 已不推荐使用,使用 <code>series.clip</code> 代替之。</li>\n</ul>\n</li>\n<li>自定义系列(<code>custom series</code>)。\n<ul>\n<li>在 <code>renderItem</code> 中,<code>api.style(...)</code> 和 <code>api.styleEmphasis(...)</code> 已不推荐使用。因为这两个接口其实并不真正必要,也很难保证向后兼容。用户可以通过 <code>api.visual(...)</code> 获取系统自动分配的视觉信息。</li>\n</ul>\n</li>\n<li>旭日图(<code>sunburst</code>):\n<ul>\n<li>动作类型 <code>sunburstHighlight</code> 已被弃用,请使用 <code>highlight</code> 代替。</li>\n<li>动作类型 <code>sunburstUnhighlight</code> 已被弃用,请使用 <code>downplay</code> 代替。</li>\n<li>选项 <code>series.downplay</code> 已被弃用,请使用 <code>series.blur</code> 代替。</li>\n<li>选项 <code>series.highlightPolicy</code> 已不适用,请使用 <code>series.emphasis.focus</code> 代替。</li>\n</ul>\n</li>\n<li>饼图(<code>pie</code>):\n<ul>\n<li>下面左边部分的 action 名已经不推荐使用。请使用右边的 action 名。\n<ul>\n<li><code>pieToggleSelect</code> =&gt; <code>toggleSelect</code>。</li>\n<li><code>pieSelect</code> =&gt; <code>select</code>。</li>\n<li><code>pieUnSelect</code> =&gt; <code>unselect</code>。</li>\n</ul>\n</li>\n<li>下面左边部分的事件名已经不推荐使用。请使用右边的事件名。\n<ul>\n<li><code>pieselectchanged</code> =&gt; <code>selectchanged</code>。</li>\n<li><code>pieselected</code> =&gt; <code>selected</code>。</li>\n<li><code>pieunselected</code> =&gt; <code>unselected</code>。</li>\n</ul>\n</li>\n<li>选项 <code>series.label.margin</code> 已经不推荐使用。使用 <code>series.label.edgeDistance</code> 代替。</li>\n<li>选项 <code>series.clockWise</code> 已经不推荐使用。使用 <code>series.clockwise</code> 代替。</li>\n<li>选项 <code>series.hoverOffset</code> 已经不推荐使用。使用 <code>series.emphasis.scaleSize</code> 代替。</li>\n</ul>\n</li>\n<li>地图(<code>map series</code>):\n<ul>\n<li>下文左边部分的 action 名已经不推荐使用。请使用右边的 action 名。\n<ul>\n<li><code>mapToggleSelect</code> =&gt; <code>toggleSelect</code>。</li>\n<li><code>mapSelect</code> =&gt; <code>select</code>。</li>\n<li><code>mapUnSelect</code> =&gt; <code>unselect</code>。</li>\n</ul>\n</li>\n<li>下面左边部分的事件名已经不推荐使用。请使用右边的事件名。\n<ul>\n<li><code>mapselectchanged</code> =&gt; <code>selectchanged</code>。</li>\n<li><code>mapselected</code> =&gt; <code>selected</code>。</li>\n<li><code>mapunselected</code> =&gt; <code>unselected</code>。</li>\n</ul>\n</li>\n<li>选项 <code>series.mapType</code> 已经不推荐使用。使用 <code>series.map</code> 代替。</li>\n<li>选项 <code>series.mapLocation</code> 已经不推荐使用。</li>\n</ul>\n</li>\n<li>关系图(<code>graph series</code>):\n<ul>\n<li>选项 <code>series.focusNodeAdjacency</code> 已经不推荐使用。使用 <code>series.emphasis: { focus: \'adjacency\'}</code> 代替。</li>\n</ul>\n</li>\n<li>仪表盘(<code>gauge series</code>):\n<ul>\n<li>选项 <code>series.clockWise</code> 已经不推荐使用。使用 <code>series.clockwise</code> 代替。</li>\n<li>选项 <code>series.hoverOffset</code> 已经不推荐使用。使用 <code>series.emphasis.scaleSize</code> 代替。</li>\n</ul>\n</li>\n<li><code>dataZoom</code> 组件:\n<ul>\n<li>选项 <code>dataZoom.handleIcon</code> 如果使用 <code>SVGPath</code>,需要前缀 <code>path://</code>。</li>\n</ul>\n</li>\n<li>雷达图(<code>radar</code>):\n<ul>\n<li>选项 <code>radar.name</code> 已经不推荐使用。使用 <code>radar.axisName</code> 代替。</li>\n<li>选项 <code>radar.nameGap</code> 已经不推荐使用。使用 <code>radar.axisNameGap</code> 代替。</li>\n</ul>\n</li>\n<li>Parse and format:\n<ul>\n<li><code>echarts.format.formatTime</code> 已经不推荐使用。使用 <code>echarts.time.format</code> 代替。</li>\n<li><code>echarts.number.parseDate</code> 已经不推荐使用。使用 <code>echarts.time.parse</code> 代替。</li>\n<li><code>echarts.format.getTextRect</code> 已经不推荐使用。</li>\n</ul>\n</li>\n</ul>\n',postPath:"zh/basics/release-note/v5-upgrade-guide",title:"v4 升级 v5 指南 - 版本特性 - 入门篇"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:l},{title:"入门篇",dir:d,children:[{title:"获取 ECharts",dir:c},{title:"在项目中引入 ECharts",dir:o},{title:"资源列表",dir:a,draft:e},{title:"寻求帮助",dir:r},{title:"版本特性",dir:n,children:[{title:"ECharts 6 特性介绍",dir:s},{title:"v5 升级 v6 指南",dir:h},{title:"5.0",dir:p},{title:"v4 升级 v5 指南",dir:g},{title:5.2,dir:m},{title:5.3,dir:u},{title:5.4,dir:b},{title:5.5,dir:y},{title:5.6,dir:C}]}]},{title:"概念篇",dir:A,children:[{title:"图表容器及大小",dir:E},{title:"配置项",dir:B,draft:e},{title:"系列",dir:f,draft:e},{title:"样式",dir:v},{title:"数据集",dir:I},{title:"数据转换",dir:S},{title:"坐标系",dir:x,draft:e},{title:"坐标轴",dir:W},{title:"视觉映射",dir:t},{title:"图例",dir:M},{title:"事件与行为",dir:Y}]},{title:"应用篇",dir:J,children:[{title:"常用图表类型",dir:G,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:N},{title:"堆叠柱状图",dir:V},{title:"动态排序柱状图",dir:k},{title:"极坐标系柱状图",dir:Z,draft:e},{title:"阶梯瀑布图",dir:w},{title:"视觉映射的柱状图",dir:t,draft:e}]},{title:"折线图",dir:j,children:[{title:"基础折线图",dir:F},{title:"堆叠折线图",dir:L},{title:"区域面积图",dir:X},{title:"平滑曲线图",dir:z},{title:"阶梯线图",dir:D}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:O},{title:"圆环图",dir:H},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:P,children:[{title:"基础散点图",dir:R}]}]},{title:"常用组件",dir:T,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:U}]}]},{title:"移动端优化",dir:i,draft:e},{title:"跨平台方案",dir:K,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:Q},{title:"数据下钻",dir:q,draft:e}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:_}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:ee}]},{title:"交互",dir:ie,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:te,draft:e},{title:"智能指针吸附",dir:le}]}]},{title:"最佳实践",dir:de,children:[{title:"移动端优化",dir:i,draft:e},{title:ce,dir:oe},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:ae}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:re}]}],en:[{title:"Get Started",dir:l},{title:"Basics",dir:d,children:[{title:"Download ECharts",dir:c},{title:"Import ECharts",dir:o},{title:"Resources",dir:a,draft:e},{title:"Get Help",dir:r},{title:"What's New",dir:n,children:[{title:"ECharts 6 Features",dir:s},{title:"Migration from v5 to v6",dir:h},{title:"5.0",dir:p},{title:"Migration from v4 to v5",dir:g},{title:5.2,dir:m},{title:5.3,dir:u},{title:5.4,dir:b},{title:5.5,dir:y},{title:5.6,dir:C}]}]},{title:"Concepts",dir:A,children:[{title:"Chart Container",dir:E},{title:"Chart Option",dir:B,draft:e},{title:"Series",dir:f,draft:e},{title:"Style",dir:v},{title:"Dataset",dir:I},{title:"Data Transform",dir:S},{title:"Coordinate",dir:x,draft:e},{title:"Axis",dir:W},{title:"Visual Mapping",dir:t},{title:"Legend",dir:M},{title:"Event and Action",dir:Y}]},{title:"How To Guides",dir:J,children:[{title:"Common Charts",dir:G,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:N},{title:"Stacked Bar",dir:V},{title:"Bar Racing",dir:k},{title:"Bar Polar",dir:Z,draft:e},{title:"Waterfall",dir:w}]},{title:"Line",dir:j,children:[{title:"Basic Line",dir:F},{title:"Stacked Line",dir:L},{title:"Area Chart",dir:X},{title:"Smoothed Line",dir:z},{title:"Step Line",dir:D}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:O},{title:"Ring Style",dir:H},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:P,children:[{title:"Basic Scatter",dir:R}]}]},{title:"Common Components",dir:T,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:U}]}]},{title:"Mobile",dir:i,draft:e},{title:"Cross Platform",dir:K,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:Q},{title:"Drilldown",dir:q,draft:e}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:_}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:ee}]},{title:"Interaction",dir:ie,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:te,draft:e},{title:"Intelligent Pointer Snapping",dir:le}]}]},{title:"Best Practices",dir:de,children:[{title:"Mobile Optimization",dir:i,draft:e},{title:ce,dir:oe},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:ae}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:re}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:e,routePath:"/zh/basics/release-note/v5-upgrade-guide",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/zh/basics/release-note/v6-feature/index.html b/docs/zh/basics/release-note/v6-feature/index.html
new file mode 100644
index 0000000..909aec9
--- /dev/null
+++ b/docs/zh/basics/release-note/v6-feature/index.html
@@ -0,0 +1,22 @@
+<!doctype html>
+<html data-n-head-ssr lang="zh-CN" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh-CN%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>ECharts 6 特性介绍 - 版本特性 - 入门篇 - 使用手册 - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="zh"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/zh/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/zh/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/zh/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/zh/index.html" class="navbar-brand"><img src="https://echarts.apache.org/zh/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/zh/index.html">首页</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">文档<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/feature.html">特性</a></li><li><a href="https://echarts.apache.org/handbook/zh/get-started/">使用手册</a></li><li><a href="https://echarts.apache.org/zh/api.html">API</a></li><li><a href="https://echarts.apache.org/zh/option.html">配置项手册</a></li><li><a href="https://echarts.apache.org/zh/changelog.html">版本记录</a></li><li><a href="https://echarts.apache.org/zh/faq.html">常见问题</a></li><li><a href="https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide">v6 升级指南</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">下载<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/download.html">下载</a></li><li><a href="https://echarts.apache.org/zh/download-theme.html">主题下载</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">自定义系列下载<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/download-extension.html">扩展下载</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/zh/index.html">示例</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">资源<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/spreadsheet.html">表格工具</a></li><li><a href="https://echarts.apache.org/zh/theme-builder.html">主题构建工具</a></li><li><a href="https://echarts.apache.org/zh/cheat-sheet.html">术语速查手册</a></li><li><a href="https://echarts.apache.org/zh/resources.html">更多资源</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">社区<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/events.html">活动</a></li><li><a href="https://echarts.apache.org/zh/committers.html">贡献者列表</a></li><li><a href="https://echarts.apache.org/zh/maillist.html">邮件列表</a></li><li><a href="https://echarts.apache.org/zh/contributing.html">如何贡献</a></li><li><a href="https://echarts.apache.org/zh/dependencies.html">依赖项</a></li><li><a href="https://echarts.apache.org/zh/coding-standard.html">代码规范</a></li><li><a href="https://github.com/apache/echarts" target="_blank">源码(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/security.html">安全</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">版权<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">活动<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">捐赠<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">鸣谢<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("en")'>EN</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/zh/get-started" class="nav-link"><span class="title">快速上手</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">入门篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/basics/download" class="nav-link"><span class="title">获取 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/import" class="nav-link"><span class="title">在项目中引入 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/basics/help" class="nav-link"><span class="title">寻求帮助</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">版本特性</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-feature" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">ECharts 6 特性介绍</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">v5 升级 v6 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">v4 升级 v5 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">概念篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/concepts/chart-size" class="nav-link"><span class="title">图表容器及大小</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/style" class="nav-link"><span class="title">样式</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/dataset" class="nav-link"><span class="title">数据集</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/data-transform" class="nav-link"><span class="title">数据转换</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/axis" class="nav-link"><span class="title">坐标轴</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/visual-map" class="nav-link"><span class="title">视觉映射</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/legend" class="nav-link"><span class="title">图例</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/event" class="nav-link"><span class="title">事件与行为</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">应用篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">常用图表类型</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">柱状图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">基础柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">堆叠柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">动态排序柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">阶梯瀑布图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">折线图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">基础折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">堆叠折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/area-line" class="nav-link"><span class="title">区域面积图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">平滑曲线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/step-line" class="nav-link"><span class="title">阶梯线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">饼图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">基础饼图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">圆环图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/rose" class="nav-link"><span class="title">南丁格尔图(玫瑰图)</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">散点图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">基础散点图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">常用组件</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">地理坐标系(Geo)</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG 底图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">跨平台方案</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/server" class="nav-link"><span class="title">服务端渲染</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/wechat-app" class="nav-link"><span class="title">微信小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/baidu-app" class="nav-link"><span class="title">百度智能小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">数据处理</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/data/dynamic-data" class="nav-link"><span class="title">动态的异步数据</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">标签</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/label/rich-text" class="nav-link"><span class="title">富文本标签</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">动画</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/animation/transition" class="nav-link"><span class="title">数据过渡动画</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">交互</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/drag" class="nav-link"><span class="title">拖拽的实现</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">智能指针吸附</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">最佳实践</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/aria" class="nav-link"><span class="title">无障碍访问</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/security" class="nav-link"><span class="title">安全指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">编辑本文档</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/meta/edit-guide" class="nav-link"><span class="title">文档编辑指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="apache-echarts-6-%E6%96%B0%E7%89%B9%E6%80%A7" tabindex="-1">Apache ECharts 6 新特性</h1> <p>12 年前,ECharts 在 GitHub 首次发布,一颗开源的种子从此萌发。</p> <p>从最初的图表工具,到如今成长为支撑百万级开发者的可视化巨擘;从单一的前端图表库,演进为支持移动端、大屏、服务端渲染等全场景的技术体系。这 12 年间,我们见证了 ECharts 在技术方面的持续突破,更欣喜地看到全球开发者用 ECharts 创造出无数惊艳的数据故事。</p> <p>现在,Apache ECharts 6.0 正式发布,我们呈上诚意满满的 12 项升级,只为百尺竿头,更进一步。</p> <h2 id="%E5%8A%9F%E8%83%BD%E6%A6%82%E8%A7%88" tabindex="-1">功能概览</h2> <p>12 年的沉淀,只为更极致的可视化表达。Apache ECharts 的核心力量,始终源于对开发者真实挑战的深刻理解。当我们为 6.0 定义方向时,问题很清晰:<strong>如何让复杂数据的呈现既足够强大,又足够优雅</strong>?</p> <p>这驱使我们围绕三个核心维度进行深度进化:</p> <ul><li><p><strong>更专业的可视化呈现</strong>:从精心打磨的默认主题,到响应系统深色的智能切换,确保图表具备专业质感,无缝融入现代应用体验。</p></li> <li><p><strong>拓展数据表达的边界</strong>:新增更多图表类型与功能,构建完整复杂场景应对体系,实现深度数据的直觉化表达。</p></li> <li><p><strong>释放组合编排的自由</strong>:从革命性的矩阵坐标系,到可复用的自定义系列生态,再到坐标轴标签优化——赋予开发者更自由编排的能力,将创意映射为无拘束的可视化作品。</p></li></ul> <p>我们在这三个核心维度上做了 12 项升级。这些升级并非简单的功能叠加,而是为构建下一代数据驱动应用,铺设的坚实能力基座。它们共同指向一个目标:<strong>让 ECharts 强大、可靠、稳定地服务于后台,把舞台和聚光灯留给你的创造性表达。</strong></p> <p>下文将针对这十二项升级分别展开介绍:</p> <ul><li><strong>更专业的可视化呈现</strong> <ul><li><strong>1. 全新默认主题</strong>:采用更符合现代审美的设计语言,以专业设计赋能数据表达</li> <li><strong>2. 动态主题切换</strong>:支持运行时无缝切换主题,适配多主题场景</li> <li><strong>3. 深色模式响应</strong>:自动适配系统深色/浅色模式,提升用户体验</li></ul></li> <li><strong>拓展数据表达的边界</strong> <ul><li><strong>4. 新增和弦图</strong>:拓展复杂关系与分布数据的呈现方式</li> <li><strong>5. 新增蜂群图</strong>:通过动态分布算法,将重叠数据点智能展开为蜂窝状排列</li> <li><strong>6. 新增抖动散点图</strong>:通过增加散点图分布范围,增强高密度数据的可读性</li> <li><strong>7. 新增断轴</strong>:表达数据断层,轻松呈现量级悬殊的数据对比</li> <li><strong>8. 升级股市交易类图表</strong>:增强标签能力,更多开箱即用的交易类图表</li></ul></li> <li><strong>释放组合编排的自由</strong> <ul><li><strong>9. 新增矩阵坐标系</strong>:各种图表类型和组件像表格一样自由组合,灵活布局</li> <li><strong>10. 升级自定义系列</strong>:支持 npm 发布与动态注册使用,实现自定义系列代码复用</li> <li><strong>11. 新增多款自定义图表</strong>:小提琴图、轮廓图、阶段图、范围柱状图、范围折线图</li> <li><strong>12. 坐标轴标签优化</strong>:新版智能优化坐标标签布局,默认防溢出防重叠</li></ul></li></ul> <p>我们希望通过 Apache ECharts 6.0 的全新升级,帮助用户更灵活方便地创建更多图表,实现真正的“前图无量”!</p> <h2 id="%E5%8A%9F%E8%83%BD%E4%BB%8B%E7%BB%8D" tabindex="-1">功能介绍</h2> <h3 id="1.-%E5%85%A8%E6%96%B0%E9%BB%98%E8%AE%A4%E4%B8%BB%E9%A2%98" tabindex="-1">1. 全新默认主题</h3> <p>在 ECharts 6.0 的开发过程中,我们深入分析了用户的真实使用场景,发现超过七成的开发者直接采用默认主题。这让我们意识到:一个优秀的默认主题不仅要具备美学价值,更要符合各个业务场景的通用需求。</p> <p>新版主题系统内部使用了设计令牌(design token)对颜色、距离等设计元素进行重构,<strong>使得不同图表类型和组件之间更和谐一致</strong>。</p> <img data-src="images/feature-v6/1-default-theme.png" width="600px"> <p>虽然 6.0 的主题在 5.x 版本上有非常大的调整,但是我们提供了一个 <a href="https://github.com/apache/echarts/blob/master/theme/v5.js">v5.js</a> 主题文件,对于希望使用新版本功能但保留原有样式的开发者,可以实现快速迁移。</p> <h3 id="2.-%E5%8A%A8%E6%80%81%E4%B8%BB%E9%A2%98%E5%88%87%E6%8D%A2" tabindex="-1">2. 动态主题切换</h3> <p>在之前的版本中,如果想要改变一个图表的主题,就必须注销图表实例后重新初始化,二次的初始动画可能对用户体验带来负面影响。在新版本中,我们实现了<strong>主题的动态切换能力</strong>(参见),显著地提升用户体验。</p> <img data-src="images/feature-v6/2-switch-themes.gif" width="600px"> <h3 id="3.-%E6%B7%B1%E8%89%B2%E6%A8%A1%E5%BC%8F%E5%93%8D%E5%BA%94" tabindex="-1">3. 深色模式响应</h3> <p>在实现主题的动态注册和切换之后,一个典型场景是<strong>监听系统是否使用深色模式,并动态调整图表的深色与浅色主题</strong>。</p> <img data-src="images/feature-v6/3-responsive-themes.gif" width="600px"> <p>这对于支持深色模式的业务场景至关重要,可以确保应用界面与系统主题风格一致,显著提升用户体验的流畅性和专业性。</p> <p>以下是一个监听系统深色模式并改变图表主题的方式:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">const</span> darkModeMediaQuery <span class="token operator">=</span> window<span class="token punctuation">.</span><span class="token function">matchMedia</span><span class="token punctuation">(</span><span class="token string">'(prefers-color-scheme: dark)'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token keyword">function</span> <span class="token function">updateDarkMode</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+    <span class="token keyword">const</span> isDarkMode <span class="token operator">=</span> darkModeMediaQuery<span class="token punctuation">.</span>matches<span class="token punctuation">;</span>
+    <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">const</span> chart <span class="token keyword">of</span> charts<span class="token punctuation">)</span> <span class="token punctuation">{</span>
+        chart<span class="token punctuation">.</span><span class="token function">setTheme</span><span class="token punctuation">(</span>isDarkMode <span class="token operator">?</span> <span class="token string">'dark'</span> <span class="token operator">:</span> <span class="token string">'default'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+    <span class="token punctuation">}</span>
+<span class="token punctuation">}</span>
+darkModeMediaQuery<span class="token punctuation">.</span><span class="token function">addEventListener</span><span class="token punctuation">(</span><span class="token string">'change'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
+    <span class="token function">updateDarkMode</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h3 id="4.-%E6%96%B0%E5%A2%9E%E5%92%8C%E5%BC%A6%E5%9B%BE" tabindex="-1">4. 新增和弦图</h3> <p>和弦图直观展现复杂关系网络中的流量与权重,特别适合金融交易、社交网络等场景的多维度关系分析。ECharts 创新性地支持<strong>使用出节点和入节点的渐变色作为边的颜色,呈现独特的视觉美感</strong>。参见 <a href="https://echarts.apache.org/option.html#series-chord">series-chord</a>。</p> <img data-src="images/feature-v6/4-chord.gif" width="600px"> <h3 id="5.-%E6%96%B0%E5%A2%9E%E8%9C%82%E7%BE%A4%E5%9B%BE" tabindex="-1">5. 新增蜂群图</h3> <p>传统的散点图在类目轴下如果数据过于密集,蜂群图(Beeswarm)通过将数据在非数值维度上的偏移,在保持数值轴准确性的前提下,实现<strong>散点图的无重叠分布</strong>。将 <a href="https://echarts.apache.org/option.html#xAxis.jitter">jitter</a> 设置为非 0 值,将 <a href="https://echarts.apache.org/option.html#xAxis.jitterOverlap">jitterOverlap</a> 设置为 <code>false</code> 来实现蜂群图。</p> <img data-src="images/feature-v6/5-beeswarm.png" width="600px"> <h3 id="6.-%E6%96%B0%E5%A2%9E%E6%8A%96%E5%8A%A8%E6%95%A3%E7%82%B9%E5%9B%BE" tabindex="-1">6. 新增抖动散点图</h3> <p>抖动散点图(Scatter Jittering)采用随机扰动策略,<strong>在非数据维度上添加固定范围的随机偏移,解决数据过于密集的问题</strong>。</p> <p>从下图我们可以看到,在未使用抖动的情况下,如果数据过于密集,很难看清数据的分布情况。</p> <img data-src="images/feature-v6/6-jittering-off.png" width="600px"> <p>而在开启了数据抖动之后,可以更清楚地看到数据分布最密集的范围是 6-8 之间。并且,相比蜂群图,抖动散点图具有更高的处理性能。</p> <img data-src="images/feature-v6/6-jittering-on.png" width="600px"> <p>将 <a href="https://echarts.apache.org/option.html#xAxis.jitter">jitter</a> 设置为非 0 值,将 <a href="https://echarts.apache.org/option.html#xAxis.jitterOverlap">jitterOverlap</a> 设置为 <code>true</code> 来实现抖动散点图。</p> <h3 id="7.-%E6%96%B0%E5%A2%9E%E6%96%AD%E8%BD%B4" tabindex="-1">7. 新增断轴</h3> <p>断轴(Broken Axis)是一种通过坐标轴断层展现悬殊量级数据的可视化手段。在 ECharts 6.0 中,我们创新性地实现了<strong>模拟撕纸效果的断轴,使得断轴的含义能被更直观地传递</strong>,并且支持点击展开的效果,还原到真实数据比例。</p> <img data-src="images/feature-v6/7-break-axis.gif" width="600px"> <h3 id="8.-%E5%8D%87%E7%BA%A7%E8%82%A1%E5%B8%82%E4%BA%A4%E6%98%93%E7%B1%BB%E5%9B%BE%E8%A1%A8" tabindex="-1">8. 升级股市交易类图表</h3> <p>ECharts 6.0 针对金融交易场景深度优化,增强了标签针对坐标系的相对定位能力,助力开发者快速构建专业级行情分析工具。</p> <p>下图展示了一个使用 ECharts 实现的股市交易图的综合应用场景,结合了<strong>分时图、MACD、成交量、买卖盘口、深度图</strong>:</p> <img data-src="images/feature-v6/8-stock.png" width="600px"> <p>这些实例可以帮助开发者快速实现金融交易场景的需求。其中,在图表的四个角落显示数字可以使用 <a href="https://echarts.apache.org/option.html#series-line.markPoint.data.relativeTo">relativeTo</a> 实现。</p> <h3 id="9.-%E6%96%B0%E5%A2%9E%E7%9F%A9%E9%98%B5%E5%9D%90%E6%A0%87%E7%B3%BB" tabindex="-1">9. 新增矩阵坐标系</h3> <p>上述例子也用到了 ECharts 6.0 新增的矩阵坐标系,它的功能十分强大。不仅可以用来做协方差矩阵图:</p> <iframe width="600" height="700" src=""></iframe> <p>元素周期表:</p> <iframe width="100%" height="600" src=""></iframe> <p>作为一种布局,它还允许开发者将各种图表类型和组件结合,创造出灵活复杂的可视化作品:</p> <iframe width="100%" height="600" src=""></iframe> <h3 id="10.-%E5%8D%87%E7%BA%A7%E8%87%AA%E5%AE%9A%E4%B9%89%E7%B3%BB%E5%88%97" tabindex="-1">10. 升级自定义系列</h3> <p>过去,使用 ECharts 自定义系列意味着开发者必须从零手写 <code>renderItem</code> 复杂逻辑,即使是<em>复用</em>,也只是复制粘贴代码。现在,ECharts 6.0 带来标准化可复用方案:</p> <ul><li><strong>自定义系列的注册机制</strong>:和主题注册类似,自定义系列也可以动态注册和使用,使用方式和内置图表系列一样简单方便,参见 <a href="https://echarts.apache.org/option.html#series-custom.renderItem">series-custom.renderItem</a></li> <li><strong>官方自定义系列项目</strong>:官方在 <a href="https://github.com/apache/echarts-custom-series">https://github.com/apache/echarts-custom-series</a> 发布了多个自定义系列,在正式版本发布后,开发者可以通过 npm 等方便地获取</li> <li><strong>发布自己的自定义系列</strong>:可以向上述项目提 Pull Request 或发布到自己的仓库,实现自定义系列的复用</li></ul> <h3 id="11.-%E6%96%B0%E5%A2%9E%E5%A4%9A%E6%AC%BE%E8%87%AA%E5%AE%9A%E4%B9%89%E5%9B%BE%E8%A1%A8" tabindex="-1">11. 新增多款自定义图表</h3> <p>本次发布,自定义系列项目提供了 6 款实用的图表,使用方法和完整文档参见 <a href="https://github.com/apache/echarts-custom-series">echarts-custom-series</a> 项目。包括<strong>小提琴图</strong>:</p> <img data-src="images/feature-v6/11-violin.png" width="600px"> <p><strong>轮廓图</strong>:</p> <img data-src="images/feature-v6/11-contour.png" width="600px"> <p><strong>睡眠阶段图</strong>:</p> <img data-src="images/feature-v6/11-stage.png" width="600px"> <p><strong>分段环形图</strong>:</p> <img data-src="images/feature-v6/11-segmentedDoughnut.png" width="600px"> <p><strong>范围柱状图</strong>:</p> <img data-src="images/feature-v6/11-barRange.png" width="600px"> <p><strong>范围折线图</strong>:</p> <img data-src="images/feature-v6/11-lineRange.png" width="600px"> <p>发挥你的创意,快来和我们一起创造更多自定义图表吧!</p> <h3 id="12.-%E5%9D%90%E6%A0%87%E8%BD%B4%E6%A0%87%E7%AD%BE%E4%BC%98%E5%8C%96" tabindex="-1">12. 坐标轴标签优化</h3> <p>在之前的版本中,直角坐标系的 <code>axisLabel</code> 和 <code>axisName</code> 在数据比较长时容易超出屏幕,以及重叠。数据变化时使用者并不总能准确预估空间来完全避免它们。在这个版本中我们优化了防止超出屏幕以及防止重叠的策略,并成为默认。</p> <h2 id="%E5%8D%87%E7%BA%A7%E6%96%B9%E6%B3%95" tabindex="-1">升级方法</h2> <p>请参见完整的<a href="https://echarts.apache.org/changelog.html#v6-0-0">版本更新内容</a>和<a href="zh/basics/release-note/v6-upgrade-guide">升级指南</a>。</p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">本文贡献者</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/zh/basics/release-note/v6-feature.md" title="编辑本文" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">在 GitHub 上编辑本页</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/Ovilia" target="_blank" class="post-contributor has-avatar"><img alt="Ovilia" src="https://echarts.apache.org/en/images/people/羡辙.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>Ovilia</span></a><a href="https://github.com/plainheart" target="_blank" class="post-contributor has-avatar"><img alt="plainheart" src="https://echarts.apache.org/en/images/people/plainheart.jpg" loading="lazy" decoding="async" fetchpriority="low"> <span>plainheart</span></a><a href="https://github.com/xushuosean" target="_blank" class="post-contributor"><!----> <span>xushuosean</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,i,e,r,a,n,d,l,s,o,h,p,c,g,E,m,B,u,A,f,b,v,x,C,w,G,D,R,y,S,k,V,Z,P,I,F,N,j,L,T,X,W,Y,z,J,M,O,K,_,U,H,Q,$,q,tt,it,et,rt,at,nt,dt,lt,st){return{layout:"default",data:[{html:'<h1 id="apache-echarts-6-%E6%96%B0%E7%89%B9%E6%80%A7" tabindex="-1">Apache ECharts 6 新特性</h1>\n<p>12 年前,ECharts 在 GitHub 首次发布,一颗开源的种子从此萌发。</p>\n<p>从最初的图表工具,到如今成长为支撑百万级开发者的可视化巨擘;从单一的前端图表库,演进为支持移动端、大屏、服务端渲染等全场景的技术体系。这 12 年间,我们见证了 ECharts 在技术方面的持续突破,更欣喜地看到全球开发者用 ECharts 创造出无数惊艳的数据故事。</p>\n<p>现在,Apache ECharts 6.0 正式发布,我们呈上诚意满满的 12 项升级,只为百尺竿头,更进一步。</p>\n<h2 id="%E5%8A%9F%E8%83%BD%E6%A6%82%E8%A7%88" tabindex="-1">功能概览</h2>\n<p>12 年的沉淀,只为更极致的可视化表达。Apache ECharts 的核心力量,始终源于对开发者真实挑战的深刻理解。当我们为 6.0 定义方向时,问题很清晰:<strong>如何让复杂数据的呈现既足够强大,又足够优雅</strong>?</p>\n<p>这驱使我们围绕三个核心维度进行深度进化:</p>\n<ul>\n<li>\n<p><strong>更专业的可视化呈现</strong>:从精心打磨的默认主题,到响应系统深色的智能切换,确保图表具备专业质感,无缝融入现代应用体验。</p>\n</li>\n<li>\n<p><strong>拓展数据表达的边界</strong>:新增更多图表类型与功能,构建完整复杂场景应对体系,实现深度数据的直觉化表达。</p>\n</li>\n<li>\n<p><strong>释放组合编排的自由</strong>:从革命性的矩阵坐标系,到可复用的自定义系列生态,再到坐标轴标签优化——赋予开发者更自由编排的能力,将创意映射为无拘束的可视化作品。</p>\n</li>\n</ul>\n<p>我们在这三个核心维度上做了 12 项升级。这些升级并非简单的功能叠加,而是为构建下一代数据驱动应用,铺设的坚实能力基座。它们共同指向一个目标:<strong>让 ECharts 强大、可靠、稳定地服务于后台,把舞台和聚光灯留给你的创造性表达。</strong></p>\n<p>下文将针对这十二项升级分别展开介绍:</p>\n<ul>\n<li><strong>更专业的可视化呈现</strong>\n<ul>\n<li><strong>1. 全新默认主题</strong>:采用更符合现代审美的设计语言,以专业设计赋能数据表达</li>\n<li><strong>2. 动态主题切换</strong>:支持运行时无缝切换主题,适配多主题场景</li>\n<li><strong>3. 深色模式响应</strong>:自动适配系统深色/浅色模式,提升用户体验</li>\n</ul>\n</li>\n<li><strong>拓展数据表达的边界</strong>\n<ul>\n<li><strong>4. 新增和弦图</strong>:拓展复杂关系与分布数据的呈现方式</li>\n<li><strong>5. 新增蜂群图</strong>:通过动态分布算法,将重叠数据点智能展开为蜂窝状排列</li>\n<li><strong>6. 新增抖动散点图</strong>:通过增加散点图分布范围,增强高密度数据的可读性</li>\n<li><strong>7. 新增断轴</strong>:表达数据断层,轻松呈现量级悬殊的数据对比</li>\n<li><strong>8. 升级股市交易类图表</strong>:增强标签能力,更多开箱即用的交易类图表</li>\n</ul>\n</li>\n<li><strong>释放组合编排的自由</strong>\n<ul>\n<li><strong>9. 新增矩阵坐标系</strong>:各种图表类型和组件像表格一样自由组合,灵活布局</li>\n<li><strong>10. 升级自定义系列</strong>:支持 npm 发布与动态注册使用,实现自定义系列代码复用</li>\n<li><strong>11. 新增多款自定义图表</strong>:小提琴图、轮廓图、阶段图、范围柱状图、范围折线图</li>\n<li><strong>12. 坐标轴标签优化</strong>:新版智能优化坐标标签布局,默认防溢出防重叠</li>\n</ul>\n</li>\n</ul>\n<p>我们希望通过 Apache ECharts 6.0 的全新升级,帮助用户更灵活方便地创建更多图表,实现真正的“前图无量”!</p>\n<h2 id="%E5%8A%9F%E8%83%BD%E4%BB%8B%E7%BB%8D" tabindex="-1">功能介绍</h2>\n<h3 id="1.-%E5%85%A8%E6%96%B0%E9%BB%98%E8%AE%A4%E4%B8%BB%E9%A2%98" tabindex="-1">1. 全新默认主题</h3>\n<p>在 ECharts 6.0 的开发过程中,我们深入分析了用户的真实使用场景,发现超过七成的开发者直接采用默认主题。这让我们意识到:一个优秀的默认主题不仅要具备美学价值,更要符合各个业务场景的通用需求。</p>\n<p>新版主题系统内部使用了设计令牌(design token)对颜色、距离等设计元素进行重构,<strong>使得不同图表类型和组件之间更和谐一致</strong>。</p>\n<img data-src="images/feature-v6/1-default-theme.png" width="600px" />\n<p>虽然 6.0 的主题在 5.x 版本上有非常大的调整,但是我们提供了一个 <a href="https://github.com/apache/echarts/blob/master/theme/v5.js">v5.js</a> 主题文件,对于希望使用新版本功能但保留原有样式的开发者,可以实现快速迁移。</p>\n<h3 id="2.-%E5%8A%A8%E6%80%81%E4%B8%BB%E9%A2%98%E5%88%87%E6%8D%A2" tabindex="-1">2. 动态主题切换</h3>\n<p>在之前的版本中,如果想要改变一个图表的主题,就必须注销图表实例后重新初始化,二次的初始动画可能对用户体验带来负面影响。在新版本中,我们实现了<strong>主题的动态切换能力</strong>(参见),显著地提升用户体验。</p>\n<img data-src="images/feature-v6/2-switch-themes.gif" width="600px" />\n<h3 id="3.-%E6%B7%B1%E8%89%B2%E6%A8%A1%E5%BC%8F%E5%93%8D%E5%BA%94" tabindex="-1">3. 深色模式响应</h3>\n<p>在实现主题的动态注册和切换之后,一个典型场景是<strong>监听系统是否使用深色模式,并动态调整图表的深色与浅色主题</strong>。</p>\n<img data-src="images/feature-v6/3-responsive-themes.gif" width="600px" />\n<p>这对于支持深色模式的业务场景至关重要,可以确保应用界面与系统主题风格一致,显著提升用户体验的流畅性和专业性。</p>\n<p>以下是一个监听系统深色模式并改变图表主题的方式:</p>\n<md-code-block lang="js" code="\'Y29uc3QgZGFya01vZGVNZWRpYVF1ZXJ5ID0gd2luZG93Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyayknKTsKZnVuY3Rpb24gdXBkYXRlRGFya01vZGUoKSB7CiAgICBjb25zdCBpc0RhcmtNb2RlID0gZGFya01vZGVNZWRpYVF1ZXJ5Lm1hdGNoZXM7CiAgICBmb3IgKGNvbnN0IGNoYXJ0IG9mIGNoYXJ0cykgewogICAgICAgIGNoYXJ0LnNldFRoZW1lKGlzRGFya01vZGUgPyAnZGFyaycgOiAnZGVmYXVsdCcpOwogICAgfQp9CmRhcmtNb2RlTWVkaWFRdWVyeS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAoKSA9PiB7CiAgICB1cGRhdGVEYXJrTW9kZSgpOwp9KTs\'" line-highlights="\'\'" />\n<h3 id="4.-%E6%96%B0%E5%A2%9E%E5%92%8C%E5%BC%A6%E5%9B%BE" tabindex="-1">4. 新增和弦图</h3>\n<p>和弦图直观展现复杂关系网络中的流量与权重,特别适合金融交易、社交网络等场景的多维度关系分析。ECharts 创新性地支持<strong>使用出节点和入节点的渐变色作为边的颜色,呈现独特的视觉美感</strong>。参见 <a href="https://echarts.apache.org/option.html#series-chord">series-chord</a>。</p>\n<img data-src="images/feature-v6/4-chord.gif" width="600px" />\n<h3 id="5.-%E6%96%B0%E5%A2%9E%E8%9C%82%E7%BE%A4%E5%9B%BE" tabindex="-1">5. 新增蜂群图</h3>\n<p>传统的散点图在类目轴下如果数据过于密集,蜂群图(Beeswarm)通过将数据在非数值维度上的偏移,在保持数值轴准确性的前提下,实现<strong>散点图的无重叠分布</strong>。将 <a href="https://echarts.apache.org/option.html#xAxis.jitter">jitter</a> 设置为非 0 值,将 <a href="https://echarts.apache.org/option.html#xAxis.jitterOverlap">jitterOverlap</a> 设置为 <code>false</code> 来实现蜂群图。</p>\n<img data-src="images/feature-v6/5-beeswarm.png" width="600px" />\n<h3 id="6.-%E6%96%B0%E5%A2%9E%E6%8A%96%E5%8A%A8%E6%95%A3%E7%82%B9%E5%9B%BE" tabindex="-1">6. 新增抖动散点图</h3>\n<p>抖动散点图(Scatter Jittering)采用随机扰动策略,<strong>在非数据维度上添加固定范围的随机偏移,解决数据过于密集的问题</strong>。</p>\n<p>从下图我们可以看到,在未使用抖动的情况下,如果数据过于密集,很难看清数据的分布情况。</p>\n<img data-src="images/feature-v6/6-jittering-off.png" width="600px" />\n<p>而在开启了数据抖动之后,可以更清楚地看到数据分布最密集的范围是 6-8 之间。并且,相比蜂群图,抖动散点图具有更高的处理性能。</p>\n<img data-src="images/feature-v6/6-jittering-on.png" width="600px" />\n<p>将 <a href="https://echarts.apache.org/option.html#xAxis.jitter">jitter</a> 设置为非 0 值,将 <a href="https://echarts.apache.org/option.html#xAxis.jitterOverlap">jitterOverlap</a> 设置为 <code>true</code> 来实现抖动散点图。</p>\n<h3 id="7.-%E6%96%B0%E5%A2%9E%E6%96%AD%E8%BD%B4" tabindex="-1">7. 新增断轴</h3>\n<p>断轴(Broken Axis)是一种通过坐标轴断层展现悬殊量级数据的可视化手段。在 ECharts 6.0 中,我们创新性地实现了<strong>模拟撕纸效果的断轴,使得断轴的含义能被更直观地传递</strong>,并且支持点击展开的效果,还原到真实数据比例。</p>\n<img data-src="images/feature-v6/7-break-axis.gif" width="600px" />\n<h3 id="8.-%E5%8D%87%E7%BA%A7%E8%82%A1%E5%B8%82%E4%BA%A4%E6%98%93%E7%B1%BB%E5%9B%BE%E8%A1%A8" tabindex="-1">8. 升级股市交易类图表</h3>\n<p>ECharts 6.0 针对金融交易场景深度优化,增强了标签针对坐标系的相对定位能力,助力开发者快速构建专业级行情分析工具。</p>\n<p>下图展示了一个使用 ECharts 实现的股市交易图的综合应用场景,结合了<strong>分时图、MACD、成交量、买卖盘口、深度图</strong>:</p>\n<img data-src="images/feature-v6/8-stock.png" width="600px" />\n<p>这些实例可以帮助开发者快速实现金融交易场景的需求。其中,在图表的四个角落显示数字可以使用 <a href="https://echarts.apache.org/option.html#series-line.markPoint.data.relativeTo">relativeTo</a> 实现。</p>\n<h3 id="9.-%E6%96%B0%E5%A2%9E%E7%9F%A9%E9%98%B5%E5%9D%90%E6%A0%87%E7%B3%BB" tabindex="-1">9. 新增矩阵坐标系</h3>\n<p>上述例子也用到了 ECharts 6.0 新增的矩阵坐标系,它的功能十分强大。不仅可以用来做协方差矩阵图:</p>\n<md-example src="matrix-covariance" width="600" height="700" />\n<p>元素周期表:</p>\n<md-example src="matrix-periodic-table" width="100%" height="600" />\n<p>作为一种布局,它还允许开发者将各种图表类型和组件结合,创造出灵活复杂的可视化作品:</p>\n<md-example src="matrix-grid-layout" width="100%" height="600" />\n<h3 id="10.-%E5%8D%87%E7%BA%A7%E8%87%AA%E5%AE%9A%E4%B9%89%E7%B3%BB%E5%88%97" tabindex="-1">10. 升级自定义系列</h3>\n<p>过去,使用 ECharts 自定义系列意味着开发者必须从零手写 <code>renderItem</code> 复杂逻辑,即使是<em>复用</em>,也只是复制粘贴代码。现在,ECharts 6.0 带来标准化可复用方案:</p>\n<ul>\n<li><strong>自定义系列的注册机制</strong>:和主题注册类似,自定义系列也可以动态注册和使用,使用方式和内置图表系列一样简单方便,参见 <a href="https://echarts.apache.org/option.html#series-custom.renderItem">series-custom.renderItem</a></li>\n<li><strong>官方自定义系列项目</strong>:官方在 <a href="https://github.com/apache/echarts-custom-series">https://github.com/apache/echarts-custom-series</a> 发布了多个自定义系列,在正式版本发布后,开发者可以通过 npm 等方便地获取</li>\n<li><strong>发布自己的自定义系列</strong>:可以向上述项目提 Pull Request 或发布到自己的仓库,实现自定义系列的复用</li>\n</ul>\n<h3 id="11.-%E6%96%B0%E5%A2%9E%E5%A4%9A%E6%AC%BE%E8%87%AA%E5%AE%9A%E4%B9%89%E5%9B%BE%E8%A1%A8" tabindex="-1">11. 新增多款自定义图表</h3>\n<p>本次发布,自定义系列项目提供了 6 款实用的图表,使用方法和完整文档参见 <a href="https://github.com/apache/echarts-custom-series">echarts-custom-series</a> 项目。包括<strong>小提琴图</strong>:</p>\n<img data-src="images/feature-v6/11-violin.png" width="600px" />\n<p><strong>轮廓图</strong>:</p>\n<img data-src="images/feature-v6/11-contour.png" width="600px" />\n<p><strong>睡眠阶段图</strong>:</p>\n<img data-src="images/feature-v6/11-stage.png" width="600px" />\n<p><strong>分段环形图</strong>:</p>\n<img data-src="images/feature-v6/11-segmentedDoughnut.png" width="600px" />\n<p><strong>范围柱状图</strong>:</p>\n<img data-src="images/feature-v6/11-barRange.png" width="600px" />\n<p><strong>范围折线图</strong>:</p>\n<img data-src="images/feature-v6/11-lineRange.png" width="600px" />\n<p>发挥你的创意,快来和我们一起创造更多自定义图表吧!</p>\n<h3 id="12.-%E5%9D%90%E6%A0%87%E8%BD%B4%E6%A0%87%E7%AD%BE%E4%BC%98%E5%8C%96" tabindex="-1">12. 坐标轴标签优化</h3>\n<p>在之前的版本中,直角坐标系的 <code>axisLabel</code> 和 <code>axisName</code> 在数据比较长时容易超出屏幕,以及重叠。数据变化时使用者并不总能准确预估空间来完全避免它们。在这个版本中我们优化了防止超出屏幕以及防止重叠的策略,并成为默认。</p>\n<h2 id="%E5%8D%87%E7%BA%A7%E6%96%B9%E6%B3%95" tabindex="-1">升级方法</h2>\n<p>请参见完整的<a href="https://echarts.apache.org/changelog.html#v6-0-0">版本更新内容</a>和<a href="zh/basics/release-note/v6-upgrade-guide">升级指南</a>。</p>\n',postPath:"zh/basics/release-note/v6-feature",title:"ECharts 6 特性介绍 - 版本特性 - 入门篇"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:r},{title:"入门篇",dir:a,children:[{title:"获取 ECharts",dir:n},{title:"在项目中引入 ECharts",dir:d},{title:"资源列表",dir:l,draft:t},{title:"寻求帮助",dir:s},{title:"版本特性",dir:o,children:[{title:"ECharts 6 特性介绍",dir:h},{title:"v5 升级 v6 指南",dir:p},{title:"5.0",dir:c},{title:"v4 升级 v5 指南",dir:g},{title:5.2,dir:E},{title:5.3,dir:m},{title:5.4,dir:B},{title:5.5,dir:u},{title:5.6,dir:A}]}]},{title:"概念篇",dir:f,children:[{title:"图表容器及大小",dir:b},{title:"配置项",dir:v,draft:t},{title:"系列",dir:x,draft:t},{title:"样式",dir:C},{title:"数据集",dir:w},{title:"数据转换",dir:G},{title:"坐标系",dir:D,draft:t},{title:"坐标轴",dir:R},{title:"视觉映射",dir:e},{title:"图例",dir:y},{title:"事件与行为",dir:S}]},{title:"应用篇",dir:k,children:[{title:"常用图表类型",dir:V,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:Z},{title:"堆叠柱状图",dir:P},{title:"动态排序柱状图",dir:I},{title:"极坐标系柱状图",dir:F,draft:t},{title:"阶梯瀑布图",dir:N},{title:"视觉映射的柱状图",dir:e,draft:t}]},{title:"折线图",dir:j,children:[{title:"基础折线图",dir:L},{title:"堆叠折线图",dir:T},{title:"区域面积图",dir:X},{title:"平滑曲线图",dir:W},{title:"阶梯线图",dir:Y}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:z},{title:"圆环图",dir:J},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:M,children:[{title:"基础散点图",dir:O}]}]},{title:"常用组件",dir:K,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:_}]}]},{title:"移动端优化",dir:i,draft:t},{title:"跨平台方案",dir:U,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:H},{title:"数据下钻",dir:Q,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:$}]},{title:"动画",dir:q,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:it,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:et,draft:t},{title:"智能指针吸附",dir:rt}]}]},{title:"最佳实践",dir:at,children:[{title:"移动端优化",dir:i,draft:t},{title:nt,dir:dt},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:lt}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:st}]}],en:[{title:"Get Started",dir:r},{title:"Basics",dir:a,children:[{title:"Download ECharts",dir:n},{title:"Import ECharts",dir:d},{title:"Resources",dir:l,draft:t},{title:"Get Help",dir:s},{title:"What's New",dir:o,children:[{title:"ECharts 6 Features",dir:h},{title:"Migration from v5 to v6",dir:p},{title:"5.0",dir:c},{title:"Migration from v4 to v5",dir:g},{title:5.2,dir:E},{title:5.3,dir:m},{title:5.4,dir:B},{title:5.5,dir:u},{title:5.6,dir:A}]}]},{title:"Concepts",dir:f,children:[{title:"Chart Container",dir:b},{title:"Chart Option",dir:v,draft:t},{title:"Series",dir:x,draft:t},{title:"Style",dir:C},{title:"Dataset",dir:w},{title:"Data Transform",dir:G},{title:"Coordinate",dir:D,draft:t},{title:"Axis",dir:R},{title:"Visual Mapping",dir:e},{title:"Legend",dir:y},{title:"Event and Action",dir:S}]},{title:"How To Guides",dir:k,children:[{title:"Common Charts",dir:V,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:Z},{title:"Stacked Bar",dir:P},{title:"Bar Racing",dir:I},{title:"Bar Polar",dir:F,draft:t},{title:"Waterfall",dir:N}]},{title:"Line",dir:j,children:[{title:"Basic Line",dir:L},{title:"Stacked Line",dir:T},{title:"Area Chart",dir:X},{title:"Smoothed Line",dir:W},{title:"Step Line",dir:Y}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:z},{title:"Ring Style",dir:J},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:M,children:[{title:"Basic Scatter",dir:O}]}]},{title:"Common Components",dir:K,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:_}]}]},{title:"Mobile",dir:i,draft:t},{title:"Cross Platform",dir:U,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:H},{title:"Drilldown",dir:Q,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:$}]},{title:"Animation",dir:q,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:it,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:et,draft:t},{title:"Intelligent Pointer Snapping",dir:rt}]}]},{title:"Best Practices",dir:at,children:[{title:"Mobile Optimization",dir:i,draft:t},{title:nt,dir:dt},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:lt}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:st}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/zh/basics/release-note/v6-feature",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/zh/basics/release-note/v6-upgrade-guide/index.html b/docs/zh/basics/release-note/v6-upgrade-guide/index.html
new file mode 100644
index 0000000..f9d15bf
--- /dev/null
+++ b/docs/zh/basics/release-note/v6-upgrade-guide/index.html
@@ -0,0 +1,42 @@
+<!doctype html>
+<html data-n-head-ssr lang="zh-CN" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh-CN%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>v5 升级 v6 指南 - 版本特性 - 入门篇 - 使用手册 - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="zh"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/zh/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/zh/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/zh/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/zh/index.html" class="navbar-brand"><img src="https://echarts.apache.org/zh/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/zh/index.html">首页</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">文档<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/feature.html">特性</a></li><li><a href="https://echarts.apache.org/handbook/zh/get-started/">使用手册</a></li><li><a href="https://echarts.apache.org/zh/api.html">API</a></li><li><a href="https://echarts.apache.org/zh/option.html">配置项手册</a></li><li><a href="https://echarts.apache.org/zh/changelog.html">版本记录</a></li><li><a href="https://echarts.apache.org/zh/faq.html">常见问题</a></li><li><a href="https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide">v6 升级指南</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">下载<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/download.html">下载</a></li><li><a href="https://echarts.apache.org/zh/download-theme.html">主题下载</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">自定义系列下载<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/download-extension.html">扩展下载</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/zh/index.html">示例</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">资源<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/spreadsheet.html">表格工具</a></li><li><a href="https://echarts.apache.org/zh/theme-builder.html">主题构建工具</a></li><li><a href="https://echarts.apache.org/zh/cheat-sheet.html">术语速查手册</a></li><li><a href="https://echarts.apache.org/zh/resources.html">更多资源</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">社区<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/events.html">活动</a></li><li><a href="https://echarts.apache.org/zh/committers.html">贡献者列表</a></li><li><a href="https://echarts.apache.org/zh/maillist.html">邮件列表</a></li><li><a href="https://echarts.apache.org/zh/contributing.html">如何贡献</a></li><li><a href="https://echarts.apache.org/zh/dependencies.html">依赖项</a></li><li><a href="https://echarts.apache.org/zh/coding-standard.html">代码规范</a></li><li><a href="https://github.com/apache/echarts" target="_blank">源码(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/security.html">安全</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">版权<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">活动<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">捐赠<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">鸣谢<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("en")'>EN</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/zh/get-started" class="nav-link"><span class="title">快速上手</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">入门篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/basics/download" class="nav-link"><span class="title">获取 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/import" class="nav-link"><span class="title">在项目中引入 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/basics/help" class="nav-link"><span class="title">寻求帮助</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">版本特性</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 特性介绍</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-upgrade-guide" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">v5 升级 v6 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">v4 升级 v5 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">概念篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/concepts/chart-size" class="nav-link"><span class="title">图表容器及大小</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/style" class="nav-link"><span class="title">样式</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/dataset" class="nav-link"><span class="title">数据集</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/data-transform" class="nav-link"><span class="title">数据转换</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/axis" class="nav-link"><span class="title">坐标轴</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/visual-map" class="nav-link"><span class="title">视觉映射</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/legend" class="nav-link"><span class="title">图例</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/event" class="nav-link"><span class="title">事件与行为</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">应用篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">常用图表类型</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">柱状图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">基础柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">堆叠柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">动态排序柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">阶梯瀑布图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">折线图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">基础折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">堆叠折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/area-line" class="nav-link"><span class="title">区域面积图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">平滑曲线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/step-line" class="nav-link"><span class="title">阶梯线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">饼图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">基础饼图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">圆环图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/rose" class="nav-link"><span class="title">南丁格尔图(玫瑰图)</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">散点图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">基础散点图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">常用组件</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">地理坐标系(Geo)</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG 底图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">跨平台方案</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/server" class="nav-link"><span class="title">服务端渲染</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/wechat-app" class="nav-link"><span class="title">微信小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/baidu-app" class="nav-link"><span class="title">百度智能小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">数据处理</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/data/dynamic-data" class="nav-link"><span class="title">动态的异步数据</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">标签</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/label/rich-text" class="nav-link"><span class="title">富文本标签</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">动画</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/animation/transition" class="nav-link"><span class="title">数据过渡动画</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">交互</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/drag" class="nav-link"><span class="title">拖拽的实现</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">智能指针吸附</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">最佳实践</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/aria" class="nav-link"><span class="title">无障碍访问</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/security" class="nav-link"><span class="title">安全指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">编辑本文档</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/meta/edit-guide" class="nav-link"><span class="title">文档编辑指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="apache-echarts-6-%E5%8D%87%E7%BA%A7%E6%8C%87%E5%8D%97" tabindex="-1">Apache ECharts 6 升级指南</h1> <p>本指南面向那些希望将 echarts 5.x(以下简称 <code>v5</code>)升级到 echarts 6.x(以下简称 <code>v6</code>)的用户。大家可以在 <a href="zh/basics/release-note/v6-feature">ECharts 6 新特性</a> 中了解这次<code>v6</code>带来了哪些值得升级的新特性。在绝大多数情况下,开发者用不着为这个升级做什么额外的事,因为 echarts 一直尽可能地保持 API 的稳定和向后兼容。但是,<code>v6</code> 仍然带来了一些非兼容改动,需要特别关注。此外,在一些情况下,<code>v6</code> 提供了更好的 API 用来取代之前的 API,这些被取代的 API 将不再被推荐使用(当然,我们尽量兼容了这些改动)。我们会在这篇文档里尽量详尽得解释这些改动。</p> <h2 id="%E5%8D%87%E7%BA%A7%E6%96%B9%E5%BC%8F" tabindex="-1">升级方式</h2> <p>在<a href="https://echarts.apache.org/download.html">官网下载页</a>可以下载最新版的源码和编译产物。如果使用 npm 安装,升级方式为:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-text line-numbers"><code>npm install echarts@6</code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="%E9%9D%9E%E5%85%BC%E5%AE%B9%E6%80%A7%E6%94%B9%E5%8F%98" tabindex="-1">非兼容性改变</h2> <h3 id="%E9%BB%98%E8%AE%A4%E4%B8%BB%E9%A2%98%EF%BC%88theme%EF%BC%89" tabindex="-1">默认主题(theme)</h3> <p>首先是默认主题的改动,<code>v6</code> 在配色等主题设计上做了很多的优化来达到更好的视觉效果。如果大家依旧想保留旧版本的颜色,可以使用 <a href="https://github.com/apache/echarts/blob/master/theme/v5.js">echarts/theme/v5.js</a> 主题文件,并通过以下方式初始化图表:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">import</span> <span class="token string">'echarts/theme/v5'</span><span class="token punctuation">;</span>
+<span class="token keyword">const</span> chart <span class="token operator">=</span> echarts<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span>document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span><span class="token string">'container'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token string">'v5'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>需要注意的事,<code>v6</code> 的新样式不仅改变了主题色,也优化调整了部分组件的默认位置和尺寸(例如,默认图例 legend 的位置现在改为在画布底部)。使用 <code>echarts/theme/v5.js</code> 后可以恢复到之前的组件默认位置和尺寸。</p> <p>如果不在意其他的变动,但是想只把默认图表配色恢复到 v5 的默认配色,可以创建一个只定义了 v5 默认配色的主题:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">const</span> colorPaletteV5 <span class="token operator">=</span> <span class="token punctuation">[</span>
+    <span class="token string">'#5470c6'</span><span class="token punctuation">,</span>
+    <span class="token string">'#91cc75'</span><span class="token punctuation">,</span>
+    <span class="token string">'#fac858'</span><span class="token punctuation">,</span>
+    <span class="token string">'#ee6666'</span><span class="token punctuation">,</span>
+    <span class="token string">'#73c0de'</span><span class="token punctuation">,</span>
+    <span class="token string">'#3ba272'</span><span class="token punctuation">,</span>
+    <span class="token string">'#fc8452'</span><span class="token punctuation">,</span>
+    <span class="token string">'#9a60b4'</span><span class="token punctuation">,</span>
+    <span class="token string">'#ea7ccc'</span>
+<span class="token punctuation">]</span><span class="token punctuation">;</span>
+echarts<span class="token punctuation">.</span><span class="token function">registerTheme</span><span class="token punctuation">(</span><span class="token string">'myTheme'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token literal-property property">color</span><span class="token operator">:</span> colorPaletteV5 <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token keyword">const</span> chart <span class="token operator">=</span> echarts<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span>document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span><span class="token string">'container'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token string">'myTheme'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>另外,v5 版本中的 <code>echarts/src/theme/light.ts</code> 已迁移至 <code>echarts/theme/rainbow.js</code>。</p> <h3 id="%E6%A0%87%E7%AD%BE%E4%BD%8D%E7%BD%AE" tabindex="-1">标签位置</h3> <p>在直角坐标系中 (<code>grid</code> 组件),如果之前坐标轴名称 (<code>axisName</code>) 或标签 (<code>axisLabel</code>) 溢出画布或发生重叠,升级之后的坐标轴的位置可能会相对之前而言略微偏移,因为默认启用了防止溢出和防止坐标轴名称与标签重叠的机制。在大多数情况下,这些变化肉眼难以察觉。但如果出现不合理的变化,可以通过设置 <a href="https://echarts.apache.org/option.html#grid.outerBoundsMode">grid.outerBoundsMode: 'none'</a> 选项关闭防溢出机制,或设置 <a href="https://echarts.apache.org/option.html#xAxis.nameMoveOverlap">xAxis/yAxis.nameMoveOverlap: false</a> 选项关闭防重叠机制。</p> <h3 id="%E5%AF%8C%E6%96%87%E6%9C%AC" tabindex="-1">富文本</h3> <p>v6 中 <a href="https://echarts.apache.org/option.html#series-scatter.label.rich">富文本标签 (label.rich / textStyle.rich)</a> 的这些样式 <code>fontStyle</code>、<code>fontWeight</code>、<code>fontSize</code>、<code>fontFamily</code>、<code>textShadowColor</code>、<code>textShadowBlur</code>、<code>textShadowOffsetX</code>、<code>textShadowOffsetY</code> 会改为继承 <a href="https://echarts.apache.org/option.html#series-scatter.label">普通标签 (label / textStyle)</a> 中的同名样式。如需恢复旧行为,可以在 ECharts option 的根级别或 label / textStyle option 中设置 <code>richInheritPlainLabel: false</code>。</p> <p>例如:
+</p><div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">richInheritPlainLabel</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span> <span class="token comment">// 一般设此即可。</span>
+    <span class="token literal-property property">xxx1</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token comment">// 也可以在此处设置,只控制此 label 。</span>
+        <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+            <span class="token literal-property property">richInheritPlainLabel</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">rich</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token comment">/* ... */</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">xxx2</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">textStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+            <span class="token literal-property property">richInheritPlainLabel</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">rich</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token comment">/* ... */</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+<span class="token punctuation">}</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div><p></p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">本文贡献者</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/zh/basics/release-note/v6-upgrade-guide.md" title="编辑本文" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">在 GitHub 上编辑本页</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/100pah" target="_blank" class="post-contributor has-avatar"><img alt="100pah" src="https://echarts.apache.org/en/images/people/宿爽.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>100pah</span></a><a href="https://github.com/Ovilia" target="_blank" class="post-contributor has-avatar"><img alt="Ovilia" src="https://echarts.apache.org/en/images/people/羡辙.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>Ovilia</span></a><a href="https://github.com/ZXYT" target="_blank" class="post-contributor"><!----> <span>ZXYT</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,e,i,r,d,l,a,o,c,h,n,s,g,p,C,A,m,b,I,f,v,u,B,E,x,Y,S,y,W,w,L,P,k,G,R,D,V,z,N,j,J,Z,K,H,M,O,U,F,Q,X,T,_,q,$,tt,et,it,rt,dt,lt,at,ot,ct){return{layout:"default",data:[{html:'<h1 id="apache-echarts-6-%E5%8D%87%E7%BA%A7%E6%8C%87%E5%8D%97" tabindex="-1">Apache ECharts 6 升级指南</h1>\n<p>本指南面向那些希望将 echarts 5.x(以下简称 <code>v5</code>)升级到 echarts 6.x(以下简称 <code>v6</code>)的用户。大家可以在 <a href="zh/basics/release-note/v6-feature">ECharts 6 新特性</a> 中了解这次<code>v6</code>带来了哪些值得升级的新特性。在绝大多数情况下,开发者用不着为这个升级做什么额外的事,因为 echarts 一直尽可能地保持 API 的稳定和向后兼容。但是,<code>v6</code> 仍然带来了一些非兼容改动,需要特别关注。此外,在一些情况下,<code>v6</code> 提供了更好的 API 用来取代之前的 API,这些被取代的 API 将不再被推荐使用(当然,我们尽量兼容了这些改动)。我们会在这篇文档里尽量详尽得解释这些改动。</p>\n<h2 id="%E5%8D%87%E7%BA%A7%E6%96%B9%E5%BC%8F" tabindex="-1">升级方式</h2>\n<p>在<a href="https://echarts.apache.org/download.html">官网下载页</a>可以下载最新版的源码和编译产物。如果使用 npm 安装,升级方式为:</p>\n<md-code-block lang="sh" code="\'bnBtIGluc3RhbGwgZWNoYXJ0c0A2\'" line-highlights="\'\'" />\n<h2 id="%E9%9D%9E%E5%85%BC%E5%AE%B9%E6%80%A7%E6%94%B9%E5%8F%98" tabindex="-1">非兼容性改变</h2>\n<h3 id="%E9%BB%98%E8%AE%A4%E4%B8%BB%E9%A2%98%EF%BC%88theme%EF%BC%89" tabindex="-1">默认主题(theme)</h3>\n<p>首先是默认主题的改动,<code>v6</code> 在配色等主题设计上做了很多的优化来达到更好的视觉效果。如果大家依旧想保留旧版本的颜色,可以使用 <a href="https://github.com/apache/echarts/blob/master/theme/v5.js">echarts/theme/v5.js</a> 主题文件,并通过以下方式初始化图表:</p>\n<md-code-block lang="js" code="\'aW1wb3J0ICdlY2hhcnRzL3RoZW1lL3Y1JzsKY29uc3QgY2hhcnQgPSBlY2hhcnRzLmluaXQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpLCAndjUnKTs\'" line-highlights="\'\'" />\n<p>需要注意的事,<code>v6</code> 的新样式不仅改变了主题色,也优化调整了部分组件的默认位置和尺寸(例如,默认图例 legend 的位置现在改为在画布底部)。使用 <code>echarts/theme/v5.js</code> 后可以恢复到之前的组件默认位置和尺寸。</p>\n<p>如果不在意其他的变动,但是想只把默认图表配色恢复到 v5 的默认配色,可以创建一个只定义了 v5 默认配色的主题:</p>\n<md-code-block lang="js" code="\'Y29uc3QgY29sb3JQYWxldHRlVjUgPSBbCiAgICAnIzU0NzBjNicsCiAgICAnIzkxY2M3NScsCiAgICAnI2ZhYzg1OCcsCiAgICAnI2VlNjY2NicsCiAgICAnIzczYzBkZScsCiAgICAnIzNiYTI3MicsCiAgICAnI2ZjODQ1MicsCiAgICAnIzlhNjBiNCcsCiAgICAnI2VhN2NjYycKXTsKZWNoYXJ0cy5yZWdpc3RlclRoZW1lKCdteVRoZW1lJywgeyBjb2xvcjogY29sb3JQYWxldHRlVjUgfSk7CmNvbnN0IGNoYXJ0ID0gZWNoYXJ0cy5pbml0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKSwgJ215VGhlbWUnKTs\'" line-highlights="\'\'" />\n<p>另外,v5 版本中的 <code>echarts/src/theme/light.ts</code> 已迁移至 <code>echarts/theme/rainbow.js</code>。</p>\n<h3 id="%E6%A0%87%E7%AD%BE%E4%BD%8D%E7%BD%AE" tabindex="-1">标签位置</h3>\n<p>在直角坐标系中 (<code>grid</code> 组件),如果之前坐标轴名称 (<code>axisName</code>) 或标签 (<code>axisLabel</code>) 溢出画布或发生重叠,升级之后的坐标轴的位置可能会相对之前而言略微偏移,因为默认启用了防止溢出和防止坐标轴名称与标签重叠的机制。在大多数情况下,这些变化肉眼难以察觉。但如果出现不合理的变化,可以通过设置 <a href="https://echarts.apache.org/option.html#grid.outerBoundsMode">grid.outerBoundsMode: \'none\'</a> 选项关闭防溢出机制,或设置 <a href="https://echarts.apache.org/option.html#xAxis.nameMoveOverlap">xAxis/yAxis.nameMoveOverlap: false</a> 选项关闭防重叠机制。</p>\n<h3 id="%E5%AF%8C%E6%96%87%E6%9C%AC" tabindex="-1">富文本</h3>\n<p>v6 中 <a href="https://echarts.apache.org/option.html#series-scatter.label.rich">富文本标签 (label.rich / textStyle.rich)</a> 的这些样式 <code>fontStyle</code>、<code>fontWeight</code>、<code>fontSize</code>、<code>fontFamily</code>、<code>textShadowColor</code>、<code>textShadowBlur</code>、<code>textShadowOffsetX</code>、<code>textShadowOffsetY</code> 会改为继承 <a href="https://echarts.apache.org/option.html#series-scatter.label">普通标签 (label / textStyle)</a> 中的同名样式。如需恢复旧行为,可以在 ECharts option 的根级别或 label / textStyle option 中设置 <code>richInheritPlainLabel: false</code>。</p>\n<p>例如:\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogICAgcmljaEluaGVyaXRQbGFpbkxhYmVsOiBmYWxzZSwgLy8g5LiA6Iis6K6-5q2k5Y2z5Y-v44CCCiAgICB4eHgxOiB7CiAgICAgICAgLy8g5Lmf5Y-v5Lul5Zyo5q2k5aSE6K6-572u77yM5Y-q5o6n5Yi25q2kIGxhYmVsIOOAggogICAgICAgIGxhYmVsOiB7CiAgICAgICAgICAgIHJpY2hJbmhlcml0UGxhaW5MYWJlbDogZmFsc2UsCiAgICAgICAgICAgIHJpY2g6IHsvKiAuLi4gKi99LAogICAgICAgIH0KICAgIH0sCiAgICB4eHgyOiB7CiAgICAgICAgdGV4dFN0eWxlOiB7CiAgICAgICAgICAgIHJpY2hJbmhlcml0UGxhaW5MYWJlbDogZmFsc2UsCiAgICAgICAgICAgIHJpY2g6IHsvKiAuLi4gKi99LAogICAgICAgIH0KICAgIH0KfQ\'" line-highlights="\'\'" /></p>\n',postPath:"zh/basics/release-note/v6-upgrade-guide",title:"v5 升级 v6 指南 - 版本特性 - 入门篇"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:r},{title:"入门篇",dir:d,children:[{title:"获取 ECharts",dir:l},{title:"在项目中引入 ECharts",dir:a},{title:"资源列表",dir:o,draft:t},{title:"寻求帮助",dir:c},{title:"版本特性",dir:h,children:[{title:"ECharts 6 特性介绍",dir:n},{title:"v5 升级 v6 指南",dir:s},{title:"5.0",dir:g},{title:"v4 升级 v5 指南",dir:p},{title:5.2,dir:C},{title:5.3,dir:A},{title:5.4,dir:m},{title:5.5,dir:b},{title:5.6,dir:I}]}]},{title:"概念篇",dir:f,children:[{title:"图表容器及大小",dir:v},{title:"配置项",dir:u,draft:t},{title:"系列",dir:B,draft:t},{title:"样式",dir:E},{title:"数据集",dir:x},{title:"数据转换",dir:Y},{title:"坐标系",dir:S,draft:t},{title:"坐标轴",dir:y},{title:"视觉映射",dir:i},{title:"图例",dir:W},{title:"事件与行为",dir:w}]},{title:"应用篇",dir:L,children:[{title:"常用图表类型",dir:P,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:k},{title:"堆叠柱状图",dir:G},{title:"动态排序柱状图",dir:R},{title:"极坐标系柱状图",dir:D,draft:t},{title:"阶梯瀑布图",dir:V},{title:"视觉映射的柱状图",dir:i,draft:t}]},{title:"折线图",dir:z,children:[{title:"基础折线图",dir:N},{title:"堆叠折线图",dir:j},{title:"区域面积图",dir:J},{title:"平滑曲线图",dir:Z},{title:"阶梯线图",dir:K}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:H},{title:"圆环图",dir:M},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:O,children:[{title:"基础散点图",dir:U}]}]},{title:"常用组件",dir:F,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:Q}]}]},{title:"移动端优化",dir:e,draft:t},{title:"跨平台方案",dir:X,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:T},{title:"数据下钻",dir:_,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:q}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:et,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:it,draft:t},{title:"智能指针吸附",dir:rt}]}]},{title:"最佳实践",dir:dt,children:[{title:"移动端优化",dir:e,draft:t},{title:lt,dir:at},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:ot}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:ct}]}],en:[{title:"Get Started",dir:r},{title:"Basics",dir:d,children:[{title:"Download ECharts",dir:l},{title:"Import ECharts",dir:a},{title:"Resources",dir:o,draft:t},{title:"Get Help",dir:c},{title:"What's New",dir:h,children:[{title:"ECharts 6 Features",dir:n},{title:"Migration from v5 to v6",dir:s},{title:"5.0",dir:g},{title:"Migration from v4 to v5",dir:p},{title:5.2,dir:C},{title:5.3,dir:A},{title:5.4,dir:m},{title:5.5,dir:b},{title:5.6,dir:I}]}]},{title:"Concepts",dir:f,children:[{title:"Chart Container",dir:v},{title:"Chart Option",dir:u,draft:t},{title:"Series",dir:B,draft:t},{title:"Style",dir:E},{title:"Dataset",dir:x},{title:"Data Transform",dir:Y},{title:"Coordinate",dir:S,draft:t},{title:"Axis",dir:y},{title:"Visual Mapping",dir:i},{title:"Legend",dir:W},{title:"Event and Action",dir:w}]},{title:"How To Guides",dir:L,children:[{title:"Common Charts",dir:P,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:k},{title:"Stacked Bar",dir:G},{title:"Bar Racing",dir:R},{title:"Bar Polar",dir:D,draft:t},{title:"Waterfall",dir:V}]},{title:"Line",dir:z,children:[{title:"Basic Line",dir:N},{title:"Stacked Line",dir:j},{title:"Area Chart",dir:J},{title:"Smoothed Line",dir:Z},{title:"Step Line",dir:K}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:H},{title:"Ring Style",dir:M},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:O,children:[{title:"Basic Scatter",dir:U}]}]},{title:"Common Components",dir:F,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:Q}]}]},{title:"Mobile",dir:e,draft:t},{title:"Cross Platform",dir:X,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:T},{title:"Drilldown",dir:_,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:q}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:et,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:it,draft:t},{title:"Intelligent Pointer Snapping",dir:rt}]}]},{title:"Best Practices",dir:dt,children:[{title:"Mobile Optimization",dir:e,draft:t},{title:lt,dir:at},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:ot}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:ct}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/zh/basics/release-note/v6-upgrade-guide",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/zh/best-practices/aria/index.html b/docs/zh/best-practices/aria/index.html
new file mode 100644
index 0000000..0189ee0
--- /dev/null
+++ b/docs/zh/best-practices/aria/index.html
@@ -0,0 +1,36 @@
+<!doctype html>
+<html data-n-head-ssr lang="zh-CN" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh-CN%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>无障碍访问 - 最佳实践 - 使用手册 - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="zh"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/zh/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/zh/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/zh/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/zh/index.html" class="navbar-brand"><img src="https://echarts.apache.org/zh/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/zh/index.html">首页</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">文档<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/feature.html">特性</a></li><li><a href="https://echarts.apache.org/handbook/zh/get-started/">使用手册</a></li><li><a href="https://echarts.apache.org/zh/api.html">API</a></li><li><a href="https://echarts.apache.org/zh/option.html">配置项手册</a></li><li><a href="https://echarts.apache.org/zh/changelog.html">版本记录</a></li><li><a href="https://echarts.apache.org/zh/faq.html">常见问题</a></li><li><a href="https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide">v6 升级指南</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">下载<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/download.html">下载</a></li><li><a href="https://echarts.apache.org/zh/download-theme.html">主题下载</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">自定义系列下载<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/download-extension.html">扩展下载</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/zh/index.html">示例</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">资源<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/spreadsheet.html">表格工具</a></li><li><a href="https://echarts.apache.org/zh/theme-builder.html">主题构建工具</a></li><li><a href="https://echarts.apache.org/zh/cheat-sheet.html">术语速查手册</a></li><li><a href="https://echarts.apache.org/zh/resources.html">更多资源</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">社区<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/events.html">活动</a></li><li><a href="https://echarts.apache.org/zh/committers.html">贡献者列表</a></li><li><a href="https://echarts.apache.org/zh/maillist.html">邮件列表</a></li><li><a href="https://echarts.apache.org/zh/contributing.html">如何贡献</a></li><li><a href="https://echarts.apache.org/zh/dependencies.html">依赖项</a></li><li><a href="https://echarts.apache.org/zh/coding-standard.html">代码规范</a></li><li><a href="https://github.com/apache/echarts" target="_blank">源码(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/security.html">安全</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">版权<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">活动<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">捐赠<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">鸣谢<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("en")'>EN</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/zh/get-started" class="nav-link"><span class="title">快速上手</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">入门篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/basics/download" class="nav-link"><span class="title">获取 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/import" class="nav-link"><span class="title">在项目中引入 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/basics/help" class="nav-link"><span class="title">寻求帮助</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">版本特性</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 特性介绍</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">v5 升级 v6 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">v4 升级 v5 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">概念篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/concepts/chart-size" class="nav-link"><span class="title">图表容器及大小</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/style" class="nav-link"><span class="title">样式</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/dataset" class="nav-link"><span class="title">数据集</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/data-transform" class="nav-link"><span class="title">数据转换</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/axis" class="nav-link"><span class="title">坐标轴</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/visual-map" class="nav-link"><span class="title">视觉映射</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/legend" class="nav-link"><span class="title">图例</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/event" class="nav-link"><span class="title">事件与行为</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">应用篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">常用图表类型</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">柱状图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">基础柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">堆叠柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">动态排序柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">阶梯瀑布图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">折线图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">基础折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">堆叠折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/area-line" class="nav-link"><span class="title">区域面积图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">平滑曲线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/step-line" class="nav-link"><span class="title">阶梯线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">饼图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">基础饼图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">圆环图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/rose" class="nav-link"><span class="title">南丁格尔图(玫瑰图)</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">散点图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">基础散点图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">常用组件</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">地理坐标系(Geo)</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG 底图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">跨平台方案</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/server" class="nav-link"><span class="title">服务端渲染</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/wechat-app" class="nav-link"><span class="title">微信小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/baidu-app" class="nav-link"><span class="title">百度智能小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">数据处理</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/data/dynamic-data" class="nav-link"><span class="title">动态的异步数据</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">标签</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/label/rich-text" class="nav-link"><span class="title">富文本标签</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">动画</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/animation/transition" class="nav-link"><span class="title">数据过渡动画</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">交互</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/drag" class="nav-link"><span class="title">拖拽的实现</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">智能指针吸附</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">最佳实践</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/aria" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">无障碍访问</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/security" class="nav-link"><span class="title">安全指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">编辑本文档</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/meta/edit-guide" class="nav-link"><span class="title">文档编辑指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="%E6%97%A0%E9%9A%9C%E7%A2%8D%E8%AE%BF%E9%97%AE" tabindex="-1">无障碍访问</h1> <p>W3C 制定了无障碍富互联网应用规范集(<a href="https://www.w3.org/WAI/intro/aria">WAI-ARIA</a>,the Accessible Rich Internet Applications Suite),致力于使得网页内容和网页应用能够被更多残障人士访问。</p> <p>Apache ECharts 4 遵从这一规范,支持自动根据图表配置项智能生成描述,使得盲人可以在朗读设备的帮助下了解图表内容,让图表可以被更多人群访问。Apache ECharts 5 新增了贴花功能,让图表数据除了可以用颜色区分之外,还能用贴花图案区分,提供了更好的无障碍访问体验。</p> <p>无障碍访问功能默认关闭,需要通过将 <a href="https://echarts.apache.org/option.html#aria.show">aria.show</a> 设置为 <code>true</code> 开启。</p> <h2 id="%E5%AF%BC%E5%85%A5-ariacomponent" tabindex="-1">导入 AriaComponent</h2> <p>从 ECharts 5 开始, <code>aria</code> 组件不再默认导入。在使用无障碍访问特性之前,你需要先导入和注册 <code>AriaComponent</code> 组件:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">import</span> <span class="token punctuation">{</span> AriaComponent <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'echarts/components'</span><span class="token punctuation">;</span>
+echarts<span class="token punctuation">.</span><span class="token function">use</span><span class="token punctuation">(</span>AriaComponent<span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>或者如果你在使用 CommonJS 模块:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token function">require</span><span class="token punctuation">(</span><span class="token string">'echarts/lib/component/aria'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>如果未导入 <code>AriaComponent</code> 组件,设置 <code>aria.show: true</code> 不会生效。</p> <h2 id="%E5%9B%BE%E8%A1%A8%E6%8F%8F%E8%BF%B0" tabindex="-1">图表描述</h2> <p>在导入 <code>AriaComponent</code> 组件并开启 <a href="https://echarts.apache.org/option.html#aria.show">aria.show</a> 后,会根据图表、数据、标题等情况,自动智能生成关于图表的描述,用户也可以通过配置项修改描述。</p> <p>对于配置项:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">aria</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">true</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">title</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'某站点用户访问来源'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token string">'center'</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'访问来源'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'pie'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">{</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">335</span><span class="token punctuation">,</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'直接访问'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">310</span><span class="token punctuation">,</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'邮件营销'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">234</span><span class="token punctuation">,</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'联盟广告'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">135</span><span class="token punctuation">,</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'视频广告'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">1548</span><span class="token punctuation">,</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'搜索引擎'</span> <span class="token punctuation">}</span>
+      <span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p><iframe width="100%" height="350" src=""></iframe></p> <p>生成的图表 DOM 上,会有一个 <code>aria-label</code> 属性,在朗读设备的帮助下,盲人能够了解图表的内容。其值为:</p> <pre><code>这是一个关于“某站点用户访问来源”的图表。图表类型是饼图,表示访问来源。其数据是——直接访问的数据是335,邮件营销的数据是310,联盟广告的数据是234,视频广告的数据是135,搜索引擎的数据是1548。
+</code></pre> <p>默认语言会根据语言包(默认中文)选择,也可以使用配置项自定义模板。</p> <h3 id="%E6%95%B4%E4%BD%93%E4%BF%AE%E6%94%B9%E6%8F%8F%E8%BF%B0" tabindex="-1">整体修改描述</h3> <p>对于有些图表,默认生成的数据点的描述并不足以表现整体的信息。比如下图的散点图,默认生成的描述可以包含数据点的坐标值,但是知道几百几千个点的坐标并不能帮助我们有效地理解图表表达的信息。</p> <p>这时候,用户可以通过 <a href="https://echarts.apache.org/option.html#aria.description">aria.description</a> 配置项指定图表的整体描述。</p> <h3 id="%E5%AE%9A%E5%88%B6%E6%A8%A1%E6%9D%BF%E6%8F%8F%E8%BF%B0" tabindex="-1">定制模板描述</h3> <p>除了整体性修改描述之外,我们还提供了生成描述的模板,可以方便地进行细粒度的修改。</p> <p>生成描述的基本流程为,如果 <a href="https://echarts.apache.org/option.html#aria.show">aria.show</a> 设置为 <code>true</code>,则生成无障碍访问描述,否则不生成。如果定义了 <a href="https://echarts.apache.org/option.html#aria.description">aria.description</a>,则将其作为图表的完整描述,否则根据模板拼接生成描述。我们提供了默认的生成描述的算法,仅当生成的描述不太合适时,才需要修改这些模板,甚至使用 <code>aria.description</code> 完全覆盖。</p> <p>使用模板拼接时,先根据是否存在标题 <a href="https://echarts.apache.org/option.html#title.text">title.text</a> 决定使用 <a href="https://echarts.apache.org/option.html#aria.general.withTitle">aria.general.withTitle</a> 还是 <a href="https://echarts.apache.org/option.html#aria.general.withoutTitle">aria.general.withoutTitle</a> 作为整体性描述。其中,<code>aria.general.withTitle</code> 配置项包括模板变量 <code>'{title}'</code>,将会被替换成图表标题。也就是说,如果 <code>aria.general.withTitle</code> 被设置为 <code>'图表的标题是:{title}。'</code>,则如果包含标题 <code>'价格分布图'</code>,这部分的描述为 <code>'图表的标题是:价格分布图。'</code>。</p> <p>拼接完标题之后,会依次拼接系列的描述(<a href="https://echarts.apache.org/option.html#aria.series">aria.series</a>),和每个系列的数据的描述(<a href="https://echarts.apache.org/option.html#aria.data">aria.data</a>)。同样,每个模板都有可能包括模板变量,用以替换实际的值。</p> <p>完整的描述生成流程请参见 <a href="https://echarts.apache.org/option.html#aria.label">ARIA 文档</a>。</p> <h2 id="%E8%B4%B4%E8%8A%B1%E5%9B%BE%E6%A1%88" tabindex="-1">贴花图案</h2> <p>除此之外,Apache ECharts 5 新增支持贴花纹理,作为颜色的辅助表达,进一步用以区分数据。在 <code>aria.enabled</code> 为 <code>true</code> 的前提下,将 <code>aria.decal.show</code> 设为 <code>true</code> 即可采用默认的贴花样式。</p> <p><iframe width="100%" height="350" src=""></iframe></p> <p>如果需要自定义贴花图案,可以使用 <a href="https://echarts.apache.org/option.html#aria.decal.decals">aria.decal.decals</a> 配置出灵活多变的图案。</p> <p>更具体的信息请参见 <a href="https://echarts.apache.org/option.html#aria.decal">ARIA 文档</a>。</p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">本文贡献者</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/zh/best-practices/aria.md" title="编辑本文" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">在 GitHub 上编辑本页</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/plainheart" target="_blank" class="post-contributor has-avatar"><img alt="plainheart" src="https://echarts.apache.org/en/images/people/plainheart.jpg" loading="lazy" decoding="async" fetchpriority="low"> <span>plainheart</span></a><a href="https://github.com/Ovilia" target="_blank" class="post-contributor has-avatar"><img alt="Ovilia" src="https://echarts.apache.org/en/images/people/羡辙.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>Ovilia</span></a><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,i,e,r,a,d,l,o,n,c,h,s,p,g,m,C,A,I,b,f,u,B,E,w,v,x,y,F,S,W,G,Z,k,H,T,D,K,M,R,P,L,J,X,V,U,_,O,Y,z,Q,N,j,$,q,tt,it,et,rt,at,dt,lt,ot,nt){return{layout:"default",data:[{html:'<h1 id="%E6%97%A0%E9%9A%9C%E7%A2%8D%E8%AE%BF%E9%97%AE" tabindex="-1">无障碍访问</h1>\n<p>W3C 制定了无障碍富互联网应用规范集(<a href="https://www.w3.org/WAI/intro/aria">WAI-ARIA</a>,the Accessible Rich Internet Applications Suite),致力于使得网页内容和网页应用能够被更多残障人士访问。</p>\n<p>Apache ECharts 4 遵从这一规范,支持自动根据图表配置项智能生成描述,使得盲人可以在朗读设备的帮助下了解图表内容,让图表可以被更多人群访问。Apache ECharts 5 新增了贴花功能,让图表数据除了可以用颜色区分之外,还能用贴花图案区分,提供了更好的无障碍访问体验。</p>\n<p>无障碍访问功能默认关闭,需要通过将 <a href="https://echarts.apache.org/option.html#aria.show">aria.show</a> 设置为 <code>true</code> 开启。</p>\n<h2 id="%E5%AF%BC%E5%85%A5-ariacomponent" tabindex="-1">导入 AriaComponent</h2>\n<p>从 ECharts 5 开始, <code>aria</code> 组件不再默认导入。在使用无障碍访问特性之前,你需要先导入和注册 <code>AriaComponent</code> 组件:</p>\n<md-code-block lang="js" code="\'aW1wb3J0IHsgQXJpYUNvbXBvbmVudCB9IGZyb20gJ2VjaGFydHMvY29tcG9uZW50cyc7CmVjaGFydHMudXNlKEFyaWFDb21wb25lbnQpOw\'" line-highlights="\'\'" />\n<p>或者如果你在使用 CommonJS 模块:</p>\n<md-code-block lang="js" code="\'cmVxdWlyZSgnZWNoYXJ0cy9saWIvY29tcG9uZW50L2FyaWEnKTs\'" line-highlights="\'\'" />\n<p>如果未导入 <code>AriaComponent</code> 组件,设置 <code>aria.show: true</code> 不会生效。</p>\n<h2 id="%E5%9B%BE%E8%A1%A8%E6%8F%8F%E8%BF%B0" tabindex="-1">图表描述</h2>\n<p>在导入 <code>AriaComponent</code> 组件并开启 <a href="https://echarts.apache.org/option.html#aria.show">aria.show</a> 后,会根据图表、数据、标题等情况,自动智能生成关于图表的描述,用户也可以通过配置项修改描述。</p>\n<p>对于配置项:</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIGFyaWE6IHsKICAgIHNob3c6IHRydWUKICB9LAogIHRpdGxlOiB7CiAgICB0ZXh0OiAn5p-Q56uZ54K555So5oi36K6_6Zeu5p2l5rqQJywKICAgIHg6ICdjZW50ZXInCiAgfSwKICBzZXJpZXM6IFsKICAgIHsKICAgICAgbmFtZTogJ-iuv-mXruadpea6kCcsCiAgICAgIHR5cGU6ICdwaWUnLAogICAgICBkYXRhOiBbCiAgICAgICAgeyB2YWx1ZTogMzM1LCBuYW1lOiAn55u05o6l6K6_6ZeuJyB9LAogICAgICAgIHsgdmFsdWU6IDMxMCwgbmFtZTogJ-mCruS7tuiQpemUgCcgfSwKICAgICAgICB7IHZhbHVlOiAyMzQsIG5hbWU6ICfogZTnm5_lub_lkYonIH0sCiAgICAgICAgeyB2YWx1ZTogMTM1LCBuYW1lOiAn6KeG6aKR5bm_5ZGKJyB9LAogICAgICAgIHsgdmFsdWU6IDE1NDgsIG5hbWU6ICfmkJzntKLlvJXmk44nIH0KICAgICAgXQogICAgfQogIF0KfTs\'" line-highlights="\'\'" />\n<p><md-example src="doc-example/aria-pie"></md-example></p>\n<p>生成的图表 DOM 上,会有一个 <code>aria-label</code> 属性,在朗读设备的帮助下,盲人能够了解图表的内容。其值为:</p>\n<pre><code>这是一个关于“某站点用户访问来源”的图表。图表类型是饼图,表示访问来源。其数据是——直接访问的数据是335,邮件营销的数据是310,联盟广告的数据是234,视频广告的数据是135,搜索引擎的数据是1548。\n</code></pre>\n<p>默认语言会根据语言包(默认中文)选择,也可以使用配置项自定义模板。</p>\n<h3 id="%E6%95%B4%E4%BD%93%E4%BF%AE%E6%94%B9%E6%8F%8F%E8%BF%B0" tabindex="-1">整体修改描述</h3>\n<p>对于有些图表,默认生成的数据点的描述并不足以表现整体的信息。比如下图的散点图,默认生成的描述可以包含数据点的坐标值,但是知道几百几千个点的坐标并不能帮助我们有效地理解图表表达的信息。</p>\n<p>这时候,用户可以通过 <a href="https://echarts.apache.org/option.html#aria.description">aria.description</a> 配置项指定图表的整体描述。</p>\n<h3 id="%E5%AE%9A%E5%88%B6%E6%A8%A1%E6%9D%BF%E6%8F%8F%E8%BF%B0" tabindex="-1">定制模板描述</h3>\n<p>除了整体性修改描述之外,我们还提供了生成描述的模板,可以方便地进行细粒度的修改。</p>\n<p>生成描述的基本流程为,如果 <a href="https://echarts.apache.org/option.html#aria.show">aria.show</a> 设置为 <code>true</code>,则生成无障碍访问描述,否则不生成。如果定义了 <a href="https://echarts.apache.org/option.html#aria.description">aria.description</a>,则将其作为图表的完整描述,否则根据模板拼接生成描述。我们提供了默认的生成描述的算法,仅当生成的描述不太合适时,才需要修改这些模板,甚至使用 <code>aria.description</code> 完全覆盖。</p>\n<p>使用模板拼接时,先根据是否存在标题 <a href="https://echarts.apache.org/option.html#title.text">title.text</a> 决定使用 <a href="https://echarts.apache.org/option.html#aria.general.withTitle">aria.general.withTitle</a> 还是 <a href="https://echarts.apache.org/option.html#aria.general.withoutTitle">aria.general.withoutTitle</a> 作为整体性描述。其中,<code>aria.general.withTitle</code> 配置项包括模板变量 <code>\'{title}\'</code>,将会被替换成图表标题。也就是说,如果 <code>aria.general.withTitle</code> 被设置为 <code>\'图表的标题是:{title}。\'</code>,则如果包含标题 <code>\'价格分布图\'</code>,这部分的描述为 <code>\'图表的标题是:价格分布图。\'</code>。</p>\n<p>拼接完标题之后,会依次拼接系列的描述(<a href="https://echarts.apache.org/option.html#aria.series">aria.series</a>),和每个系列的数据的描述(<a href="https://echarts.apache.org/option.html#aria.data">aria.data</a>)。同样,每个模板都有可能包括模板变量,用以替换实际的值。</p>\n<p>完整的描述生成流程请参见 <a href="https://echarts.apache.org/option.html#aria.label">ARIA 文档</a>。</p>\n<h2 id="%E8%B4%B4%E8%8A%B1%E5%9B%BE%E6%A1%88" tabindex="-1">贴花图案</h2>\n<p>除此之外,Apache ECharts 5 新增支持贴花纹理,作为颜色的辅助表达,进一步用以区分数据。在 <code>aria.enabled</code> 为 <code>true</code> 的前提下,将 <code>aria.decal.show</code> 设为 <code>true</code> 即可采用默认的贴花样式。</p>\n<p><md-example src="doc-example/aria-decal-simple"></md-example></p>\n<p>如果需要自定义贴花图案,可以使用 <a href="https://echarts.apache.org/option.html#aria.decal.decals">aria.decal.decals</a> 配置出灵活多变的图案。</p>\n<p>更具体的信息请参见 <a href="https://echarts.apache.org/option.html#aria.decal">ARIA 文档</a>。</p>\n',postPath:"zh/best-practices/aria",title:"无障碍访问 - 最佳实践"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:r},{title:"入门篇",dir:a,children:[{title:"获取 ECharts",dir:d},{title:"在项目中引入 ECharts",dir:l},{title:"资源列表",dir:o,draft:t},{title:"寻求帮助",dir:n},{title:"版本特性",dir:c,children:[{title:"ECharts 6 特性介绍",dir:h},{title:"v5 升级 v6 指南",dir:s},{title:"5.0",dir:p},{title:"v4 升级 v5 指南",dir:g},{title:5.2,dir:m},{title:5.3,dir:C},{title:5.4,dir:A},{title:5.5,dir:I},{title:5.6,dir:b}]}]},{title:"概念篇",dir:f,children:[{title:"图表容器及大小",dir:u},{title:"配置项",dir:B,draft:t},{title:"系列",dir:E,draft:t},{title:"样式",dir:w},{title:"数据集",dir:v},{title:"数据转换",dir:x},{title:"坐标系",dir:y,draft:t},{title:"坐标轴",dir:F},{title:"视觉映射",dir:e},{title:"图例",dir:S},{title:"事件与行为",dir:W}]},{title:"应用篇",dir:G,children:[{title:"常用图表类型",dir:Z,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:k},{title:"堆叠柱状图",dir:H},{title:"动态排序柱状图",dir:T},{title:"极坐标系柱状图",dir:D,draft:t},{title:"阶梯瀑布图",dir:K},{title:"视觉映射的柱状图",dir:e,draft:t}]},{title:"折线图",dir:M,children:[{title:"基础折线图",dir:R},{title:"堆叠折线图",dir:P},{title:"区域面积图",dir:L},{title:"平滑曲线图",dir:J},{title:"阶梯线图",dir:X}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:V},{title:"圆环图",dir:U},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:_,children:[{title:"基础散点图",dir:O}]}]},{title:"常用组件",dir:Y,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:z}]}]},{title:"移动端优化",dir:i,draft:t},{title:"跨平台方案",dir:Q,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:N},{title:"数据下钻",dir:j,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:$}]},{title:"动画",dir:q,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:it,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:et,draft:t},{title:"智能指针吸附",dir:rt}]}]},{title:"最佳实践",dir:at,children:[{title:"移动端优化",dir:i,draft:t},{title:dt,dir:lt},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:ot}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:nt}]}],en:[{title:"Get Started",dir:r},{title:"Basics",dir:a,children:[{title:"Download ECharts",dir:d},{title:"Import ECharts",dir:l},{title:"Resources",dir:o,draft:t},{title:"Get Help",dir:n},{title:"What's New",dir:c,children:[{title:"ECharts 6 Features",dir:h},{title:"Migration from v5 to v6",dir:s},{title:"5.0",dir:p},{title:"Migration from v4 to v5",dir:g},{title:5.2,dir:m},{title:5.3,dir:C},{title:5.4,dir:A},{title:5.5,dir:I},{title:5.6,dir:b}]}]},{title:"Concepts",dir:f,children:[{title:"Chart Container",dir:u},{title:"Chart Option",dir:B,draft:t},{title:"Series",dir:E,draft:t},{title:"Style",dir:w},{title:"Dataset",dir:v},{title:"Data Transform",dir:x},{title:"Coordinate",dir:y,draft:t},{title:"Axis",dir:F},{title:"Visual Mapping",dir:e},{title:"Legend",dir:S},{title:"Event and Action",dir:W}]},{title:"How To Guides",dir:G,children:[{title:"Common Charts",dir:Z,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:k},{title:"Stacked Bar",dir:H},{title:"Bar Racing",dir:T},{title:"Bar Polar",dir:D,draft:t},{title:"Waterfall",dir:K}]},{title:"Line",dir:M,children:[{title:"Basic Line",dir:R},{title:"Stacked Line",dir:P},{title:"Area Chart",dir:L},{title:"Smoothed Line",dir:J},{title:"Step Line",dir:X}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:V},{title:"Ring Style",dir:U},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:_,children:[{title:"Basic Scatter",dir:O}]}]},{title:"Common Components",dir:Y,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:z}]}]},{title:"Mobile",dir:i,draft:t},{title:"Cross Platform",dir:Q,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:N},{title:"Drilldown",dir:j,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:$}]},{title:"Animation",dir:q,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:it,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:et,draft:t},{title:"Intelligent Pointer Snapping",dir:rt}]}]},{title:"Best Practices",dir:at,children:[{title:"Mobile Optimization",dir:i,draft:t},{title:dt,dir:lt},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:ot}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:nt}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/zh/best-practices/aria",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/zh/best-practices/canvas-vs-svg/index.html b/docs/zh/best-practices/canvas-vs-svg/index.html
new file mode 100644
index 0000000..4c576b4
--- /dev/null
+++ b/docs/zh/best-practices/canvas-vs-svg/index.html
@@ -0,0 +1,24 @@
+<!doctype html>
+<html data-n-head-ssr lang="zh-CN" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh-CN%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Canvas vs. SVG - 最佳实践 - 使用手册 - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="zh"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/zh/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/zh/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/zh/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/zh/index.html" class="navbar-brand"><img src="https://echarts.apache.org/zh/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/zh/index.html">首页</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">文档<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/feature.html">特性</a></li><li><a href="https://echarts.apache.org/handbook/zh/get-started/">使用手册</a></li><li><a href="https://echarts.apache.org/zh/api.html">API</a></li><li><a href="https://echarts.apache.org/zh/option.html">配置项手册</a></li><li><a href="https://echarts.apache.org/zh/changelog.html">版本记录</a></li><li><a href="https://echarts.apache.org/zh/faq.html">常见问题</a></li><li><a href="https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide">v6 升级指南</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">下载<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/download.html">下载</a></li><li><a href="https://echarts.apache.org/zh/download-theme.html">主题下载</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">自定义系列下载<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/download-extension.html">扩展下载</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/zh/index.html">示例</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">资源<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/spreadsheet.html">表格工具</a></li><li><a href="https://echarts.apache.org/zh/theme-builder.html">主题构建工具</a></li><li><a href="https://echarts.apache.org/zh/cheat-sheet.html">术语速查手册</a></li><li><a href="https://echarts.apache.org/zh/resources.html">更多资源</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">社区<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/events.html">活动</a></li><li><a href="https://echarts.apache.org/zh/committers.html">贡献者列表</a></li><li><a href="https://echarts.apache.org/zh/maillist.html">邮件列表</a></li><li><a href="https://echarts.apache.org/zh/contributing.html">如何贡献</a></li><li><a href="https://echarts.apache.org/zh/dependencies.html">依赖项</a></li><li><a href="https://echarts.apache.org/zh/coding-standard.html">代码规范</a></li><li><a href="https://github.com/apache/echarts" target="_blank">源码(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/security.html">安全</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">版权<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">活动<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">捐赠<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">鸣谢<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("en")'>EN</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/zh/get-started" class="nav-link"><span class="title">快速上手</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">入门篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/basics/download" class="nav-link"><span class="title">获取 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/import" class="nav-link"><span class="title">在项目中引入 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/basics/help" class="nav-link"><span class="title">寻求帮助</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">版本特性</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 特性介绍</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">v5 升级 v6 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">v4 升级 v5 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">概念篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/concepts/chart-size" class="nav-link"><span class="title">图表容器及大小</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/style" class="nav-link"><span class="title">样式</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/dataset" class="nav-link"><span class="title">数据集</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/data-transform" class="nav-link"><span class="title">数据转换</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/axis" class="nav-link"><span class="title">坐标轴</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/visual-map" class="nav-link"><span class="title">视觉映射</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/legend" class="nav-link"><span class="title">图例</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/event" class="nav-link"><span class="title">事件与行为</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">应用篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">常用图表类型</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">柱状图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">基础柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">堆叠柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">动态排序柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">阶梯瀑布图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">折线图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">基础折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">堆叠折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/area-line" class="nav-link"><span class="title">区域面积图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">平滑曲线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/step-line" class="nav-link"><span class="title">阶梯线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">饼图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">基础饼图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">圆环图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/rose" class="nav-link"><span class="title">南丁格尔图(玫瑰图)</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">散点图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">基础散点图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">常用组件</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">地理坐标系(Geo)</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG 底图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">跨平台方案</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/server" class="nav-link"><span class="title">服务端渲染</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/wechat-app" class="nav-link"><span class="title">微信小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/baidu-app" class="nav-link"><span class="title">百度智能小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">数据处理</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/data/dynamic-data" class="nav-link"><span class="title">动态的异步数据</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">标签</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/label/rich-text" class="nav-link"><span class="title">富文本标签</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">动画</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/animation/transition" class="nav-link"><span class="title">数据过渡动画</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">交互</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/drag" class="nav-link"><span class="title">拖拽的实现</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">智能指针吸附</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">最佳实践</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/canvas-vs-svg" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/aria" class="nav-link"><span class="title">无障碍访问</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/security" class="nav-link"><span class="title">安全指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">编辑本文档</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/meta/edit-guide" class="nav-link"><span class="title">文档编辑指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="%E4%BD%BF%E7%94%A8-canvas-%E6%88%96%E8%80%85-svg-%E6%B8%B2%E6%9F%93" tabindex="-1">使用 Canvas 或者 SVG 渲染</h1> <p>浏览器端图表库大多会选择 SVG 或者 Canvas 进行渲染。对于绘制图表来说,这两种技术往往是可替换的,效果相近。但是在一些场景中,他们的表现和能力又有一定差异。于是,对它们的选择取舍,就成为了一个一直存在的不易有标准答案的话题。</p> <p>ECharts 从初始一直使用 Canvas 绘制图表。而 <a href="https://echarts.apache.org/zh/changelog.html#v4-0-0">ECharts v4.0</a> 发布了 SVG 渲染器,从而提供了一种新的选择。在初始化图表实例时,只需设置 <a href="https://echarts.apache.org/api.html#echarts.init">renderer 参数</a> 为 <code>'canvas'</code> 或 <code>'svg'</code> 即可指定渲染器,比较方便。</p> <blockquote><p>SVG 和 Canvas 这两种使用方式差异很大的技术,能够做到同时被透明支持,主要归功于 ECharts 底层库 <a href="https://github.com/ecomfe/zrender">ZRender</a> 的抽象和实现,形成可互换的 SVG 渲染器和 Canvas 渲染器。</p></blockquote> <h2 id="%E9%80%89%E6%8B%A9%E5%93%AA%E7%A7%8D%E6%B8%B2%E6%9F%93%E5%99%A8" tabindex="-1">选择哪种渲染器</h2> <p>一般来说,Canvas 更适合绘制图形元素数量较多(这一般是由数据量大导致)的图表(如热力图、地理坐标系或平行坐标系上的大规模线图或散点图等),也利于实现某些视觉 <a href="https://echarts.apache.org/examples/editor.html?c=lines-bmap-effect">特效</a>。但是,在不少场景中,SVG 具有重要的优势:它的内存占用更低(这对移动端尤其重要)、并且用户使用浏览器内置的缩放功能时不会模糊。</p> <p>选择哪种渲染器,我们可以根据软硬件环境、数据量、功能需求综合考虑。</p> <ul><li>在软硬件环境较好,数据量不大的场景下,两种渲染器都可以适用,并不需要太多纠结。</li> <li>在环境较差,出现性能问题需要优化的场景下,可以通过试验来确定使用哪种渲染器。比如有这些经验:
+<ul><li>在需要创建很多 ECharts 实例且浏览器易崩溃的情况下(可能是因为 Canvas 数量多导致内存占用超出手机承受能力),可以使用 SVG 渲染器来进行改善。大略的说,如果图表运行在低端安卓机,或者我们在使用一些特定图表如 <a href="https://ecomfe.github.io/echarts-liquidfill/example/">水球图</a> 等,SVG 渲染器可能效果更好。</li> <li>数据量较大(经验判断 > 1k)、较多交互时,建议选择 Canvas 渲染器。</li></ul></li></ul> <p>我们强烈欢迎开发者们<a href="https://github.com/apache/echarts/issues/new/choose">反馈</a>给我们使用的体验和场景,帮助我们更好的做优化。</p> <p>注:当前某些特殊的渲染依然需要依赖 Canvas:如<a href="https://echarts.apache.org/option.html#series-lines.effect">炫光尾迹特效</a>、<a href="https://echarts.apache.org/examples/editor.html?c=heatmap-bmap">带有混合效果的热力图</a>等。</p> <p>我们在 <a href="zh/basics/release-note/5-3-0/#%E5%85%A8%E6%96%B0%E7%9A%84-svg-%E6%B8%B2%E6%9F%93%E5%99%A8">v5.3.0</a> 中使用虚拟 DOM 技术对 SVG 渲染器进行了重构,从而使其渲染性能提升了 2~10 倍,在某些特殊场景中甚至能有数十倍的提升!参见 <a href="https://github.com/ecomfe/zrender/pull/836">#836</a>。</p> <h2 id="%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E6%B8%B2%E6%9F%93%E5%99%A8" tabindex="-1">如何使用渲染器</h2> <p>如果是用如下的方式完整引入<code>echarts</code>,代码中已经包含了 SVG 渲染器和 Canvas 渲染器</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">import</span> <span class="token operator">*</span> <span class="token keyword">as</span> echarts <span class="token keyword">from</span> <span class="token string">'echarts'</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>如果你是按照 <a href="zh/basics/import">在项目中引入 Apache ECharts</a> 一文中的介绍使用按需引入,则需要手动引入需要的渲染器</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">import</span> <span class="token operator">*</span> <span class="token keyword">as</span> echarts <span class="token keyword">from</span> <span class="token string">'echarts/core'</span><span class="token punctuation">;</span>
+<span class="token comment">// 可以根据需要选用只用到的渲染器</span>
+<span class="token keyword">import</span> <span class="token punctuation">{</span> SVGRenderer<span class="token punctuation">,</span> CanvasRenderer <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'echarts/renderers'</span><span class="token punctuation">;</span>
+
+echarts<span class="token punctuation">.</span><span class="token function">use</span><span class="token punctuation">(</span><span class="token punctuation">[</span>SVGRenderer<span class="token punctuation">,</span> CanvasRenderer<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>然后,我们就可以在代码中,初始化图表实例时,<a href="https://echarts.apache.org/api.html#echarts.init">传入参数</a> 选择渲染器类型:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token comment">// 使用 Canvas 渲染器(默认)</span>
+<span class="token keyword">var</span> chart <span class="token operator">=</span> echarts<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span>containerDom<span class="token punctuation">,</span> <span class="token keyword">null</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token literal-property property">renderer</span><span class="token operator">:</span> <span class="token string">'canvas'</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token comment">// 等价于:</span>
+<span class="token keyword">var</span> chart <span class="token operator">=</span> echarts<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span>containerDom<span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+<span class="token comment">// 使用 SVG 渲染器</span>
+<span class="token keyword">var</span> chart <span class="token operator">=</span> echarts<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span>containerDom<span class="token punctuation">,</span> <span class="token keyword">null</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token literal-property property">renderer</span><span class="token operator">:</span> <span class="token string">'svg'</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">本文贡献者</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/zh/best-practices/canvas-vs-svg.md" title="编辑本文" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">在 GitHub 上编辑本页</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/plainheart" target="_blank" class="post-contributor has-avatar"><img alt="plainheart" src="https://echarts.apache.org/en/images/people/plainheart.jpg" loading="lazy" decoding="async" fetchpriority="low"> <span>plainheart</span></a><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a><a href="https://github.com/Chengxi9" target="_blank" class="post-contributor"><!----> <span>Chengxi9</span></a><a href="https://github.com/btea" target="_blank" class="post-contributor"><!----> <span>btea</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,i,e,r,a,l,d,n,h,c,s,o,p,m,g,b,v,f,u,C,E,S,B,y,G,V,I,k,w,Z,A,D,L,P,R,W,X,J,Y,j,x,z,N,M,F,H,T,O,K,_,U,q,Q,$,tt,it,et,rt,at,lt,dt,nt,ht){return{layout:"default",data:[{html:'<h1 id="%E4%BD%BF%E7%94%A8-canvas-%E6%88%96%E8%80%85-svg-%E6%B8%B2%E6%9F%93" tabindex="-1">使用 Canvas 或者 SVG 渲染</h1>\n<p>浏览器端图表库大多会选择 SVG 或者 Canvas 进行渲染。对于绘制图表来说,这两种技术往往是可替换的,效果相近。但是在一些场景中,他们的表现和能力又有一定差异。于是,对它们的选择取舍,就成为了一个一直存在的不易有标准答案的话题。</p>\n<p>ECharts 从初始一直使用 Canvas 绘制图表。而 <a href="https://echarts.apache.org/zh/changelog.html#v4-0-0">ECharts v4.0</a> 发布了 SVG 渲染器,从而提供了一种新的选择。在初始化图表实例时,只需设置 <a href="https://echarts.apache.org/api.html#echarts.init">renderer 参数</a> 为 <code>\'canvas\'</code> 或 <code>\'svg\'</code> 即可指定渲染器,比较方便。</p>\n<blockquote>\n<p>SVG 和 Canvas 这两种使用方式差异很大的技术,能够做到同时被透明支持,主要归功于 ECharts 底层库 <a href="https://github.com/ecomfe/zrender">ZRender</a> 的抽象和实现,形成可互换的 SVG 渲染器和 Canvas 渲染器。</p>\n</blockquote>\n<h2 id="%E9%80%89%E6%8B%A9%E5%93%AA%E7%A7%8D%E6%B8%B2%E6%9F%93%E5%99%A8" tabindex="-1">选择哪种渲染器</h2>\n<p>一般来说,Canvas 更适合绘制图形元素数量较多(这一般是由数据量大导致)的图表(如热力图、地理坐标系或平行坐标系上的大规模线图或散点图等),也利于实现某些视觉 <a href="https://echarts.apache.org/examples/editor.html?c=lines-bmap-effect">特效</a>。但是,在不少场景中,SVG 具有重要的优势:它的内存占用更低(这对移动端尤其重要)、并且用户使用浏览器内置的缩放功能时不会模糊。</p>\n<p>选择哪种渲染器,我们可以根据软硬件环境、数据量、功能需求综合考虑。</p>\n<ul>\n<li>在软硬件环境较好,数据量不大的场景下,两种渲染器都可以适用,并不需要太多纠结。</li>\n<li>在环境较差,出现性能问题需要优化的场景下,可以通过试验来确定使用哪种渲染器。比如有这些经验:\n<ul>\n<li>在需要创建很多 ECharts 实例且浏览器易崩溃的情况下(可能是因为 Canvas 数量多导致内存占用超出手机承受能力),可以使用 SVG 渲染器来进行改善。大略的说,如果图表运行在低端安卓机,或者我们在使用一些特定图表如 <a href="https://ecomfe.github.io/echarts-liquidfill/example/">水球图</a> 等,SVG 渲染器可能效果更好。</li>\n<li>数据量较大(经验判断 &gt; 1k)、较多交互时,建议选择 Canvas 渲染器。</li>\n</ul>\n</li>\n</ul>\n<p>我们强烈欢迎开发者们<a href="https://github.com/apache/echarts/issues/new/choose">反馈</a>给我们使用的体验和场景,帮助我们更好的做优化。</p>\n<p>注:当前某些特殊的渲染依然需要依赖 Canvas:如<a href="https://echarts.apache.org/option.html#series-lines.effect">炫光尾迹特效</a>、<a href="https://echarts.apache.org/examples/editor.html?c=heatmap-bmap">带有混合效果的热力图</a>等。</p>\n<p>我们在 <a href="zh/basics/release-note/5-3-0/#%E5%85%A8%E6%96%B0%E7%9A%84-svg-%E6%B8%B2%E6%9F%93%E5%99%A8">v5.3.0</a> 中使用虚拟 DOM 技术对 SVG 渲染器进行了重构,从而使其渲染性能提升了 2~10 倍,在某些特殊场景中甚至能有数十倍的提升!参见 <a href="https://github.com/ecomfe/zrender/pull/836">#836</a>。</p>\n<h2 id="%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E6%B8%B2%E6%9F%93%E5%99%A8" tabindex="-1">如何使用渲染器</h2>\n<p>如果是用如下的方式完整引入<code>echarts</code>,代码中已经包含了 SVG 渲染器和 Canvas 渲染器</p>\n<md-code-block lang="js" code="\'aW1wb3J0ICogYXMgZWNoYXJ0cyBmcm9tICdlY2hhcnRzJzs\'" line-highlights="\'\'" />\n<p>如果你是按照 <a href="zh/basics/import">在项目中引入 Apache ECharts</a> 一文中的介绍使用按需引入,则需要手动引入需要的渲染器</p>\n<md-code-block lang="js" code="\'aW1wb3J0ICogYXMgZWNoYXJ0cyBmcm9tICdlY2hhcnRzL2NvcmUnOwovLyDlj6_ku6XmoLnmja7pnIDopoHpgInnlKjlj6rnlKjliLDnmoTmuLLmn5PlmagKaW1wb3J0IHsgU1ZHUmVuZGVyZXIsIENhbnZhc1JlbmRlcmVyIH0gZnJvbSAnZWNoYXJ0cy9yZW5kZXJlcnMnOwoKZWNoYXJ0cy51c2UoW1NWR1JlbmRlcmVyLCBDYW52YXNSZW5kZXJlcl0pOw\'" line-highlights="\'\'" />\n<p>然后,我们就可以在代码中,初始化图表实例时,<a href="https://echarts.apache.org/api.html#echarts.init">传入参数</a> 选择渲染器类型:</p>\n<md-code-block lang="js" code="\'Ly8g5L2_55SoIENhbnZhcyDmuLLmn5PlmajvvIjpu5jorqTvvIkKdmFyIGNoYXJ0ID0gZWNoYXJ0cy5pbml0KGNvbnRhaW5lckRvbSwgbnVsbCwgeyByZW5kZXJlcjogJ2NhbnZhcycgfSk7Ci8vIOetieS7t-S6ju-8mgp2YXIgY2hhcnQgPSBlY2hhcnRzLmluaXQoY29udGFpbmVyRG9tKTsKCi8vIOS9v-eUqCBTVkcg5riy5p-T5ZmoCnZhciBjaGFydCA9IGVjaGFydHMuaW5pdChjb250YWluZXJEb20sIG51bGwsIHsgcmVuZGVyZXI6ICdzdmcnIH0pOw\'" line-highlights="\'\'" />\n',postPath:"zh/best-practices/canvas-vs-svg",title:"Canvas vs. SVG - 最佳实践"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:r},{title:"入门篇",dir:a,children:[{title:"获取 ECharts",dir:l},{title:"在项目中引入 ECharts",dir:d},{title:"资源列表",dir:n,draft:t},{title:"寻求帮助",dir:h},{title:"版本特性",dir:c,children:[{title:"ECharts 6 特性介绍",dir:s},{title:"v5 升级 v6 指南",dir:o},{title:"5.0",dir:p},{title:"v4 升级 v5 指南",dir:m},{title:5.2,dir:g},{title:5.3,dir:b},{title:5.4,dir:v},{title:5.5,dir:f},{title:5.6,dir:u}]}]},{title:"概念篇",dir:C,children:[{title:"图表容器及大小",dir:E},{title:"配置项",dir:S,draft:t},{title:"系列",dir:B,draft:t},{title:"样式",dir:y},{title:"数据集",dir:G},{title:"数据转换",dir:V},{title:"坐标系",dir:I,draft:t},{title:"坐标轴",dir:k},{title:"视觉映射",dir:e},{title:"图例",dir:w},{title:"事件与行为",dir:Z}]},{title:"应用篇",dir:A,children:[{title:"常用图表类型",dir:D,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:L},{title:"堆叠柱状图",dir:P},{title:"动态排序柱状图",dir:R},{title:"极坐标系柱状图",dir:W,draft:t},{title:"阶梯瀑布图",dir:X},{title:"视觉映射的柱状图",dir:e,draft:t}]},{title:"折线图",dir:J,children:[{title:"基础折线图",dir:Y},{title:"堆叠折线图",dir:j},{title:"区域面积图",dir:x},{title:"平滑曲线图",dir:z},{title:"阶梯线图",dir:N}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:M},{title:"圆环图",dir:F},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:H,children:[{title:"基础散点图",dir:T}]}]},{title:"常用组件",dir:O,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:K}]}]},{title:"移动端优化",dir:i,draft:t},{title:"跨平台方案",dir:_,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:U},{title:"数据下钻",dir:q,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:Q}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:it,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:et,draft:t},{title:"智能指针吸附",dir:rt}]}]},{title:"最佳实践",dir:at,children:[{title:"移动端优化",dir:i,draft:t},{title:lt,dir:dt},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:nt}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:ht}]}],en:[{title:"Get Started",dir:r},{title:"Basics",dir:a,children:[{title:"Download ECharts",dir:l},{title:"Import ECharts",dir:d},{title:"Resources",dir:n,draft:t},{title:"Get Help",dir:h},{title:"What's New",dir:c,children:[{title:"ECharts 6 Features",dir:s},{title:"Migration from v5 to v6",dir:o},{title:"5.0",dir:p},{title:"Migration from v4 to v5",dir:m},{title:5.2,dir:g},{title:5.3,dir:b},{title:5.4,dir:v},{title:5.5,dir:f},{title:5.6,dir:u}]}]},{title:"Concepts",dir:C,children:[{title:"Chart Container",dir:E},{title:"Chart Option",dir:S,draft:t},{title:"Series",dir:B,draft:t},{title:"Style",dir:y},{title:"Dataset",dir:G},{title:"Data Transform",dir:V},{title:"Coordinate",dir:I,draft:t},{title:"Axis",dir:k},{title:"Visual Mapping",dir:e},{title:"Legend",dir:w},{title:"Event and Action",dir:Z}]},{title:"How To Guides",dir:A,children:[{title:"Common Charts",dir:D,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:L},{title:"Stacked Bar",dir:P},{title:"Bar Racing",dir:R},{title:"Bar Polar",dir:W,draft:t},{title:"Waterfall",dir:X}]},{title:"Line",dir:J,children:[{title:"Basic Line",dir:Y},{title:"Stacked Line",dir:j},{title:"Area Chart",dir:x},{title:"Smoothed Line",dir:z},{title:"Step Line",dir:N}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:M},{title:"Ring Style",dir:F},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:H,children:[{title:"Basic Scatter",dir:T}]}]},{title:"Common Components",dir:O,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:K}]}]},{title:"Mobile",dir:i,draft:t},{title:"Cross Platform",dir:_,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:U},{title:"Drilldown",dir:q,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:Q}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:it,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:et,draft:t},{title:"Intelligent Pointer Snapping",dir:rt}]}]},{title:"Best Practices",dir:at,children:[{title:"Mobile Optimization",dir:i,draft:t},{title:lt,dir:dt},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:nt}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:ht}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/zh/best-practices/canvas-vs-svg",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/zh/best-practices/security/index.html b/docs/zh/best-practices/security/index.html
new file mode 100644
index 0000000..0723ad8
--- /dev/null
+++ b/docs/zh/best-practices/security/index.html
@@ -0,0 +1,31 @@
+<!doctype html>
+<html data-n-head-ssr lang="zh-CN" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh-CN%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>安全指南 - 最佳实践 - 使用手册 - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="zh"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/zh/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/zh/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/zh/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/zh/index.html" class="navbar-brand"><img src="https://echarts.apache.org/zh/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/zh/index.html">首页</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">文档<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/feature.html">特性</a></li><li><a href="https://echarts.apache.org/handbook/zh/get-started/">使用手册</a></li><li><a href="https://echarts.apache.org/zh/api.html">API</a></li><li><a href="https://echarts.apache.org/zh/option.html">配置项手册</a></li><li><a href="https://echarts.apache.org/zh/changelog.html">版本记录</a></li><li><a href="https://echarts.apache.org/zh/faq.html">常见问题</a></li><li><a href="https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide">v6 升级指南</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">下载<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/download.html">下载</a></li><li><a href="https://echarts.apache.org/zh/download-theme.html">主题下载</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">自定义系列下载<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/download-extension.html">扩展下载</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/zh/index.html">示例</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">资源<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/spreadsheet.html">表格工具</a></li><li><a href="https://echarts.apache.org/zh/theme-builder.html">主题构建工具</a></li><li><a href="https://echarts.apache.org/zh/cheat-sheet.html">术语速查手册</a></li><li><a href="https://echarts.apache.org/zh/resources.html">更多资源</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">社区<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/events.html">活动</a></li><li><a href="https://echarts.apache.org/zh/committers.html">贡献者列表</a></li><li><a href="https://echarts.apache.org/zh/maillist.html">邮件列表</a></li><li><a href="https://echarts.apache.org/zh/contributing.html">如何贡献</a></li><li><a href="https://echarts.apache.org/zh/dependencies.html">依赖项</a></li><li><a href="https://echarts.apache.org/zh/coding-standard.html">代码规范</a></li><li><a href="https://github.com/apache/echarts" target="_blank">源码(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/security.html">安全</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">版权<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">活动<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">捐赠<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">鸣谢<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("en")'>EN</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/zh/get-started" class="nav-link"><span class="title">快速上手</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">入门篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/basics/download" class="nav-link"><span class="title">获取 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/import" class="nav-link"><span class="title">在项目中引入 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/basics/help" class="nav-link"><span class="title">寻求帮助</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">版本特性</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 特性介绍</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">v5 升级 v6 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">v4 升级 v5 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">概念篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/concepts/chart-size" class="nav-link"><span class="title">图表容器及大小</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/style" class="nav-link"><span class="title">样式</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/dataset" class="nav-link"><span class="title">数据集</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/data-transform" class="nav-link"><span class="title">数据转换</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/axis" class="nav-link"><span class="title">坐标轴</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/visual-map" class="nav-link"><span class="title">视觉映射</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/legend" class="nav-link"><span class="title">图例</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/event" class="nav-link"><span class="title">事件与行为</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">应用篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">常用图表类型</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">柱状图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">基础柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">堆叠柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">动态排序柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">阶梯瀑布图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">折线图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">基础折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">堆叠折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/area-line" class="nav-link"><span class="title">区域面积图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">平滑曲线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/step-line" class="nav-link"><span class="title">阶梯线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">饼图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">基础饼图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">圆环图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/rose" class="nav-link"><span class="title">南丁格尔图(玫瑰图)</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">散点图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">基础散点图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">常用组件</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">地理坐标系(Geo)</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG 底图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">跨平台方案</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/server" class="nav-link"><span class="title">服务端渲染</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/wechat-app" class="nav-link"><span class="title">微信小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/baidu-app" class="nav-link"><span class="title">百度智能小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">数据处理</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/data/dynamic-data" class="nav-link"><span class="title">动态的异步数据</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">标签</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/label/rich-text" class="nav-link"><span class="title">富文本标签</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">动画</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/animation/transition" class="nav-link"><span class="title">数据过渡动画</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">交互</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/drag" class="nav-link"><span class="title">拖拽的实现</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">智能指针吸附</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">最佳实践</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/aria" class="nav-link"><span class="title">无障碍访问</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/security" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">安全指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">编辑本文档</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/meta/edit-guide" class="nav-link"><span class="title">文档编辑指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="%E5%AE%89%E5%85%A8%E6%8C%87%E5%8D%97" tabindex="-1">安全指南</h1> <h2 id="%E6%A6%82%E8%BF%B0" tabindex="-1">概述</h2> <p>ECharts 旨在提供丰富而灵活的可视化能力。虽然其绝大多数 API 不需要额外的安全考虑,但有几个例外。例如,<code>tooltip.formatter</code> 允许输入 HTML 字符串,从而完全控制组件的内容与布局;<code>title.link</code> 直接使用输入的 URL 字符串而不进行自动的净化处理(sanitization)。这种灵活性虽然强大,但当输入来自“不受信任”的来源时,可能带来安全风险。本文档列出了这些 API,并提供了如何安全使用这些特性的建议。</p> <p>任何潜在安全问题,可依照 <a href="https://echarts.apache.org/zh/security.html">ASF 安全</a> 中的渠道进行报告。</p> <p>注:本文档面向 ECharts API 调用者。而另有一文档 <a href="https://github.com/apache/echarts/wiki/Security-Checklist-for-Code-Contributors">代码贡献者的安全检查清单</a> 用于 ECharts 贡献者提交 Pull Request 前的检查,并非面向 ECharts API 调用者,但如有兴趣也可参阅。</p> <h2 id="security_model_and_checklist" tabindex="-1">安全模型与检查清单</h2> <p>ECharts 专注于可视化逻辑,一般假定输入内容都是来自“可信任”的来源,不会自动对输入进行净化(sanitization)处理。这和多数前端 UI 库的原则类似。其实 ECharts 自身也不知如何合适地对“不受信任”的内容做净化处理,因为不知哪些输入是“不受信任”的,且不存在适用于所有使用场景的通用净化规则。然而,ECharts 应该明确哪些 API(尤其是 ECharts options)在哪些场景下须在输入前进行安全相关的处理或考量。由于 ECharts options 数量庞大,对所有输入在任何场景下都进行安全处理不现实也无必要。</p> <p>ECharts 通过 Canvas 或 SVG 渲染,只有几个特殊组件例外,允许 HTML 渲染(例如,<a href="https://echarts.apache.org/option.html#tooltip">tooltip</a> 和 <a href="https://echarts.apache.org/option.html#toolbox.feature.dataView">dataView</a>)。ECharts API 的输入可被分类为“JS 函数”或者“非 JS 函数”。“JS 函数输入”本意就须允许执行。而大多数“非 JS 函数输入”(例如仅用于渲染的纯文本)并无被执行的可能,因此通常无需防范恶意代码注入。然而例外是,某些 API 允许在页面中嵌入不安全内容(如 HTML 或 URL 文本)。这些 API 能带来丰富的定制能力,但当输入来自“不受信任”的来源时,容易遭受 XSS (跨站脚本攻击)或相关攻击。</p> <p><strong>一般而言,如果输入的内容都是可被信任的,就不会出现这些注入漏洞。</strong>
+“不受信任”(untrusted)的内容指,内容来自于无法完全控制的来源,或者内容可能被用户或外部系统修改或注入。开发者应该总是假定直接在 HTML、CSS、JS 中使用这些内容会不安全。例如,用户生成的数据或来自浏览器/客户端的输入都应被认为是“不受信任”的。但在许多情况下,处理用户生成的内容不可避免。例如,从数据库获取用户生成的数据,并组装成 HTML 输入 <code>tooltip.formatter</code> 来渲染。于是须要额外处理保正渲染正确和安全,通常首先依靠 HTML 转义(HTML escaping);但如果无法被转义的部分也来自“不受信任”的来源,则需要净化处理(sanitization)。</p> <p>在部署图表之前,请根据以下<strong>检查清单</strong>确认使用是否安全:</p> <table><thead><tr><th>APIs</th> <th>潜在风险与建议</th></tr></thead> <tbody><tr><td><strong>option <a href="https://echarts.apache.org/option.html#tooltip.formatter">tooltip.formatter</a></strong><br>· <code>formatter</code> 允许 HTML 文本或 DOM 元素传入,并后续直接渲染到 tooltip 内部,于是需要考虑 XSS 风险。<br>(例外):如果 <code>formatter</code> 被直接设置成一个字符串,则认为是一个内部实现的简单模版,后续能内部填入数据。<a href="https://echarts.apache.org/option.html#tooltip.renderMode">tooltip.renderMode: 'richText'</a> 是另一种内部实现的模版,用于定制样式。他们都不涉及 HTML,从而安全。<br><br><strong>option <a href="https://echarts.apache.org/option.html#toolbox.feature.dataView.optionToContent">toolbox.feature.dataView.optionToContent</a></strong><br><strong>option <a href="https://echarts.apache.org/option.html#toolbox.feature.dataView.title">toolbox.feature.dataView.title</a></strong><br><strong>option <a href="https://echarts.apache.org/option.html#toolbox.feature.dataView.lang">toolbox.feature.dataView.lang</a></strong><br>· <code>tooltip.dataView</code> 面板完全以 HTML 渲染,这些 API 可自定义 HTML 文本中的部分内容,于是需要考虑 XSS 风险。</td> <td>需要考虑 XSS 风险。一般情况下,仅需 HTML 转义即可。但如果一些不能转义的部分来自“不受信任”的来源,则须更多处理(如净化处理(sanitization)或沙盒隔离)。<br><br>详细描述见 <a href="zh/best-practices/security#passing_raw_html_safely">“传入 HTML 时的安全考虑”</a>。</td></tr> <tr><td><strong>option <a href="https://echarts.apache.org/option.html#tooltip.extraCssText">tooltip.extraCssText</a></strong><br>· <code>extraCssText</code> 接受一个原始 CSS style 字符串,并接下来直接拼接进 <code>tooltipEl.style.cssText</code>。<br>(例外):<a href="https://echarts.apache.org/option.html#tooltip.renderMode">tooltip.renderMode: 'richText'</a> 时此 <code>extraCssText</code> 无效。</td> <td>若输入来自可信来源,则一般无安全问题,否则需要仔细评估风险。<br><br>详细描述见 <a href="zh/best-practices/security#passing_inline_css_safely">“传入内联 CSS 时的安全考虑”</a>。</td></tr> <tr><td><strong>option <a href="https://echarts.apache.org/option.html#title.link">title.link</a></strong><br><strong>option <a href="https://echarts.apache.org/option.html#title.sublink">title.sublink</a></strong><br><strong>option <a href="https://echarts.apache.org/option.html#series-treemap.data.link">series-treemap.data.link</a></strong><br><strong>option <a href="https://echarts.apache.org/option.html#series-sunburst.data.link">series-sunburst.data.link</a></strong><br>· 这些 option 直接接受原始 URL 字符串。</td> <td>若若输入来自可信来源,则一般无安全问题,否则须要考虑 XSS 风险。<br><br>详细描述见 <a href="zh/best-practices/security#passing_raw_urls_safely">"传入 URL 时的安全考虑"</a>。</td></tr> <tr><td><strong>option <a href="https://echarts.apache.org/option.html#toolbox.feature.saveAsImage.name">toolbox.feature.saveAsImage.name</a></strong><br><strong>option <a href="https://echarts.apache.org/option.html#toolbox.feature.saveAsImage.type">toolbox.feature.saveAsImage.type</a></strong><br><strong>option <a href="https://echarts.apache.org/option.html#title.text">title[0].text</a></strong><br>· <code>saveAsImage</code> 功能的下载文件名由 <code>{name}.{type}</code> 拼装而成,并未做额外校验或净化(sanitization)处理。如果 <code>name</code> 没有指定,则使用 <code>title[0].text</code> 替代,尽管这种用法并不推荐。</td> <td>详细描述见 <a href="zh/best-practices/security#passing_download_filename_safely">“传入下载文件名时的安全考虑”</a>。</td></tr> <tr><td>所有“JS 函数”输入(回调)</td> <td>通常无安全问题,除非存在特殊使用场景(例如需要执行不可信来源的函数)。<br><br>详细描述见 <a href="zh/best-practices/security#passing_js_function_safely">“传入 JS 函数时的安全考虑”</a>。</td></tr></tbody></table> <h2 id="passing_raw_html_safely" tabindex="-1">传入 HTML 时的安全考虑</h2> <p>在 <a href="zh/best-practices/security#security_model_and_checklist">“安全模型与检查清单”</a> 一节中已列出会接受原始 HTML 的 API。“不受信任”的 HTML 可能导致 XSS 等攻击,因此在传入 ECharts 前应进行处理。常见的处理方式包括 <strong>HTML 转义(HTML Escaping)</strong>、<strong>净化(Sanitization)</strong>、<strong>沙盒</strong>。大多数情况下,仅进行 HTML 转义即可,除非那些不能被转义的部分来自于“不受信任”的来源。</p> <h3 id="passing_raw_html_safely_html_escaping" tabindex="-1">HTML 转义(HTML Escaping)</h3> <p>数据组装成 HTML 字符串前总需要进行 HTML 转义。这不仅是安全需要,也是正确显示的前提。</p> <p>最简单和常见的 HTML 转义是这些字符串转换:</p> <pre><code>'&' => '&ampamp;'
+'&lt;' => '&amplt;'
+'>' => '&ampgt;'
+'"' => '&ampquot;'
+"'" => '&amp#39;
+</code></pre> <p>转换后,这些字符的功能被去除了,只能显示,从而也无法通过他们进行注入攻击(如 <code>&lt;script>...&lt;/script></code>)。</p> <p>例如:
+</p><div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token comment">// 功能不正确也不安全。</span>
+<span class="token function-variable function">formatter</span><span class="token operator">:</span> <span class="token parameter">params</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
+    <span class="token keyword">const</span> <span class="token punctuation">{</span> name<span class="token punctuation">,</span> value <span class="token punctuation">}</span> <span class="token operator">=</span> params<span class="token punctuation">;</span>
+    <span class="token comment">// 如果 name 或 value 中含有功能性字符,如 '&lt;' '>' 等,则可能渲染不正确。</span>
+    <span class="token comment">// 同时,如果 name 或 value 的值来自于“非受信任”的来源,则可能被注入恶意代码并运行。</span>
+    <span class="token keyword">return</span> <span class="token template-string"><span class="token template-punctuation string">`</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>name<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">, &lt;b></span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>value<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">&lt;b/></span><span class="token template-punctuation string">`</span></span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span>
+<span class="token comment">// 功能正确且安全。</span>
+<span class="token function-variable function">formatter</span><span class="token operator">:</span> <span class="token parameter">params</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
+    <span class="token keyword">const</span> <span class="token punctuation">{</span> name<span class="token punctuation">,</span> value <span class="token punctuation">}</span> <span class="token operator">=</span> params<span class="token punctuation">;</span>
+    <span class="token keyword">return</span> <span class="token template-string"><span class="token template-punctuation string">`</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>echarts<span class="token punctuation">.</span>format<span class="token punctuation">.</span><span class="token function">encodeHTML</span><span class="token punctuation">(</span>name<span class="token punctuation">)</span><span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">, &lt;b></span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>echarts<span class="token punctuation">.</span>format<span class="token punctuation">.</span><span class="token function">encodeHTML</span><span class="token punctuation">(</span>value<span class="token punctuation">)</span><span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">&lt;/b></span><span class="token template-punctuation string">`</span></span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div><p></p> <p>使用 DOM API(如 <code>.textContent = </code>)也能实现转义。</p> <p>在大多数场景中,“不受信任”的内容(如用户输入的文本)仅用于显示,而有功能的部分(如 HTML 标签或属性)完全由应用开发者控制且可信。在这种情况下,HTML 转义本身就足以防御 XSS,只要所有“不受信任”的内容都被正确转义。</p> <h3 id="passing_raw_html_safely_sanitization" tabindex="-1">净化(Sanitization)</h3> <p>有些场景中,需要有功能的部分(如 HTML 标签或属性)也来自“不受信任”的来源。例如,数据库里取出的文本中包含有 <code>&lt;em></code>、<code>&lt;a></code> 等标签,并且想要它们被当做 HTML 标记解释运行,而不是原样显示。又例如,允许用户或者“不受信任”的来源提供 HTML 模板,用于定义布局与样式,继而和数据结合形成最终可被渲染的 HTML 传给 ECharts 。</p> <p>这些场景需要承受相对更高的安全风险,可通过净化(sanitization)机制缓解。净化器(sanitizer)一般基于白名单过滤 HTML 内容,例如移除所有 <code>&lt;script></code>、<code>&lt;style></code>、<code>&lt;link></code>、内联 CSS、事件属性(如 <code>onclick</code>)以及 <code>javascript:</code>/<code>data:</code> 协议的 URL。推荐使用维护良好、社区广泛采用的库,而非用自己写的正则或字符串处理来做这件事。</p> <p>净化可在前端(指 client)、后端(指 server)或两者同时进行,取决于实际场景和安全需求。例如,对于生成于前端的内容(例如前端提交给后端的内容),仅依赖前端净化不够,攻击者可直接伪造请求绕过前端。比如,一个在线编辑器允许用户以所见即所得(WYSIWYG)的方式创建内容,其中,用户可选择使用内置的几个 HTML 模板或 JS 函数(如 <a href="https://echarts.apache.org/option.html#tooltip.formatter">tooltip.formatter</a> 或 <a href="https://echarts.apache.org/option.html#series-scatter.label.formatter">label.formatter</a>)。如果这些选好的或者生成的 HTML 文本或 JS 函数文本被传输到后端,并且不做处理直接存于数据库,则攻击者可在这个阶段注入恶意代码。后续它们被从数据库中取出,并传给 <code>chart.setOption()</code> 时,恶意代码会被执行。所以建议在这类场景中:</p> <ul><li>仅存储内置模板/函数的引用 ID,而不存储原始代码。</li> <li>若为了更高的定制能力而允许自定义模板,则可考虑是否引入安全的第三方模板引擎,从而避免注入。</li> <li>若必须允许用户自定义 HTML,须要严格的后端净化(sanitization)或校验(如过滤掉所有 JS、CSS 和其他可能有安全隐患的内容),并依据实际情况考虑是否在沙盒中渲染以降低潜在的风险。</li></ul> <p>通过净化达到足够的安全性有时并不容易。它需要有仔细和合理的配置,并不断随着浏览器/客户端更新,并常需结合其他防御机制从而达到“绝大多数情况下足够安全”。HTML 在能力上本身非常复杂和多变,在“不受信任”的内容上支持的功能越丰富,可攻击的渠道就越多。</p> <h3 id="passing_raw_html_sandboxing" tabindex="-1">沙盒</h3> <p>若必须执行“不受信任”的代码,或其他措施扔不足以达到足够的安全性,可使用“沙盒 iframe”(sandboxed iframe)进行隔离,提供相对更高安全防护,如 JSFiddle、CodePen 等代码执行平台所采用的机制。</p> <h2 id="passing_inline_css_safely" tabindex="-1">传入内联 CSS 时的安全考虑</h2> <p>HTML 的安全(见 <a href="zh/best-practices/security#passing_raw_html_safely">“传入 HTML 时的安全考虑”</a> 一节)已经包括了 CSS 相关安全问题,而本节主要讨论那些仅接受内联 CSS 字符串的 API(即通过 <code>.style.cssText =</code> 修改 <code>style</code> 属性的情形)。在 <a href="zh/best-practices/security#security_model_and_checklist">“安全模型与检查清单”</a> 一节中列出了这些 API。</p> <p>若内联 CSS 完全来自“可信任”的来源(例如应用自身),则几乎无需担心安全问题,这也是最常见的情况。</p> <p>否则,“不受信任”的 CSS 可能有安全隐患。一些 HTML 净化库支持 CSS 净化(CSS sanitization),但默认行为可能是删除所有 CSS,毕竟做到理想的 CSS 净化难度很大。因此,若必须运行“不受信任”的 CSS,应结合具体场景谨慎评估实现方式。</p> <h2 id="passing_raw_urls_safely" tabindex="-1">传入 URL 时的安全考虑</h2> <p>HTML 的安全(见 <a href="zh/best-practices/security#passing_raw_html_safely">“传入 HTML 时的安全考虑”</a> 一节)已经包括了 URL 相关安全问题,而本节专门针对那些仅接受 URL 输入的 API。在 <a href="zh/best-practices/security#security_model_and_checklist">“安全模型与检查清单”</a> 一节中列出了这些 API。</p> <p>若 URL 完全来自“可信任”的来源(例如应用自身),则几乎无需担心安全问题。</p> <p>否则,“不受信任”的 URL 可能有安全问题,例如利用 <code>javascript:</code> 或 <code>data:</code> 协议执行恶意代码。因此,在传入 ECharts 前,应进行校验或净化,通常会依据白名单仅允许安全的协议。</p> <h2 id="passing_download_filename_safely" tabindex="-1">传入下载文件名时的安全考虑</h2> <p>目前,仅 <a href="https://echarts.apache.org/option.html#toolbox.feature.saveAsImage">SaveAsImage</a> 功能需要传入文件名。若该输入来自“可信任”的来源、长度合规且仅包含 ASCII 字母数字(可含<code>-</code>、<code>_</code>、<code>.</code>),则安全。</p> <p>否则,虽然现代浏览器已显著改进了文件名的自动转义和净化处理(如去除 <code>../</code> 之类试图访问上级目录的路径、正确处理特殊字符等),但也存在一些风险,例如不同系统对保留字符的处理有差异,长度限制也不同。此外,旧浏览器或客户端的行为不够明确且不足够可信赖。因此,对这些“不受信任”的文件名仍应在输入前净化处理。</p> <h2 id="passing_js_function_safely" tabindex="-1">传入 JS 函数时的安全考虑</h2> <p>ECharts 的 <code>option</code>(即 <a href="https://echarts.apache.org/api.html#echartsInstance.setOption">chart.setOption()</a> 的输入)主要是声明式的,但部分 option 可接受 JS 函数(回调)输入以增强表达能力和灵活性,如 <a href="https://echarts.apache.org/option.html#series-scatter.label.formatter">label.formatter</a>、<a href="https://echarts.apache.org/option.html#xAxis.axisTick.interval">axisTick.interval</a> 等。在大多数情况下,这些函数是 app 源代码的一部分于是完全可信任,因此不会引入风险。</p> <p>但若某些产品允许这些 JS 函数来自于“不受信任”的来源,如用户提供函数,则风险与维护成本显著增加。这种场景实质上与执行“不受信任”的 HTML 代码风险相当,可参考 <a href="zh/best-practices/security#passing_raw_html_safely">“传入 HTML 时的安全考虑”</a> 中的讨论。</p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">本文贡献者</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/zh/best-practices/security.md" title="编辑本文" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">在 GitHub 上编辑本页</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/100pah" target="_blank" class="post-contributor has-avatar"><img alt="100pah" src="https://echarts.apache.org/en/images/people/宿爽.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>100pah</span></a><a href="https://github.com/plainheart" target="_blank" class="post-contributor has-avatar"><img alt="plainheart" src="https://echarts.apache.org/en/images/people/plainheart.jpg" loading="lazy" decoding="async" fetchpriority="low"> <span>plainheart</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,e,i,r,a,o,d,n,l,s,h,c,p,g,m,f,b,u,S,C,_,L,I,y,T,x,M,v,H,w,A,k,P,z,E,J,B,V,Y,W,D,j,G,R,U,O,F,X,Z,q,K,N,Q,$,tt,et,it,rt,at,ot,dt,nt,lt){return{layout:"default",data:[{html:'<h1 id="%E5%AE%89%E5%85%A8%E6%8C%87%E5%8D%97" tabindex="-1">安全指南</h1>\n<h2 id="%E6%A6%82%E8%BF%B0" tabindex="-1">概述</h2>\n<p>ECharts 旨在提供丰富而灵活的可视化能力。虽然其绝大多数 API 不需要额外的安全考虑,但有几个例外。例如,<code>tooltip.formatter</code> 允许输入 HTML 字符串,从而完全控制组件的内容与布局;<code>title.link</code> 直接使用输入的 URL 字符串而不进行自动的净化处理(sanitization)。这种灵活性虽然强大,但当输入来自“不受信任”的来源时,可能带来安全风险。本文档列出了这些 API,并提供了如何安全使用这些特性的建议。</p>\n<p>任何潜在安全问题,可依照 <a href="https://echarts.apache.org/zh/security.html">ASF 安全</a> 中的渠道进行报告。</p>\n<p>注:本文档面向 ECharts API 调用者。而另有一文档 <a href="https://github.com/apache/echarts/wiki/Security-Checklist-for-Code-Contributors">代码贡献者的安全检查清单</a> 用于 ECharts 贡献者提交 Pull Request 前的检查,并非面向 ECharts API 调用者,但如有兴趣也可参阅。</p>\n<h2 id="security_model_and_checklist" tabindex="-1">安全模型与检查清单</h2>\n<p>ECharts 专注于可视化逻辑,一般假定输入内容都是来自“可信任”的来源,不会自动对输入进行净化(sanitization)处理。这和多数前端 UI 库的原则类似。其实 ECharts 自身也不知如何合适地对“不受信任”的内容做净化处理,因为不知哪些输入是“不受信任”的,且不存在适用于所有使用场景的通用净化规则。然而,ECharts 应该明确哪些 API(尤其是 ECharts options)在哪些场景下须在输入前进行安全相关的处理或考量。由于 ECharts options 数量庞大,对所有输入在任何场景下都进行安全处理不现实也无必要。</p>\n<p>ECharts 通过 Canvas 或 SVG 渲染,只有几个特殊组件例外,允许 HTML 渲染(例如,<a href="https://echarts.apache.org/option.html#tooltip">tooltip</a> 和 <a href="https://echarts.apache.org/option.html#toolbox.feature.dataView">dataView</a>)。ECharts API 的输入可被分类为“JS 函数”或者“非 JS 函数”。“JS 函数输入”本意就须允许执行。而大多数“非 JS 函数输入”(例如仅用于渲染的纯文本)并无被执行的可能,因此通常无需防范恶意代码注入。然而例外是,某些 API 允许在页面中嵌入不安全内容(如 HTML 或 URL 文本)。这些 API 能带来丰富的定制能力,但当输入来自“不受信任”的来源时,容易遭受 XSS (跨站脚本攻击)或相关攻击。</p>\n<p><strong>一般而言,如果输入的内容都是可被信任的,就不会出现这些注入漏洞。</strong>\n“不受信任”(untrusted)的内容指,内容来自于无法完全控制的来源,或者内容可能被用户或外部系统修改或注入。开发者应该总是假定直接在 HTML、CSS、JS 中使用这些内容会不安全。例如,用户生成的数据或来自浏览器/客户端的输入都应被认为是“不受信任”的。但在许多情况下,处理用户生成的内容不可避免。例如,从数据库获取用户生成的数据,并组装成 HTML 输入 <code>tooltip.formatter</code> 来渲染。于是须要额外处理保正渲染正确和安全,通常首先依靠 HTML 转义(HTML escaping);但如果无法被转义的部分也来自“不受信任”的来源,则需要净化处理(sanitization)。</p>\n<p>在部署图表之前,请根据以下<strong>检查清单</strong>确认使用是否安全:</p>\n<table>\n<thead>\n<tr>\n<th>APIs</th>\n<th>潜在风险与建议</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>option <a href="https://echarts.apache.org/option.html#tooltip.formatter">tooltip.formatter</a></strong><br>· <code>formatter</code> 允许 HTML 文本或 DOM 元素传入,并后续直接渲染到 tooltip 内部,于是需要考虑 XSS 风险。<br>(例外):如果 <code>formatter</code> 被直接设置成一个字符串,则认为是一个内部实现的简单模版,后续能内部填入数据。<a href="https://echarts.apache.org/option.html#tooltip.renderMode">tooltip.renderMode: \'richText\'</a> 是另一种内部实现的模版,用于定制样式。他们都不涉及 HTML,从而安全。<br><br><strong>option <a href="https://echarts.apache.org/option.html#toolbox.feature.dataView.optionToContent">toolbox.feature.dataView.optionToContent</a></strong><br><strong>option <a href="https://echarts.apache.org/option.html#toolbox.feature.dataView.title">toolbox.feature.dataView.title</a></strong><br><strong>option <a href="https://echarts.apache.org/option.html#toolbox.feature.dataView.lang">toolbox.feature.dataView.lang</a></strong><br>· <code>tooltip.dataView</code> 面板完全以 HTML 渲染,这些 API 可自定义 HTML 文本中的部分内容,于是需要考虑 XSS 风险。</td>\n<td>需要考虑 XSS 风险。一般情况下,仅需 HTML 转义即可。但如果一些不能转义的部分来自“不受信任”的来源,则须更多处理(如净化处理(sanitization)或沙盒隔离)。<br><br>详细描述见 <a href="zh/best-practices/security#passing_raw_html_safely">“传入 HTML 时的安全考虑”</a>。</td>\n</tr>\n<tr>\n<td><strong>option <a href="https://echarts.apache.org/option.html#tooltip.extraCssText">tooltip.extraCssText</a></strong><br>· <code>extraCssText</code> 接受一个原始 CSS style 字符串,并接下来直接拼接进 <code>tooltipEl.style.cssText</code>。<br>(例外):<a href="https://echarts.apache.org/option.html#tooltip.renderMode">tooltip.renderMode: \'richText\'</a> 时此 <code>extraCssText</code> 无效。</td>\n<td>若输入来自可信来源,则一般无安全问题,否则需要仔细评估风险。<br><br>详细描述见 <a href="zh/best-practices/security#passing_inline_css_safely">“传入内联 CSS 时的安全考虑”</a>。</td>\n</tr>\n<tr>\n<td><strong>option <a href="https://echarts.apache.org/option.html#title.link">title.link</a></strong><br><strong>option <a href="https://echarts.apache.org/option.html#title.sublink">title.sublink</a></strong><br><strong>option <a href="https://echarts.apache.org/option.html#series-treemap.data.link">series-treemap.data.link</a></strong><br><strong>option <a href="https://echarts.apache.org/option.html#series-sunburst.data.link">series-sunburst.data.link</a></strong><br>· 这些 option 直接接受原始 URL 字符串。</td>\n<td>若若输入来自可信来源,则一般无安全问题,否则须要考虑 XSS 风险。<br><br>详细描述见 <a href="zh/best-practices/security#passing_raw_urls_safely">&quot;传入 URL 时的安全考虑&quot;</a>。</td>\n</tr>\n<tr>\n<td><strong>option <a href="https://echarts.apache.org/option.html#toolbox.feature.saveAsImage.name">toolbox.feature.saveAsImage.name</a></strong><br><strong>option <a href="https://echarts.apache.org/option.html#toolbox.feature.saveAsImage.type">toolbox.feature.saveAsImage.type</a></strong><br><strong>option <a href="https://echarts.apache.org/option.html#title.text">title[0].text</a></strong><br>· <code>saveAsImage</code> 功能的下载文件名由 <code>{name}.{type}</code> 拼装而成,并未做额外校验或净化(sanitization)处理。如果 <code>name</code> 没有指定,则使用 <code>title[0].text</code> 替代,尽管这种用法并不推荐。</td>\n<td>详细描述见 <a href="zh/best-practices/security#passing_download_filename_safely">“传入下载文件名时的安全考虑”</a>。</td>\n</tr>\n<tr>\n<td>所有“JS 函数”输入(回调)</td>\n<td>通常无安全问题,除非存在特殊使用场景(例如需要执行不可信来源的函数)。<br><br>详细描述见 <a href="zh/best-practices/security#passing_js_function_safely">“传入 JS 函数时的安全考虑”</a>。</td>\n</tr>\n</tbody>\n</table>\n<h2 id="passing_raw_html_safely" tabindex="-1">传入 HTML 时的安全考虑</h2>\n<p>在 <a href="zh/best-practices/security#security_model_and_checklist">“安全模型与检查清单”</a> 一节中已列出会接受原始 HTML 的 API。“不受信任”的 HTML 可能导致 XSS 等攻击,因此在传入 ECharts 前应进行处理。常见的处理方式包括 <strong>HTML 转义(HTML Escaping)</strong>、<strong>净化(Sanitization)</strong>、<strong>沙盒</strong>。大多数情况下,仅进行 HTML 转义即可,除非那些不能被转义的部分来自于“不受信任”的来源。</p>\n<h3 id="passing_raw_html_safely_html_escaping" tabindex="-1">HTML 转义(HTML Escaping)</h3>\n<p>数据组装成 HTML 字符串前总需要进行 HTML 转义。这不仅是安全需要,也是正确显示的前提。</p>\n<p>最简单和常见的 HTML 转义是这些字符串转换:</p>\n<pre><code>\'&amp;\' =&gt; \'&amp;amp;\'\n\'&lt;\' =&gt; \'&amp;lt;\'\n\'&gt;\' =&gt; \'&amp;gt;\'\n\'&quot;\' =&gt; \'&amp;quot;\'\n&quot;\'&quot; =&gt; \'&amp;#39;\n</code></pre>\n<p>转换后,这些字符的功能被去除了,只能显示,从而也无法通过他们进行注入攻击(如 <code>&lt;script&gt;...&lt;/script&gt;</code>)。</p>\n<p>例如:\n<md-code-block lang="js" code="\'Ly8g5Yqf6IO95LiN5q2j56Gu5Lmf5LiN5a6J5YWo44CCCmZvcm1hdHRlcjogcGFyYW1zID0-IHsKICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IHBhcmFtczsKICAgIC8vIOWmguaenCBuYW1lIOaIliB2YWx1ZSDkuK3lkKvmnInlip_og73mgKflrZfnrKbvvIzlpoIgJzwnICc-JyDnrYnvvIzliJnlj6_og73muLLmn5PkuI3mraPnoa7jgIIKICAgIC8vIOWQjOaXtu-8jOWmguaenCBuYW1lIOaIliB2YWx1ZSDnmoTlgLzmnaXoh6rkuo7igJzpnZ7lj5fkv6Hku7vigJ3nmoTmnaXmupDvvIzliJnlj6_og73ooqvms6jlhaXmgbbmhI_ku6PnoIHlubbov5DooYzjgIIKICAgIHJldHVybiBgJHtuYW1lfSwgPGI-JHt2YWx1ZX08Yi8-YDsKfQovLyDlip_og73mraPnoa7kuJTlronlhajjgIIKZm9ybWF0dGVyOiBwYXJhbXMgPT4gewogICAgY29uc3QgeyBuYW1lLCB2YWx1ZSB9ID0gcGFyYW1zOwogICAgcmV0dXJuIGAke2VjaGFydHMuZm9ybWF0LmVuY29kZUhUTUwobmFtZSl9LCA8Yj4ke2VjaGFydHMuZm9ybWF0LmVuY29kZUhUTUwodmFsdWUpfTwvYj5gOwp9\'" line-highlights="\'\'" /></p>\n<p>使用 DOM API(如 <code>.textContent = </code>)也能实现转义。</p>\n<p>在大多数场景中,“不受信任”的内容(如用户输入的文本)仅用于显示,而有功能的部分(如 HTML 标签或属性)完全由应用开发者控制且可信。在这种情况下,HTML 转义本身就足以防御 XSS,只要所有“不受信任”的内容都被正确转义。</p>\n<h3 id="passing_raw_html_safely_sanitization" tabindex="-1">净化(Sanitization)</h3>\n<p>有些场景中,需要有功能的部分(如 HTML 标签或属性)也来自“不受信任”的来源。例如,数据库里取出的文本中包含有 <code>&lt;em&gt;</code>、<code>&lt;a&gt;</code> 等标签,并且想要它们被当做 HTML 标记解释运行,而不是原样显示。又例如,允许用户或者“不受信任”的来源提供 HTML 模板,用于定义布局与样式,继而和数据结合形成最终可被渲染的 HTML 传给 ECharts 。</p>\n<p>这些场景需要承受相对更高的安全风险,可通过净化(sanitization)机制缓解。净化器(sanitizer)一般基于白名单过滤 HTML 内容,例如移除所有 <code>&lt;script&gt;</code>、<code>&lt;style&gt;</code>、<code>&lt;link&gt;</code>、内联 CSS、事件属性(如 <code>onclick</code>)以及 <code>javascript:</code>/<code>data:</code> 协议的 URL。推荐使用维护良好、社区广泛采用的库,而非用自己写的正则或字符串处理来做这件事。</p>\n<p>净化可在前端(指 client)、后端(指 server)或两者同时进行,取决于实际场景和安全需求。例如,对于生成于前端的内容(例如前端提交给后端的内容),仅依赖前端净化不够,攻击者可直接伪造请求绕过前端。比如,一个在线编辑器允许用户以所见即所得(WYSIWYG)的方式创建内容,其中,用户可选择使用内置的几个 HTML 模板或 JS 函数(如 <a href="https://echarts.apache.org/option.html#tooltip.formatter">tooltip.formatter</a> 或 <a href="https://echarts.apache.org/option.html#series-scatter.label.formatter">label.formatter</a>)。如果这些选好的或者生成的 HTML 文本或 JS 函数文本被传输到后端,并且不做处理直接存于数据库,则攻击者可在这个阶段注入恶意代码。后续它们被从数据库中取出,并传给 <code>chart.setOption()</code> 时,恶意代码会被执行。所以建议在这类场景中:</p>\n<ul>\n<li>仅存储内置模板/函数的引用 ID,而不存储原始代码。</li>\n<li>若为了更高的定制能力而允许自定义模板,则可考虑是否引入安全的第三方模板引擎,从而避免注入。</li>\n<li>若必须允许用户自定义 HTML,须要严格的后端净化(sanitization)或校验(如过滤掉所有 JS、CSS 和其他可能有安全隐患的内容),并依据实际情况考虑是否在沙盒中渲染以降低潜在的风险。</li>\n</ul>\n<p>通过净化达到足够的安全性有时并不容易。它需要有仔细和合理的配置,并不断随着浏览器/客户端更新,并常需结合其他防御机制从而达到“绝大多数情况下足够安全”。HTML 在能力上本身非常复杂和多变,在“不受信任”的内容上支持的功能越丰富,可攻击的渠道就越多。</p>\n<h3 id="passing_raw_html_sandboxing" tabindex="-1">沙盒</h3>\n<p>若必须执行“不受信任”的代码,或其他措施扔不足以达到足够的安全性,可使用“沙盒 iframe”(sandboxed iframe)进行隔离,提供相对更高安全防护,如 JSFiddle、CodePen 等代码执行平台所采用的机制。</p>\n<h2 id="passing_inline_css_safely" tabindex="-1">传入内联 CSS 时的安全考虑</h2>\n<p>HTML 的安全(见 <a href="zh/best-practices/security#passing_raw_html_safely">“传入 HTML 时的安全考虑”</a> 一节)已经包括了 CSS 相关安全问题,而本节主要讨论那些仅接受内联 CSS 字符串的 API(即通过 <code>.style.cssText =</code> 修改 <code>style</code> 属性的情形)。在 <a href="zh/best-practices/security#security_model_and_checklist">“安全模型与检查清单”</a> 一节中列出了这些 API。</p>\n<p>若内联 CSS 完全来自“可信任”的来源(例如应用自身),则几乎无需担心安全问题,这也是最常见的情况。</p>\n<p>否则,“不受信任”的 CSS 可能有安全隐患。一些 HTML 净化库支持 CSS 净化(CSS sanitization),但默认行为可能是删除所有 CSS,毕竟做到理想的 CSS 净化难度很大。因此,若必须运行“不受信任”的 CSS,应结合具体场景谨慎评估实现方式。</p>\n<h2 id="passing_raw_urls_safely" tabindex="-1">传入 URL 时的安全考虑</h2>\n<p>HTML 的安全(见 <a href="zh/best-practices/security#passing_raw_html_safely">“传入 HTML 时的安全考虑”</a> 一节)已经包括了 URL 相关安全问题,而本节专门针对那些仅接受 URL 输入的 API。在 <a href="zh/best-practices/security#security_model_and_checklist">“安全模型与检查清单”</a> 一节中列出了这些 API。</p>\n<p>若 URL 完全来自“可信任”的来源(例如应用自身),则几乎无需担心安全问题。</p>\n<p>否则,“不受信任”的 URL 可能有安全问题,例如利用 <code>javascript:</code> 或 <code>data:</code> 协议执行恶意代码。因此,在传入 ECharts 前,应进行校验或净化,通常会依据白名单仅允许安全的协议。</p>\n<h2 id="passing_download_filename_safely" tabindex="-1">传入下载文件名时的安全考虑</h2>\n<p>目前,仅 <a href="https://echarts.apache.org/option.html#toolbox.feature.saveAsImage">SaveAsImage</a> 功能需要传入文件名。若该输入来自“可信任”的来源、长度合规且仅包含 ASCII 字母数字(可含<code>-</code>、<code>_</code>、<code>.</code>),则安全。</p>\n<p>否则,虽然现代浏览器已显著改进了文件名的自动转义和净化处理(如去除 <code>../</code> 之类试图访问上级目录的路径、正确处理特殊字符等),但也存在一些风险,例如不同系统对保留字符的处理有差异,长度限制也不同。此外,旧浏览器或客户端的行为不够明确且不足够可信赖。因此,对这些“不受信任”的文件名仍应在输入前净化处理。</p>\n<h2 id="passing_js_function_safely" tabindex="-1">传入 JS 函数时的安全考虑</h2>\n<p>ECharts 的 <code>option</code>(即 <a href="https://echarts.apache.org/api.html#echartsInstance.setOption">chart.setOption()</a> 的输入)主要是声明式的,但部分 option 可接受 JS 函数(回调)输入以增强表达能力和灵活性,如 <a href="https://echarts.apache.org/option.html#series-scatter.label.formatter">label.formatter</a>、<a href="https://echarts.apache.org/option.html#xAxis.axisTick.interval">axisTick.interval</a> 等。在大多数情况下,这些函数是 app 源代码的一部分于是完全可信任,因此不会引入风险。</p>\n<p>但若某些产品允许这些 JS 函数来自于“不受信任”的来源,如用户提供函数,则风险与维护成本显著增加。这种场景实质上与执行“不受信任”的 HTML 代码风险相当,可参考 <a href="zh/best-practices/security#passing_raw_html_safely">“传入 HTML 时的安全考虑”</a> 中的讨论。</p>\n',postPath:"zh/best-practices/security",title:"安全指南 - 最佳实践"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:r},{title:"入门篇",dir:a,children:[{title:"获取 ECharts",dir:o},{title:"在项目中引入 ECharts",dir:d},{title:"资源列表",dir:n,draft:t},{title:"寻求帮助",dir:l},{title:"版本特性",dir:s,children:[{title:"ECharts 6 特性介绍",dir:h},{title:"v5 升级 v6 指南",dir:c},{title:"5.0",dir:p},{title:"v4 升级 v5 指南",dir:g},{title:5.2,dir:m},{title:5.3,dir:f},{title:5.4,dir:b},{title:5.5,dir:u},{title:5.6,dir:S}]}]},{title:"概念篇",dir:C,children:[{title:"图表容器及大小",dir:_},{title:"配置项",dir:L,draft:t},{title:"系列",dir:I,draft:t},{title:"样式",dir:y},{title:"数据集",dir:T},{title:"数据转换",dir:x},{title:"坐标系",dir:M,draft:t},{title:"坐标轴",dir:v},{title:"视觉映射",dir:i},{title:"图例",dir:H},{title:"事件与行为",dir:w}]},{title:"应用篇",dir:A,children:[{title:"常用图表类型",dir:k,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:P},{title:"堆叠柱状图",dir:z},{title:"动态排序柱状图",dir:E},{title:"极坐标系柱状图",dir:J,draft:t},{title:"阶梯瀑布图",dir:B},{title:"视觉映射的柱状图",dir:i,draft:t}]},{title:"折线图",dir:V,children:[{title:"基础折线图",dir:Y},{title:"堆叠折线图",dir:W},{title:"区域面积图",dir:D},{title:"平滑曲线图",dir:j},{title:"阶梯线图",dir:G}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:R},{title:"圆环图",dir:U},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:O,children:[{title:"基础散点图",dir:F}]}]},{title:"常用组件",dir:X,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:Z}]}]},{title:"移动端优化",dir:e,draft:t},{title:"跨平台方案",dir:q,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:K},{title:"数据下钻",dir:N,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:Q}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:et,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:it,draft:t},{title:"智能指针吸附",dir:rt}]}]},{title:"最佳实践",dir:at,children:[{title:"移动端优化",dir:e,draft:t},{title:ot,dir:dt},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:nt}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:lt}]}],en:[{title:"Get Started",dir:r},{title:"Basics",dir:a,children:[{title:"Download ECharts",dir:o},{title:"Import ECharts",dir:d},{title:"Resources",dir:n,draft:t},{title:"Get Help",dir:l},{title:"What's New",dir:s,children:[{title:"ECharts 6 Features",dir:h},{title:"Migration from v5 to v6",dir:c},{title:"5.0",dir:p},{title:"Migration from v4 to v5",dir:g},{title:5.2,dir:m},{title:5.3,dir:f},{title:5.4,dir:b},{title:5.5,dir:u},{title:5.6,dir:S}]}]},{title:"Concepts",dir:C,children:[{title:"Chart Container",dir:_},{title:"Chart Option",dir:L,draft:t},{title:"Series",dir:I,draft:t},{title:"Style",dir:y},{title:"Dataset",dir:T},{title:"Data Transform",dir:x},{title:"Coordinate",dir:M,draft:t},{title:"Axis",dir:v},{title:"Visual Mapping",dir:i},{title:"Legend",dir:H},{title:"Event and Action",dir:w}]},{title:"How To Guides",dir:A,children:[{title:"Common Charts",dir:k,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:P},{title:"Stacked Bar",dir:z},{title:"Bar Racing",dir:E},{title:"Bar Polar",dir:J,draft:t},{title:"Waterfall",dir:B}]},{title:"Line",dir:V,children:[{title:"Basic Line",dir:Y},{title:"Stacked Line",dir:W},{title:"Area Chart",dir:D},{title:"Smoothed Line",dir:j},{title:"Step Line",dir:G}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:R},{title:"Ring Style",dir:U},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:O,children:[{title:"Basic Scatter",dir:F}]}]},{title:"Common Components",dir:X,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:Z}]}]},{title:"Mobile",dir:e,draft:t},{title:"Cross Platform",dir:q,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:K},{title:"Drilldown",dir:N,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:Q}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:et,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:it,draft:t},{title:"Intelligent Pointer Snapping",dir:rt}]}]},{title:"Best Practices",dir:at,children:[{title:"Mobile Optimization",dir:e,draft:t},{title:ot,dir:dt},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:nt}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:lt}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/zh/best-practices/security",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/zh/concepts/axis/index.html b/docs/zh/concepts/axis/index.html
new file mode 100644
index 0000000..fe1fc5a
--- /dev/null
+++ b/docs/zh/concepts/axis/index.html
@@ -0,0 +1,281 @@
+<!doctype html>
+<html data-n-head-ssr lang="zh-CN" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh-CN%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>坐标轴 - 概念篇 - 使用手册 - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="zh"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/zh/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/zh/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/zh/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/zh/index.html" class="navbar-brand"><img src="https://echarts.apache.org/zh/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/zh/index.html">首页</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">文档<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/feature.html">特性</a></li><li><a href="https://echarts.apache.org/handbook/zh/get-started/">使用手册</a></li><li><a href="https://echarts.apache.org/zh/api.html">API</a></li><li><a href="https://echarts.apache.org/zh/option.html">配置项手册</a></li><li><a href="https://echarts.apache.org/zh/changelog.html">版本记录</a></li><li><a href="https://echarts.apache.org/zh/faq.html">常见问题</a></li><li><a href="https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide">v6 升级指南</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">下载<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/download.html">下载</a></li><li><a href="https://echarts.apache.org/zh/download-theme.html">主题下载</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">自定义系列下载<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/download-extension.html">扩展下载</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/zh/index.html">示例</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">资源<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/spreadsheet.html">表格工具</a></li><li><a href="https://echarts.apache.org/zh/theme-builder.html">主题构建工具</a></li><li><a href="https://echarts.apache.org/zh/cheat-sheet.html">术语速查手册</a></li><li><a href="https://echarts.apache.org/zh/resources.html">更多资源</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">社区<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/events.html">活动</a></li><li><a href="https://echarts.apache.org/zh/committers.html">贡献者列表</a></li><li><a href="https://echarts.apache.org/zh/maillist.html">邮件列表</a></li><li><a href="https://echarts.apache.org/zh/contributing.html">如何贡献</a></li><li><a href="https://echarts.apache.org/zh/dependencies.html">依赖项</a></li><li><a href="https://echarts.apache.org/zh/coding-standard.html">代码规范</a></li><li><a href="https://github.com/apache/echarts" target="_blank">源码(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/security.html">安全</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">版权<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">活动<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">捐赠<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">鸣谢<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("en")'>EN</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/zh/get-started" class="nav-link"><span class="title">快速上手</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">入门篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/basics/download" class="nav-link"><span class="title">获取 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/import" class="nav-link"><span class="title">在项目中引入 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/basics/help" class="nav-link"><span class="title">寻求帮助</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">版本特性</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 特性介绍</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">v5 升级 v6 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">v4 升级 v5 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">概念篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/concepts/chart-size" class="nav-link"><span class="title">图表容器及大小</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/style" class="nav-link"><span class="title">样式</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/dataset" class="nav-link"><span class="title">数据集</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/data-transform" class="nav-link"><span class="title">数据转换</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/axis" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">坐标轴</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/visual-map" class="nav-link"><span class="title">视觉映射</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/legend" class="nav-link"><span class="title">图例</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/event" class="nav-link"><span class="title">事件与行为</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">应用篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">常用图表类型</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">柱状图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">基础柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">堆叠柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">动态排序柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">阶梯瀑布图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">折线图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">基础折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">堆叠折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/area-line" class="nav-link"><span class="title">区域面积图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">平滑曲线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/step-line" class="nav-link"><span class="title">阶梯线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">饼图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">基础饼图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">圆环图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/rose" class="nav-link"><span class="title">南丁格尔图(玫瑰图)</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">散点图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">基础散点图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">常用组件</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">地理坐标系(Geo)</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG 底图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">跨平台方案</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/server" class="nav-link"><span class="title">服务端渲染</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/wechat-app" class="nav-link"><span class="title">微信小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/baidu-app" class="nav-link"><span class="title">百度智能小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">数据处理</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/data/dynamic-data" class="nav-link"><span class="title">动态的异步数据</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">标签</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/label/rich-text" class="nav-link"><span class="title">富文本标签</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">动画</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/animation/transition" class="nav-link"><span class="title">数据过渡动画</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">交互</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/drag" class="nav-link"><span class="title">拖拽的实现</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">智能指针吸附</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">最佳实践</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/aria" class="nav-link"><span class="title">无障碍访问</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/security" class="nav-link"><span class="title">安全指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">编辑本文档</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/meta/edit-guide" class="nav-link"><span class="title">文档编辑指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="%E5%9D%90%E6%A0%87%E8%BD%B4" tabindex="-1">坐标轴</h1> <p>直角坐标系中的 x/y 轴。</p> <h2 id="x-%E8%BD%B4%E3%80%81y-%E8%BD%B4" tabindex="-1">x 轴、y 轴</h2> <p>x 轴和 y 轴都由轴线、刻度、刻度标签、轴标题四个部分组成。部分图表中还会有网格线来帮助查看和计算数据</p> <img max-width="830" width="100%" height="100%" src="images/design/axis/charts_axis_img02.jpg"> <p>普通的二维数据坐标系都有 x 轴和 y 轴,通常情况下,x 轴显示在图表的底部,y 轴显示在左侧,一般配置如下:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token comment">// ...</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token comment">// ...</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>x 轴常用来标示数据的维度,维度一般用来指数据的类别,是观察数据的角度,例如“销售时间” “销售地点” “产品名称”等。y 轴常常用来标示数据的数值,数值是用来具体考察某一类数据的数量值,也是我们需要分析的指标,例如“销售数量”和“销售金额”等。</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'time'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'销售时间'</span>
+    <span class="token comment">// ...</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'value'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'销售数量'</span>
+    <span class="token comment">// ...</span>
+  <span class="token punctuation">}</span>
+  <span class="token comment">// ...</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>当 x 轴(水平坐标轴)跨度很大,可以采用区域缩放方式灵活显示数据内容。</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'time'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'销售时间'</span>
+    <span class="token comment">// ...</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'value'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'销售数量'</span>
+    <span class="token comment">// ...</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">dataZoom</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token comment">// ...</span>
+  <span class="token punctuation">]</span>
+  <span class="token comment">// ...</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>在二维数据中,轴也可以有多个。ECharts 中一般情况下单个 grid 组件最多只能放两个 x/y 轴,多于两个 x/y 轴需要通过配置 <a href="https://echarts.apache.org/option.html#xAxis.offset">offset</a> 属性防止同个位置多个轴的重叠。两个 x 轴显示在上下,两个 y 轴显示在左右两侧。</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'time'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'销售时间'</span>
+    <span class="token comment">// ...</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'value'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'销售数量'</span>
+      <span class="token comment">// ...</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'value'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'销售金额'</span>
+      <span class="token comment">// ...</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+  <span class="token comment">// ...</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="%E8%BD%B4%E7%BA%BF" tabindex="-1">轴线</h2> <p>ECharts 提供了轴线 <a href="https://echarts.apache.org/option.html#xAxis.axisLine">axisLine</a> 相关的配置,我们可以根据实际情况调整,例如轴线两端的箭头,轴线的样式等。</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">axisLine</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">symbol</span><span class="token operator">:</span> <span class="token string">'arrow'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">lineStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'dashed'</span>
+        <span class="token comment">// ...</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+    <span class="token comment">// ...</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">axisLine</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">symbol</span><span class="token operator">:</span> <span class="token string">'arrow'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">lineStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'dashed'</span>
+        <span class="token comment">// ...</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span>
+  <span class="token comment">// ...</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="%E5%88%BB%E5%BA%A6" tabindex="-1">刻度</h2> <p>ECharts 提供了轴线 <a href="https://echarts.apache.org/option.html#xAxis.axisTick">axisTick</a> 相关的配置,我们可以根据实际情况调整,例如刻度线的长度,样式等。</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">axisTick</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">length</span><span class="token operator">:</span> <span class="token number">6</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">lineStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'dashed'</span>
+        <span class="token comment">// ...</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+    <span class="token comment">// ...</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">axisTick</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">length</span><span class="token operator">:</span> <span class="token number">6</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">lineStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'dashed'</span>
+        <span class="token comment">// ...</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span>
+  <span class="token comment">// ...</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="%E5%88%BB%E5%BA%A6%E6%A0%87%E7%AD%BE" tabindex="-1">刻度标签</h2> <p>ECharts 提供了轴线 <a href="https://echarts.apache.org/option.html#xAxis.axisLabel">axisLabel</a> 相关的配置,我们可以根据实际情况调整,例如文字对齐方式,自定义刻度标签内容等。</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">axisLabel</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">formatter</span><span class="token operator">:</span> <span class="token string">'{value} kg'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">align</span><span class="token operator">:</span> <span class="token string">'center'</span>
+      <span class="token comment">// ...</span>
+    <span class="token punctuation">}</span>
+    <span class="token comment">// ...</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">axisLabel</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">formatter</span><span class="token operator">:</span> <span class="token string">'{value} 元'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">align</span><span class="token operator">:</span> <span class="token string">'center'</span>
+      <span class="token comment">// ...</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span>
+  <span class="token comment">// ...</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="%E7%A4%BA%E4%BE%8B" tabindex="-1">示例</h2> <p>图左侧的 y 轴代表东京月平均气温,右侧的 y 轴表示东京降水量,x 轴表示时间。两组 y 轴在一起,反映了平均气温和降水量间的趋势关系。</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  tooltip: {
+    trigger: 'axis',
+    axisPointer: { type: 'cross' }
+  },
+  legend: {},
+  xAxis: [
+    {
+      type: 'category',
+      axisTick: {
+        alignWithLabel: true
+      },
+      data: [
+        '1月',
+        '2月',
+        '3月',
+        '4月',
+        '5月',
+        '6月',
+        '7月',
+        '8月',
+        '9月',
+        '10月',
+        '11月',
+        '12月'
+      ]
+    }
+  ],
+  yAxis: [
+    {
+      type: 'value',
+      name: '降水量',
+      min: 0,
+      max: 250,
+      position: 'right',
+      axisLabel: {
+        formatter: '{value} ml'
+      }
+    },
+    {
+      type: 'value',
+      name: '温度',
+      min: 0,
+      max: 25,
+      position: 'left',
+      axisLabel: {
+        formatter: '{value} °C'
+      }
+    }
+  ],
+  series: [
+    {
+      name: '降水量',
+      type: 'bar',
+      yAxisIndex: 0,
+      data: [6, 32, 70, 86, 68.7, 100.7, 125.6, 112.2, 78.7, 48.8, 36.0, 19.3]
+    },
+    {
+      name: '温度',
+      type: 'line',
+      smooth: true,
+      yAxisIndex: 1,
+      data: [
+        6.0,
+        10.2,
+        10.3,
+        11.5,
+        10.3,
+        13.2,
+        14.3,
+        16.4,
+        18.0,
+        16.5,
+        12.0,
+        5.2
+      ]
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">tooltip</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">trigger</span><span class="token operator">:</span> <span class="token string">'axis'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">axisPointer</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'cross'</span> <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">legend</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'category'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">axisTick</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">alignWithLabel</span><span class="token operator">:</span> <span class="token boolean">true</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token string">'1月'</span><span class="token punctuation">,</span>
+        <span class="token string">'2月'</span><span class="token punctuation">,</span>
+        <span class="token string">'3月'</span><span class="token punctuation">,</span>
+        <span class="token string">'4月'</span><span class="token punctuation">,</span>
+        <span class="token string">'5月'</span><span class="token punctuation">,</span>
+        <span class="token string">'6月'</span><span class="token punctuation">,</span>
+        <span class="token string">'7月'</span><span class="token punctuation">,</span>
+        <span class="token string">'8月'</span><span class="token punctuation">,</span>
+        <span class="token string">'9月'</span><span class="token punctuation">,</span>
+        <span class="token string">'10月'</span><span class="token punctuation">,</span>
+        <span class="token string">'11月'</span><span class="token punctuation">,</span>
+        <span class="token string">'12月'</span>
+      <span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'value'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'降水量'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">min</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">max</span><span class="token operator">:</span> <span class="token number">250</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">position</span><span class="token operator">:</span> <span class="token string">'right'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">axisLabel</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">formatter</span><span class="token operator">:</span> <span class="token string">'{value} ml'</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'value'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'温度'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">min</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">max</span><span class="token operator">:</span> <span class="token number">25</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">position</span><span class="token operator">:</span> <span class="token string">'left'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">axisLabel</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">formatter</span><span class="token operator">:</span> <span class="token string">'{value} °C'</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'降水量'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">yAxisIndex</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">6</span><span class="token punctuation">,</span> <span class="token number">32</span><span class="token punctuation">,</span> <span class="token number">70</span><span class="token punctuation">,</span> <span class="token number">86</span><span class="token punctuation">,</span> <span class="token number">68.7</span><span class="token punctuation">,</span> <span class="token number">100.7</span><span class="token punctuation">,</span> <span class="token number">125.6</span><span class="token punctuation">,</span> <span class="token number">112.2</span><span class="token punctuation">,</span> <span class="token number">78.7</span><span class="token punctuation">,</span> <span class="token number">48.8</span><span class="token punctuation">,</span> <span class="token number">36.0</span><span class="token punctuation">,</span> <span class="token number">19.3</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'温度'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">smooth</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">yAxisIndex</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token number">6.0</span><span class="token punctuation">,</span>
+        <span class="token number">10.2</span><span class="token punctuation">,</span>
+        <span class="token number">10.3</span><span class="token punctuation">,</span>
+        <span class="token number">11.5</span><span class="token punctuation">,</span>
+        <span class="token number">10.3</span><span class="token punctuation">,</span>
+        <span class="token number">13.2</span><span class="token punctuation">,</span>
+        <span class="token number">14.3</span><span class="token punctuation">,</span>
+        <span class="token number">16.4</span><span class="token punctuation">,</span>
+        <span class="token number">18.0</span><span class="token punctuation">,</span>
+        <span class="token number">16.5</span><span class="token punctuation">,</span>
+        <span class="token number">12.0</span><span class="token punctuation">,</span>
+        <span class="token number">5.2</span>
+      <span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>这里简要介绍了坐标轴相关的常用配置项及用法,更多关于坐标轴配置项及用法请移步<a href="https://echarts.apache.org/option.html#xAxis">官网</a>。</p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">本文贡献者</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/zh/concepts/axis.md" title="编辑本文" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">在 GitHub 上编辑本页</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a><a href="https://github.com/Ovilia" target="_blank" class="post-contributor has-avatar"><img alt="Ovilia" src="https://echarts.apache.org/en/images/people/羡辙.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>Ovilia</span></a><a href="https://github.com/plainheart" target="_blank" class="post-contributor has-avatar"><img alt="plainheart" src="https://echarts.apache.org/en/images/people/plainheart.jpg" loading="lazy" decoding="async" fetchpriority="low"> <span>plainheart</span></a><a href="https://github.com/Essentric" target="_blank" class="post-contributor"><!----> <span>Essentric</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(i,t,e,g,C,I,l,r,d,A,a,o,n,s,h,c,p,B,u,w,b,m,L,y,G,f,x,K,H,W,v,Z,D,S,O,X,E,z,M,J,N,Y,T,F,V,R,k,j,U,P,Q,_,q,$,ii,ti,ei,gi,Ci,Ii,li,ri,di){return{layout:"default",data:[{html:'<h1 id="%E5%9D%90%E6%A0%87%E8%BD%B4" tabindex="-1">坐标轴</h1>\n<p>直角坐标系中的 x/y 轴。</p>\n<h2 id="x-%E8%BD%B4%E3%80%81y-%E8%BD%B4" tabindex="-1">x 轴、y 轴</h2>\n<p>x 轴和 y 轴都由轴线、刻度、刻度标签、轴标题四个部分组成。部分图表中还会有网格线来帮助查看和计算数据</p>\n<img max-width="830" width="100%" height="100%" src="images/design/axis/charts_axis_img02.jpg">\n</img>\n<p>普通的二维数据坐标系都有 x 轴和 y 轴,通常情况下,x 轴显示在图表的底部,y 轴显示在左侧,一般配置如下:</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICAvLyAuLi4KICB9LAogIHlBeGlzOiB7CiAgICAvLyAuLi4KICB9Cn07\'" line-highlights="\'\'" />\n<p>x 轴常用来标示数据的维度,维度一般用来指数据的类别,是观察数据的角度,例如“销售时间” “销售地点” “产品名称”等。y 轴常常用来标示数据的数值,数值是用来具体考察某一类数据的数量值,也是我们需要分析的指标,例如“销售数量”和“销售金额”等。</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICB0eXBlOiAndGltZScsCiAgICBuYW1lOiAn6ZSA5ZSu5pe26Ze0JwogICAgLy8gLi4uCiAgfSwKICB5QXhpczogewogICAgdHlwZTogJ3ZhbHVlJywKICAgIG5hbWU6ICfplIDllK7mlbDph48nCiAgICAvLyAuLi4KICB9CiAgLy8gLi4uCn07\'" line-highlights="\'\'" />\n<p>当 x 轴(水平坐标轴)跨度很大,可以采用区域缩放方式灵活显示数据内容。</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICB0eXBlOiAndGltZScsCiAgICBuYW1lOiAn6ZSA5ZSu5pe26Ze0JwogICAgLy8gLi4uCiAgfSwKICB5QXhpczogewogICAgdHlwZTogJ3ZhbHVlJywKICAgIG5hbWU6ICfplIDllK7mlbDph48nCiAgICAvLyAuLi4KICB9LAogIGRhdGFab29tOiBbCiAgICAvLyAuLi4KICBdCiAgLy8gLi4uCn07\'" line-highlights="\'\'" />\n<p>在二维数据中,轴也可以有多个。ECharts 中一般情况下单个 grid 组件最多只能放两个 x/y 轴,多于两个 x/y 轴需要通过配置 <a href="https://echarts.apache.org/option.html#xAxis.offset">offset</a> 属性防止同个位置多个轴的重叠。两个 x 轴显示在上下,两个 y 轴显示在左右两侧。</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICB0eXBlOiAndGltZScsCiAgICBuYW1lOiAn6ZSA5ZSu5pe26Ze0JwogICAgLy8gLi4uCiAgfSwKICB5QXhpczogWwogICAgewogICAgICB0eXBlOiAndmFsdWUnLAogICAgICBuYW1lOiAn6ZSA5ZSu5pWw6YePJwogICAgICAvLyAuLi4KICAgIH0sCiAgICB7CiAgICAgIHR5cGU6ICd2YWx1ZScsCiAgICAgIG5hbWU6ICfplIDllK7ph5Hpop0nCiAgICAgIC8vIC4uLgogICAgfQogIF0KICAvLyAuLi4KfTs\'" line-highlights="\'\'" />\n<h2 id="%E8%BD%B4%E7%BA%BF" tabindex="-1">轴线</h2>\n<p>ECharts 提供了轴线 <a href="https://echarts.apache.org/option.html#xAxis.axisLine">axisLine</a> 相关的配置,我们可以根据实际情况调整,例如轴线两端的箭头,轴线的样式等。</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBheGlzTGluZTogewogICAgICBzeW1ib2w6ICdhcnJvdycsCiAgICAgIGxpbmVTdHlsZTogewogICAgICAgIHR5cGU6ICdkYXNoZWQnCiAgICAgICAgLy8gLi4uCiAgICAgIH0KICAgIH0KICAgIC8vIC4uLgogIH0sCiAgeUF4aXM6IHsKICAgIGF4aXNMaW5lOiB7CiAgICAgIHN5bWJvbDogJ2Fycm93JywKICAgICAgbGluZVN0eWxlOiB7CiAgICAgICAgdHlwZTogJ2Rhc2hlZCcKICAgICAgICAvLyAuLi4KICAgICAgfQogICAgfQogIH0KICAvLyAuLi4KfTs\'" line-highlights="\'\'" />\n<h2 id="%E5%88%BB%E5%BA%A6" tabindex="-1">刻度</h2>\n<p>ECharts 提供了轴线 <a href="https://echarts.apache.org/option.html#xAxis.axisTick">axisTick</a> 相关的配置,我们可以根据实际情况调整,例如刻度线的长度,样式等。</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBheGlzVGljazogewogICAgICBsZW5ndGg6IDYsCiAgICAgIGxpbmVTdHlsZTogewogICAgICAgIHR5cGU6ICdkYXNoZWQnCiAgICAgICAgLy8gLi4uCiAgICAgIH0KICAgIH0KICAgIC8vIC4uLgogIH0sCiAgeUF4aXM6IHsKICAgIGF4aXNUaWNrOiB7CiAgICAgIGxlbmd0aDogNiwKICAgICAgbGluZVN0eWxlOiB7CiAgICAgICAgdHlwZTogJ2Rhc2hlZCcKICAgICAgICAvLyAuLi4KICAgICAgfQogICAgfQogIH0KICAvLyAuLi4KfTs\'" line-highlights="\'\'" />\n<h2 id="%E5%88%BB%E5%BA%A6%E6%A0%87%E7%AD%BE" tabindex="-1">刻度标签</h2>\n<p>ECharts 提供了轴线 <a href="https://echarts.apache.org/option.html#xAxis.axisLabel">axisLabel</a> 相关的配置,我们可以根据实际情况调整,例如文字对齐方式,自定义刻度标签内容等。</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBheGlzTGFiZWw6IHsKICAgICAgZm9ybWF0dGVyOiAne3ZhbHVlfSBrZycsCiAgICAgIGFsaWduOiAnY2VudGVyJwogICAgICAvLyAuLi4KICAgIH0KICAgIC8vIC4uLgogIH0sCiAgeUF4aXM6IHsKICAgIGF4aXNMYWJlbDogewogICAgICBmb3JtYXR0ZXI6ICd7dmFsdWV9IOWFgycsCiAgICAgIGFsaWduOiAnY2VudGVyJwogICAgICAvLyAuLi4KICAgIH0KICB9CiAgLy8gLi4uCn07\'" line-highlights="\'\'" />\n<h2 id="%E7%A4%BA%E4%BE%8B" tabindex="-1">示例</h2>\n<p>图左侧的 y 轴代表东京月平均气温,右侧的 y 轴表示东京降水量,x 轴表示时间。两组 y 轴在一起,反映了平均气温和降水量间的趋势关系。</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHRvb2x0aXA6IHsKICAgIHRyaWdnZXI6ICdheGlzJywKICAgIGF4aXNQb2ludGVyOiB7IHR5cGU6ICdjcm9zcycgfQogIH0sCiAgbGVnZW5kOiB7fSwKICB4QXhpczogWwogICAgewogICAgICB0eXBlOiAnY2F0ZWdvcnknLAogICAgICBheGlzVGljazogewogICAgICAgIGFsaWduV2l0aExhYmVsOiB0cnVlCiAgICAgIH0sCiAgICAgIGRhdGE6IFsKICAgICAgICAnMeaciCcsCiAgICAgICAgJzLmnIgnLAogICAgICAgICcz5pyIJywKICAgICAgICAnNOaciCcsCiAgICAgICAgJzXmnIgnLAogICAgICAgICc25pyIJywKICAgICAgICAnN-aciCcsCiAgICAgICAgJzjmnIgnLAogICAgICAgICc55pyIJywKICAgICAgICAnMTDmnIgnLAogICAgICAgICcxMeaciCcsCiAgICAgICAgJzEy5pyIJwogICAgICBdCiAgICB9CiAgXSwKICB5QXhpczogWwogICAgewogICAgICB0eXBlOiAndmFsdWUnLAogICAgICBuYW1lOiAn6ZmN5rC06YePJywKICAgICAgbWluOiAwLAogICAgICBtYXg6IDI1MCwKICAgICAgcG9zaXRpb246ICdyaWdodCcsCiAgICAgIGF4aXNMYWJlbDogewogICAgICAgIGZvcm1hdHRlcjogJ3t2YWx1ZX0gbWwnCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgIHR5cGU6ICd2YWx1ZScsCiAgICAgIG5hbWU6ICfmuKnluqYnLAogICAgICBtaW46IDAsCiAgICAgIG1heDogMjUsCiAgICAgIHBvc2l0aW9uOiAnbGVmdCcsCiAgICAgIGF4aXNMYWJlbDogewogICAgICAgIGZvcm1hdHRlcjogJ3t2YWx1ZX0gwrBDJwogICAgICB9CiAgICB9CiAgXSwKICBzZXJpZXM6IFsKICAgIHsKICAgICAgbmFtZTogJ-mZjeawtOmHjycsCiAgICAgIHR5cGU6ICdiYXInLAogICAgICB5QXhpc0luZGV4OiAwLAogICAgICBkYXRhOiBbNiwgMzIsIDcwLCA4NiwgNjguNywgMTAwLjcsIDEyNS42LCAxMTIuMiwgNzguNywgNDguOCwgMzYuMCwgMTkuM10KICAgIH0sCiAgICB7CiAgICAgIG5hbWU6ICfmuKnluqYnLAogICAgICB0eXBlOiAnbGluZScsCiAgICAgIHNtb290aDogdHJ1ZSwKICAgICAgeUF4aXNJbmRleDogMSwKICAgICAgZGF0YTogWwogICAgICAgIDYuMCwKICAgICAgICAxMC4yLAogICAgICAgIDEwLjMsCiAgICAgICAgMTEuNSwKICAgICAgICAxMC4zLAogICAgICAgIDEzLjIsCiAgICAgICAgMTQuMywKICAgICAgICAxNi40LAogICAgICAgIDE4LjAsCiAgICAgICAgMTYuNSwKICAgICAgICAxMi4wLAogICAgICAgIDUuMgogICAgICBdCiAgICB9CiAgXQp9Ow\'" v-bind="{}" />\n<p>这里简要介绍了坐标轴相关的常用配置项及用法,更多关于坐标轴配置项及用法请移步<a href="https://echarts.apache.org/option.html#xAxis">官网</a>。</p>\n',postPath:"zh/concepts/axis",title:"坐标轴 - 概念篇"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:g},{title:"入门篇",dir:C,children:[{title:"获取 ECharts",dir:I},{title:"在项目中引入 ECharts",dir:l},{title:"资源列表",dir:r,draft:i},{title:"寻求帮助",dir:d},{title:"版本特性",dir:A,children:[{title:"ECharts 6 特性介绍",dir:a},{title:"v5 升级 v6 指南",dir:o},{title:"5.0",dir:n},{title:"v4 升级 v5 指南",dir:s},{title:5.2,dir:h},{title:5.3,dir:c},{title:5.4,dir:p},{title:5.5,dir:B},{title:5.6,dir:u}]}]},{title:"概念篇",dir:w,children:[{title:"图表容器及大小",dir:b},{title:"配置项",dir:m,draft:i},{title:"系列",dir:L,draft:i},{title:"样式",dir:y},{title:"数据集",dir:G},{title:"数据转换",dir:f},{title:"坐标系",dir:x,draft:i},{title:"坐标轴",dir:K},{title:"视觉映射",dir:e},{title:"图例",dir:H},{title:"事件与行为",dir:W}]},{title:"应用篇",dir:v,children:[{title:"常用图表类型",dir:Z,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:D},{title:"堆叠柱状图",dir:S},{title:"动态排序柱状图",dir:O},{title:"极坐标系柱状图",dir:X,draft:i},{title:"阶梯瀑布图",dir:E},{title:"视觉映射的柱状图",dir:e,draft:i}]},{title:"折线图",dir:z,children:[{title:"基础折线图",dir:M},{title:"堆叠折线图",dir:J},{title:"区域面积图",dir:N},{title:"平滑曲线图",dir:Y},{title:"阶梯线图",dir:T}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:F},{title:"圆环图",dir:V},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:R,children:[{title:"基础散点图",dir:k}]}]},{title:"常用组件",dir:j,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:U}]}]},{title:"移动端优化",dir:t,draft:i},{title:"跨平台方案",dir:P,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:Q},{title:"数据下钻",dir:_,draft:i}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:q}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:ii}]},{title:"交互",dir:ti,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:ei,draft:i},{title:"智能指针吸附",dir:gi}]}]},{title:"最佳实践",dir:Ci,children:[{title:"移动端优化",dir:t,draft:i},{title:Ii,dir:li},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:ri}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:di}]}],en:[{title:"Get Started",dir:g},{title:"Basics",dir:C,children:[{title:"Download ECharts",dir:I},{title:"Import ECharts",dir:l},{title:"Resources",dir:r,draft:i},{title:"Get Help",dir:d},{title:"What's New",dir:A,children:[{title:"ECharts 6 Features",dir:a},{title:"Migration from v5 to v6",dir:o},{title:"5.0",dir:n},{title:"Migration from v4 to v5",dir:s},{title:5.2,dir:h},{title:5.3,dir:c},{title:5.4,dir:p},{title:5.5,dir:B},{title:5.6,dir:u}]}]},{title:"Concepts",dir:w,children:[{title:"Chart Container",dir:b},{title:"Chart Option",dir:m,draft:i},{title:"Series",dir:L,draft:i},{title:"Style",dir:y},{title:"Dataset",dir:G},{title:"Data Transform",dir:f},{title:"Coordinate",dir:x,draft:i},{title:"Axis",dir:K},{title:"Visual Mapping",dir:e},{title:"Legend",dir:H},{title:"Event and Action",dir:W}]},{title:"How To Guides",dir:v,children:[{title:"Common Charts",dir:Z,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:D},{title:"Stacked Bar",dir:S},{title:"Bar Racing",dir:O},{title:"Bar Polar",dir:X,draft:i},{title:"Waterfall",dir:E}]},{title:"Line",dir:z,children:[{title:"Basic Line",dir:M},{title:"Stacked Line",dir:J},{title:"Area Chart",dir:N},{title:"Smoothed Line",dir:Y},{title:"Step Line",dir:T}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:F},{title:"Ring Style",dir:V},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:R,children:[{title:"Basic Scatter",dir:k}]}]},{title:"Common Components",dir:j,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:U}]}]},{title:"Mobile",dir:t,draft:i},{title:"Cross Platform",dir:P,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:Q},{title:"Drilldown",dir:_,draft:i}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:q}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:ii}]},{title:"Interaction",dir:ti,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:ei,draft:i},{title:"Intelligent Pointer Snapping",dir:gi}]}]},{title:"Best Practices",dir:Ci,children:[{title:"Mobile Optimization",dir:t,draft:i},{title:Ii,dir:li},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:ri}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:di}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:i,routePath:"/zh/concepts/axis",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/zh/concepts/chart-size/index.html b/docs/zh/concepts/chart-size/index.html
new file mode 100644
index 0000000..afacbe0
--- /dev/null
+++ b/docs/zh/concepts/chart-size/index.html
@@ -0,0 +1,41 @@
+<!doctype html>
+<html data-n-head-ssr lang="zh-CN" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh-CN%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>图表容器及大小 - 概念篇 - 使用手册 - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="zh"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/zh/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/zh/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/zh/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/zh/index.html" class="navbar-brand"><img src="https://echarts.apache.org/zh/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/zh/index.html">首页</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">文档<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/feature.html">特性</a></li><li><a href="https://echarts.apache.org/handbook/zh/get-started/">使用手册</a></li><li><a href="https://echarts.apache.org/zh/api.html">API</a></li><li><a href="https://echarts.apache.org/zh/option.html">配置项手册</a></li><li><a href="https://echarts.apache.org/zh/changelog.html">版本记录</a></li><li><a href="https://echarts.apache.org/zh/faq.html">常见问题</a></li><li><a href="https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide">v6 升级指南</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">下载<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/download.html">下载</a></li><li><a href="https://echarts.apache.org/zh/download-theme.html">主题下载</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">自定义系列下载<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/download-extension.html">扩展下载</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/zh/index.html">示例</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">资源<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/spreadsheet.html">表格工具</a></li><li><a href="https://echarts.apache.org/zh/theme-builder.html">主题构建工具</a></li><li><a href="https://echarts.apache.org/zh/cheat-sheet.html">术语速查手册</a></li><li><a href="https://echarts.apache.org/zh/resources.html">更多资源</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">社区<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/events.html">活动</a></li><li><a href="https://echarts.apache.org/zh/committers.html">贡献者列表</a></li><li><a href="https://echarts.apache.org/zh/maillist.html">邮件列表</a></li><li><a href="https://echarts.apache.org/zh/contributing.html">如何贡献</a></li><li><a href="https://echarts.apache.org/zh/dependencies.html">依赖项</a></li><li><a href="https://echarts.apache.org/zh/coding-standard.html">代码规范</a></li><li><a href="https://github.com/apache/echarts" target="_blank">源码(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/security.html">安全</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">版权<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">活动<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">捐赠<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">鸣谢<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("en")'>EN</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/zh/get-started" class="nav-link"><span class="title">快速上手</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">入门篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/basics/download" class="nav-link"><span class="title">获取 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/import" class="nav-link"><span class="title">在项目中引入 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/basics/help" class="nav-link"><span class="title">寻求帮助</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">版本特性</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 特性介绍</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">v5 升级 v6 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">v4 升级 v5 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">概念篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/concepts/chart-size" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">图表容器及大小</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/style" class="nav-link"><span class="title">样式</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/dataset" class="nav-link"><span class="title">数据集</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/data-transform" class="nav-link"><span class="title">数据转换</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/axis" class="nav-link"><span class="title">坐标轴</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/visual-map" class="nav-link"><span class="title">视觉映射</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/legend" class="nav-link"><span class="title">图例</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/event" class="nav-link"><span class="title">事件与行为</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">应用篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">常用图表类型</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">柱状图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">基础柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">堆叠柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">动态排序柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">阶梯瀑布图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">折线图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">基础折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">堆叠折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/area-line" class="nav-link"><span class="title">区域面积图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">平滑曲线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/step-line" class="nav-link"><span class="title">阶梯线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">饼图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">基础饼图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">圆环图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/rose" class="nav-link"><span class="title">南丁格尔图(玫瑰图)</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">散点图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">基础散点图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">常用组件</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">地理坐标系(Geo)</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG 底图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">跨平台方案</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/server" class="nav-link"><span class="title">服务端渲染</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/wechat-app" class="nav-link"><span class="title">微信小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/baidu-app" class="nav-link"><span class="title">百度智能小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">数据处理</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/data/dynamic-data" class="nav-link"><span class="title">动态的异步数据</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">标签</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/label/rich-text" class="nav-link"><span class="title">富文本标签</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">动画</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/animation/transition" class="nav-link"><span class="title">数据过渡动画</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">交互</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/drag" class="nav-link"><span class="title">拖拽的实现</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">智能指针吸附</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">最佳实践</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/aria" class="nav-link"><span class="title">无障碍访问</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/security" class="nav-link"><span class="title">安全指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">编辑本文档</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/meta/edit-guide" class="nav-link"><span class="title">文档编辑指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="%E5%9B%BE%E8%A1%A8%E5%AE%B9%E5%99%A8%E5%8F%8A%E5%A4%A7%E5%B0%8F" tabindex="-1">图表容器及大小</h1> <p>在<a href="zh/get-started">快速上手</a>中,我们介绍了初始化 ECharts 的接口 <a href="https://echarts.apache.org//api.html#echarts.init"><code>echarts.init</code></a>。<a href="https://echarts.apache.org//api.html#echarts.init">API 文档</a>中详细介绍了参数的具体含义,建议理解后再阅读本文。</p> <p>下面,我们就常见的几种使用场景,介绍如何初始化一个图表以及改变其大小。</p> <h2 id="%E5%88%9D%E5%A7%8B%E5%8C%96" tabindex="-1">初始化</h2> <h3 id="%E5%9C%A8-html-%E4%B8%AD%E5%AE%9A%E4%B9%89%E6%9C%89%E5%AE%BD%E5%BA%A6%E5%92%8C%E9%AB%98%E5%BA%A6%E7%9A%84%E7%88%B6%E5%AE%B9%E5%99%A8%EF%BC%88%E6%8E%A8%E8%8D%90%EF%BC%89" tabindex="-1">在 HTML 中定义有宽度和高度的父容器(推荐)</h3> <p>通常来说,需要在 HTML 中先定义一个 <code>&lt;div></code> 节点,并且通过 CSS 使得该节点具有宽度和高度。初始化的时候,传入该节点,图表的大小默认即为该节点的大小,除非声明了 <code>opts.width</code> 或 <code>opts.height</code> 将其覆盖。</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-html line-numbers"><code><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>main<span class="token punctuation">"</span></span> <span class="token special-attr"><span class="token attr-name">style</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token value css language-css"><span class="token property">width</span><span class="token punctuation">:</span> 600px<span class="token punctuation">;</span><span class="token property">height</span><span class="token punctuation">:</span>400px<span class="token punctuation">;</span></span><span class="token punctuation">"</span></span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">></span></span>
+<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>text/javascript<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
+  var myChart = echarts.init(document.getElementById('main'));
+<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">></span></span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>需要注意的是,使用这种方法在调用 <code>echarts.init</code> 时需保证容器已经有宽度和高度了。</p> <h3 id="%E6%8C%87%E5%AE%9A%E5%9B%BE%E8%A1%A8%E7%9A%84%E5%A4%A7%E5%B0%8F" tabindex="-1">指定图表的大小</h3> <p>如果图表容器不存在宽度和高度,或者,你希望图表宽度和高度不等于容器大小,也可以在初始化的时候指定大小。</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-html line-numbers"><code><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>main<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">></span></span>
+<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>text/javascript<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
+  var myChart = echarts.init(document.getElementById('main'), null, {
+    width: 600,
+    height: 400
+  });
+<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">></span></span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="%E5%93%8D%E5%BA%94%E5%AE%B9%E5%99%A8%E5%A4%A7%E5%B0%8F%E7%9A%84%E5%8F%98%E5%8C%96" tabindex="-1">响应容器大小的变化</h2> <h3 id="%E7%9B%91%E5%90%AC%E5%9B%BE%E8%A1%A8%E5%AE%B9%E5%99%A8%E7%9A%84%E5%A4%A7%E5%B0%8F%E5%B9%B6%E6%94%B9%E5%8F%98%E5%9B%BE%E8%A1%A8%E5%A4%A7%E5%B0%8F" tabindex="-1">监听图表容器的大小并改变图表大小</h3> <p>在有些场景下,我们希望当容器大小改变时,图表的大小也相应地改变。</p> <p>比如,图表容器是一个高度为 400px、宽度为页面 100% 的节点,你希望在浏览器宽度改变的时候,始终保持图表宽度是页面的 100%。</p> <p>这种情况下,可以监听页面的 <code>resize</code> 事件获取浏览器大小改变的事件,然后调用 <a href="https://echarts.apache.org/api.html#echartsInstance.resize"><code>echartsInstance.resize</code></a> 改变图表的大小。</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-html line-numbers"><code><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>style</span><span class="token punctuation">></span></span><span class="token style"><span class="token language-css">
+  <span class="token selector">#main,
+  html,
+  body</span> <span class="token punctuation">{</span>
+    <span class="token property">width</span><span class="token punctuation">:</span> 100%<span class="token punctuation">;</span>
+  <span class="token punctuation">}</span>
+  <span class="token selector">#main</span> <span class="token punctuation">{</span>
+    <span class="token property">height</span><span class="token punctuation">:</span> 400px<span class="token punctuation">;</span>
+  <span class="token punctuation">}</span>
+</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>style</span><span class="token punctuation">></span></span>
+<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>main<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">></span></span>
+<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>text/javascript<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
+  var myChart = echarts.init(document.getElementById('main'));
+  window.addEventListener('resize', function() {
+    myChart.resize();
+  });
+<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">></span></span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <blockquote><p>小贴士:有时候我们可能会通过 JS 或 CSS 调整容器大小,由于页面大小并未发生改变,因此 <code>resize</code> 事件将不会被触发。如果有需要覆盖这种情况,可以借助浏览器的 <a href="https://developer.mozilla.org/zh-CN/docs/Web/API/ResizeObserver"><code>ResizeObserver</code></a> API 来实现更细粒度的监听。</p></blockquote> <h3 id="%E4%B8%BA%E5%9B%BE%E8%A1%A8%E8%AE%BE%E7%BD%AE%E7%89%B9%E5%AE%9A%E7%9A%84%E5%A4%A7%E5%B0%8F" tabindex="-1">为图表设置特定的大小</h3> <p>除了直接调用 <code>resize()</code> 不含参数的形式之外,还可以指定宽度和高度,实现图表大小不等于容器大小的效果。</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>myChart<span class="token punctuation">.</span><span class="token function">resize</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+  <span class="token literal-property property">width</span><span class="token operator">:</span> <span class="token number">800</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">height</span><span class="token operator">:</span> <span class="token number">400</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <blockquote><p>小贴士:阅读 API 文档的时候要留意接口的定义方式,这一接口有时会被误认为是 myCharts.resize(800, 400) 的形式,但其实不存在这样的调用方式。</p></blockquote> <h3 id="%E5%AE%B9%E5%99%A8%E8%8A%82%E7%82%B9%E8%A2%AB%E9%94%80%E6%AF%81%E4%BB%A5%E5%8F%8A%E8%A2%AB%E9%87%8D%E5%BB%BA%E6%97%B6" tabindex="-1">容器节点被销毁以及被重建时</h3> <p>假设页面中存在多个标签页,每个标签页都包含一些图表。当选中一个标签页的时候,其他标签页的内容在 DOM 中被移除了。这样,当用户再选中这些标签页的时候,就会发现图表“不见”了。</p> <p>本质上,这是由于图表的容器节点被移除导致的。即使之后该节点被重新添加,图表所在的节点也已经不存在了。</p> <p>正确的做法是,在图表容器被销毁之后,调用 <a href="https://echarts.apache.org/api.html#echartsInstance.dispose"><code>echartsInstance.dispose</code></a> 销毁实例,在图表容器重新被添加后再次调用 <a href="https://echarts.apache.org//api.html#echarts.init">echarts.init</a> 初始化。</p> <blockquote><p>小贴士:在容器节点被销毁时,总是应调用 <a href="https://echarts.apache.org/api.html#echartsInstance.dispose"><code>echartsInstance.dispose</code></a> 以销毁实例释放资源,避免内存泄漏。</p></blockquote></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">本文贡献者</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/zh/concepts/chart-size.md" title="编辑本文" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">在 GitHub 上编辑本页</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a><a href="https://github.com/Ovilia" target="_blank" class="post-contributor has-avatar"><img alt="Ovilia" src="https://echarts.apache.org/en/images/people/羡辙.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>Ovilia</span></a><a href="https://github.com/plainheart" target="_blank" class="post-contributor has-avatar"><img alt="plainheart" src="https://echarts.apache.org/en/images/people/plainheart.jpg" loading="lazy" decoding="async" fetchpriority="low"> <span>plainheart</span></a><a href="https://github.com/ppd0705" target="_blank" class="post-contributor"><!----> <span>ppd0705</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,i,e,r,d,a,l,n,c,h,o,s,p,E,A,g,B,C,b,m,u,f,I,v,D,G,P,k,S,w,W,Z,R,F,x,z,y,H,L,V,X,N,M,K,Y,J,j,T,Q,O,U,q,_,$,tt,it,et,rt,dt,at,lt,nt,ct){return{layout:"default",data:[{html:'<h1 id="%E5%9B%BE%E8%A1%A8%E5%AE%B9%E5%99%A8%E5%8F%8A%E5%A4%A7%E5%B0%8F" tabindex="-1">图表容器及大小</h1>\n<p>在<a href="zh/get-started">快速上手</a>中,我们介绍了初始化 ECharts 的接口 <a href="https://echarts.apache.org//api.html#echarts.init"><code>echarts.init</code></a>。<a href="https://echarts.apache.org//api.html#echarts.init">API 文档</a>中详细介绍了参数的具体含义,建议理解后再阅读本文。</p>\n<p>下面,我们就常见的几种使用场景,介绍如何初始化一个图表以及改变其大小。</p>\n<h2 id="%E5%88%9D%E5%A7%8B%E5%8C%96" tabindex="-1">初始化</h2>\n<h3 id="%E5%9C%A8-html-%E4%B8%AD%E5%AE%9A%E4%B9%89%E6%9C%89%E5%AE%BD%E5%BA%A6%E5%92%8C%E9%AB%98%E5%BA%A6%E7%9A%84%E7%88%B6%E5%AE%B9%E5%99%A8%EF%BC%88%E6%8E%A8%E8%8D%90%EF%BC%89" tabindex="-1">在 HTML 中定义有宽度和高度的父容器(推荐)</h3>\n<p>通常来说,需要在 HTML 中先定义一个 <code>&lt;div&gt;</code> 节点,并且通过 CSS 使得该节点具有宽度和高度。初始化的时候,传入该节点,图表的大小默认即为该节点的大小,除非声明了 <code>opts.width</code> 或 <code>opts.height</code> 将其覆盖。</p>\n<md-code-block lang="html" code="\'PGRpdiBpZD0ibWFpbiIgc3R5bGU9IndpZHRoOiA2MDBweDtoZWlnaHQ6NDAwcHg7Ij48L2Rpdj4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogIHZhciBteUNoYXJ0ID0gZWNoYXJ0cy5pbml0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYWluJykpOwo8L3NjcmlwdD4\'" line-highlights="\'\'" />\n<p>需要注意的是,使用这种方法在调用 <code>echarts.init</code> 时需保证容器已经有宽度和高度了。</p>\n<h3 id="%E6%8C%87%E5%AE%9A%E5%9B%BE%E8%A1%A8%E7%9A%84%E5%A4%A7%E5%B0%8F" tabindex="-1">指定图表的大小</h3>\n<p>如果图表容器不存在宽度和高度,或者,你希望图表宽度和高度不等于容器大小,也可以在初始化的时候指定大小。</p>\n<md-code-block lang="html" code="\'PGRpdiBpZD0ibWFpbiI-PC9kaXY-CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICB2YXIgbXlDaGFydCA9IGVjaGFydHMuaW5pdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFpbicpLCBudWxsLCB7CiAgICB3aWR0aDogNjAwLAogICAgaGVpZ2h0OiA0MDAKICB9KTsKPC9zY3JpcHQ-\'" line-highlights="\'\'" />\n<h2 id="%E5%93%8D%E5%BA%94%E5%AE%B9%E5%99%A8%E5%A4%A7%E5%B0%8F%E7%9A%84%E5%8F%98%E5%8C%96" tabindex="-1">响应容器大小的变化</h2>\n<h3 id="%E7%9B%91%E5%90%AC%E5%9B%BE%E8%A1%A8%E5%AE%B9%E5%99%A8%E7%9A%84%E5%A4%A7%E5%B0%8F%E5%B9%B6%E6%94%B9%E5%8F%98%E5%9B%BE%E8%A1%A8%E5%A4%A7%E5%B0%8F" tabindex="-1">监听图表容器的大小并改变图表大小</h3>\n<p>在有些场景下,我们希望当容器大小改变时,图表的大小也相应地改变。</p>\n<p>比如,图表容器是一个高度为 400px、宽度为页面 100% 的节点,你希望在浏览器宽度改变的时候,始终保持图表宽度是页面的 100%。</p>\n<p>这种情况下,可以监听页面的 <code>resize</code> 事件获取浏览器大小改变的事件,然后调用 <a href="https://echarts.apache.org/api.html#echartsInstance.resize"><code>echartsInstance.resize</code></a> 改变图表的大小。</p>\n<md-code-block lang="html" code="\'PHN0eWxlPgogICNtYWluLAogIGh0bWwsCiAgYm9keSB7CiAgICB3aWR0aDogMTAwJTsKICB9CiAgI21haW4gewogICAgaGVpZ2h0OiA0MDBweDsKICB9Cjwvc3R5bGU-CjxkaXYgaWQ9Im1haW4iPjwvZGl2Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI-CiAgdmFyIG15Q2hhcnQgPSBlY2hhcnRzLmluaXQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21haW4nKSk7CiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGZ1bmN0aW9uKCkgewogICAgbXlDaGFydC5yZXNpemUoKTsKICB9KTsKPC9zY3JpcHQ-\'" line-highlights="\'\'" />\n<blockquote>\n<p>小贴士:有时候我们可能会通过 JS 或 CSS 调整容器大小,由于页面大小并未发生改变,因此 <code>resize</code> 事件将不会被触发。如果有需要覆盖这种情况,可以借助浏览器的 <a href="https://developer.mozilla.org/zh-CN/docs/Web/API/ResizeObserver"><code>ResizeObserver</code></a> API 来实现更细粒度的监听。</p>\n</blockquote>\n<h3 id="%E4%B8%BA%E5%9B%BE%E8%A1%A8%E8%AE%BE%E7%BD%AE%E7%89%B9%E5%AE%9A%E7%9A%84%E5%A4%A7%E5%B0%8F" tabindex="-1">为图表设置特定的大小</h3>\n<p>除了直接调用 <code>resize()</code> 不含参数的形式之外,还可以指定宽度和高度,实现图表大小不等于容器大小的效果。</p>\n<md-code-block lang="js" code="\'bXlDaGFydC5yZXNpemUoewogIHdpZHRoOiA4MDAsCiAgaGVpZ2h0OiA0MDAKfSk7\'" line-highlights="\'\'" />\n<blockquote>\n<p>小贴士:阅读 API 文档的时候要留意接口的定义方式,这一接口有时会被误认为是 myCharts.resize(800, 400) 的形式,但其实不存在这样的调用方式。</p>\n</blockquote>\n<h3 id="%E5%AE%B9%E5%99%A8%E8%8A%82%E7%82%B9%E8%A2%AB%E9%94%80%E6%AF%81%E4%BB%A5%E5%8F%8A%E8%A2%AB%E9%87%8D%E5%BB%BA%E6%97%B6" tabindex="-1">容器节点被销毁以及被重建时</h3>\n<p>假设页面中存在多个标签页,每个标签页都包含一些图表。当选中一个标签页的时候,其他标签页的内容在 DOM 中被移除了。这样,当用户再选中这些标签页的时候,就会发现图表“不见”了。</p>\n<p>本质上,这是由于图表的容器节点被移除导致的。即使之后该节点被重新添加,图表所在的节点也已经不存在了。</p>\n<p>正确的做法是,在图表容器被销毁之后,调用 <a href="https://echarts.apache.org/api.html#echartsInstance.dispose"><code>echartsInstance.dispose</code></a> 销毁实例,在图表容器重新被添加后再次调用 <a href="https://echarts.apache.org//api.html#echarts.init">echarts.init</a> 初始化。</p>\n<blockquote>\n<p>小贴士:在容器节点被销毁时,总是应调用 <a href="https://echarts.apache.org/api.html#echartsInstance.dispose"><code>echartsInstance.dispose</code></a> 以销毁实例释放资源,避免内存泄漏。</p>\n</blockquote>\n',postPath:"zh/concepts/chart-size",title:"图表容器及大小 - 概念篇"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:r},{title:"入门篇",dir:d,children:[{title:"获取 ECharts",dir:a},{title:"在项目中引入 ECharts",dir:l},{title:"资源列表",dir:n,draft:t},{title:"寻求帮助",dir:c},{title:"版本特性",dir:h,children:[{title:"ECharts 6 特性介绍",dir:o},{title:"v5 升级 v6 指南",dir:s},{title:"5.0",dir:p},{title:"v4 升级 v5 指南",dir:E},{title:5.2,dir:A},{title:5.3,dir:g},{title:5.4,dir:B},{title:5.5,dir:C},{title:5.6,dir:b}]}]},{title:"概念篇",dir:m,children:[{title:"图表容器及大小",dir:u},{title:"配置项",dir:f,draft:t},{title:"系列",dir:I,draft:t},{title:"样式",dir:v},{title:"数据集",dir:D},{title:"数据转换",dir:G},{title:"坐标系",dir:P,draft:t},{title:"坐标轴",dir:k},{title:"视觉映射",dir:e},{title:"图例",dir:S},{title:"事件与行为",dir:w}]},{title:"应用篇",dir:W,children:[{title:"常用图表类型",dir:Z,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:R},{title:"堆叠柱状图",dir:F},{title:"动态排序柱状图",dir:x},{title:"极坐标系柱状图",dir:z,draft:t},{title:"阶梯瀑布图",dir:y},{title:"视觉映射的柱状图",dir:e,draft:t}]},{title:"折线图",dir:H,children:[{title:"基础折线图",dir:L},{title:"堆叠折线图",dir:V},{title:"区域面积图",dir:X},{title:"平滑曲线图",dir:N},{title:"阶梯线图",dir:M}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:K},{title:"圆环图",dir:Y},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:J,children:[{title:"基础散点图",dir:j}]}]},{title:"常用组件",dir:T,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:Q}]}]},{title:"移动端优化",dir:i,draft:t},{title:"跨平台方案",dir:O,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:U},{title:"数据下钻",dir:q,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:_}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:it,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:et,draft:t},{title:"智能指针吸附",dir:rt}]}]},{title:"最佳实践",dir:dt,children:[{title:"移动端优化",dir:i,draft:t},{title:at,dir:lt},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:nt}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:ct}]}],en:[{title:"Get Started",dir:r},{title:"Basics",dir:d,children:[{title:"Download ECharts",dir:a},{title:"Import ECharts",dir:l},{title:"Resources",dir:n,draft:t},{title:"Get Help",dir:c},{title:"What's New",dir:h,children:[{title:"ECharts 6 Features",dir:o},{title:"Migration from v5 to v6",dir:s},{title:"5.0",dir:p},{title:"Migration from v4 to v5",dir:E},{title:5.2,dir:A},{title:5.3,dir:g},{title:5.4,dir:B},{title:5.5,dir:C},{title:5.6,dir:b}]}]},{title:"Concepts",dir:m,children:[{title:"Chart Container",dir:u},{title:"Chart Option",dir:f,draft:t},{title:"Series",dir:I,draft:t},{title:"Style",dir:v},{title:"Dataset",dir:D},{title:"Data Transform",dir:G},{title:"Coordinate",dir:P,draft:t},{title:"Axis",dir:k},{title:"Visual Mapping",dir:e},{title:"Legend",dir:S},{title:"Event and Action",dir:w}]},{title:"How To Guides",dir:W,children:[{title:"Common Charts",dir:Z,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:R},{title:"Stacked Bar",dir:F},{title:"Bar Racing",dir:x},{title:"Bar Polar",dir:z,draft:t},{title:"Waterfall",dir:y}]},{title:"Line",dir:H,children:[{title:"Basic Line",dir:L},{title:"Stacked Line",dir:V},{title:"Area Chart",dir:X},{title:"Smoothed Line",dir:N},{title:"Step Line",dir:M}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:K},{title:"Ring Style",dir:Y},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:J,children:[{title:"Basic Scatter",dir:j}]}]},{title:"Common Components",dir:T,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:Q}]}]},{title:"Mobile",dir:i,draft:t},{title:"Cross Platform",dir:O,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:U},{title:"Drilldown",dir:q,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:_}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:it,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:et,draft:t},{title:"Intelligent Pointer Snapping",dir:rt}]}]},{title:"Best Practices",dir:dt,children:[{title:"Mobile Optimization",dir:i,draft:t},{title:at,dir:lt},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:nt}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:ct}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/zh/concepts/chart-size",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/zh/concepts/data-transform/index.html b/docs/zh/concepts/data-transform/index.html
new file mode 100644
index 0000000..8d503aa
--- /dev/null
+++ b/docs/zh/concepts/data-transform/index.html
@@ -0,0 +1,596 @@
+<!doctype html>
+<html data-n-head-ssr lang="zh-CN" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh-CN%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>数据转换 - 概念篇 - 使用手册 - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="zh"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/zh/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/zh/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/zh/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/zh/index.html" class="navbar-brand"><img src="https://echarts.apache.org/zh/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/zh/index.html">首页</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">文档<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/feature.html">特性</a></li><li><a href="https://echarts.apache.org/handbook/zh/get-started/">使用手册</a></li><li><a href="https://echarts.apache.org/zh/api.html">API</a></li><li><a href="https://echarts.apache.org/zh/option.html">配置项手册</a></li><li><a href="https://echarts.apache.org/zh/changelog.html">版本记录</a></li><li><a href="https://echarts.apache.org/zh/faq.html">常见问题</a></li><li><a href="https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide">v6 升级指南</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">下载<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/download.html">下载</a></li><li><a href="https://echarts.apache.org/zh/download-theme.html">主题下载</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">自定义系列下载<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/download-extension.html">扩展下载</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/zh/index.html">示例</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">资源<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/spreadsheet.html">表格工具</a></li><li><a href="https://echarts.apache.org/zh/theme-builder.html">主题构建工具</a></li><li><a href="https://echarts.apache.org/zh/cheat-sheet.html">术语速查手册</a></li><li><a href="https://echarts.apache.org/zh/resources.html">更多资源</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">社区<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/events.html">活动</a></li><li><a href="https://echarts.apache.org/zh/committers.html">贡献者列表</a></li><li><a href="https://echarts.apache.org/zh/maillist.html">邮件列表</a></li><li><a href="https://echarts.apache.org/zh/contributing.html">如何贡献</a></li><li><a href="https://echarts.apache.org/zh/dependencies.html">依赖项</a></li><li><a href="https://echarts.apache.org/zh/coding-standard.html">代码规范</a></li><li><a href="https://github.com/apache/echarts" target="_blank">源码(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/security.html">安全</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">版权<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">活动<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">捐赠<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">鸣谢<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("en")'>EN</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/zh/get-started" class="nav-link"><span class="title">快速上手</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">入门篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/basics/download" class="nav-link"><span class="title">获取 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/import" class="nav-link"><span class="title">在项目中引入 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/basics/help" class="nav-link"><span class="title">寻求帮助</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">版本特性</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 特性介绍</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">v5 升级 v6 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">v4 升级 v5 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">概念篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/concepts/chart-size" class="nav-link"><span class="title">图表容器及大小</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/style" class="nav-link"><span class="title">样式</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/dataset" class="nav-link"><span class="title">数据集</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/data-transform" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">数据转换</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/axis" class="nav-link"><span class="title">坐标轴</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/visual-map" class="nav-link"><span class="title">视觉映射</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/legend" class="nav-link"><span class="title">图例</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/event" class="nav-link"><span class="title">事件与行为</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">应用篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">常用图表类型</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">柱状图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">基础柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">堆叠柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">动态排序柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">阶梯瀑布图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">折线图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">基础折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">堆叠折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/area-line" class="nav-link"><span class="title">区域面积图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">平滑曲线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/step-line" class="nav-link"><span class="title">阶梯线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">饼图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">基础饼图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">圆环图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/rose" class="nav-link"><span class="title">南丁格尔图(玫瑰图)</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">散点图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">基础散点图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">常用组件</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">地理坐标系(Geo)</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG 底图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">跨平台方案</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/server" class="nav-link"><span class="title">服务端渲染</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/wechat-app" class="nav-link"><span class="title">微信小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/baidu-app" class="nav-link"><span class="title">百度智能小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">数据处理</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/data/dynamic-data" class="nav-link"><span class="title">动态的异步数据</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">标签</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/label/rich-text" class="nav-link"><span class="title">富文本标签</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">动画</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/animation/transition" class="nav-link"><span class="title">数据过渡动画</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">交互</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/drag" class="nav-link"><span class="title">拖拽的实现</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">智能指针吸附</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">最佳实践</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/aria" class="nav-link"><span class="title">无障碍访问</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/security" class="nav-link"><span class="title">安全指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">编辑本文档</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/meta/edit-guide" class="nav-link"><span class="title">文档编辑指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="%E4%BD%BF%E7%94%A8-transform-%E8%BF%9B%E8%A1%8C%E6%95%B0%E6%8D%AE%E8%BD%AC%E6%8D%A2" tabindex="-1">使用 transform 进行数据转换</h1> <p>Apache ECharts<sup>TM</sup> 5 开始支持了“数据转换”( data transform )功能。在 echarts 中,“数据转换” 这个词指的是,给定一个已有的“数据集”(<a href="https://echarts.apache.org/option.html##dataset">dataset</a>)和一个“转换方法”(<a href="https://echarts.apache.org/option.html##dataset.transform">transform</a>),echarts 能生成一个新的“数据集”,然后可以使用这个新的“数据集”绘制图表。这些工作都可以声明式地完成。</p> <p>抽象地来说,数据转换是这样一种公式:<code>outData = f(inputData)</code>。<code>f</code> 是转换方法,例如:<code>filter</code>、<code>sort</code>、<code>regression</code>、<code>boxplot</code>、<code>cluster</code>、<code>aggregate</code>(todo) 等等。有了数据转换能力后,我们就至少可以做到这些事情:</p> <ul><li>把数据分成多份用不同的饼图展现。</li> <li>进行一些数据统计运算,并展示结果。</li> <li>用某些数据可视化算法处理数据,并展示结果。</li> <li>数据排序。</li> <li>去除或直选择数据项。</li> <li>...</li></ul> <h2 id="%E6%95%B0%E6%8D%AE%E8%BD%AC%E6%8D%A2%E5%9F%BA%E7%A1%80%E4%BD%BF%E7%94%A8" tabindex="-1">数据转换基础使用</h2> <p>在 echarts 中,数据转换是依托于数据集(<a href="https://echarts.apache.org/option.html##dataset">dataset</a>)来实现的. 我们可以设置 <a href="https://echarts.apache.org/option.html##dataset.transform">dataset.transform</a> 来表示,此 dataset 的数据,来自于此 transform 的结果。</p> <p>下面是上述例子的效果,三个饼图分别显示了 2011、2012、2013 年的数据。</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">var option = {
+  dataset: [
+    {
+      // 这个 dataset 的 index 是 `0`。
+      source: [
+        ['Product', 'Sales', 'Price', 'Year'],
+        ['Cake', 123, 32, 2011],
+        ['Cereal', 231, 14, 2011],
+        ['Tofu', 235, 5, 2011],
+        ['Dumpling', 341, 25, 2011],
+        ['Biscuit', 122, 29, 2011],
+        ['Cake', 143, 30, 2012],
+        ['Cereal', 201, 19, 2012],
+        ['Tofu', 255, 7, 2012],
+        ['Dumpling', 241, 27, 2012],
+        ['Biscuit', 102, 34, 2012],
+        ['Cake', 153, 28, 2013],
+        ['Cereal', 181, 21, 2013],
+        ['Tofu', 395, 4, 2013],
+        ['Dumpling', 281, 31, 2013],
+        ['Biscuit', 92, 39, 2013],
+        ['Cake', 223, 29, 2014],
+        ['Cereal', 211, 17, 2014],
+        ['Tofu', 345, 3, 2014],
+        ['Dumpling', 211, 35, 2014],
+        ['Biscuit', 72, 24, 2014]
+      ]
+      // id: 'a'
+    },
+    {
+      // 这个 dataset 的 index 是 `1`。
+      // 这个 `transform` 配置,表示,此 dataset 的数据,来自于此 transform 的结果。
+      transform: {
+        type: 'filter',
+        config: { dimension: 'Year', value: 2011 }
+      }
+      // 我们还可以设置这些可选的属性: `fromDatasetIndex` 或 `fromDatasetId`。
+      // 这些属性,指定了,transform 的输入,来自于哪个 dataset。例如,
+      // `fromDatasetIndex: 0` 表示输入来自于 index 为 `0` 的 dataset 。又例如,
+      // `fromDatasetId: 'a'` 表示输入来自于 `id: 'a'` 的 dataset。
+      // 当这些属性都不指定时,默认认为,输入来自于 index 为 `0` 的 dataset 。
+    },
+    {
+      // 这个 dataset 的 index 是 `2`。
+      // 同样,这里因为 `fromDatasetIndex` 和 `fromDatasetId` 都没有被指定,
+      // 那么输入默认来自于 index 为 `0` 的 dataset 。
+      transform: {
+        // 这个类型为 "filter" 的 transform 能够遍历并筛选出满足条件的数据项。
+        type: 'filter',
+        // 每个 transform 如果需要有配置参数的话,都须配置在 `config` 里。
+        // 在这个 "filter" transform 中,`config` 用于指定筛选条件。
+        // 下面这个筛选条件是:选出维度( dimension )'Year' 中值为 2012 的所有
+        // 数据项。
+        config: { dimension: 'Year', value: 2012 }
+      }
+    },
+    {
+      // 这个 dataset 的 index 是 `3`。
+      transform: {
+        type: 'filter',
+        config: { dimension: 'Year', value: 2013 }
+      }
+    }
+  ],
+  series: [
+    {
+      type: 'pie',
+      radius: 50,
+      center: ['25%', '50%'],
+      // 这个饼图系列,引用了 index 为 `1` 的 dataset 。也就是,引用了上述
+      // 2011 年那个 "filter" transform 的结果。
+      datasetIndex: 1
+    },
+    {
+      type: 'pie',
+      radius: 50,
+      center: ['50%', '50%'],
+      datasetIndex: 2
+    },
+    {
+      type: 'pie',
+      radius: 50,
+      center: ['75%', '50%'],
+      datasetIndex: 3
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor"><span class="token keyword">var</span> option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">dataset</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token comment">// 这个 dataset 的 index 是 `0`。</span>
+      <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">[</span><span class="token string">'Product'</span><span class="token punctuation">,</span> <span class="token string">'Sales'</span><span class="token punctuation">,</span> <span class="token string">'Price'</span><span class="token punctuation">,</span> <span class="token string">'Year'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Cake'</span><span class="token punctuation">,</span> <span class="token number">123</span><span class="token punctuation">,</span> <span class="token number">32</span><span class="token punctuation">,</span> <span class="token number">2011</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Cereal'</span><span class="token punctuation">,</span> <span class="token number">231</span><span class="token punctuation">,</span> <span class="token number">14</span><span class="token punctuation">,</span> <span class="token number">2011</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Tofu'</span><span class="token punctuation">,</span> <span class="token number">235</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">2011</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Dumpling'</span><span class="token punctuation">,</span> <span class="token number">341</span><span class="token punctuation">,</span> <span class="token number">25</span><span class="token punctuation">,</span> <span class="token number">2011</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Biscuit'</span><span class="token punctuation">,</span> <span class="token number">122</span><span class="token punctuation">,</span> <span class="token number">29</span><span class="token punctuation">,</span> <span class="token number">2011</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Cake'</span><span class="token punctuation">,</span> <span class="token number">143</span><span class="token punctuation">,</span> <span class="token number">30</span><span class="token punctuation">,</span> <span class="token number">2012</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Cereal'</span><span class="token punctuation">,</span> <span class="token number">201</span><span class="token punctuation">,</span> <span class="token number">19</span><span class="token punctuation">,</span> <span class="token number">2012</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Tofu'</span><span class="token punctuation">,</span> <span class="token number">255</span><span class="token punctuation">,</span> <span class="token number">7</span><span class="token punctuation">,</span> <span class="token number">2012</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Dumpling'</span><span class="token punctuation">,</span> <span class="token number">241</span><span class="token punctuation">,</span> <span class="token number">27</span><span class="token punctuation">,</span> <span class="token number">2012</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Biscuit'</span><span class="token punctuation">,</span> <span class="token number">102</span><span class="token punctuation">,</span> <span class="token number">34</span><span class="token punctuation">,</span> <span class="token number">2012</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Cake'</span><span class="token punctuation">,</span> <span class="token number">153</span><span class="token punctuation">,</span> <span class="token number">28</span><span class="token punctuation">,</span> <span class="token number">2013</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Cereal'</span><span class="token punctuation">,</span> <span class="token number">181</span><span class="token punctuation">,</span> <span class="token number">21</span><span class="token punctuation">,</span> <span class="token number">2013</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Tofu'</span><span class="token punctuation">,</span> <span class="token number">395</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">2013</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Dumpling'</span><span class="token punctuation">,</span> <span class="token number">281</span><span class="token punctuation">,</span> <span class="token number">31</span><span class="token punctuation">,</span> <span class="token number">2013</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Biscuit'</span><span class="token punctuation">,</span> <span class="token number">92</span><span class="token punctuation">,</span> <span class="token number">39</span><span class="token punctuation">,</span> <span class="token number">2013</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Cake'</span><span class="token punctuation">,</span> <span class="token number">223</span><span class="token punctuation">,</span> <span class="token number">29</span><span class="token punctuation">,</span> <span class="token number">2014</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Cereal'</span><span class="token punctuation">,</span> <span class="token number">211</span><span class="token punctuation">,</span> <span class="token number">17</span><span class="token punctuation">,</span> <span class="token number">2014</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Tofu'</span><span class="token punctuation">,</span> <span class="token number">345</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">2014</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Dumpling'</span><span class="token punctuation">,</span> <span class="token number">211</span><span class="token punctuation">,</span> <span class="token number">35</span><span class="token punctuation">,</span> <span class="token number">2014</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Biscuit'</span><span class="token punctuation">,</span> <span class="token number">72</span><span class="token punctuation">,</span> <span class="token number">24</span><span class="token punctuation">,</span> <span class="token number">2014</span><span class="token punctuation">]</span>
+      <span class="token punctuation">]</span>
+      <span class="token comment">// id: 'a'</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token comment">// 这个 dataset 的 index 是 `1`。</span>
+      <span class="token comment">// 这个 `transform` 配置,表示,此 dataset 的数据,来自于此 transform 的结果。</span>
+      <span class="token literal-property property">transform</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'filter'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">config</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">dimension</span><span class="token operator">:</span> <span class="token string">'Year'</span><span class="token punctuation">,</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">2011</span> <span class="token punctuation">}</span>
+      <span class="token punctuation">}</span>
+      <span class="token comment">// 我们还可以设置这些可选的属性: `fromDatasetIndex` 或 `fromDatasetId`。</span>
+      <span class="token comment">// 这些属性,指定了,transform 的输入,来自于哪个 dataset。例如,</span>
+      <span class="token comment">// `fromDatasetIndex: 0` 表示输入来自于 index 为 `0` 的 dataset 。又例如,</span>
+      <span class="token comment">// `fromDatasetId: 'a'` 表示输入来自于 `id: 'a'` 的 dataset。</span>
+      <span class="token comment">// 当这些属性都不指定时,默认认为,输入来自于 index 为 `0` 的 dataset 。</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token comment">// 这个 dataset 的 index 是 `2`。</span>
+      <span class="token comment">// 同样,这里因为 `fromDatasetIndex` 和 `fromDatasetId` 都没有被指定,</span>
+      <span class="token comment">// 那么输入默认来自于 index 为 `0` 的 dataset 。</span>
+      <span class="token literal-property property">transform</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token comment">// 这个类型为 "filter" 的 transform 能够遍历并筛选出满足条件的数据项。</span>
+        <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'filter'</span><span class="token punctuation">,</span>
+        <span class="token comment">// 每个 transform 如果需要有配置参数的话,都须配置在 `config` 里。</span>
+        <span class="token comment">// 在这个 "filter" transform 中,`config` 用于指定筛选条件。</span>
+        <span class="token comment">// 下面这个筛选条件是:选出维度( dimension )'Year' 中值为 2012 的所有</span>
+        <span class="token comment">// 数据项。</span>
+        <span class="token literal-property property">config</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">dimension</span><span class="token operator">:</span> <span class="token string">'Year'</span><span class="token punctuation">,</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">2012</span> <span class="token punctuation">}</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token comment">// 这个 dataset 的 index 是 `3`。</span>
+      <span class="token literal-property property">transform</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'filter'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">config</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">dimension</span><span class="token operator">:</span> <span class="token string">'Year'</span><span class="token punctuation">,</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">2013</span> <span class="token punctuation">}</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'pie'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">radius</span><span class="token operator">:</span> <span class="token number">50</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">center</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'25%'</span><span class="token punctuation">,</span> <span class="token string">'50%'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token comment">// 这个饼图系列,引用了 index 为 `1` 的 dataset 。也就是,引用了上述</span>
+      <span class="token comment">// 2011 年那个 "filter" transform 的结果。</span>
+      <span class="token literal-property property">datasetIndex</span><span class="token operator">:</span> <span class="token number">1</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'pie'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">radius</span><span class="token operator">:</span> <span class="token number">50</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">center</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'50%'</span><span class="token punctuation">,</span> <span class="token string">'50%'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">datasetIndex</span><span class="token operator">:</span> <span class="token number">2</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'pie'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">radius</span><span class="token operator">:</span> <span class="token number">50</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">center</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'75%'</span><span class="token punctuation">,</span> <span class="token string">'50%'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">datasetIndex</span><span class="token operator">:</span> <span class="token number">3</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>现在我们简单总结下,使用 transform 时的几个要点:</p> <ul><li>在一个空的 dataset 中声明 <code>transform</code>, <code>fromDatasetIndex</code>/<code>fromDatasetId</code> 来表示我们要生成新的数据。</li> <li>系列引用这个 dataset 。</li></ul> <h2 id="%E6%95%B0%E6%8D%AE%E8%BD%AC%E6%8D%A2%E7%9A%84%E8%BF%9B%E9%98%B6%E4%BD%BF%E7%94%A8" tabindex="-1">数据转换的进阶使用</h2> <h4 id="%E9%93%BE%E5%BC%8F%E5%A3%B0%E6%98%8E-transform" tabindex="-1">链式声明 transform</h4> <p><code>transform</code> 可以被链式声明,这是一个语法糖。</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">dataset</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token comment">// 原始数据</span>
+      <span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token comment">// 几个 transform 被声明成 array ,他们构成了一个链,</span>
+      <span class="token comment">// 前一个 transform 的输出是后一个 transform 的输入。</span>
+      <span class="token literal-property property">transform</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'filter'</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">config</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">dimension</span><span class="token operator">:</span> <span class="token string">'Product'</span><span class="token punctuation">,</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token string">'Tofu'</span> <span class="token punctuation">}</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'sort'</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">config</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">dimension</span><span class="token operator">:</span> <span class="token string">'Year'</span><span class="token punctuation">,</span> <span class="token literal-property property">order</span><span class="token operator">:</span> <span class="token string">'desc'</span> <span class="token punctuation">}</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'pie'</span><span class="token punctuation">,</span>
+    <span class="token comment">// 这个系列引用上述 transform 的结果。</span>
+    <span class="token literal-property property">datasetIndex</span><span class="token operator">:</span> <span class="token number">1</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <blockquote><p>注意:理论上,任何 transform 都可能有多个输入或多个输出。但是,如果一个 transform 被链式声明,它只能获取前一个 transform 的第一个输出作为输入(第一个 transform 除外),以及它只能把自己的第一个输出给到后一个 transform (最后一个 transform 除外)。</p></blockquote> <h4 id="%E4%B8%80%E4%B8%AA-transform-%E8%BE%93%E5%87%BA%E5%A4%9A%E4%B8%AA-data" tabindex="-1">一个 transform 输出多个 data</h4> <p>在大多数场景下,transform 只需输出一个 data 。但是也有一些场景,需要输出多个 data ,每个 data 可以被不同的 series 或者 dataset 所使用。</p> <p>例如,在内置的 "boxplot" transform 中,除了 boxplot 系列所需要的 data 外,离群点( outlier )也会被生成,并且可以用例如散点图系列显示出来。例如,<a href="https://echarts.apache.org/examples/zh/editor.html?c=boxplot-light-velocity">example</a>。</p> <p>我们提供配置 <a href="https://echarts.apache.org/option.html##dataset.fromTransformResult">dataset.fromTransformResult</a> 来满足这种情况,例如:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">dataset</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token comment">// 这个 dataset 的 index 为 `0`。</span>
+      <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token comment">// 原始数据</span>
+      <span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token comment">// 这个 dataset 的 index 为 `1`。</span>
+      <span class="token literal-property property">transform</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'boxplot'</span>
+      <span class="token punctuation">}</span>
+      <span class="token comment">// 这个 "boxplot" transform 生成了两个数据:</span>
+      <span class="token comment">// result[0]: boxplot series 所需的数据。</span>
+      <span class="token comment">// result[1]: 离群点数据。</span>
+      <span class="token comment">// 当其他 series 或者 dataset 引用这个 dataset 时,他们默认只能得到</span>
+      <span class="token comment">// result[0] 。</span>
+      <span class="token comment">// 如果想要他们得到 result[1] ,需要额外声明如下这样一个 dataset :</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token comment">// 这个 dataset 的 index 为 `2`。</span>
+      <span class="token comment">// 这个额外的 dataset 指定了数据来源于 index 为 `1` 的 dataset。</span>
+      <span class="token literal-property property">fromDatasetIndex</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+      <span class="token comment">// 并且指定了获取 transform result[1] 。</span>
+      <span class="token literal-property property">fromTransformResult</span><span class="token operator">:</span> <span class="token number">1</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'category'</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'boxplot'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'boxplot'</span><span class="token punctuation">,</span>
+      <span class="token comment">// Reference the data from result[0].</span>
+      <span class="token comment">// 这个 series 引用 index 为 `1` 的 dataset 。</span>
+      <span class="token literal-property property">datasetIndex</span><span class="token operator">:</span> <span class="token number">1</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'outlier'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'scatter'</span><span class="token punctuation">,</span>
+      <span class="token comment">// 这个 series 引用 index 为 `2` 的 dataset 。</span>
+      <span class="token comment">// 从而也就得到了上述的 transform result[1] (即离群点数据)</span>
+      <span class="token literal-property property">datasetIndex</span><span class="token operator">:</span> <span class="token number">2</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>另外,<a href="https://echarts.apache.org/option.html##dataset.fromTransformResult">dataset.fromTransformResult</a> 和 <a href="https://echarts.apache.org/option.html##dataset.transform">dataset.transform</a> 能同时出现在一个 dataset 中,这表示,这个 transform 的输入,是上游的结果中以 <code>fromTransformResult</code> 获取的结果。例如:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token punctuation">{</span>
+  <span class="token literal-property property">fromDatasetIndex</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">fromTransformResult</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">transform</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'sort'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">config</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">dimension</span><span class="token operator">:</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token literal-property property">order</span><span class="token operator">:</span> <span class="token string">'desc'</span> <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h4 id="%E5%9C%A8%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83%E4%B8%AD-debug" tabindex="-1">在开发环境中 debug</h4> <p>使用 transform 时,有时候我们会配不对,显示不出来结果,并且不知道哪里错了。所以,这里提供了一个配置项 <code>transform.print</code> 方便 debug 。这个配置项只在开发环境中生效。如下例:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">dataset</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">transform</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'filter'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">config</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token comment">// 配置为 `true` 后, transform 的结果</span>
+        <span class="token comment">// 会被 console.log 打印出来。</span>
+        <span class="token literal-property property">print</span><span class="token operator">:</span> <span class="token boolean">true</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+  <span class="token comment">// ...</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="%E6%95%B0%E6%8D%AE%E8%BD%AC%E6%8D%A2%E5%99%A8-%22filter%22" tabindex="-1">数据转换器 "filter"</h2> <p>echarts 内置提供了能起过滤作用的数据转换器。我们只需声明 <code>transform.type: "filter"</code>,以及给出数据筛选条件。如下例:</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  dataset: [
+    {
+      source: [
+        ['Product', 'Sales', 'Price', 'Year'],
+        ['Cake', 123, 32, 2011],
+        ['Latte', 231, 14, 2011],
+        ['Tofu', 235, 5, 2011],
+        ['Milk Tee', 341, 25, 2011],
+        ['Porridge', 122, 29, 2011],
+        ['Cake', 143, 30, 2012],
+        ['Latte', 201, 19, 2012],
+        ['Tofu', 255, 7, 2012],
+        ['Milk Tee', 241, 27, 2012],
+        ['Porridge', 102, 34, 2012],
+        ['Cake', 153, 28, 2013],
+        ['Latte', 181, 21, 2013],
+        ['Tofu', 395, 4, 2013],
+        ['Milk Tee', 281, 31, 2013],
+        ['Porridge', 92, 39, 2013],
+        ['Cake', 223, 29, 2014],
+        ['Latte', 211, 17, 2014],
+        ['Tofu', 345, 3, 2014],
+        ['Milk Tee', 211, 35, 2014],
+        ['Porridge', 72, 24, 2014]
+      ]
+    },
+    {
+      transform: {
+        type: 'filter',
+        config: { dimension: 'Year', '=': 2011 }
+        // 这个筛选条件表示,遍历数据,筛选出维度( dimension )
+        // 'Year' 上值为 2011 的所有数据项。
+      }
+    }
+  ],
+  series: {
+    type: 'pie',
+    datasetIndex: 1
+  }
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">dataset</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">[</span><span class="token string">'Product'</span><span class="token punctuation">,</span> <span class="token string">'Sales'</span><span class="token punctuation">,</span> <span class="token string">'Price'</span><span class="token punctuation">,</span> <span class="token string">'Year'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Cake'</span><span class="token punctuation">,</span> <span class="token number">123</span><span class="token punctuation">,</span> <span class="token number">32</span><span class="token punctuation">,</span> <span class="token number">2011</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Latte'</span><span class="token punctuation">,</span> <span class="token number">231</span><span class="token punctuation">,</span> <span class="token number">14</span><span class="token punctuation">,</span> <span class="token number">2011</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Tofu'</span><span class="token punctuation">,</span> <span class="token number">235</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">2011</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Milk Tee'</span><span class="token punctuation">,</span> <span class="token number">341</span><span class="token punctuation">,</span> <span class="token number">25</span><span class="token punctuation">,</span> <span class="token number">2011</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Porridge'</span><span class="token punctuation">,</span> <span class="token number">122</span><span class="token punctuation">,</span> <span class="token number">29</span><span class="token punctuation">,</span> <span class="token number">2011</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Cake'</span><span class="token punctuation">,</span> <span class="token number">143</span><span class="token punctuation">,</span> <span class="token number">30</span><span class="token punctuation">,</span> <span class="token number">2012</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Latte'</span><span class="token punctuation">,</span> <span class="token number">201</span><span class="token punctuation">,</span> <span class="token number">19</span><span class="token punctuation">,</span> <span class="token number">2012</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Tofu'</span><span class="token punctuation">,</span> <span class="token number">255</span><span class="token punctuation">,</span> <span class="token number">7</span><span class="token punctuation">,</span> <span class="token number">2012</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Milk Tee'</span><span class="token punctuation">,</span> <span class="token number">241</span><span class="token punctuation">,</span> <span class="token number">27</span><span class="token punctuation">,</span> <span class="token number">2012</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Porridge'</span><span class="token punctuation">,</span> <span class="token number">102</span><span class="token punctuation">,</span> <span class="token number">34</span><span class="token punctuation">,</span> <span class="token number">2012</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Cake'</span><span class="token punctuation">,</span> <span class="token number">153</span><span class="token punctuation">,</span> <span class="token number">28</span><span class="token punctuation">,</span> <span class="token number">2013</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Latte'</span><span class="token punctuation">,</span> <span class="token number">181</span><span class="token punctuation">,</span> <span class="token number">21</span><span class="token punctuation">,</span> <span class="token number">2013</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Tofu'</span><span class="token punctuation">,</span> <span class="token number">395</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">2013</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Milk Tee'</span><span class="token punctuation">,</span> <span class="token number">281</span><span class="token punctuation">,</span> <span class="token number">31</span><span class="token punctuation">,</span> <span class="token number">2013</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Porridge'</span><span class="token punctuation">,</span> <span class="token number">92</span><span class="token punctuation">,</span> <span class="token number">39</span><span class="token punctuation">,</span> <span class="token number">2013</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Cake'</span><span class="token punctuation">,</span> <span class="token number">223</span><span class="token punctuation">,</span> <span class="token number">29</span><span class="token punctuation">,</span> <span class="token number">2014</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Latte'</span><span class="token punctuation">,</span> <span class="token number">211</span><span class="token punctuation">,</span> <span class="token number">17</span><span class="token punctuation">,</span> <span class="token number">2014</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Tofu'</span><span class="token punctuation">,</span> <span class="token number">345</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">2014</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Milk Tee'</span><span class="token punctuation">,</span> <span class="token number">211</span><span class="token punctuation">,</span> <span class="token number">35</span><span class="token punctuation">,</span> <span class="token number">2014</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Porridge'</span><span class="token punctuation">,</span> <span class="token number">72</span><span class="token punctuation">,</span> <span class="token number">24</span><span class="token punctuation">,</span> <span class="token number">2014</span><span class="token punctuation">]</span>
+      <span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">transform</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'filter'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">config</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">dimension</span><span class="token operator">:</span> <span class="token string">'Year'</span><span class="token punctuation">,</span> <span class="token string-property property">'='</span><span class="token operator">:</span> <span class="token number">2011</span> <span class="token punctuation">}</span>
+        <span class="token comment">// 这个筛选条件表示,遍历数据,筛选出维度( dimension )</span>
+        <span class="token comment">// 'Year' 上值为 2011 的所有数据项。</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'pie'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">datasetIndex</span><span class="token operator">:</span> <span class="token number">1</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>这是 filter 的另一个例子的效果:</p> <p><iframe width="100%" height="350" src=""></iframe></p> <p>在 "filter" transform 中,有这些要素:</p> <p><strong>关于维度( dimension ):</strong></p> <p><code>config.dimension</code> 指定了维度,能设成这样的值:</p> <ul><li>设定成声明在 dataset 中的维度名,例如 <code>config: { dimension: 'Year', '=': 2011 }</code>。不过, dataset 中维度名的声明并非强制,所以我们也可以</li> <li>设定成 dataset 中的维度 index (index 值从 0 开始)例如 <code>config: { dimension: 3, '=': 2011 }</code>。</li></ul> <p><strong>关于关系比较操作符:</strong></p> <p>关系操作符,可以设定这些:
+<code>></code>(<code>gt</code>)、<code>>=</code>(<code>gte</code>)、<code>&lt;</code>(<code>lt</code>)、<code>&lt;=</code>(<code>lte</code>)、<code>=</code>(<code>eq</code>)、<code>!=</code>(<code>ne</code>、<code>&lt;></code>)、<code>reg</code>。(小括号中的符号或名字,是别名,设置起来作用相同)。他们首先基本地能基于数值大小进行比较,然后也有些额外的功能特性:</p> <ul><li>多个关系操作符能声明在一个 {} 中,例如 <code>{ dimension: 'Price', '>=': 20, '&lt;': 30 }</code>。这表示“与”的关系,即,筛选出价格大于等于 20 小于 30 的数据项。</li> <li>data 里的值,不仅可以是数值( number ),也可以是“类数值的字符串”(“ numeric string ”)。“类数值的字符串”本身是一个字符串,但是可以被转换为字面所描述的数值,例如 <code>' 123 '</code>。转换过程中,空格(全角半角空格)和换行符都能被消除( trim )。</li> <li>如果我们需要对日期对象(JS <code>Date</code>)或者日期字符串(如 '2012-05-12')进行比较,我们需要手动指定 <code>parser: 'time'</code>,例如 <code>config: { dimension: 3, lt: '2012-05-12', parser: 'time' }</code>。</li> <li>纯字符串比较也被支持,但是只能用在 <code>=</code> 或 <code>!=</code> 上。而 <code>></code>, <code>>=</code>, <code>&lt;</code>, <code>&lt;=</code> 并不支持纯字符串比较,也就是说,这四个操作符的右值,不能是字符串。</li> <li><code>reg</code> 操作符能提供正则表达式比较。例如, <code>{ dimension: 'Name', reg: /\s+Müller\s*$/ }</code> 能在 <code>'Name'</code> 维度上选出姓 <code>'Müller'</code> 的数据项。</li></ul> <p><strong>关于逻辑比较:</strong></p> <p>我们也支持了逻辑比较操作符 <strong>与或非</strong>( <code>and</code> | <code>or</code> | <code>not</code> ):</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">dataset</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token comment">// ...</span>
+      <span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">transform</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'filter'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">config</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+          <span class="token comment">// 使用 and 操作符。</span>
+          <span class="token comment">// 类似地,同样的位置也可以使用 “or” 或 “not”。</span>
+          <span class="token comment">// 但是注意 “not” 后应该跟一个 {...} 而非 [...] 。</span>
+          <span class="token literal-property property">and</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+            <span class="token punctuation">{</span> <span class="token literal-property property">dimension</span><span class="token operator">:</span> <span class="token string">'Year'</span><span class="token punctuation">,</span> <span class="token string-property property">'='</span><span class="token operator">:</span> <span class="token number">2011</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+            <span class="token punctuation">{</span> <span class="token literal-property property">dimension</span><span class="token operator">:</span> <span class="token string">'Price'</span><span class="token punctuation">,</span> <span class="token string-property property">'>='</span><span class="token operator">:</span> <span class="token number">20</span><span class="token punctuation">,</span> <span class="token string-property property">'&lt;'</span><span class="token operator">:</span> <span class="token number">30</span> <span class="token punctuation">}</span>
+          <span class="token punctuation">]</span>
+        <span class="token punctuation">}</span>
+        <span class="token comment">// 这个表达的是,选出 2011 年价格大于等于 20 但小于 30 的数据项。</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'pie'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">datasetIndex</span><span class="token operator">:</span> <span class="token number">1</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p><code>and</code>/<code>or</code>/<code>not</code> 自然可以被嵌套,例如:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token literal-property property">transform</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'filter'</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">config</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">or</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">{</span>
+      <span class="token literal-property property">and</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">{</span>
+        <span class="token literal-property property">dimension</span><span class="token operator">:</span> <span class="token string">'Price'</span><span class="token punctuation">,</span> <span class="token string-property property">'>='</span><span class="token operator">:</span> <span class="token number">10</span><span class="token punctuation">,</span> <span class="token string-property property">'&lt;'</span><span class="token operator">:</span> <span class="token number">20</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">dimension</span><span class="token operator">:</span> <span class="token string">'Sales'</span><span class="token punctuation">,</span> <span class="token string-property property">'&lt;'</span><span class="token operator">:</span> <span class="token number">100</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">not</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">dimension</span><span class="token operator">:</span> <span class="token string">'Product'</span><span class="token punctuation">,</span> <span class="token string-property property">'='</span><span class="token operator">:</span> <span class="token string">'Tofu'</span> <span class="token punctuation">}</span>
+      <span class="token punctuation">}</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">and</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">{</span>
+        <span class="token literal-property property">dimension</span><span class="token operator">:</span> <span class="token string">'Price'</span><span class="token punctuation">,</span> <span class="token string-property property">'>='</span><span class="token operator">:</span> <span class="token number">10</span><span class="token punctuation">,</span> <span class="token string-property property">'&lt;'</span><span class="token operator">:</span> <span class="token number">20</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">dimension</span><span class="token operator">:</span> <span class="token string">'Sales'</span><span class="token punctuation">,</span> <span class="token string-property property">'&lt;'</span><span class="token operator">:</span> <span class="token number">100</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">not</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">dimension</span><span class="token operator">:</span> <span class="token string">'Product'</span><span class="token punctuation">,</span> <span class="token string-property property">'='</span><span class="token operator">:</span> <span class="token string">'Cake'</span> <span class="token punctuation">}</span>
+      <span class="token punctuation">}</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p><strong>关于解析器( parser ):</strong></p> <p>还可以指定“解析器”( parser )来对值进行解析后再做比较。现在支持的解析器有:</p> <ul><li><code>parser: 'time'</code>:把原始值解析成时间戳( timestamp )后再做比较。这个解析器的行为,和 <code>echarts.time.parse</code> 相同,即,当原始值为时间对象( JS <code>Date</code> 实例),或者是时间戳,或者是描述时间的字符串(例如 <code>'2012-05-12 03:11:22'</code> ),都可以被解析为时间戳,然后就可以基于数值大小进行比较。如果原始数据是其他不可解析为时间戳的值,那么会被解析为 NaN。</li> <li><code>parser: 'trim'</code>:如果原始数据是字符串,则把字符串两端的空格(全角半角)和换行符去掉。如果不是字符串,还保持为原始数据。</li> <li><code>parser: 'number'</code>:强制把原始数据转成数值。如果不能转成有意义的数值,那么转成 <code>NaN</code>。在大多数场景下,我们并不需要这个解析器,因为按默认策略,“像数值的字符串”就会被转成数值。但是默认策略比较严格,这个解析器比较宽松,如果我们遇到含有尾缀的字符串(例如 <code>'33%'</code>, <code>12px</code>),我们需要手动指定 <code>parser: 'number'</code>,从而去掉尾缀转为数值才能比较。</li></ul> <p>这个例子显示了如何使用 <code>parser: 'time'</code>:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">dataset</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">[</span><span class="token string">'Product'</span><span class="token punctuation">,</span> <span class="token string">'Sales'</span><span class="token punctuation">,</span> <span class="token string">'Price'</span><span class="token punctuation">,</span> <span class="token string">'Date'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Milk Tee'</span><span class="token punctuation">,</span> <span class="token number">311</span><span class="token punctuation">,</span> <span class="token number">21</span><span class="token punctuation">,</span> <span class="token string">'2012-05-12'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Cake'</span><span class="token punctuation">,</span> <span class="token number">135</span><span class="token punctuation">,</span> <span class="token number">28</span><span class="token punctuation">,</span> <span class="token string">'2012-05-22'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Latte'</span><span class="token punctuation">,</span> <span class="token number">262</span><span class="token punctuation">,</span> <span class="token number">36</span><span class="token punctuation">,</span> <span class="token string">'2012-06-02'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Milk Tee'</span><span class="token punctuation">,</span> <span class="token number">359</span><span class="token punctuation">,</span> <span class="token number">21</span><span class="token punctuation">,</span> <span class="token string">'2012-06-22'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Cake'</span><span class="token punctuation">,</span> <span class="token number">121</span><span class="token punctuation">,</span> <span class="token number">28</span><span class="token punctuation">,</span> <span class="token string">'2012-07-02'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Latte'</span><span class="token punctuation">,</span> <span class="token number">271</span><span class="token punctuation">,</span> <span class="token number">36</span><span class="token punctuation">,</span> <span class="token string">'2012-06-22'</span><span class="token punctuation">]</span>
+        <span class="token comment">// ...</span>
+      <span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">transform</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'filter'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">config</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+          <span class="token literal-property property">dimension</span><span class="token operator">:</span> <span class="token string">'Date'</span><span class="token punctuation">,</span>
+          <span class="token string-property property">'>='</span><span class="token operator">:</span> <span class="token string">'2012-05'</span><span class="token punctuation">,</span>
+          <span class="token string-property property">'&lt;'</span><span class="token operator">:</span> <span class="token string">'2012-06'</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">parser</span><span class="token operator">:</span> <span class="token string">'time'</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p><strong>形式化定义:</strong></p> <p>最后,我们给出,数据转换器 "filter" 的 config 的形式化定义:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code><span class="token keyword">type</span> <span class="token class-name">FilterTransform</span> <span class="token operator">=</span> <span class="token punctuation">{</span>
+  type<span class="token operator">:</span> <span class="token string">'filter'</span><span class="token punctuation">;</span>
+  config<span class="token operator">:</span> ConditionalExpressionOption<span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span>
+<span class="token keyword">type</span> <span class="token class-name">ConditionalExpressionOption</span> <span class="token operator">=</span>
+  <span class="token operator">|</span> <span class="token boolean">true</span>
+  <span class="token operator">|</span> <span class="token boolean">false</span>
+  <span class="token operator">|</span> RelationalExpressionOption
+  <span class="token operator">|</span> LogicalExpressionOption<span class="token punctuation">;</span>
+<span class="token keyword">type</span> <span class="token class-name">RelationalExpressionOption</span> <span class="token operator">=</span> <span class="token punctuation">{</span>
+  dimension<span class="token operator">:</span> DimensionName <span class="token operator">|</span> DimensionIndex<span class="token punctuation">;</span>
+  parser<span class="token operator">?</span><span class="token operator">:</span> <span class="token string">'time'</span> <span class="token operator">|</span> <span class="token string">'trim'</span> <span class="token operator">|</span> <span class="token string">'number'</span><span class="token punctuation">;</span>
+  lt<span class="token operator">?</span><span class="token operator">:</span> DataValue<span class="token punctuation">;</span> <span class="token comment">// less than</span>
+  lte<span class="token operator">?</span><span class="token operator">:</span> DataValue<span class="token punctuation">;</span> <span class="token comment">// less than or equal</span>
+  gt<span class="token operator">?</span><span class="token operator">:</span> DataValue<span class="token punctuation">;</span> <span class="token comment">// greater than</span>
+  gte<span class="token operator">?</span><span class="token operator">:</span> DataValue<span class="token punctuation">;</span> <span class="token comment">// greater than or equal</span>
+  eq<span class="token operator">?</span><span class="token operator">:</span> DataValue<span class="token punctuation">;</span> <span class="token comment">// equal</span>
+  ne<span class="token operator">?</span><span class="token operator">:</span> DataValue<span class="token punctuation">;</span> <span class="token comment">// not equal</span>
+  <span class="token string">'&lt;'</span><span class="token operator">?</span><span class="token operator">:</span> DataValue<span class="token punctuation">;</span> <span class="token comment">// lt</span>
+  <span class="token string">'&lt;='</span><span class="token operator">?</span><span class="token operator">:</span> DataValue<span class="token punctuation">;</span> <span class="token comment">// lte</span>
+  <span class="token string">'>'</span><span class="token operator">?</span><span class="token operator">:</span> DataValue<span class="token punctuation">;</span> <span class="token comment">// gt</span>
+  <span class="token string">'>='</span><span class="token operator">?</span><span class="token operator">:</span> DataValue<span class="token punctuation">;</span> <span class="token comment">// gte</span>
+  <span class="token string">'='</span><span class="token operator">?</span><span class="token operator">:</span> DataValue<span class="token punctuation">;</span> <span class="token comment">// eq</span>
+  <span class="token string">'!='</span><span class="token operator">?</span><span class="token operator">:</span> DataValue<span class="token punctuation">;</span> <span class="token comment">// ne</span>
+  <span class="token string">'&lt;>'</span><span class="token operator">?</span><span class="token operator">:</span> DataValue<span class="token punctuation">;</span> <span class="token comment">// ne (SQL style)</span>
+  reg<span class="token operator">?</span><span class="token operator">:</span> RegExp <span class="token operator">|</span> <span class="token builtin">string</span><span class="token punctuation">;</span> <span class="token comment">// RegExp</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span>
+<span class="token keyword">type</span> <span class="token class-name">LogicalExpressionOption</span> <span class="token operator">=</span> <span class="token punctuation">{</span>
+  and<span class="token operator">?</span><span class="token operator">:</span> ConditionalExpressionOption<span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
+  or<span class="token operator">?</span><span class="token operator">:</span> ConditionalExpressionOption<span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
+  not<span class="token operator">?</span><span class="token operator">:</span> ConditionalExpressionOption<span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span>
+<span class="token keyword">type</span> <span class="token class-name">DataValue</span> <span class="token operator">=</span> <span class="token builtin">string</span> <span class="token operator">|</span> <span class="token builtin">number</span> <span class="token operator">|</span> Date<span class="token punctuation">;</span>
+<span class="token keyword">type</span> <span class="token class-name">DimensionName</span> <span class="token operator">=</span> <span class="token builtin">string</span><span class="token punctuation">;</span>
+<span class="token keyword">type</span> <span class="token class-name">DimensionIndex</span> <span class="token operator">=</span> <span class="token builtin">number</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <blockquote><p>注意:使用<a href="zh/basics/import#%E6%8C%89%E9%9C%80%E5%BC%95%E5%85%A5-echarts-%E5%9B%BE%E8%A1%A8%E5%92%8C%E7%BB%84%E4%BB%B6">按需引入</a>接口时,如果需要使用该内置转换器,除了 <code>Dataset</code> 组件,还需引入 <code>Transform</code> 组件。</p></blockquote> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code><span class="token keyword">import</span> <span class="token punctuation">{</span>
+  DatasetComponent<span class="token punctuation">,</span>
+  TransformComponent
+<span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'echarts/components'</span><span class="token punctuation">;</span>
+
+echarts<span class="token punctuation">.</span><span class="token function">use</span><span class="token punctuation">(</span><span class="token punctuation">[</span>
+  DatasetComponent<span class="token punctuation">,</span>
+  TransformComponent
+<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="%E6%95%B0%E6%8D%AE%E8%BD%AC%E6%8D%A2%E5%99%A8-%22sort%22" tabindex="-1">数据转换器 "sort"</h2> <p>"sort" 是另一个内置的数据转换器,用于排序数据。目前主要能用于在类目轴( <code>axis.type: 'category'</code> )中显示排过序的数据。例如:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">dataset</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">dimensions</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'name'</span><span class="token punctuation">,</span> <span class="token string">'age'</span><span class="token punctuation">,</span> <span class="token string">'profession'</span><span class="token punctuation">,</span> <span class="token string">'score'</span><span class="token punctuation">,</span> <span class="token string">'date'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">[</span><span class="token string">' Hannah Krause '</span><span class="token punctuation">,</span> <span class="token number">41</span><span class="token punctuation">,</span> <span class="token string">'Engineer'</span><span class="token punctuation">,</span> <span class="token number">314</span><span class="token punctuation">,</span> <span class="token string">'2011-02-12'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Zhao Qian '</span><span class="token punctuation">,</span> <span class="token number">20</span><span class="token punctuation">,</span> <span class="token string">'Teacher'</span><span class="token punctuation">,</span> <span class="token number">351</span><span class="token punctuation">,</span> <span class="token string">'2011-03-01'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">' Jasmin Krause '</span><span class="token punctuation">,</span> <span class="token number">52</span><span class="token punctuation">,</span> <span class="token string">'Musician'</span><span class="token punctuation">,</span> <span class="token number">287</span><span class="token punctuation">,</span> <span class="token string">'2011-02-14'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Li Lei'</span><span class="token punctuation">,</span> <span class="token number">37</span><span class="token punctuation">,</span> <span class="token string">'Teacher'</span><span class="token punctuation">,</span> <span class="token number">219</span><span class="token punctuation">,</span> <span class="token string">'2011-02-18'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">' Karle Neumann '</span><span class="token punctuation">,</span> <span class="token number">25</span><span class="token punctuation">,</span> <span class="token string">'Engineer'</span><span class="token punctuation">,</span> <span class="token number">253</span><span class="token punctuation">,</span> <span class="token string">'2011-04-02'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">' Adrian Groß'</span><span class="token punctuation">,</span> <span class="token number">19</span><span class="token punctuation">,</span> <span class="token string">'Teacher'</span><span class="token punctuation">,</span> <span class="token keyword">null</span><span class="token punctuation">,</span> <span class="token string">'2011-01-16'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Mia Neumann'</span><span class="token punctuation">,</span> <span class="token number">71</span><span class="token punctuation">,</span> <span class="token string">'Engineer'</span><span class="token punctuation">,</span> <span class="token number">165</span><span class="token punctuation">,</span> <span class="token string">'2011-03-19'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">' Böhm Fuchs'</span><span class="token punctuation">,</span> <span class="token number">36</span><span class="token punctuation">,</span> <span class="token string">'Musician'</span><span class="token punctuation">,</span> <span class="token number">318</span><span class="token punctuation">,</span> <span class="token string">'2011-02-24'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Han Meimei '</span><span class="token punctuation">,</span> <span class="token number">67</span><span class="token punctuation">,</span> <span class="token string">'Engineer'</span><span class="token punctuation">,</span> <span class="token number">366</span><span class="token punctuation">,</span> <span class="token string">'2011-03-12'</span><span class="token punctuation">]</span>
+      <span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">transform</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'sort'</span><span class="token punctuation">,</span>
+        <span class="token comment">// 按分数排序</span>
+        <span class="token literal-property property">config</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">dimension</span><span class="token operator">:</span> <span class="token string">'score'</span><span class="token punctuation">,</span> <span class="token literal-property property">order</span><span class="token operator">:</span> <span class="token string">'asc'</span> <span class="token punctuation">}</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">datasetIndex</span><span class="token operator">:</span> <span class="token number">1</span>
+  <span class="token punctuation">}</span>
+  <span class="token comment">// ...</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p><iframe width="100%" height="350" src=""></iframe></p> <p>数据转换器 "sort" 还有一些额外的功能:</p> <ul><li>可以多重排序,多个维度一起排序。见下面的例子。</li> <li>排序规则是这样的:
+<ul><li>默认按照数值大小排序。其中,“可转为数值的字符串”也被转换成数值,和其他数值一起按大小排序。</li> <li>对于其他“不能转为数值的字符串”,也能在它们之间按字符串进行排序。这个特性有助于这种场景:把相同标签的数据项排到一起,尤其是当多个维度共同排序时。见下面的例子。</li> <li>当“数值及可转为数值的字符串”和“不能转为数值的字符串”进行排序时,或者它们和“其他类型的值”进行比较时,它们本身是不知如何进行比较的。那么我们称呼“后者”为“incomparable”,并且可以设置 <code>incomparable: 'min' | 'max'</code> 来指定一个“incomparable”在这个比较中是最大还是最小,从而能使它们能产生比较结果。这个设定的用途,比如可以是,决定空值(例如 <code>null</code>, <code>undefined</code>, <code>NaN</code>, <code>''</code>, <code>'-'</code>)在排序的头还是尾。</li></ul></li> <li>解析器 <code>parser: 'time' | 'trim' | 'number'</code> 可以被使用,和数据转换器 "filter" 中的情况一样。
+<ul><li>如果要对时间进行排序(例如,值为 JS <code>Date</code> 实例或者时间字符串如 <code>'2012-03-12 11:13:54'</code>),我们需要声明 <code>parser: 'time'</code>。</li> <li>如果需要对有后缀的数值进行排序(如 <code>'33%'</code>, <code>'16px'</code>)我们需要声明 <code>parser: 'number'</code>。</li></ul></li></ul> <p>这是一个“多维度排序”的例子。</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">dataset</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">dimensions</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'name'</span><span class="token punctuation">,</span> <span class="token string">'age'</span><span class="token punctuation">,</span> <span class="token string">'profession'</span><span class="token punctuation">,</span> <span class="token string">'score'</span><span class="token punctuation">,</span> <span class="token string">'date'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">[</span><span class="token string">' Hannah Krause '</span><span class="token punctuation">,</span> <span class="token number">41</span><span class="token punctuation">,</span> <span class="token string">'Engineer'</span><span class="token punctuation">,</span> <span class="token number">314</span><span class="token punctuation">,</span> <span class="token string">'2011-02-12'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Zhao Qian '</span><span class="token punctuation">,</span> <span class="token number">20</span><span class="token punctuation">,</span> <span class="token string">'Teacher'</span><span class="token punctuation">,</span> <span class="token number">351</span><span class="token punctuation">,</span> <span class="token string">'2011-03-01'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">' Jasmin Krause '</span><span class="token punctuation">,</span> <span class="token number">52</span><span class="token punctuation">,</span> <span class="token string">'Musician'</span><span class="token punctuation">,</span> <span class="token number">287</span><span class="token punctuation">,</span> <span class="token string">'2011-02-14'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Li Lei'</span><span class="token punctuation">,</span> <span class="token number">37</span><span class="token punctuation">,</span> <span class="token string">'Teacher'</span><span class="token punctuation">,</span> <span class="token number">219</span><span class="token punctuation">,</span> <span class="token string">'2011-02-18'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">' Karle Neumann '</span><span class="token punctuation">,</span> <span class="token number">25</span><span class="token punctuation">,</span> <span class="token string">'Engineer'</span><span class="token punctuation">,</span> <span class="token number">253</span><span class="token punctuation">,</span> <span class="token string">'2011-04-02'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">' Adrian Groß'</span><span class="token punctuation">,</span> <span class="token number">19</span><span class="token punctuation">,</span> <span class="token string">'Teacher'</span><span class="token punctuation">,</span> <span class="token keyword">null</span><span class="token punctuation">,</span> <span class="token string">'2011-01-16'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Mia Neumann'</span><span class="token punctuation">,</span> <span class="token number">71</span><span class="token punctuation">,</span> <span class="token string">'Engineer'</span><span class="token punctuation">,</span> <span class="token number">165</span><span class="token punctuation">,</span> <span class="token string">'2011-03-19'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">' Böhm Fuchs'</span><span class="token punctuation">,</span> <span class="token number">36</span><span class="token punctuation">,</span> <span class="token string">'Musician'</span><span class="token punctuation">,</span> <span class="token number">318</span><span class="token punctuation">,</span> <span class="token string">'2011-02-24'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token string">'Han Meimei '</span><span class="token punctuation">,</span> <span class="token number">67</span><span class="token punctuation">,</span> <span class="token string">'Engineer'</span><span class="token punctuation">,</span> <span class="token number">366</span><span class="token punctuation">,</span> <span class="token string">'2011-03-12'</span><span class="token punctuation">]</span>
+      <span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">transform</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'sort'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">config</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+          <span class="token comment">// 对两个维度按声明的优先级分别排序。</span>
+          <span class="token punctuation">{</span> <span class="token literal-property property">dimension</span><span class="token operator">:</span> <span class="token string">'profession'</span><span class="token punctuation">,</span> <span class="token literal-property property">order</span><span class="token operator">:</span> <span class="token string">'desc'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+          <span class="token punctuation">{</span> <span class="token literal-property property">dimension</span><span class="token operator">:</span> <span class="token string">'score'</span><span class="token punctuation">,</span> <span class="token literal-property property">order</span><span class="token operator">:</span> <span class="token string">'desc'</span> <span class="token punctuation">}</span>
+        <span class="token punctuation">]</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">datasetIndex</span><span class="token operator">:</span> <span class="token number">1</span>
+  <span class="token punctuation">}</span>
+  <span class="token comment">//...</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p><iframe width="100%" height="350" src=""></iframe></p> <p>最后,我们给出数据转换器 "sort" 的 config 的形式化定义。</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code><span class="token keyword">type</span> <span class="token class-name">SortTransform</span> <span class="token operator">=</span> <span class="token punctuation">{</span>
+  type<span class="token operator">:</span> <span class="token string">'sort'</span><span class="token punctuation">;</span>
+  config<span class="token operator">:</span> OrderExpression <span class="token operator">|</span> OrderExpression<span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span>
+<span class="token keyword">type</span> <span class="token class-name">OrderExpression</span> <span class="token operator">=</span> <span class="token punctuation">{</span>
+  dimension<span class="token operator">:</span> DimensionName <span class="token operator">|</span> DimensionIndex<span class="token punctuation">;</span>
+  order<span class="token operator">:</span> <span class="token string">'asc'</span> <span class="token operator">|</span> <span class="token string">'desc'</span><span class="token punctuation">;</span>
+  incomparable<span class="token operator">?</span><span class="token operator">:</span> <span class="token string">'min'</span> <span class="token operator">|</span> <span class="token string">'max'</span><span class="token punctuation">;</span>
+  parser<span class="token operator">?</span><span class="token operator">:</span> <span class="token string">'time'</span> <span class="token operator">|</span> <span class="token string">'trim'</span> <span class="token operator">|</span> <span class="token string">'number'</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span>
+<span class="token keyword">type</span> <span class="token class-name">DimensionName</span> <span class="token operator">=</span> <span class="token builtin">string</span><span class="token punctuation">;</span>
+<span class="token keyword">type</span> <span class="token class-name">DimensionIndex</span> <span class="token operator">=</span> <span class="token builtin">number</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <blockquote><p>注意:使用<a href="zh/basics/import#%E6%8C%89%E9%9C%80%E5%BC%95%E5%85%A5-echarts-%E5%9B%BE%E8%A1%A8%E5%92%8C%E7%BB%84%E4%BB%B6">按需引入</a>接口时,如果需要使用该内置转换器,除了 <code>Dataset</code> 组件,还需引入 <code>Transform</code> 组件。</p></blockquote> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code><span class="token keyword">import</span> <span class="token punctuation">{</span>
+  DatasetComponent<span class="token punctuation">,</span>
+  TransformComponent
+<span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'echarts/components'</span><span class="token punctuation">;</span>
+
+echarts<span class="token punctuation">.</span><span class="token function">use</span><span class="token punctuation">(</span><span class="token punctuation">[</span>
+  DatasetComponent<span class="token punctuation">,</span>
+  TransformComponent
+<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="%E4%BD%BF%E7%94%A8%E5%A4%96%E9%83%A8%E7%9A%84%E6%95%B0%E6%8D%AE%E8%BD%AC%E6%8D%A2%E5%99%A8" tabindex="-1">使用外部的数据转换器</h2> <p>除了上述的内置的数据转换器外,我们也可以使用外部的数据转换器。外部数据转换器能提供或自己定制更丰富的功能。下面的例子中,我们使用第三方库 <a href="https://github.com/ecomfe/echarts-stat">ecStat</a> 提供的数据转换器。</p> <p>生成数据的回归线:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token comment">// 首先要注册外部数据转换器。</span>
+echarts<span class="token punctuation">.</span><span class="token function">registerTransform</span><span class="token punctuation">(</span><span class="token function">ecStatTransform</span><span class="token punctuation">(</span>ecStat<span class="token punctuation">)</span><span class="token punctuation">.</span>regression<span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">dataset</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">source</span><span class="token operator">:</span> rawData
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">transform</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token comment">// 引用注册的数据转换器。</span>
+        <span class="token comment">// 注意,每个外部的数据转换器,都有名空间(如 'ecStat:xxx','ecStat' 是名空间)。</span>
+        <span class="token comment">// 而内置数据转换器(如 'filter', 'sort')没有名空间。</span>
+        <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'ecStat:regression'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">config</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+          <span class="token comment">// 这里是此外部数据转换器所需的参数。</span>
+          <span class="token literal-property property">method</span><span class="token operator">:</span> <span class="token string">'exponential'</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'category'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'scatter'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'scatter'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">datasetIndex</span><span class="token operator">:</span> <span class="token number">0</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'regression'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">symbol</span><span class="token operator">:</span> <span class="token string">'none'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">datasetIndex</span><span class="token operator">:</span> <span class="token number">1</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>一些使用 echarts-stat 的例子:</p> <ul><li><a href="https://echarts.apache.org/examples/zh/editor.html?c=data-transform-aggregate&edit=1&reset=1">聚集 (Aggregate)</a></li> <li><a href="https://echarts.apache.org/examples/zh/editor.html?c=bar-histogram&edit=1&reset=1">直方图 (Histogram)</a></li> <li><a href="https://echarts.apache.org/examples/zh/editor.html?c=scatter-clustering&edit=1&reset=1">简单聚类 (Clustering)</a></li> <li><a href="https://echarts.apache.org/examples/zh/editor.html?c=scatter-linear-regression&edit=1&reset=1">线性回归线 (Linear Regression)</a></li> <li><a href="https://echarts.apache.org/examples/zh/editor.html?c=scatter-exponential-regression&edit=1&reset=1">指数回归线 (Exponential Regression)</a></li> <li><a href="https://echarts.apache.org/examples/zh/editor.html?c=scatter-logarithmic-regression&edit=1&reset=1">对数回归线 (Logarithmic Regression)</a></li> <li><a href="https://echarts.apache.org/examples/zh/editor.html?c=scatter-polynomial-regression&edit=1&reset=1">多项式回归线 (Polynomial Regression)</a></li></ul></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">本文贡献者</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/zh/concepts/data-transform.md" title="编辑本文" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">在 GitHub 上编辑本页</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a><a href="https://github.com/100pah" target="_blank" class="post-contributor has-avatar"><img alt="100pah" src="https://echarts.apache.org/en/images/people/宿爽.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>100pah</span></a><a href="https://github.com/plainheart" target="_blank" class="post-contributor has-avatar"><img alt="plainheart" src="https://echarts.apache.org/en/images/people/plainheart.jpg" loading="lazy" decoding="async" fetchpriority="low"> <span>plainheart</span></a><a href="https://github.com/idaibin" target="_blank" class="post-contributor"><!----> <span>idaibin</span></a><a href="https://github.com/shangchen0531" target="_blank" class="post-contributor"><!----> <span>shangchen0531</span></a><a href="https://github.com/meishijia" target="_blank" class="post-contributor"><!----> <span>meishijia</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(g,I,C,i,e,A,t,d,o,l,a,c,n,r,s,m,h,b,y,p,u,W,B,Z,w,L,J,G,M,D,E,S,O,v,X,z,F,R,Y,K,H,N,V,f,j,k,x,T,U,Q,q,P,_,$,gg,Ig,Cg,ig,eg,Ag,tg,dg,og){return{layout:"default",data:[{html:'<h1 id="%E4%BD%BF%E7%94%A8-transform-%E8%BF%9B%E8%A1%8C%E6%95%B0%E6%8D%AE%E8%BD%AC%E6%8D%A2" tabindex="-1">使用 transform 进行数据转换</h1>\n<p>Apache ECharts<sup>TM</sup> 5 开始支持了“数据转换”( data transform )功能。在 echarts 中,“数据转换” 这个词指的是,给定一个已有的“数据集”(<a href="https://echarts.apache.org/option.html##dataset">dataset</a>)和一个“转换方法”(<a href="https://echarts.apache.org/option.html##dataset.transform">transform</a>),echarts 能生成一个新的“数据集”,然后可以使用这个新的“数据集”绘制图表。这些工作都可以声明式地完成。</p>\n<p>抽象地来说,数据转换是这样一种公式:<code>outData = f(inputData)</code>。<code>f</code> 是转换方法,例如:<code>filter</code>、<code>sort</code>、<code>regression</code>、<code>boxplot</code>、<code>cluster</code>、<code>aggregate</code>(todo) 等等。有了数据转换能力后,我们就至少可以做到这些事情:</p>\n<ul>\n<li>把数据分成多份用不同的饼图展现。</li>\n<li>进行一些数据统计运算,并展示结果。</li>\n<li>用某些数据可视化算法处理数据,并展示结果。</li>\n<li>数据排序。</li>\n<li>去除或直选择数据项。</li>\n<li>...</li>\n</ul>\n<h2 id="%E6%95%B0%E6%8D%AE%E8%BD%AC%E6%8D%A2%E5%9F%BA%E7%A1%80%E4%BD%BF%E7%94%A8" tabindex="-1">数据转换基础使用</h2>\n<p>在 echarts 中,数据转换是依托于数据集(<a href="https://echarts.apache.org/option.html##dataset">dataset</a>)来实现的. 我们可以设置 <a href="https://echarts.apache.org/option.html##dataset.transform">dataset.transform</a> 来表示,此 dataset 的数据,来自于此 transform 的结果。</p>\n<p>下面是上述例子的效果,三个饼图分别显示了 2011、2012、2013 年的数据。</p>\n<md-live lang="js" code="\'dmFyIG9wdGlvbiA9IHsKICBkYXRhc2V0OiBbCiAgICB7CiAgICAgIC8vIOi_meS4qiBkYXRhc2V0IOeahCBpbmRleCDmmK8gYDBg44CCCiAgICAgIHNvdXJjZTogWwogICAgICAgIFsnUHJvZHVjdCcsICdTYWxlcycsICdQcmljZScsICdZZWFyJ10sCiAgICAgICAgWydDYWtlJywgMTIzLCAzMiwgMjAxMV0sCiAgICAgICAgWydDZXJlYWwnLCAyMzEsIDE0LCAyMDExXSwKICAgICAgICBbJ1RvZnUnLCAyMzUsIDUsIDIwMTFdLAogICAgICAgIFsnRHVtcGxpbmcnLCAzNDEsIDI1LCAyMDExXSwKICAgICAgICBbJ0Jpc2N1aXQnLCAxMjIsIDI5LCAyMDExXSwKICAgICAgICBbJ0Nha2UnLCAxNDMsIDMwLCAyMDEyXSwKICAgICAgICBbJ0NlcmVhbCcsIDIwMSwgMTksIDIwMTJdLAogICAgICAgIFsnVG9mdScsIDI1NSwgNywgMjAxMl0sCiAgICAgICAgWydEdW1wbGluZycsIDI0MSwgMjcsIDIwMTJdLAogICAgICAgIFsnQmlzY3VpdCcsIDEwMiwgMzQsIDIwMTJdLAogICAgICAgIFsnQ2FrZScsIDE1MywgMjgsIDIwMTNdLAogICAgICAgIFsnQ2VyZWFsJywgMTgxLCAyMSwgMjAxM10sCiAgICAgICAgWydUb2Z1JywgMzk1LCA0LCAyMDEzXSwKICAgICAgICBbJ0R1bXBsaW5nJywgMjgxLCAzMSwgMjAxM10sCiAgICAgICAgWydCaXNjdWl0JywgOTIsIDM5LCAyMDEzXSwKICAgICAgICBbJ0Nha2UnLCAyMjMsIDI5LCAyMDE0XSwKICAgICAgICBbJ0NlcmVhbCcsIDIxMSwgMTcsIDIwMTRdLAogICAgICAgIFsnVG9mdScsIDM0NSwgMywgMjAxNF0sCiAgICAgICAgWydEdW1wbGluZycsIDIxMSwgMzUsIDIwMTRdLAogICAgICAgIFsnQmlzY3VpdCcsIDcyLCAyNCwgMjAxNF0KICAgICAgXQogICAgICAvLyBpZDogJ2EnCiAgICB9LAogICAgewogICAgICAvLyDov5nkuKogZGF0YXNldCDnmoQgaW5kZXgg5pivIGAxYOOAggogICAgICAvLyDov5nkuKogYHRyYW5zZm9ybWAg6YWN572u77yM6KGo56S677yM5q2kIGRhdGFzZXQg55qE5pWw5o2u77yM5p2l6Ieq5LqO5q2kIHRyYW5zZm9ybSDnmoTnu5PmnpzjgIIKICAgICAgdHJhbnNmb3JtOiB7CiAgICAgICAgdHlwZTogJ2ZpbHRlcicsCiAgICAgICAgY29uZmlnOiB7IGRpbWVuc2lvbjogJ1llYXInLCB2YWx1ZTogMjAxMSB9CiAgICAgIH0KICAgICAgLy8g5oiR5Lus6L-Y5Y-v5Lul6K6-572u6L-Z5Lqb5Y-v6YCJ55qE5bGe5oCn77yaIGBmcm9tRGF0YXNldEluZGV4YCDmiJYgYGZyb21EYXRhc2V0SWRg44CCCiAgICAgIC8vIOi_meS6m-WxnuaAp--8jOaMh-WumuS6hu-8jHRyYW5zZm9ybSDnmoTovpPlhaXvvIzmnaXoh6rkuo7lk6rkuKogZGF0YXNldOOAguS-i-Wmgu-8jAogICAgICAvLyBgZnJvbURhdGFzZXRJbmRleDogMGAg6KGo56S66L6T5YWl5p2l6Ieq5LqOIGluZGV4IOS4uiBgMGAg55qEIGRhdGFzZXQg44CC5Y-I5L6L5aaC77yMCiAgICAgIC8vIGBmcm9tRGF0YXNldElkOiAnYSdgIOihqOekuui-k-WFpeadpeiHquS6jiBgaWQ6ICdhJ2Ag55qEIGRhdGFzZXTjgIIKICAgICAgLy8g5b2T6L-Z5Lqb5bGe5oCn6YO95LiN5oyH5a6a5pe277yM6buY6K6k6K6k5Li677yM6L6T5YWl5p2l6Ieq5LqOIGluZGV4IOS4uiBgMGAg55qEIGRhdGFzZXQg44CCCiAgICB9LAogICAgewogICAgICAvLyDov5nkuKogZGF0YXNldCDnmoQgaW5kZXgg5pivIGAyYOOAggogICAgICAvLyDlkIzmoLfvvIzov5nph4zlm6DkuLogYGZyb21EYXRhc2V0SW5kZXhgIOWSjCBgZnJvbURhdGFzZXRJZGAg6YO95rKh5pyJ6KKr5oyH5a6a77yMCiAgICAgIC8vIOmCo-S5iOi-k-WFpem7mOiupOadpeiHquS6jiBpbmRleCDkuLogYDBgIOeahCBkYXRhc2V0IOOAggogICAgICB0cmFuc2Zvcm06IHsKICAgICAgICAvLyDov5nkuKrnsbvlnovkuLogImZpbHRlciIg55qEIHRyYW5zZm9ybSDog73lpJ_pgY3ljoblubbnrZvpgInlh7rmu6HotrPmnaHku7bnmoTmlbDmja7pobnjgIIKICAgICAgICB0eXBlOiAnZmlsdGVyJywKICAgICAgICAvLyDmr4_kuKogdHJhbnNmb3JtIOWmguaenOmcgOimgeaciemFjee9ruWPguaVsOeahOivne-8jOmDvemhu-mFjee9ruWcqCBgY29uZmlnYCDph4zjgIIKICAgICAgICAvLyDlnKjov5nkuKogImZpbHRlciIgdHJhbnNmb3JtIOS4re-8jGBjb25maWdgIOeUqOS6juaMh-Wumuetm-mAieadoeS7tuOAggogICAgICAgIC8vIOS4i-mdoui_meS4quetm-mAieadoeS7tuaYr--8mumAieWHuue7tOW6pu-8iCBkaW1lbnNpb24g77yJJ1llYXInIOS4reWAvOS4uiAyMDEyIOeahOaJgOaciQogICAgICAgIC8vIOaVsOaNrumhueOAggogICAgICAgIGNvbmZpZzogeyBkaW1lbnNpb246ICdZZWFyJywgdmFsdWU6IDIwMTIgfQogICAgICB9CiAgICB9LAogICAgewogICAgICAvLyDov5nkuKogZGF0YXNldCDnmoQgaW5kZXgg5pivIGAzYOOAggogICAgICB0cmFuc2Zvcm06IHsKICAgICAgICB0eXBlOiAnZmlsdGVyJywKICAgICAgICBjb25maWc6IHsgZGltZW5zaW9uOiAnWWVhcicsIHZhbHVlOiAyMDEzIH0KICAgICAgfQogICAgfQogIF0sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIHR5cGU6ICdwaWUnLAogICAgICByYWRpdXM6IDUwLAogICAgICBjZW50ZXI6IFsnMjUlJywgJzUwJSddLAogICAgICAvLyDov5nkuKrppbzlm77ns7vliJfvvIzlvJXnlKjkuoYgaW5kZXgg5Li6IGAxYCDnmoQgZGF0YXNldCDjgILkuZ_lsLHmmK_vvIzlvJXnlKjkuobkuIrov7AKICAgICAgLy8gMjAxMSDlubTpgqPkuKogImZpbHRlciIgdHJhbnNmb3JtIOeahOe7k-aenOOAggogICAgICBkYXRhc2V0SW5kZXg6IDEKICAgIH0sCiAgICB7CiAgICAgIHR5cGU6ICdwaWUnLAogICAgICByYWRpdXM6IDUwLAogICAgICBjZW50ZXI6IFsnNTAlJywgJzUwJSddLAogICAgICBkYXRhc2V0SW5kZXg6IDIKICAgIH0sCiAgICB7CiAgICAgIHR5cGU6ICdwaWUnLAogICAgICByYWRpdXM6IDUwLAogICAgICBjZW50ZXI6IFsnNzUlJywgJzUwJSddLAogICAgICBkYXRhc2V0SW5kZXg6IDMKICAgIH0KICBdCn07\'" v-bind="{}" />\n<p>现在我们简单总结下,使用 transform 时的几个要点:</p>\n<ul>\n<li>在一个空的 dataset 中声明 <code>transform</code>, <code>fromDatasetIndex</code>/<code>fromDatasetId</code> 来表示我们要生成新的数据。</li>\n<li>系列引用这个 dataset 。</li>\n</ul>\n<h2 id="%E6%95%B0%E6%8D%AE%E8%BD%AC%E6%8D%A2%E7%9A%84%E8%BF%9B%E9%98%B6%E4%BD%BF%E7%94%A8" tabindex="-1">数据转换的进阶使用</h2>\n<h4 id="%E9%93%BE%E5%BC%8F%E5%A3%B0%E6%98%8E-transform" tabindex="-1">链式声明 transform</h4>\n<p><code>transform</code> 可以被链式声明,这是一个语法糖。</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIGRhdGFzZXQ6IFsKICAgIHsKICAgICAgc291cmNlOiBbCiAgICAgICAgLy8g5Y6f5aeL5pWw5o2uCiAgICAgIF0KICAgIH0sCiAgICB7CiAgICAgIC8vIOWHoOS4qiB0cmFuc2Zvcm0g6KKr5aOw5piO5oiQIGFycmF5IO-8jOS7luS7rOaehOaIkOS6huS4gOS4qumTvu-8jAogICAgICAvLyDliY3kuIDkuKogdHJhbnNmb3JtIOeahOi-k-WHuuaYr-WQjuS4gOS4qiB0cmFuc2Zvcm0g55qE6L6T5YWl44CCCiAgICAgIHRyYW5zZm9ybTogWwogICAgICAgIHsKICAgICAgICAgIHR5cGU6ICdmaWx0ZXInLAogICAgICAgICAgY29uZmlnOiB7IGRpbWVuc2lvbjogJ1Byb2R1Y3QnLCB2YWx1ZTogJ1RvZnUnIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgIHR5cGU6ICdzb3J0JywKICAgICAgICAgIGNvbmZpZzogeyBkaW1lbnNpb246ICdZZWFyJywgb3JkZXI6ICdkZXNjJyB9CiAgICAgICAgfQogICAgICBdCiAgICB9CiAgXSwKICBzZXJpZXM6IHsKICAgIHR5cGU6ICdwaWUnLAogICAgLy8g6L-Z5Liq57O75YiX5byV55So5LiK6L-wIHRyYW5zZm9ybSDnmoTnu5PmnpzjgIIKICAgIGRhdGFzZXRJbmRleDogMQogIH0KfTs\'" line-highlights="\'\'" />\n<blockquote>\n<p>注意:理论上,任何 transform 都可能有多个输入或多个输出。但是,如果一个 transform 被链式声明,它只能获取前一个 transform 的第一个输出作为输入(第一个 transform 除外),以及它只能把自己的第一个输出给到后一个 transform (最后一个 transform 除外)。</p>\n</blockquote>\n<h4 id="%E4%B8%80%E4%B8%AA-transform-%E8%BE%93%E5%87%BA%E5%A4%9A%E4%B8%AA-data" tabindex="-1">一个 transform 输出多个 data</h4>\n<p>在大多数场景下,transform 只需输出一个 data 。但是也有一些场景,需要输出多个 data ,每个 data 可以被不同的 series 或者 dataset 所使用。</p>\n<p>例如,在内置的 &quot;boxplot&quot; transform 中,除了 boxplot 系列所需要的 data 外,离群点( outlier )也会被生成,并且可以用例如散点图系列显示出来。例如,<a href="https://echarts.apache.org/examples/zh/editor.html?c=boxplot-light-velocity">example</a>。</p>\n<p>我们提供配置 <a href="https://echarts.apache.org/option.html##dataset.fromTransformResult">dataset.fromTransformResult</a> 来满足这种情况,例如:</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIGRhdGFzZXQ6IFsKICAgIHsKICAgICAgLy8g6L-Z5LiqIGRhdGFzZXQg55qEIGluZGV4IOS4uiBgMGDjgIIKICAgICAgc291cmNlOiBbCiAgICAgICAgLy8g5Y6f5aeL5pWw5o2uCiAgICAgIF0KICAgIH0sCiAgICB7CiAgICAgIC8vIOi_meS4qiBkYXRhc2V0IOeahCBpbmRleCDkuLogYDFg44CCCiAgICAgIHRyYW5zZm9ybTogewogICAgICAgIHR5cGU6ICdib3hwbG90JwogICAgICB9CiAgICAgIC8vIOi_meS4qiAiYm94cGxvdCIgdHJhbnNmb3JtIOeUn-aIkOS6huS4pOS4quaVsOaNru-8mgogICAgICAvLyByZXN1bHRbMF06IGJveHBsb3Qgc2VyaWVzIOaJgOmcgOeahOaVsOaNruOAggogICAgICAvLyByZXN1bHRbMV06IOemu-e-pOeCueaVsOaNruOAggogICAgICAvLyDlvZPlhbbku5Ygc2VyaWVzIOaIluiAhSBkYXRhc2V0IOW8leeUqOi_meS4qiBkYXRhc2V0IOaXtu-8jOS7luS7rOm7mOiupOWPquiDveW-l-WIsAogICAgICAvLyByZXN1bHRbMF0g44CCCiAgICAgIC8vIOWmguaenOaDs-imgeS7luS7rOW-l-WIsCByZXN1bHRbMV0g77yM6ZyA6KaB6aKd5aSW5aOw5piO5aaC5LiL6L-Z5qC35LiA5LiqIGRhdGFzZXQg77yaCiAgICB9LAogICAgewogICAgICAvLyDov5nkuKogZGF0YXNldCDnmoQgaW5kZXgg5Li6IGAyYOOAggogICAgICAvLyDov5nkuKrpop3lpJbnmoQgZGF0YXNldCDmjIflrprkuobmlbDmja7mnaXmupDkuo4gaW5kZXgg5Li6IGAxYCDnmoQgZGF0YXNldOOAggogICAgICBmcm9tRGF0YXNldEluZGV4OiAxLAogICAgICAvLyDlubbkuJTmjIflrprkuobojrflj5YgdHJhbnNmb3JtIHJlc3VsdFsxXSDjgIIKICAgICAgZnJvbVRyYW5zZm9ybVJlc3VsdDogMQogICAgfQogIF0sCiAgeEF4aXM6IHsKICAgIHR5cGU6ICdjYXRlZ29yeScKICB9LAogIHlBeGlzOiB7fSwKICBzZXJpZXM6IFsKICAgIHsKICAgICAgbmFtZTogJ2JveHBsb3QnLAogICAgICB0eXBlOiAnYm94cGxvdCcsCiAgICAgIC8vIFJlZmVyZW5jZSB0aGUgZGF0YSBmcm9tIHJlc3VsdFswXS4KICAgICAgLy8g6L-Z5LiqIHNlcmllcyDlvJXnlKggaW5kZXgg5Li6IGAxYCDnmoQgZGF0YXNldCDjgIIKICAgICAgZGF0YXNldEluZGV4OiAxCiAgICB9LAogICAgewogICAgICBuYW1lOiAnb3V0bGllcicsCiAgICAgIHR5cGU6ICdzY2F0dGVyJywKICAgICAgLy8g6L-Z5LiqIHNlcmllcyDlvJXnlKggaW5kZXgg5Li6IGAyYCDnmoQgZGF0YXNldCDjgIIKICAgICAgLy8g5LuO6ICM5Lmf5bCx5b6X5Yiw5LqG5LiK6L-w55qEIHRyYW5zZm9ybSByZXN1bHRbMV0g77yI5Y2z56a7576k54K55pWw5o2u77yJCiAgICAgIGRhdGFzZXRJbmRleDogMgogICAgfQogIF0KfTs\'" line-highlights="\'\'" />\n<p>另外,<a href="https://echarts.apache.org/option.html##dataset.fromTransformResult">dataset.fromTransformResult</a> 和 <a href="https://echarts.apache.org/option.html##dataset.transform">dataset.transform</a> 能同时出现在一个 dataset 中,这表示,这个 transform 的输入,是上游的结果中以 <code>fromTransformResult</code> 获取的结果。例如:</p>\n<md-code-block lang="js" code="\'ewogIGZyb21EYXRhc2V0SW5kZXg6IDEsCiAgZnJvbVRyYW5zZm9ybVJlc3VsdDogMSwKICB0cmFuc2Zvcm06IHsKICAgIHR5cGU6ICdzb3J0JywKICAgIGNvbmZpZzogeyBkaW1lbnNpb246IDIsIG9yZGVyOiAnZGVzYycgfQogIH0KfQ\'" line-highlights="\'\'" />\n<h4 id="%E5%9C%A8%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83%E4%B8%AD-debug" tabindex="-1">在开发环境中 debug</h4>\n<p>使用 transform 时,有时候我们会配不对,显示不出来结果,并且不知道哪里错了。所以,这里提供了一个配置项 <code>transform.print</code> 方便 debug 。这个配置项只在开发环境中生效。如下例:</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIGRhdGFzZXQ6IFsKICAgIHsKICAgICAgc291cmNlOiBbXQogICAgfSwKICAgIHsKICAgICAgdHJhbnNmb3JtOiB7CiAgICAgICAgdHlwZTogJ2ZpbHRlcicsCiAgICAgICAgY29uZmlnOiB7fSwKICAgICAgICAvLyDphY3nva7kuLogYHRydWVgIOWQju-8jCB0cmFuc2Zvcm0g55qE57uT5p6cCiAgICAgICAgLy8g5Lya6KKrIGNvbnNvbGUubG9nIOaJk-WNsOWHuuadpeOAggogICAgICAgIHByaW50OiB0cnVlCiAgICAgIH0KICAgIH0KICBdCiAgLy8gLi4uCn07\'" line-highlights="\'\'" />\n<h2 id="%E6%95%B0%E6%8D%AE%E8%BD%AC%E6%8D%A2%E5%99%A8-%22filter%22" tabindex="-1">数据转换器 &quot;filter&quot;</h2>\n<p>echarts 内置提供了能起过滤作用的数据转换器。我们只需声明 <code>transform.type: &quot;filter&quot;</code>,以及给出数据筛选条件。如下例:</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIGRhdGFzZXQ6IFsKICAgIHsKICAgICAgc291cmNlOiBbCiAgICAgICAgWydQcm9kdWN0JywgJ1NhbGVzJywgJ1ByaWNlJywgJ1llYXInXSwKICAgICAgICBbJ0Nha2UnLCAxMjMsIDMyLCAyMDExXSwKICAgICAgICBbJ0xhdHRlJywgMjMxLCAxNCwgMjAxMV0sCiAgICAgICAgWydUb2Z1JywgMjM1LCA1LCAyMDExXSwKICAgICAgICBbJ01pbGsgVGVlJywgMzQxLCAyNSwgMjAxMV0sCiAgICAgICAgWydQb3JyaWRnZScsIDEyMiwgMjksIDIwMTFdLAogICAgICAgIFsnQ2FrZScsIDE0MywgMzAsIDIwMTJdLAogICAgICAgIFsnTGF0dGUnLCAyMDEsIDE5LCAyMDEyXSwKICAgICAgICBbJ1RvZnUnLCAyNTUsIDcsIDIwMTJdLAogICAgICAgIFsnTWlsayBUZWUnLCAyNDEsIDI3LCAyMDEyXSwKICAgICAgICBbJ1BvcnJpZGdlJywgMTAyLCAzNCwgMjAxMl0sCiAgICAgICAgWydDYWtlJywgMTUzLCAyOCwgMjAxM10sCiAgICAgICAgWydMYXR0ZScsIDE4MSwgMjEsIDIwMTNdLAogICAgICAgIFsnVG9mdScsIDM5NSwgNCwgMjAxM10sCiAgICAgICAgWydNaWxrIFRlZScsIDI4MSwgMzEsIDIwMTNdLAogICAgICAgIFsnUG9ycmlkZ2UnLCA5MiwgMzksIDIwMTNdLAogICAgICAgIFsnQ2FrZScsIDIyMywgMjksIDIwMTRdLAogICAgICAgIFsnTGF0dGUnLCAyMTEsIDE3LCAyMDE0XSwKICAgICAgICBbJ1RvZnUnLCAzNDUsIDMsIDIwMTRdLAogICAgICAgIFsnTWlsayBUZWUnLCAyMTEsIDM1LCAyMDE0XSwKICAgICAgICBbJ1BvcnJpZGdlJywgNzIsIDI0LCAyMDE0XQogICAgICBdCiAgICB9LAogICAgewogICAgICB0cmFuc2Zvcm06IHsKICAgICAgICB0eXBlOiAnZmlsdGVyJywKICAgICAgICBjb25maWc6IHsgZGltZW5zaW9uOiAnWWVhcicsICc9JzogMjAxMSB9CiAgICAgICAgLy8g6L-Z5Liq562b6YCJ5p2h5Lu26KGo56S677yM6YGN5Y6G5pWw5o2u77yM562b6YCJ5Ye657u05bqm77yIIGRpbWVuc2lvbiDvvIkKICAgICAgICAvLyAnWWVhcicg5LiK5YC85Li6IDIwMTEg55qE5omA5pyJ5pWw5o2u6aG544CCCiAgICAgIH0KICAgIH0KICBdLAogIHNlcmllczogewogICAgdHlwZTogJ3BpZScsCiAgICBkYXRhc2V0SW5kZXg6IDEKICB9Cn07\'" v-bind="{}" />\n<p>这是 filter 的另一个例子的效果:</p>\n<p><md-example src="data-transform-filter"></md-example></p>\n<p>在 &quot;filter&quot; transform 中,有这些要素:</p>\n<p><strong>关于维度( dimension ):</strong></p>\n<p><code>config.dimension</code> 指定了维度,能设成这样的值:</p>\n<ul>\n<li>设定成声明在 dataset 中的维度名,例如 <code>config: { dimension: \'Year\', \'=\': 2011 }</code>。不过, dataset 中维度名的声明并非强制,所以我们也可以</li>\n<li>设定成 dataset 中的维度 index (index 值从 0 开始)例如 <code>config: { dimension: 3, \'=\': 2011 }</code>。</li>\n</ul>\n<p><strong>关于关系比较操作符:</strong></p>\n<p>关系操作符,可以设定这些:\n<code>&gt;</code>(<code>gt</code>)、<code>&gt;=</code>(<code>gte</code>)、<code>&lt;</code>(<code>lt</code>)、<code>&lt;=</code>(<code>lte</code>)、<code>=</code>(<code>eq</code>)、<code>!=</code>(<code>ne</code>、<code>&lt;&gt;</code>)、<code>reg</code>。(小括号中的符号或名字,是别名,设置起来作用相同)。他们首先基本地能基于数值大小进行比较,然后也有些额外的功能特性:</p>\n<ul>\n<li>多个关系操作符能声明在一个 {} 中,例如 <code>{ dimension: \'Price\', \'&gt;=\': 20, \'&lt;\': 30 }</code>。这表示“与”的关系,即,筛选出价格大于等于 20 小于 30 的数据项。</li>\n<li>data 里的值,不仅可以是数值( number ),也可以是“类数值的字符串”(“ numeric string ”)。“类数值的字符串”本身是一个字符串,但是可以被转换为字面所描述的数值,例如 <code>\' 123 \'</code>。转换过程中,空格(全角半角空格)和换行符都能被消除( trim )。</li>\n<li>如果我们需要对日期对象(JS <code>Date</code>)或者日期字符串(如 \'2012-05-12\')进行比较,我们需要手动指定 <code>parser: \'time\'</code>,例如 <code>config: { dimension: 3, lt: \'2012-05-12\', parser: \'time\' }</code>。</li>\n<li>纯字符串比较也被支持,但是只能用在 <code>=</code> 或 <code>!=</code> 上。而 <code>&gt;</code>, <code>&gt;=</code>, <code>&lt;</code>, <code>&lt;=</code> 并不支持纯字符串比较,也就是说,这四个操作符的右值,不能是字符串。</li>\n<li><code>reg</code> 操作符能提供正则表达式比较。例如, <code>{ dimension: \'Name\', reg: /\\s+Müller\\s*$/ }</code> 能在 <code>\'Name\'</code> 维度上选出姓 <code>\'Müller\'</code> 的数据项。</li>\n</ul>\n<p><strong>关于逻辑比较:</strong></p>\n<p>我们也支持了逻辑比较操作符 <strong>与或非</strong>( <code>and</code> | <code>or</code> | <code>not</code> ):</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIGRhdGFzZXQ6IFsKICAgIHsKICAgICAgc291cmNlOiBbCiAgICAgICAgLy8gLi4uCiAgICAgIF0KICAgIH0sCiAgICB7CiAgICAgIHRyYW5zZm9ybTogewogICAgICAgIHR5cGU6ICdmaWx0ZXInLAogICAgICAgIGNvbmZpZzogewogICAgICAgICAgLy8g5L2_55SoIGFuZCDmk43kvZznrKbjgIIKICAgICAgICAgIC8vIOexu-S8vOWcsO-8jOWQjOagt-eahOS9jee9ruS5n-WPr-S7peS9v-eUqCDigJxvcuKAnSDmiJYg4oCcbm904oCd44CCCiAgICAgICAgICAvLyDkvYbmmK_ms6jmhI8g4oCcbm904oCdIOWQjuW6lOivpei3n-S4gOS4qiB7Li4ufSDogIzpnZ4gWy4uLl0g44CCCiAgICAgICAgICBhbmQ6IFsKICAgICAgICAgICAgeyBkaW1lbnNpb246ICdZZWFyJywgJz0nOiAyMDExIH0sCiAgICAgICAgICAgIHsgZGltZW5zaW9uOiAnUHJpY2UnLCAnPj0nOiAyMCwgJzwnOiAzMCB9CiAgICAgICAgICBdCiAgICAgICAgfQogICAgICAgIC8vIOi_meS4quihqOi-vueahOaYr--8jOmAieWHuiAyMDExIOW5tOS7t-agvOWkp-S6juetieS6jiAyMCDkvYblsI_kuo4gMzAg55qE5pWw5o2u6aG544CCCiAgICAgIH0KICAgIH0KICBdLAogIHNlcmllczogewogICAgdHlwZTogJ3BpZScsCiAgICBkYXRhc2V0SW5kZXg6IDEKICB9Cn07\'" line-highlights="\'\'" />\n<p><code>and</code>/<code>or</code>/<code>not</code> 自然可以被嵌套,例如:</p>\n<md-code-block lang="js" code="\'dHJhbnNmb3JtOiB7CiAgdHlwZTogJ2ZpbHRlcicsCiAgY29uZmlnOiB7CiAgICBvcjogW3sKICAgICAgYW5kOiBbewogICAgICAgIGRpbWVuc2lvbjogJ1ByaWNlJywgJz49JzogMTAsICc8JzogMjAKICAgICAgfSwgewogICAgICAgIGRpbWVuc2lvbjogJ1NhbGVzJywgJzwnOiAxMDAKICAgICAgfSwgewogICAgICAgIG5vdDogeyBkaW1lbnNpb246ICdQcm9kdWN0JywgJz0nOiAnVG9mdScgfQogICAgICB9XQogICAgfSwgewogICAgICBhbmQ6IFt7CiAgICAgICAgZGltZW5zaW9uOiAnUHJpY2UnLCAnPj0nOiAxMCwgJzwnOiAyMAogICAgICB9LCB7CiAgICAgICAgZGltZW5zaW9uOiAnU2FsZXMnLCAnPCc6IDEwMAogICAgICB9LCB7CiAgICAgICAgbm90OiB7IGRpbWVuc2lvbjogJ1Byb2R1Y3QnLCAnPSc6ICdDYWtlJyB9CiAgICAgIH1dCiAgICB9XQogIH0KfQ\'" line-highlights="\'\'" />\n<p><strong>关于解析器( parser ):</strong></p>\n<p>还可以指定“解析器”( parser )来对值进行解析后再做比较。现在支持的解析器有:</p>\n<ul>\n<li><code>parser: \'time\'</code>:把原始值解析成时间戳( timestamp )后再做比较。这个解析器的行为,和 <code>echarts.time.parse</code> 相同,即,当原始值为时间对象( JS <code>Date</code> 实例),或者是时间戳,或者是描述时间的字符串(例如 <code>\'2012-05-12 03:11:22\'</code> ),都可以被解析为时间戳,然后就可以基于数值大小进行比较。如果原始数据是其他不可解析为时间戳的值,那么会被解析为 NaN。</li>\n<li><code>parser: \'trim\'</code>:如果原始数据是字符串,则把字符串两端的空格(全角半角)和换行符去掉。如果不是字符串,还保持为原始数据。</li>\n<li><code>parser: \'number\'</code>:强制把原始数据转成数值。如果不能转成有意义的数值,那么转成 <code>NaN</code>。在大多数场景下,我们并不需要这个解析器,因为按默认策略,“像数值的字符串”就会被转成数值。但是默认策略比较严格,这个解析器比较宽松,如果我们遇到含有尾缀的字符串(例如 <code>\'33%\'</code>, <code>12px</code>),我们需要手动指定 <code>parser: \'number\'</code>,从而去掉尾缀转为数值才能比较。</li>\n</ul>\n<p>这个例子显示了如何使用 <code>parser: \'time\'</code>:</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIGRhdGFzZXQ6IFsKICAgIHsKICAgICAgc291cmNlOiBbCiAgICAgICAgWydQcm9kdWN0JywgJ1NhbGVzJywgJ1ByaWNlJywgJ0RhdGUnXSwKICAgICAgICBbJ01pbGsgVGVlJywgMzExLCAyMSwgJzIwMTItMDUtMTInXSwKICAgICAgICBbJ0Nha2UnLCAxMzUsIDI4LCAnMjAxMi0wNS0yMiddLAogICAgICAgIFsnTGF0dGUnLCAyNjIsIDM2LCAnMjAxMi0wNi0wMiddLAogICAgICAgIFsnTWlsayBUZWUnLCAzNTksIDIxLCAnMjAxMi0wNi0yMiddLAogICAgICAgIFsnQ2FrZScsIDEyMSwgMjgsICcyMDEyLTA3LTAyJ10sCiAgICAgICAgWydMYXR0ZScsIDI3MSwgMzYsICcyMDEyLTA2LTIyJ10KICAgICAgICAvLyAuLi4KICAgICAgXQogICAgfSwKICAgIHsKICAgICAgdHJhbnNmb3JtOiB7CiAgICAgICAgdHlwZTogJ2ZpbHRlcicsCiAgICAgICAgY29uZmlnOiB7CiAgICAgICAgICBkaW1lbnNpb246ICdEYXRlJywKICAgICAgICAgICc-PSc6ICcyMDEyLTA1JywKICAgICAgICAgICc8JzogJzIwMTItMDYnLAogICAgICAgICAgcGFyc2VyOiAndGltZScKICAgICAgICB9CiAgICAgIH0KICAgIH0KICBdCn07\'" line-highlights="\'\'" />\n<p><strong>形式化定义:</strong></p>\n<p>最后,我们给出,数据转换器 &quot;filter&quot; 的 config 的形式化定义:</p>\n<md-code-block lang="ts" code="\'dHlwZSBGaWx0ZXJUcmFuc2Zvcm0gPSB7CiAgdHlwZTogJ2ZpbHRlcic7CiAgY29uZmlnOiBDb25kaXRpb25hbEV4cHJlc3Npb25PcHRpb247Cn07CnR5cGUgQ29uZGl0aW9uYWxFeHByZXNzaW9uT3B0aW9uID0KICB8IHRydWUKICB8IGZhbHNlCiAgfCBSZWxhdGlvbmFsRXhwcmVzc2lvbk9wdGlvbgogIHwgTG9naWNhbEV4cHJlc3Npb25PcHRpb247CnR5cGUgUmVsYXRpb25hbEV4cHJlc3Npb25PcHRpb24gPSB7CiAgZGltZW5zaW9uOiBEaW1lbnNpb25OYW1lIHwgRGltZW5zaW9uSW5kZXg7CiAgcGFyc2VyPzogJ3RpbWUnIHwgJ3RyaW0nIHwgJ251bWJlcic7CiAgbHQ_OiBEYXRhVmFsdWU7IC8vIGxlc3MgdGhhbgogIGx0ZT86IERhdGFWYWx1ZTsgLy8gbGVzcyB0aGFuIG9yIGVxdWFsCiAgZ3Q_OiBEYXRhVmFsdWU7IC8vIGdyZWF0ZXIgdGhhbgogIGd0ZT86IERhdGFWYWx1ZTsgLy8gZ3JlYXRlciB0aGFuIG9yIGVxdWFsCiAgZXE_OiBEYXRhVmFsdWU7IC8vIGVxdWFsCiAgbmU_OiBEYXRhVmFsdWU7IC8vIG5vdCBlcXVhbAogICc8Jz86IERhdGFWYWx1ZTsgLy8gbHQKICAnPD0nPzogRGF0YVZhbHVlOyAvLyBsdGUKICAnPic_OiBEYXRhVmFsdWU7IC8vIGd0CiAgJz49Jz86IERhdGFWYWx1ZTsgLy8gZ3RlCiAgJz0nPzogRGF0YVZhbHVlOyAvLyBlcQogICchPSc_OiBEYXRhVmFsdWU7IC8vIG5lCiAgJzw-Jz86IERhdGFWYWx1ZTsgLy8gbmUgKFNRTCBzdHlsZSkKICByZWc_OiBSZWdFeHAgfCBzdHJpbmc7IC8vIFJlZ0V4cAp9Owp0eXBlIExvZ2ljYWxFeHByZXNzaW9uT3B0aW9uID0gewogIGFuZD86IENvbmRpdGlvbmFsRXhwcmVzc2lvbk9wdGlvbltdOwogIG9yPzogQ29uZGl0aW9uYWxFeHByZXNzaW9uT3B0aW9uW107CiAgbm90PzogQ29uZGl0aW9uYWxFeHByZXNzaW9uT3B0aW9uOwp9Owp0eXBlIERhdGFWYWx1ZSA9IHN0cmluZyB8IG51bWJlciB8IERhdGU7CnR5cGUgRGltZW5zaW9uTmFtZSA9IHN0cmluZzsKdHlwZSBEaW1lbnNpb25JbmRleCA9IG51bWJlcjs\'" line-highlights="\'\'" />\n<blockquote>\n<p>注意:使用<a href="zh/basics/import#%E6%8C%89%E9%9C%80%E5%BC%95%E5%85%A5-echarts-%E5%9B%BE%E8%A1%A8%E5%92%8C%E7%BB%84%E4%BB%B6">按需引入</a>接口时,如果需要使用该内置转换器,除了 <code>Dataset</code> 组件,还需引入 <code>Transform</code> 组件。</p>\n</blockquote>\n<md-code-block lang="ts" code="\'aW1wb3J0IHsKICBEYXRhc2V0Q29tcG9uZW50LAogIFRyYW5zZm9ybUNvbXBvbmVudAp9IGZyb20gJ2VjaGFydHMvY29tcG9uZW50cyc7CgplY2hhcnRzLnVzZShbCiAgRGF0YXNldENvbXBvbmVudCwKICBUcmFuc2Zvcm1Db21wb25lbnQKXSk7\'" line-highlights="\'\'" />\n<h2 id="%E6%95%B0%E6%8D%AE%E8%BD%AC%E6%8D%A2%E5%99%A8-%22sort%22" tabindex="-1">数据转换器 &quot;sort&quot;</h2>\n<p>&quot;sort&quot; 是另一个内置的数据转换器,用于排序数据。目前主要能用于在类目轴( <code>axis.type: \'category\'</code> )中显示排过序的数据。例如:</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIGRhdGFzZXQ6IFsKICAgIHsKICAgICAgZGltZW5zaW9uczogWyduYW1lJywgJ2FnZScsICdwcm9mZXNzaW9uJywgJ3Njb3JlJywgJ2RhdGUnXSwKICAgICAgc291cmNlOiBbCiAgICAgICAgWycgSGFubmFoIEtyYXVzZSAnLCA0MSwgJ0VuZ2luZWVyJywgMzE0LCAnMjAxMS0wMi0xMiddLAogICAgICAgIFsnWmhhbyBRaWFuICcsIDIwLCAnVGVhY2hlcicsIDM1MSwgJzIwMTEtMDMtMDEnXSwKICAgICAgICBbJyBKYXNtaW4gS3JhdXNlICcsIDUyLCAnTXVzaWNpYW4nLCAyODcsICcyMDExLTAyLTE0J10sCiAgICAgICAgWydMaSBMZWknLCAzNywgJ1RlYWNoZXInLCAyMTksICcyMDExLTAyLTE4J10sCiAgICAgICAgWycgS2FybGUgTmV1bWFubiAnLCAyNSwgJ0VuZ2luZWVyJywgMjUzLCAnMjAxMS0wNC0wMiddLAogICAgICAgIFsnIEFkcmlhbiBHcm_DnycsIDE5LCAnVGVhY2hlcicsIG51bGwsICcyMDExLTAxLTE2J10sCiAgICAgICAgWydNaWEgTmV1bWFubicsIDcxLCAnRW5naW5lZXInLCAxNjUsICcyMDExLTAzLTE5J10sCiAgICAgICAgWycgQsO2aG0gRnVjaHMnLCAzNiwgJ011c2ljaWFuJywgMzE4LCAnMjAxMS0wMi0yNCddLAogICAgICAgIFsnSGFuIE1laW1laSAnLCA2NywgJ0VuZ2luZWVyJywgMzY2LCAnMjAxMS0wMy0xMiddCiAgICAgIF0KICAgIH0sCiAgICB7CiAgICAgIHRyYW5zZm9ybTogewogICAgICAgIHR5cGU6ICdzb3J0JywKICAgICAgICAvLyDmjInliIbmlbDmjpLluo8KICAgICAgICBjb25maWc6IHsgZGltZW5zaW9uOiAnc2NvcmUnLCBvcmRlcjogJ2FzYycgfQogICAgICB9CiAgICB9CiAgXSwKICBzZXJpZXM6IHsKICAgIHR5cGU6ICdiYXInLAogICAgZGF0YXNldEluZGV4OiAxCiAgfQogIC8vIC4uLgp9Ow\'" line-highlights="\'\'" />\n<p><md-example src="data-transform-sort-bar"></md-example></p>\n<p>数据转换器 &quot;sort&quot; 还有一些额外的功能:</p>\n<ul>\n<li>可以多重排序,多个维度一起排序。见下面的例子。</li>\n<li>排序规则是这样的:\n<ul>\n<li>默认按照数值大小排序。其中,“可转为数值的字符串”也被转换成数值,和其他数值一起按大小排序。</li>\n<li>对于其他“不能转为数值的字符串”,也能在它们之间按字符串进行排序。这个特性有助于这种场景:把相同标签的数据项排到一起,尤其是当多个维度共同排序时。见下面的例子。</li>\n<li>当“数值及可转为数值的字符串”和“不能转为数值的字符串”进行排序时,或者它们和“其他类型的值”进行比较时,它们本身是不知如何进行比较的。那么我们称呼“后者”为“incomparable”,并且可以设置 <code>incomparable: \'min\' | \'max\'</code> 来指定一个“incomparable”在这个比较中是最大还是最小,从而能使它们能产生比较结果。这个设定的用途,比如可以是,决定空值(例如 <code>null</code>, <code>undefined</code>, <code>NaN</code>, <code>\'\'</code>, <code>\'-\'</code>)在排序的头还是尾。</li>\n</ul>\n</li>\n<li>解析器 <code>parser: \'time\' | \'trim\' | \'number\'</code> 可以被使用,和数据转换器 &quot;filter&quot; 中的情况一样。\n<ul>\n<li>如果要对时间进行排序(例如,值为 JS <code>Date</code> 实例或者时间字符串如 <code>\'2012-03-12 11:13:54\'</code>),我们需要声明 <code>parser: \'time\'</code>。</li>\n<li>如果需要对有后缀的数值进行排序(如 <code>\'33%\'</code>, <code>\'16px\'</code>)我们需要声明 <code>parser: \'number\'</code>。</li>\n</ul>\n</li>\n</ul>\n<p>这是一个“多维度排序”的例子。</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIGRhdGFzZXQ6IFsKICAgIHsKICAgICAgZGltZW5zaW9uczogWyduYW1lJywgJ2FnZScsICdwcm9mZXNzaW9uJywgJ3Njb3JlJywgJ2RhdGUnXSwKICAgICAgc291cmNlOiBbCiAgICAgICAgWycgSGFubmFoIEtyYXVzZSAnLCA0MSwgJ0VuZ2luZWVyJywgMzE0LCAnMjAxMS0wMi0xMiddLAogICAgICAgIFsnWmhhbyBRaWFuICcsIDIwLCAnVGVhY2hlcicsIDM1MSwgJzIwMTEtMDMtMDEnXSwKICAgICAgICBbJyBKYXNtaW4gS3JhdXNlICcsIDUyLCAnTXVzaWNpYW4nLCAyODcsICcyMDExLTAyLTE0J10sCiAgICAgICAgWydMaSBMZWknLCAzNywgJ1RlYWNoZXInLCAyMTksICcyMDExLTAyLTE4J10sCiAgICAgICAgWycgS2FybGUgTmV1bWFubiAnLCAyNSwgJ0VuZ2luZWVyJywgMjUzLCAnMjAxMS0wNC0wMiddLAogICAgICAgIFsnIEFkcmlhbiBHcm_DnycsIDE5LCAnVGVhY2hlcicsIG51bGwsICcyMDExLTAxLTE2J10sCiAgICAgICAgWydNaWEgTmV1bWFubicsIDcxLCAnRW5naW5lZXInLCAxNjUsICcyMDExLTAzLTE5J10sCiAgICAgICAgWycgQsO2aG0gRnVjaHMnLCAzNiwgJ011c2ljaWFuJywgMzE4LCAnMjAxMS0wMi0yNCddLAogICAgICAgIFsnSGFuIE1laW1laSAnLCA2NywgJ0VuZ2luZWVyJywgMzY2LCAnMjAxMS0wMy0xMiddCiAgICAgIF0KICAgIH0sCiAgICB7CiAgICAgIHRyYW5zZm9ybTogewogICAgICAgIHR5cGU6ICdzb3J0JywKICAgICAgICBjb25maWc6IFsKICAgICAgICAgIC8vIOWvueS4pOS4que7tOW6puaMieWjsOaYjueahOS8mOWFiOe6p-WIhuWIq-aOkuW6j-OAggogICAgICAgICAgeyBkaW1lbnNpb246ICdwcm9mZXNzaW9uJywgb3JkZXI6ICdkZXNjJyB9LAogICAgICAgICAgeyBkaW1lbnNpb246ICdzY29yZScsIG9yZGVyOiAnZGVzYycgfQogICAgICAgIF0KICAgICAgfQogICAgfQogIF0sCiAgc2VyaWVzOiB7CiAgICB0eXBlOiAnYmFyJywKICAgIGRhdGFzZXRJbmRleDogMQogIH0KICAvLy4uLgp9Ow\'" line-highlights="\'\'" />\n<p><md-example src="doc-example/data-transform-multiple-sort-bar"></md-example></p>\n<p>最后,我们给出数据转换器 &quot;sort&quot; 的 config 的形式化定义。</p>\n<md-code-block lang="ts" code="\'dHlwZSBTb3J0VHJhbnNmb3JtID0gewogIHR5cGU6ICdzb3J0JzsKICBjb25maWc6IE9yZGVyRXhwcmVzc2lvbiB8IE9yZGVyRXhwcmVzc2lvbltdOwp9Owp0eXBlIE9yZGVyRXhwcmVzc2lvbiA9IHsKICBkaW1lbnNpb246IERpbWVuc2lvbk5hbWUgfCBEaW1lbnNpb25JbmRleDsKICBvcmRlcjogJ2FzYycgfCAnZGVzYyc7CiAgaW5jb21wYXJhYmxlPzogJ21pbicgfCAnbWF4JzsKICBwYXJzZXI_OiAndGltZScgfCAndHJpbScgfCAnbnVtYmVyJzsKfTsKdHlwZSBEaW1lbnNpb25OYW1lID0gc3RyaW5nOwp0eXBlIERpbWVuc2lvbkluZGV4ID0gbnVtYmVyOw\'" line-highlights="\'\'" />\n<blockquote>\n<p>注意:使用<a href="zh/basics/import#%E6%8C%89%E9%9C%80%E5%BC%95%E5%85%A5-echarts-%E5%9B%BE%E8%A1%A8%E5%92%8C%E7%BB%84%E4%BB%B6">按需引入</a>接口时,如果需要使用该内置转换器,除了 <code>Dataset</code> 组件,还需引入 <code>Transform</code> 组件。</p>\n</blockquote>\n<md-code-block lang="ts" code="\'aW1wb3J0IHsKICBEYXRhc2V0Q29tcG9uZW50LAogIFRyYW5zZm9ybUNvbXBvbmVudAp9IGZyb20gJ2VjaGFydHMvY29tcG9uZW50cyc7CgplY2hhcnRzLnVzZShbCiAgRGF0YXNldENvbXBvbmVudCwKICBUcmFuc2Zvcm1Db21wb25lbnQKXSk7\'" line-highlights="\'\'" />\n<h2 id="%E4%BD%BF%E7%94%A8%E5%A4%96%E9%83%A8%E7%9A%84%E6%95%B0%E6%8D%AE%E8%BD%AC%E6%8D%A2%E5%99%A8" tabindex="-1">使用外部的数据转换器</h2>\n<p>除了上述的内置的数据转换器外,我们也可以使用外部的数据转换器。外部数据转换器能提供或自己定制更丰富的功能。下面的例子中,我们使用第三方库 <a href="https://github.com/ecomfe/echarts-stat">ecStat</a> 提供的数据转换器。</p>\n<p>生成数据的回归线:</p>\n<md-code-block lang="js" code="\'Ly8g6aaW5YWI6KaB5rOo5YaM5aSW6YOo5pWw5o2u6L2s5o2i5Zmo44CCCmVjaGFydHMucmVnaXN0ZXJUcmFuc2Zvcm0oZWNTdGF0VHJhbnNmb3JtKGVjU3RhdCkucmVncmVzc2lvbik7\'" line-highlights="\'\'" />\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIGRhdGFzZXQ6IFsKICAgIHsKICAgICAgc291cmNlOiByYXdEYXRhCiAgICB9LAogICAgewogICAgICB0cmFuc2Zvcm06IHsKICAgICAgICAvLyDlvJXnlKjms6jlhoznmoTmlbDmja7ovazmjaLlmajjgIIKICAgICAgICAvLyDms6jmhI_vvIzmr4_kuKrlpJbpg6jnmoTmlbDmja7ovazmjaLlmajvvIzpg73mnInlkI3nqbrpl7TvvIjlpoIgJ2VjU3RhdDp4eHgn77yMJ2VjU3RhdCcg5piv5ZCN56m66Ze077yJ44CCCiAgICAgICAgLy8g6ICM5YaF572u5pWw5o2u6L2s5o2i5Zmo77yI5aaCICdmaWx0ZXInLCAnc29ydCfvvInmsqHmnInlkI3nqbrpl7TjgIIKICAgICAgICB0eXBlOiAnZWNTdGF0OnJlZ3Jlc3Npb24nLAogICAgICAgIGNvbmZpZzogewogICAgICAgICAgLy8g6L-Z6YeM5piv5q2k5aSW6YOo5pWw5o2u6L2s5o2i5Zmo5omA6ZyA55qE5Y-C5pWw44CCCiAgICAgICAgICBtZXRob2Q6ICdleHBvbmVudGlhbCcKICAgICAgICB9CiAgICAgIH0KICAgIH0KICBdLAogIHhBeGlzOiB7IHR5cGU6ICdjYXRlZ29yeScgfSwKICB5QXhpczoge30sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIG5hbWU6ICdzY2F0dGVyJywKICAgICAgdHlwZTogJ3NjYXR0ZXInLAogICAgICBkYXRhc2V0SW5kZXg6IDAKICAgIH0sCiAgICB7CiAgICAgIG5hbWU6ICdyZWdyZXNzaW9uJywKICAgICAgdHlwZTogJ2xpbmUnLAogICAgICBzeW1ib2w6ICdub25lJywKICAgICAgZGF0YXNldEluZGV4OiAxCiAgICB9CiAgXQp9Ow\'" line-highlights="\'\'" />\n<p>一些使用 echarts-stat 的例子:</p>\n<ul>\n<li><a href="https://echarts.apache.org/examples/zh/editor.html?c=data-transform-aggregate&amp;edit=1&amp;reset=1">聚集 (Aggregate)</a></li>\n<li><a href="https://echarts.apache.org/examples/zh/editor.html?c=bar-histogram&amp;edit=1&amp;reset=1">直方图 (Histogram)</a></li>\n<li><a href="https://echarts.apache.org/examples/zh/editor.html?c=scatter-clustering&amp;edit=1&amp;reset=1">简单聚类 (Clustering)</a></li>\n<li><a href="https://echarts.apache.org/examples/zh/editor.html?c=scatter-linear-regression&amp;edit=1&amp;reset=1">线性回归线 (Linear Regression)</a></li>\n<li><a href="https://echarts.apache.org/examples/zh/editor.html?c=scatter-exponential-regression&amp;edit=1&amp;reset=1">指数回归线 (Exponential Regression)</a></li>\n<li><a href="https://echarts.apache.org/examples/zh/editor.html?c=scatter-logarithmic-regression&amp;edit=1&amp;reset=1">对数回归线 (Logarithmic Regression)</a></li>\n<li><a href="https://echarts.apache.org/examples/zh/editor.html?c=scatter-polynomial-regression&amp;edit=1&amp;reset=1">多项式回归线 (Polynomial Regression)</a></li>\n</ul>\n',postPath:"zh/concepts/data-transform",title:"数据转换 - 概念篇"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:i},{title:"入门篇",dir:e,children:[{title:"获取 ECharts",dir:A},{title:"在项目中引入 ECharts",dir:t},{title:"资源列表",dir:d,draft:g},{title:"寻求帮助",dir:o},{title:"版本特性",dir:l,children:[{title:"ECharts 6 特性介绍",dir:a},{title:"v5 升级 v6 指南",dir:c},{title:"5.0",dir:n},{title:"v4 升级 v5 指南",dir:r},{title:5.2,dir:s},{title:5.3,dir:m},{title:5.4,dir:h},{title:5.5,dir:b},{title:5.6,dir:y}]}]},{title:"概念篇",dir:p,children:[{title:"图表容器及大小",dir:u},{title:"配置项",dir:W,draft:g},{title:"系列",dir:B,draft:g},{title:"样式",dir:Z},{title:"数据集",dir:w},{title:"数据转换",dir:L},{title:"坐标系",dir:J,draft:g},{title:"坐标轴",dir:G},{title:"视觉映射",dir:C},{title:"图例",dir:M},{title:"事件与行为",dir:D}]},{title:"应用篇",dir:E,children:[{title:"常用图表类型",dir:S,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:O},{title:"堆叠柱状图",dir:v},{title:"动态排序柱状图",dir:X},{title:"极坐标系柱状图",dir:z,draft:g},{title:"阶梯瀑布图",dir:F},{title:"视觉映射的柱状图",dir:C,draft:g}]},{title:"折线图",dir:R,children:[{title:"基础折线图",dir:Y},{title:"堆叠折线图",dir:K},{title:"区域面积图",dir:H},{title:"平滑曲线图",dir:N},{title:"阶梯线图",dir:V}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:f},{title:"圆环图",dir:j},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:k,children:[{title:"基础散点图",dir:x}]}]},{title:"常用组件",dir:T,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:U}]}]},{title:"移动端优化",dir:I,draft:g},{title:"跨平台方案",dir:Q,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:q},{title:"数据下钻",dir:P,draft:g}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:_}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:gg}]},{title:"交互",dir:Ig,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:Cg,draft:g},{title:"智能指针吸附",dir:ig}]}]},{title:"最佳实践",dir:eg,children:[{title:"移动端优化",dir:I,draft:g},{title:Ag,dir:tg},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:dg}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:og}]}],en:[{title:"Get Started",dir:i},{title:"Basics",dir:e,children:[{title:"Download ECharts",dir:A},{title:"Import ECharts",dir:t},{title:"Resources",dir:d,draft:g},{title:"Get Help",dir:o},{title:"What's New",dir:l,children:[{title:"ECharts 6 Features",dir:a},{title:"Migration from v5 to v6",dir:c},{title:"5.0",dir:n},{title:"Migration from v4 to v5",dir:r},{title:5.2,dir:s},{title:5.3,dir:m},{title:5.4,dir:h},{title:5.5,dir:b},{title:5.6,dir:y}]}]},{title:"Concepts",dir:p,children:[{title:"Chart Container",dir:u},{title:"Chart Option",dir:W,draft:g},{title:"Series",dir:B,draft:g},{title:"Style",dir:Z},{title:"Dataset",dir:w},{title:"Data Transform",dir:L},{title:"Coordinate",dir:J,draft:g},{title:"Axis",dir:G},{title:"Visual Mapping",dir:C},{title:"Legend",dir:M},{title:"Event and Action",dir:D}]},{title:"How To Guides",dir:E,children:[{title:"Common Charts",dir:S,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:O},{title:"Stacked Bar",dir:v},{title:"Bar Racing",dir:X},{title:"Bar Polar",dir:z,draft:g},{title:"Waterfall",dir:F}]},{title:"Line",dir:R,children:[{title:"Basic Line",dir:Y},{title:"Stacked Line",dir:K},{title:"Area Chart",dir:H},{title:"Smoothed Line",dir:N},{title:"Step Line",dir:V}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:f},{title:"Ring Style",dir:j},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:k,children:[{title:"Basic Scatter",dir:x}]}]},{title:"Common Components",dir:T,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:U}]}]},{title:"Mobile",dir:I,draft:g},{title:"Cross Platform",dir:Q,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:q},{title:"Drilldown",dir:P,draft:g}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:_}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:gg}]},{title:"Interaction",dir:Ig,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:Cg,draft:g},{title:"Intelligent Pointer Snapping",dir:ig}]}]},{title:"Best Practices",dir:eg,children:[{title:"Mobile Optimization",dir:I,draft:g},{title:Ag,dir:tg},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:dg}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:og}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:g,routePath:"/zh/concepts/data-transform",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/zh/concepts/dataset/index.html b/docs/zh/concepts/dataset/index.html
new file mode 100644
index 0000000..da14bca
--- /dev/null
+++ b/docs/zh/concepts/dataset/index.html
@@ -0,0 +1,500 @@
+<!doctype html>
+<html data-n-head-ssr lang="zh-CN" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh-CN%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>数据集 - 概念篇 - 使用手册 - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="zh"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/zh/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/zh/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/zh/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/zh/index.html" class="navbar-brand"><img src="https://echarts.apache.org/zh/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/zh/index.html">首页</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">文档<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/feature.html">特性</a></li><li><a href="https://echarts.apache.org/handbook/zh/get-started/">使用手册</a></li><li><a href="https://echarts.apache.org/zh/api.html">API</a></li><li><a href="https://echarts.apache.org/zh/option.html">配置项手册</a></li><li><a href="https://echarts.apache.org/zh/changelog.html">版本记录</a></li><li><a href="https://echarts.apache.org/zh/faq.html">常见问题</a></li><li><a href="https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide">v6 升级指南</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">下载<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/download.html">下载</a></li><li><a href="https://echarts.apache.org/zh/download-theme.html">主题下载</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">自定义系列下载<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/download-extension.html">扩展下载</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/zh/index.html">示例</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">资源<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/spreadsheet.html">表格工具</a></li><li><a href="https://echarts.apache.org/zh/theme-builder.html">主题构建工具</a></li><li><a href="https://echarts.apache.org/zh/cheat-sheet.html">术语速查手册</a></li><li><a href="https://echarts.apache.org/zh/resources.html">更多资源</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">社区<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/events.html">活动</a></li><li><a href="https://echarts.apache.org/zh/committers.html">贡献者列表</a></li><li><a href="https://echarts.apache.org/zh/maillist.html">邮件列表</a></li><li><a href="https://echarts.apache.org/zh/contributing.html">如何贡献</a></li><li><a href="https://echarts.apache.org/zh/dependencies.html">依赖项</a></li><li><a href="https://echarts.apache.org/zh/coding-standard.html">代码规范</a></li><li><a href="https://github.com/apache/echarts" target="_blank">源码(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/security.html">安全</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">版权<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">活动<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">捐赠<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">鸣谢<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("en")'>EN</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/zh/get-started" class="nav-link"><span class="title">快速上手</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">入门篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/basics/download" class="nav-link"><span class="title">获取 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/import" class="nav-link"><span class="title">在项目中引入 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/basics/help" class="nav-link"><span class="title">寻求帮助</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">版本特性</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 特性介绍</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">v5 升级 v6 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">v4 升级 v5 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">概念篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/concepts/chart-size" class="nav-link"><span class="title">图表容器及大小</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/style" class="nav-link"><span class="title">样式</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/dataset" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">数据集</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/data-transform" class="nav-link"><span class="title">数据转换</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/axis" class="nav-link"><span class="title">坐标轴</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/visual-map" class="nav-link"><span class="title">视觉映射</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/legend" class="nav-link"><span class="title">图例</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/event" class="nav-link"><span class="title">事件与行为</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">应用篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">常用图表类型</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">柱状图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">基础柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">堆叠柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">动态排序柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">阶梯瀑布图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">折线图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">基础折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">堆叠折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/area-line" class="nav-link"><span class="title">区域面积图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">平滑曲线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/step-line" class="nav-link"><span class="title">阶梯线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">饼图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">基础饼图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">圆环图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/rose" class="nav-link"><span class="title">南丁格尔图(玫瑰图)</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">散点图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">基础散点图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">常用组件</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">地理坐标系(Geo)</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG 底图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">跨平台方案</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/server" class="nav-link"><span class="title">服务端渲染</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/wechat-app" class="nav-link"><span class="title">微信小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/baidu-app" class="nav-link"><span class="title">百度智能小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">数据处理</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/data/dynamic-data" class="nav-link"><span class="title">动态的异步数据</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">标签</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/label/rich-text" class="nav-link"><span class="title">富文本标签</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">动画</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/animation/transition" class="nav-link"><span class="title">数据过渡动画</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">交互</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/drag" class="nav-link"><span class="title">拖拽的实现</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">智能指针吸附</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">最佳实践</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/aria" class="nav-link"><span class="title">无障碍访问</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/security" class="nav-link"><span class="title">安全指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">编辑本文档</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/meta/edit-guide" class="nav-link"><span class="title">文档编辑指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="%E6%95%B0%E6%8D%AE%E9%9B%86" tabindex="-1">数据集</h1> <p><code>数据集(dataset)</code>是专门用来管理数据的组件。虽然每个系列都可以在 <code>series.data</code> 中设置数据,但是从 ECharts4 支持数据集开始,更推荐使用数据集来管理数据。因为这样,数据可以被多个组件复用,也方便进行 “数据和其他配置” 分离的配置风格。毕竟,在运行时,数据是最常改变的,而其他配置大多并不会改变。</p> <h2 id="%E5%9C%A8%E7%B3%BB%E5%88%97%E4%B8%AD%E8%AE%BE%E7%BD%AE%E6%95%B0%E6%8D%AE" tabindex="-1">在系列中设置数据</h2> <p>如果数据设置在 <code>系列(series)</code> 中,例如:</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    type: 'category',
+    data: ['Matcha Latte', 'Milk Tea', 'Cheese Cocoa', 'Walnut Brownie']
+  },
+  yAxis: {},
+  series: [
+    {
+      type: 'bar',
+      name: '2015',
+      data: [89.3, 92.1, 94.4, 85.4]
+    },
+    {
+      type: 'bar',
+      name: '2016',
+      data: [95.8, 89.4, 91.2, 76.9]
+    },
+    {
+      type: 'bar',
+      name: '2017',
+      data: [97.7, 83.1, 92.5, 78.1]
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'category'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'Matcha Latte'</span><span class="token punctuation">,</span> <span class="token string">'Milk Tea'</span><span class="token punctuation">,</span> <span class="token string">'Cheese Cocoa'</span><span class="token punctuation">,</span> <span class="token string">'Walnut Brownie'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'2015'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">89.3</span><span class="token punctuation">,</span> <span class="token number">92.1</span><span class="token punctuation">,</span> <span class="token number">94.4</span><span class="token punctuation">,</span> <span class="token number">85.4</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'2016'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">95.8</span><span class="token punctuation">,</span> <span class="token number">89.4</span><span class="token punctuation">,</span> <span class="token number">91.2</span><span class="token punctuation">,</span> <span class="token number">76.9</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'2017'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">97.7</span><span class="token punctuation">,</span> <span class="token number">83.1</span><span class="token punctuation">,</span> <span class="token number">92.5</span><span class="token punctuation">,</span> <span class="token number">78.1</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>这种方式的优点是,适于对一些特殊的数据结构(如“树”、“图”、超大数据)进行一定的数据类型定制。
+但是缺点是,常需要用户先处理数据,把数据分割设置到各个系列(和类目轴)中。此外,不利于多个系列共享一份数据,也不利于基于原始数据进行图表类型、系列的映射安排。</p> <h2 id="%E5%9C%A8%E6%95%B0%E6%8D%AE%E9%9B%86%E4%B8%AD%E8%AE%BE%E7%BD%AE%E6%95%B0%E6%8D%AE" tabindex="-1">在数据集中设置数据</h2> <p>而数据设置在 <code>数据集(dataset)</code> 中,会有这些好处:</p> <ul><li>能够贴近数据可视化常见思维方式:(I)提供数据,(II)指定数据到视觉的映射,从而形成图表。</li> <li>数据和其他配置可以被分离开来。数据常变,其他配置常不变。分开易于分别管理。</li> <li>数据可以被多个系列或者组件复用,对于大数据量的场景,不必为每个系列创建一份数据。</li> <li>支持更多的数据的常用格式,例如二维数组、对象数组等,一定程度上避免使用者为了数据格式而进行转换。</li></ul> <p>下面是一个最简单的 <code>dataset</code> 的例子:</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  legend: {},
+  tooltip: {},
+  dataset: {
+    // 提供一份数据。
+    source: [
+      ['product', '2015', '2016', '2017'],
+      ['Matcha Latte', 43.3, 85.8, 93.7],
+      ['Milk Tea', 83.1, 73.4, 55.1],
+      ['Cheese Cocoa', 86.4, 65.2, 82.5],
+      ['Walnut Brownie', 72.4, 53.9, 39.1]
+    ]
+  },
+  // 声明一个 X 轴,类目轴(category)。默认情况下,类目轴对应到 dataset 第一列。
+  xAxis: { type: 'category' },
+  // 声明一个 Y 轴,数值轴。
+  yAxis: {},
+  // 声明多个 bar 系列,默认情况下,每个系列会自动对应到 dataset 的每一列。
+  series: [{ type: 'bar' }, { type: 'bar' }, { type: 'bar' }]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">legend</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">tooltip</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">dataset</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token comment">// 提供一份数据。</span>
+    <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token punctuation">[</span><span class="token string">'product'</span><span class="token punctuation">,</span> <span class="token string">'2015'</span><span class="token punctuation">,</span> <span class="token string">'2016'</span><span class="token punctuation">,</span> <span class="token string">'2017'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token string">'Matcha Latte'</span><span class="token punctuation">,</span> <span class="token number">43.3</span><span class="token punctuation">,</span> <span class="token number">85.8</span><span class="token punctuation">,</span> <span class="token number">93.7</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token string">'Milk Tea'</span><span class="token punctuation">,</span> <span class="token number">83.1</span><span class="token punctuation">,</span> <span class="token number">73.4</span><span class="token punctuation">,</span> <span class="token number">55.1</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token string">'Cheese Cocoa'</span><span class="token punctuation">,</span> <span class="token number">86.4</span><span class="token punctuation">,</span> <span class="token number">65.2</span><span class="token punctuation">,</span> <span class="token number">82.5</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token string">'Walnut Brownie'</span><span class="token punctuation">,</span> <span class="token number">72.4</span><span class="token punctuation">,</span> <span class="token number">53.9</span><span class="token punctuation">,</span> <span class="token number">39.1</span><span class="token punctuation">]</span>
+    <span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token comment">// 声明一个 X 轴,类目轴(category)。默认情况下,类目轴对应到 dataset 第一列。</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'category'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token comment">// 声明一个 Y 轴,数值轴。</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token comment">// 声明多个 bar 系列,默认情况下,每个系列会自动对应到 dataset 的每一列。</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span> <span class="token punctuation">}</span><span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>或者也可以使用常见的“对象数组”的格式:</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  legend: {},
+  tooltip: {},
+  dataset: {
+    // 用 dimensions 指定了维度的顺序。直角坐标系中,如果 X 轴 type 为 category,
+    // 默认把第一个维度映射到 X 轴上,后面维度映射到 Y 轴上。
+    // 如果不指定 dimensions,也可以通过指定 series.encode
+    // 完成映射,参见后文。
+    dimensions: ['product', '2015', '2016', '2017'],
+    source: [
+      { product: 'Matcha Latte', '2015': 43.3, '2016': 85.8, '2017': 93.7 },
+      { product: 'Milk Tea', '2015': 83.1, '2016': 73.4, '2017': 55.1 },
+      { product: 'Cheese Cocoa', '2015': 86.4, '2016': 65.2, '2017': 82.5 },
+      { product: 'Walnut Brownie', '2015': 72.4, '2016': 53.9, '2017': 39.1 }
+    ]
+  },
+  xAxis: { type: 'category' },
+  yAxis: {},
+  series: [{ type: 'bar' }, { type: 'bar' }, { type: 'bar' }]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">legend</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">tooltip</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">dataset</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token comment">// 用 dimensions 指定了维度的顺序。直角坐标系中,如果 X 轴 type 为 category,</span>
+    <span class="token comment">// 默认把第一个维度映射到 X 轴上,后面维度映射到 Y 轴上。</span>
+    <span class="token comment">// 如果不指定 dimensions,也可以通过指定 series.encode</span>
+    <span class="token comment">// 完成映射,参见后文。</span>
+    <span class="token literal-property property">dimensions</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'product'</span><span class="token punctuation">,</span> <span class="token string">'2015'</span><span class="token punctuation">,</span> <span class="token string">'2016'</span><span class="token punctuation">,</span> <span class="token string">'2017'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token punctuation">{</span> <span class="token literal-property property">product</span><span class="token operator">:</span> <span class="token string">'Matcha Latte'</span><span class="token punctuation">,</span> <span class="token string-property property">'2015'</span><span class="token operator">:</span> <span class="token number">43.3</span><span class="token punctuation">,</span> <span class="token string-property property">'2016'</span><span class="token operator">:</span> <span class="token number">85.8</span><span class="token punctuation">,</span> <span class="token string-property property">'2017'</span><span class="token operator">:</span> <span class="token number">93.7</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token punctuation">{</span> <span class="token literal-property property">product</span><span class="token operator">:</span> <span class="token string">'Milk Tea'</span><span class="token punctuation">,</span> <span class="token string-property property">'2015'</span><span class="token operator">:</span> <span class="token number">83.1</span><span class="token punctuation">,</span> <span class="token string-property property">'2016'</span><span class="token operator">:</span> <span class="token number">73.4</span><span class="token punctuation">,</span> <span class="token string-property property">'2017'</span><span class="token operator">:</span> <span class="token number">55.1</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token punctuation">{</span> <span class="token literal-property property">product</span><span class="token operator">:</span> <span class="token string">'Cheese Cocoa'</span><span class="token punctuation">,</span> <span class="token string-property property">'2015'</span><span class="token operator">:</span> <span class="token number">86.4</span><span class="token punctuation">,</span> <span class="token string-property property">'2016'</span><span class="token operator">:</span> <span class="token number">65.2</span><span class="token punctuation">,</span> <span class="token string-property property">'2017'</span><span class="token operator">:</span> <span class="token number">82.5</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token punctuation">{</span> <span class="token literal-property property">product</span><span class="token operator">:</span> <span class="token string">'Walnut Brownie'</span><span class="token punctuation">,</span> <span class="token string-property property">'2015'</span><span class="token operator">:</span> <span class="token number">72.4</span><span class="token punctuation">,</span> <span class="token string-property property">'2016'</span><span class="token operator">:</span> <span class="token number">53.9</span><span class="token punctuation">,</span> <span class="token string-property property">'2017'</span><span class="token operator">:</span> <span class="token number">39.1</span> <span class="token punctuation">}</span>
+    <span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'category'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span> <span class="token punctuation">}</span><span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <h2 id="%E6%95%B0%E6%8D%AE%E5%88%B0%E5%9B%BE%E5%BD%A2%E7%9A%84%E6%98%A0%E5%B0%84" tabindex="-1">数据到图形的映射</h2> <p>如上所述,数据可视化的一个常见思路是:(I)提供数据,(II)指定数据到视觉的映射。</p> <p>简而言之,可以进行这些映射的设定:</p> <ul><li>指定 <code>数据集</code> 的列(column)还是行(row)映射为 <code>系列(series)</code>。这件事可以使用 <a href="https://echarts.apache.org/option.html#series.seriesLayoutBy">series.seriesLayoutBy</a> 属性来配置。默认是按照列(column)来映射。</li> <li>指定维度映射的规则:如何从 dataset 的维度(一个“维度”的意思是一行/列)映射到坐标轴(如 X、Y 轴)、提示框(tooltip)、标签(label)、图形元素大小颜色等(visualMap)。这件事可以使用 <a href="https://echarts.apache.org/option.html#series.encode">series.encode</a> 属性,以及 <a href="https://echarts.apache.org/option.html#visualMap">visualMap</a> 组件来配置(如果有需要映射颜色大小等视觉维度的话)。上面的例子中,没有给出这种映射配置,那么 ECharts 就按最常见的理解进行默认映射:X 坐标轴声明为类目轴,默认情况下会自动对应到 <code>dataset.source</code> 中的第一列;三个柱图系列,一一对应到 <code>dataset.source</code> 中后面每一列。</li></ul> <p>下面详细解释这些映射的设定。</p> <h2 id="%E6%8A%8A%E6%95%B0%E6%8D%AE%E9%9B%86%EF%BC%88dataset%EF%BC%89%E7%9A%84%E8%A1%8C%E6%88%96%E5%88%97%E6%98%A0%E5%B0%84%E4%B8%BA%E7%B3%BB%E5%88%97%EF%BC%88series%EF%BC%89" tabindex="-1">把数据集(dataset)的行或列映射为系列(series)</h2> <p>有了数据表之后,使用者可以灵活地配置:数据如何对应到轴和图形系列。</p> <p>用户可以使用 <code>seriesLayoutBy</code> 配置项,改变图表对于行列的理解。<code>seriesLayoutBy</code> 可取值:</p> <ul><li><code>'column'</code>: 默认值。系列被安放到 <code>dataset</code> 的列上面。</li> <li><code>'row'</code>: 系列被安放到 <code>dataset</code> 的行上面。</li></ul> <p>看这个例子:</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  legend: {},
+  tooltip: {},
+  dataset: {
+    source: [
+      ['product', '2012', '2013', '2014', '2015'],
+      ['Matcha Latte', 41.1, 30.4, 65.1, 53.3],
+      ['Milk Tea', 86.5, 92.1, 85.7, 83.1],
+      ['Cheese Cocoa', 24.1, 67.2, 79.5, 86.4]
+    ]
+  },
+  xAxis: [
+    { type: 'category', gridIndex: 0 },
+    { type: 'category', gridIndex: 1 }
+  ],
+  yAxis: [{ gridIndex: 0 }, { gridIndex: 1 }],
+  grid: [{ bottom: '55%' }, { top: '55%' }],
+  series: [
+    // 这几个系列会出现在第一个直角坐标系中,每个系列对应到 dataset 的每一行。
+    { type: 'bar', seriesLayoutBy: 'row', xAxisIndex: 0, yAxisIndex: 0 },
+    { type: 'bar', seriesLayoutBy: 'row', xAxisIndex: 0, yAxisIndex: 0 },
+    { type: 'bar', seriesLayoutBy: 'row', xAxisIndex: 0, yAxisIndex: 0 },
+    // 这几个系列会出现在第二个直角坐标系中,每个系列对应到 dataset 的每一列。
+    { type: 'bar', seriesLayoutBy: 'column', xAxisIndex: 1, yAxisIndex: 1 },
+    { type: 'bar', seriesLayoutBy: 'column', xAxisIndex: 1, yAxisIndex: 1 },
+    { type: 'bar', seriesLayoutBy: 'column', xAxisIndex: 1, yAxisIndex: 1 },
+    { type: 'bar', seriesLayoutBy: 'column', xAxisIndex: 1, yAxisIndex: 1 }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">legend</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">tooltip</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">dataset</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token punctuation">[</span><span class="token string">'product'</span><span class="token punctuation">,</span> <span class="token string">'2012'</span><span class="token punctuation">,</span> <span class="token string">'2013'</span><span class="token punctuation">,</span> <span class="token string">'2014'</span><span class="token punctuation">,</span> <span class="token string">'2015'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token string">'Matcha Latte'</span><span class="token punctuation">,</span> <span class="token number">41.1</span><span class="token punctuation">,</span> <span class="token number">30.4</span><span class="token punctuation">,</span> <span class="token number">65.1</span><span class="token punctuation">,</span> <span class="token number">53.3</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token string">'Milk Tea'</span><span class="token punctuation">,</span> <span class="token number">86.5</span><span class="token punctuation">,</span> <span class="token number">92.1</span><span class="token punctuation">,</span> <span class="token number">85.7</span><span class="token punctuation">,</span> <span class="token number">83.1</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token string">'Cheese Cocoa'</span><span class="token punctuation">,</span> <span class="token number">24.1</span><span class="token punctuation">,</span> <span class="token number">67.2</span><span class="token punctuation">,</span> <span class="token number">79.5</span><span class="token punctuation">,</span> <span class="token number">86.4</span><span class="token punctuation">]</span>
+    <span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'category'</span><span class="token punctuation">,</span> <span class="token literal-property property">gridIndex</span><span class="token operator">:</span> <span class="token number">0</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'category'</span><span class="token punctuation">,</span> <span class="token literal-property property">gridIndex</span><span class="token operator">:</span> <span class="token number">1</span> <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">{</span> <span class="token literal-property property">gridIndex</span><span class="token operator">:</span> <span class="token number">0</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token literal-property property">gridIndex</span><span class="token operator">:</span> <span class="token number">1</span> <span class="token punctuation">}</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">grid</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">{</span> <span class="token literal-property property">bottom</span><span class="token operator">:</span> <span class="token string">'55%'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token literal-property property">top</span><span class="token operator">:</span> <span class="token string">'55%'</span> <span class="token punctuation">}</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token comment">// 这几个系列会出现在第一个直角坐标系中,每个系列对应到 dataset 的每一行。</span>
+    <span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span> <span class="token literal-property property">seriesLayoutBy</span><span class="token operator">:</span> <span class="token string">'row'</span><span class="token punctuation">,</span> <span class="token literal-property property">xAxisIndex</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token literal-property property">yAxisIndex</span><span class="token operator">:</span> <span class="token number">0</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span> <span class="token literal-property property">seriesLayoutBy</span><span class="token operator">:</span> <span class="token string">'row'</span><span class="token punctuation">,</span> <span class="token literal-property property">xAxisIndex</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token literal-property property">yAxisIndex</span><span class="token operator">:</span> <span class="token number">0</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span> <span class="token literal-property property">seriesLayoutBy</span><span class="token operator">:</span> <span class="token string">'row'</span><span class="token punctuation">,</span> <span class="token literal-property property">xAxisIndex</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token literal-property property">yAxisIndex</span><span class="token operator">:</span> <span class="token number">0</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token comment">// 这几个系列会出现在第二个直角坐标系中,每个系列对应到 dataset 的每一列。</span>
+    <span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span> <span class="token literal-property property">seriesLayoutBy</span><span class="token operator">:</span> <span class="token string">'column'</span><span class="token punctuation">,</span> <span class="token literal-property property">xAxisIndex</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token literal-property property">yAxisIndex</span><span class="token operator">:</span> <span class="token number">1</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span> <span class="token literal-property property">seriesLayoutBy</span><span class="token operator">:</span> <span class="token string">'column'</span><span class="token punctuation">,</span> <span class="token literal-property property">xAxisIndex</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token literal-property property">yAxisIndex</span><span class="token operator">:</span> <span class="token number">1</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span> <span class="token literal-property property">seriesLayoutBy</span><span class="token operator">:</span> <span class="token string">'column'</span><span class="token punctuation">,</span> <span class="token literal-property property">xAxisIndex</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token literal-property property">yAxisIndex</span><span class="token operator">:</span> <span class="token number">1</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span> <span class="token literal-property property">seriesLayoutBy</span><span class="token operator">:</span> <span class="token string">'column'</span><span class="token punctuation">,</span> <span class="token literal-property property">xAxisIndex</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token literal-property property">yAxisIndex</span><span class="token operator">:</span> <span class="token number">1</span> <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <h2 id="%E7%BB%B4%E5%BA%A6%EF%BC%88dimension%EF%BC%89" tabindex="-1">维度(dimension)</h2> <p>常用图表所描述的数据大部分是“二维表”结构,上述的例子中,我们都使用二维数组来容纳二维表。现在,当我们把系列(series)对应到“列”的时候,那么每一列就称为一个“维度(dimension)”,而每一行称为数据项(item)。反之,如果我们把系列(series)对应到表行,那么每一行就是“维度(dimension)”,每一列就是数据项(item)。</p> <p>维度可以有单独的名字,便于在图表中显示。维度名(dimension name)可以在定义在 dataset 的第一行(或者第一列)。例如下面的<a href="zh/concepts/dataset/#%E6%95%B0%E6%8D%AE%E5%88%B0%E5%9B%BE%E5%BD%A2%E7%9A%84%E6%98%A0%E5%B0%84%EF%BC%88series.encode%EF%BC%89">例子</a>中,<code>'score'</code>、<code>'amount'</code>、<code>'product'</code> 就是维度名。从第二行开始,才是正式的数据。<code>dataset.source</code> 中第一行(列)到底包含不包含维度名,ECharts 默认会自动探测。当然也可以设置 <code>dataset.sourceHeader: true</code> 显示声明第一行(列)就是维度,或者 <code>dataset.sourceHeader: false</code> 表明第一行(列)开始就直接是数据。</p> <p>维度的定义,也可以使用单独的 <code>dataset.dimensions</code> 或者 <code>series.dimensions</code> 来定义,这样可以同时指定维度名,和维度的类型(dimension type):</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">var</span> option1 <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">dataset</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">dimensions</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token punctuation">{</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'score'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token comment">// 可以简写为 string ,表示 dimension name 。</span>
+      <span class="token string">'amount'</span><span class="token punctuation">,</span>
+      <span class="token comment">// 可以在 type 中指定维度类型。</span>
+      <span class="token punctuation">{</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'product'</span><span class="token punctuation">,</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'ordinal'</span> <span class="token punctuation">}</span>
+    <span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token comment">//...</span>
+    <span class="token punctuation">]</span>
+  <span class="token punctuation">}</span>
+  <span class="token comment">// ...</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span>
+
+<span class="token keyword">var</span> option2 <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">dataset</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token comment">// ...</span>
+    <span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span><span class="token punctuation">,</span>
+    <span class="token comment">// series.dimensions 会更优先于 dataset.dimension 采纳。</span>
+    <span class="token literal-property property">dimensions</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token keyword">null</span><span class="token punctuation">,</span> <span class="token comment">// 可以设置为 null 表示不想设置维度名</span>
+      <span class="token string">'amount'</span><span class="token punctuation">,</span>
+      <span class="token punctuation">{</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'product'</span><span class="token punctuation">,</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'ordinal'</span> <span class="token punctuation">}</span>
+    <span class="token punctuation">]</span>
+  <span class="token punctuation">}</span>
+  <span class="token comment">// ...</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>大多数情况下,我们并不需要去设置维度类型,因为 ECharts 会自动尝试判断。但是如果不足够准确时,可以手动设置维度类型。</p> <p>维度类型(dimension type)可以取这些值:</p> <ul><li><code>'number'</code>: 默认,表示普通数据。</li> <li><code>'ordinal'</code>: 对于类目、文本这些 string 类型的数据,如果需要能在数轴上使用,须是 'ordinal' 类型。ECharts 默认会试图自动判断这个类型。但是自动判断也可能不准确,所以使用者也可以手动强制指定。</li> <li><code>'time'</code>: 表示时间数据。设置成 <code>'time'</code> 则能支持自动解析数据成时间戳(timestamp),比如该维度的数据是 '2017-05-10',会自动被解析。如果这个维度被用在时间数轴(<a href="https://echarts.apache.org/option.html#xAxis.type">axis.type</a> 为 <code>'time'</code>)上,那么会被自动设置为 <code>'time'</code> 类型。时间类型的支持参见 <a href="https://echarts.apache.org/option.html#series.data">data</a>。</li> <li><code>'float'</code>: 如果设置成 <code>'float'</code>,在存储时候会使用 <code>TypedArray</code>,对性能优化有好处。</li> <li><code>'int'</code>: 如果设置成 <code>'int'</code>,在存储时候会使用 <code>TypedArray</code>,对性能优化有好处。</li></ul> <h2 id="%E6%95%B0%E6%8D%AE%E5%88%B0%E5%9B%BE%E5%BD%A2%E7%9A%84%E6%98%A0%E5%B0%84%EF%BC%88series.encode%EF%BC%89" tabindex="-1">数据到图形的映射(series.encode)</h2> <p>了解了维度的概念后,我们就可以使用 <a href="https://echarts.apache.org/option.html#series.encode">series.encode</a> 来做映射。总体是这样的感觉:</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">var option = {
+  dataset: {
+    source: [
+      ['score', 'amount', 'product'],
+      [89.3, 58212, 'Matcha Latte'],
+      [57.1, 78254, 'Milk Tea'],
+      [74.4, 41032, 'Cheese Cocoa'],
+      [50.1, 12755, 'Cheese Brownie'],
+      [89.7, 20145, 'Matcha Cocoa'],
+      [68.1, 79146, 'Tea'],
+      [19.6, 91852, 'Orange Juice'],
+      [10.6, 101852, 'Lemon Juice'],
+      [32.7, 20112, 'Walnut Brownie']
+    ]
+  },
+  xAxis: {},
+  yAxis: { type: 'category' },
+  series: [
+    {
+      type: 'bar',
+      encode: {
+        // 将 "amount" 列映射到 X 轴。
+        x: 'amount',
+        // 将 "product" 列映射到 Y 轴。
+        y: 'product'
+      }
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor"><span class="token keyword">var</span> option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">dataset</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token punctuation">[</span><span class="token string">'score'</span><span class="token punctuation">,</span> <span class="token string">'amount'</span><span class="token punctuation">,</span> <span class="token string">'product'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token number">89.3</span><span class="token punctuation">,</span> <span class="token number">58212</span><span class="token punctuation">,</span> <span class="token string">'Matcha Latte'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token number">57.1</span><span class="token punctuation">,</span> <span class="token number">78254</span><span class="token punctuation">,</span> <span class="token string">'Milk Tea'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token number">74.4</span><span class="token punctuation">,</span> <span class="token number">41032</span><span class="token punctuation">,</span> <span class="token string">'Cheese Cocoa'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token number">50.1</span><span class="token punctuation">,</span> <span class="token number">12755</span><span class="token punctuation">,</span> <span class="token string">'Cheese Brownie'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token number">89.7</span><span class="token punctuation">,</span> <span class="token number">20145</span><span class="token punctuation">,</span> <span class="token string">'Matcha Cocoa'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token number">68.1</span><span class="token punctuation">,</span> <span class="token number">79146</span><span class="token punctuation">,</span> <span class="token string">'Tea'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token number">19.6</span><span class="token punctuation">,</span> <span class="token number">91852</span><span class="token punctuation">,</span> <span class="token string">'Orange Juice'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token number">10.6</span><span class="token punctuation">,</span> <span class="token number">101852</span><span class="token punctuation">,</span> <span class="token string">'Lemon Juice'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token number">32.7</span><span class="token punctuation">,</span> <span class="token number">20112</span><span class="token punctuation">,</span> <span class="token string">'Walnut Brownie'</span><span class="token punctuation">]</span>
+    <span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'category'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">encode</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token comment">// 将 "amount" 列映射到 X 轴。</span>
+        <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token string">'amount'</span><span class="token punctuation">,</span>
+        <span class="token comment">// 将 "product" 列映射到 Y 轴。</span>
+        <span class="token literal-property property">y</span><span class="token operator">:</span> <span class="token string">'product'</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p><code>series.encode</code> 声明的基本结构如下。其中冒号左边是坐标系、标签等特定名称,如 <code>'x'</code>, <code>'y'</code>, <code>'tooltip'</code> 等,冒号右边是数据中的维度名(string 格式)或者维度的序号(number 格式,从 0 开始计数),可以指定一个或多个维度(使用数组)。通常情况下,下面各种信息不需要所有的都写,按需写即可。</p> <p>下面是 <code>series.encode</code> 支持的属性:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token comment">// 在任何坐标系和系列中,都支持:</span>
+<span class="token literal-property property">encode</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+  <span class="token comment">// 使用 “名为 product 的维度” 和 “名为 score 的维度” 的值在 tooltip 中显示</span>
+  <span class="token literal-property property">tooltip</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'product'</span><span class="token punctuation">,</span> <span class="token string">'score'</span><span class="token punctuation">]</span>
+  <span class="token comment">// 使用 “维度 1” 和 “维度 3” 的维度名连起来作为系列名。(有时候名字比较长,这可以避免在 series.name 重复输入这些名字)</span>
+  <span class="token literal-property property">seriesName</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token comment">// 表示使用 “维度2” 中的值作为 id。这在使用 setOption 动态更新数据时有用处,可以使新老数据用 id 对应起来,从而能够产生合适的数据更新动画。</span>
+  <span class="token literal-property property">itemId</span><span class="token operator">:</span> <span class="token number">2</span><span class="token punctuation">,</span>
+  <span class="token comment">// 指定数据项的名称使用 “维度3” 在饼图等图表中有用,可以使这个名字显示在图例(legend)中。</span>
+  <span class="token literal-property property">itemName</span><span class="token operator">:</span> <span class="token number">3</span>
+<span class="token punctuation">}</span>
+
+<span class="token comment">// 直角坐标系(grid/cartesian)特有的属性:</span>
+<span class="token literal-property property">encode</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+  <span class="token comment">// 把 “维度1”、“维度5”、“名为 score 的维度” 映射到 X 轴:</span>
+  <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">,</span> <span class="token string">'score'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token comment">// 把“维度0”映射到 Y 轴。</span>
+  <span class="token literal-property property">y</span><span class="token operator">:</span> <span class="token number">0</span>
+<span class="token punctuation">}</span>
+
+<span class="token comment">// 单轴(singleAxis)特有的属性:</span>
+<span class="token literal-property property">encode</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">single</span><span class="token operator">:</span> <span class="token number">3</span>
+<span class="token punctuation">}</span>
+
+<span class="token comment">// 极坐标系(polar)特有的属性:</span>
+<span class="token literal-property property">encode</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">radius</span><span class="token operator">:</span> <span class="token number">3</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">angle</span><span class="token operator">:</span> <span class="token number">2</span>
+<span class="token punctuation">}</span>
+
+<span class="token comment">// 地理坐标系(geo)特有的属性:</span>
+<span class="token literal-property property">encode</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">lng</span><span class="token operator">:</span> <span class="token number">3</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">lat</span><span class="token operator">:</span> <span class="token number">2</span>
+<span class="token punctuation">}</span>
+
+<span class="token comment">// 对于一些没有坐标系的图表,例如饼图、漏斗图等,可以是:</span>
+<span class="token literal-property property">encode</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">3</span>
+<span class="token punctuation">}</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>这是个更丰富的 <code>series.encode</code> 的 <a href="https://echarts.apache.org/examples/zh/editor.html?c=dataset-encode1&edit=1&reset=1">示例</a> 。</p> <h2 id="%E9%BB%98%E8%AE%A4%E7%9A%84-series.encode" tabindex="-1">默认的 series.encode</h2> <p>值得一提的是,当 <code>series.encode</code> 并没有指定时,ECharts 针对最常见直角坐标系中的图表(折线图、柱状图、散点图、K 线图等)、饼图、漏斗图,会采用一些默认的映射规则。默认的映射规则比较简单,大体是:</p> <ul><li>在坐标系中(如直角坐标系、极坐标系等)
+<ul><li>如果有类目轴(<a href="https://echarts.apache.org/option.html#xAxis.type">axis.type</a> 为 <code>'category'</code>),则将第一列(行)映射到这个轴上,后续每一列(行)对应一个系列。</li> <li>如果没有类目轴,假如坐标系有两个轴(例如直角坐标系的 X Y 轴),则每两列对应一个系列,这两列分别映射到这两个轴上。</li></ul></li> <li>如果没有坐标系(如饼图)
+<ul><li>取第一列(行)为名字,第二列(行)为数值(如果只有一列,则取第一列为数值)。</li></ul></li></ul> <p>默认的规则不能满足要求时,就可以自己来配置 <code>encode</code>,也并不复杂。这是一个 <a href="https://echarts.apache.org/examples/zh/editor.html?c=dataset-default&edit=1&reset=1">例子</a>。</p> <h2 id="%E5%87%A0%E4%B8%AA%E5%B8%B8%E8%A7%81%E7%9A%84-series.encode-%E8%AE%BE%E7%BD%AE%E6%96%B9%E5%BC%8F%E4%B8%BE%E4%BE%8B" tabindex="-1">几个常见的 series.encode 设置方式举例</h2> <p>问:如何把第三列设置为 X 轴,第五列设置为 Y 轴?</p> <p>答:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token comment">// 注意维度序号(dimensionIndex)从 0 开始计数,第三列是 dimensions[2]。</span>
+    <span class="token literal-property property">encode</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token literal-property property">y</span><span class="token operator">:</span> <span class="token number">4</span> <span class="token punctuation">}</span>
+    <span class="token comment">// ...</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>问:如何把第三行设置为 X 轴,第五行设置为 Y 轴?</p> <p>答:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">encode</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token literal-property property">y</span><span class="token operator">:</span> <span class="token number">4</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">seriesLayoutBy</span><span class="token operator">:</span> <span class="token string">'row'</span>
+    <span class="token comment">// ...</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>问:如何把第二列设置为标签?</p> <p>答:
+关于标签的显示 <a href="https://echarts.apache.org/option.html#series.label.formatter">label.formatter</a>,现在支持引用特定维度的值,例如:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token comment">// `'{@score}'` 表示 “名为 score” 的维度里的值。</span>
+    <span class="token comment">// `'{@[4]}'` 表示引用序号为 4 的维度里的值。</span>
+    <span class="token literal-property property">formatter</span><span class="token operator">:</span> <span class="token string">'aaa{@product}bbb{@score}ccc{@[4]}ddd'</span><span class="token punctuation">;</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>问:如何让第 2 列和第 3 列显示在提示框(tooltip)中?</p> <p>答:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">encode</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">tooltip</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">]</span>
+      <span class="token comment">// ...</span>
+    <span class="token punctuation">}</span>
+    <span class="token comment">// ...</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>问:数据里没有维度名,那么怎么给出维度名?</p> <p>答:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">var</span> option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">dataset</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">dimensions</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'score'</span><span class="token punctuation">,</span> <span class="token string">'amount'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token punctuation">[</span><span class="token number">89.3</span><span class="token punctuation">,</span> <span class="token number">3371</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token number">92.1</span><span class="token punctuation">,</span> <span class="token number">8123</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token number">94.4</span><span class="token punctuation">,</span> <span class="token number">1954</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token number">85.4</span><span class="token punctuation">,</span> <span class="token number">829</span><span class="token punctuation">]</span>
+    <span class="token punctuation">]</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>问:如何把第三列映射为气泡图的点的大小?</p> <p>答:</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">var option = {
+  dataset: {
+    source: [
+      [12, 323, 11.2],
+      [23, 167, 8.3],
+      [81, 284, 12],
+      [91, 413, 4.1],
+      [13, 287, 13.5]
+    ]
+  },
+  visualMap: {
+    show: false,
+    dimension: 2, // 指向第三列(列序号从 0 开始记,所以设置为 2)。
+    min: 2, // 需要给出数值范围,最小数值。
+    max: 15, // 需要给出数值范围,最大数值。
+    inRange: {
+      // 气泡尺寸:5 像素到 60 像素。
+      symbolSize: [5, 60]
+    }
+  },
+  xAxis: {},
+  yAxis: {},
+  series: {
+    type: 'scatter'
+  }
+};</textarea><pre data-testid="preview" class="prism-editor__editor"><span class="token keyword">var</span> option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">dataset</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token punctuation">[</span><span class="token number">12</span><span class="token punctuation">,</span> <span class="token number">323</span><span class="token punctuation">,</span> <span class="token number">11.2</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token number">23</span><span class="token punctuation">,</span> <span class="token number">167</span><span class="token punctuation">,</span> <span class="token number">8.3</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token number">81</span><span class="token punctuation">,</span> <span class="token number">284</span><span class="token punctuation">,</span> <span class="token number">12</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token number">91</span><span class="token punctuation">,</span> <span class="token number">413</span><span class="token punctuation">,</span> <span class="token number">4.1</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token number">13</span><span class="token punctuation">,</span> <span class="token number">287</span><span class="token punctuation">,</span> <span class="token number">13.5</span><span class="token punctuation">]</span>
+    <span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">visualMap</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">dimension</span><span class="token operator">:</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token comment">// 指向第三列(列序号从 0 开始记,所以设置为 2)。</span>
+    <span class="token literal-property property">min</span><span class="token operator">:</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token comment">// 需要给出数值范围,最小数值。</span>
+    <span class="token literal-property property">max</span><span class="token operator">:</span> <span class="token number">15</span><span class="token punctuation">,</span> <span class="token comment">// 需要给出数值范围,最大数值。</span>
+    <span class="token literal-property property">inRange</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token comment">// 气泡尺寸:5 像素到 60 像素。</span>
+      <span class="token literal-property property">symbolSize</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">60</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'scatter'</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>问:encode 里指定了映射,但是不管用?</p> <p>答:可以查查有没有拼错,比如,维度名是:<code>'Life Expectancy'</code>,encode 中拼成了 <code>'Life Expectency'</code>。</p> <h2 id="%E8%A7%86%E8%A7%89%E9%80%9A%E9%81%93%EF%BC%88%E9%A2%9C%E8%89%B2%E3%80%81%E5%B0%BA%E5%AF%B8%E7%AD%89%EF%BC%89%E7%9A%84%E6%98%A0%E5%B0%84" tabindex="-1">视觉通道(颜色、尺寸等)的映射</h2> <p>我们可以使用 <a href="https://echarts.apache.org/option.html#visualMap">visualMap</a> 组件进行视觉通道的映射。详见 <a href="https://echarts.apache.org/option.html#visualMap">visualMap</a> 文档的介绍。这是一个 <a href="https://echarts.apache.org/examples/zh/editor.html?c=dataset-encode0&edit=1&reset=1">示例</a>。</p> <h2 id="%E6%95%B0%E6%8D%AE%E7%9A%84%E5%90%84%E7%A7%8D%E6%A0%BC%E5%BC%8F" tabindex="-1">数据的各种格式</h2> <p>多数常见图表中,数据适于用二维表的形式描述。广为使用的数据表格软件(如 MS Excel、Numbers)或者关系数据数据库都是二维表。他们的数据可以导出成 JSON 格式,输入到 <code>dataset.source</code> 中,在不少情况下可以免去一些数据处理的步骤。</p> <blockquote><p>假如数据导出成 csv 文件,那么可以使用一些 csv 工具如 <a href="https://github.com/d3/d3-dsv">dsv</a> 或者 <a href="https://github.com/mholt/PapaParse">PapaParse</a> 将 csv 转成 JSON。</p></blockquote> <p>在 JavaScript 常用的数据传输格式中,二维数组可以比较直观的存储二维表。前面的示例都是使用二维数组表示。</p> <p>除了二维数组以外,dataset 也支持例如下面 key-value 方式的数据格式,这类格式也非常常见。但是这类格式中,目前并不支持 <a href="https://echarts.apache.org/option.html#series.seriesLayoutBy">seriesLayoutBy</a> 参数。</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token literal-property property">dataset</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+  <span class="token punctuation">{</span>
+    <span class="token comment">// 按行的 key-value 形式(对象数组),这是个比较常见的格式。</span>
+    <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token punctuation">{</span> <span class="token literal-property property">product</span><span class="token operator">:</span> <span class="token string">'Matcha Latte'</span><span class="token punctuation">,</span> <span class="token literal-property property">count</span><span class="token operator">:</span> <span class="token number">823</span><span class="token punctuation">,</span> <span class="token literal-property property">score</span><span class="token operator">:</span> <span class="token number">95.8</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token punctuation">{</span> <span class="token literal-property property">product</span><span class="token operator">:</span> <span class="token string">'Milk Tea'</span><span class="token punctuation">,</span> <span class="token literal-property property">count</span><span class="token operator">:</span> <span class="token number">235</span><span class="token punctuation">,</span> <span class="token literal-property property">score</span><span class="token operator">:</span> <span class="token number">81.4</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token punctuation">{</span> <span class="token literal-property property">product</span><span class="token operator">:</span> <span class="token string">'Cheese Cocoa'</span><span class="token punctuation">,</span> <span class="token literal-property property">count</span><span class="token operator">:</span> <span class="token number">1042</span><span class="token punctuation">,</span> <span class="token literal-property property">score</span><span class="token operator">:</span> <span class="token number">91.2</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token punctuation">{</span> <span class="token literal-property property">product</span><span class="token operator">:</span> <span class="token string">'Walnut Brownie'</span><span class="token punctuation">,</span> <span class="token literal-property property">count</span><span class="token operator">:</span> <span class="token number">988</span><span class="token punctuation">,</span> <span class="token literal-property property">score</span><span class="token operator">:</span> <span class="token number">76.9</span> <span class="token punctuation">}</span>
+    <span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token punctuation">{</span>
+    <span class="token comment">// 按列的 key-value 形式。</span>
+    <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">product</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'Matcha Latte'</span><span class="token punctuation">,</span> <span class="token string">'Milk Tea'</span><span class="token punctuation">,</span> <span class="token string">'Cheese Cocoa'</span><span class="token punctuation">,</span> <span class="token string">'Walnut Brownie'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">count</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">823</span><span class="token punctuation">,</span> <span class="token number">235</span><span class="token punctuation">,</span> <span class="token number">1042</span><span class="token punctuation">,</span> <span class="token number">988</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">score</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">95.8</span><span class="token punctuation">,</span> <span class="token number">81.4</span><span class="token punctuation">,</span> <span class="token number">91.2</span><span class="token punctuation">,</span> <span class="token number">76.9</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">]</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="%E5%A4%9A%E4%B8%AA-dataset-%E4%BB%A5%E5%8F%8A%E5%A6%82%E4%BD%95%E5%BC%95%E7%94%A8%E4%BB%96%E4%BB%AC" tabindex="-1">多个 dataset 以及如何引用他们</h2> <p>可以同时定义多个 dataset。系列可以通过 <a href="https://echarts.apache.org/option.html#series.datasetIndex">series.datasetIndex</a> 来指定引用哪个 dataset。例如:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">var</span> option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">dataset</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token comment">// 序号为 0 的 dataset。</span>
+      <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token comment">// 序号为 1 的 dataset。</span>
+      <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token comment">// 序号为 2 的 dataset。</span>
+      <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token comment">// 使用序号为 2 的 dataset。</span>
+      <span class="token literal-property property">datasetIndex</span><span class="token operator">:</span> <span class="token number">2</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token comment">// 使用序号为 1 的 dataset。</span>
+      <span class="token literal-property property">datasetIndex</span><span class="token operator">:</span> <span class="token number">1</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="echarts-3-%E7%9A%84%E6%95%B0%E6%8D%AE%E8%AE%BE%E7%BD%AE%E6%96%B9%E5%BC%8F%EF%BC%88series.data%EF%BC%89%E4%BB%8D%E6%AD%A3%E5%B8%B8%E4%BD%BF%E7%94%A8" tabindex="-1">ECharts 3 的数据设置方式(series.data)仍正常使用</h2> <p>ECharts 4 之前一直以来的数据声明方式仍然被正常支持,如果系列已经声明了 <a href="https://echarts.apache.org/option.html#series.data">series.data</a>, 那么就会使用 <a href="https://echarts.apache.org/option.html#series.data">series.data</a> 而非 <code>dataset</code>。</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    type: 'category',
+    data: ['Matcha Latte', 'Milk Tea', 'Cheese Cocoa', 'Walnut Brownie']
+  },
+  yAxis: {},
+  series: [
+    {
+      type: 'bar',
+      name: '2015',
+      data: [89.3, 92.1, 94.4, 85.4]
+    },
+    {
+      type: 'bar',
+      name: '2016',
+      data: [95.8, 89.4, 91.2, 76.9]
+    },
+    {
+      type: 'bar',
+      name: '2017',
+      data: [97.7, 83.1, 92.5, 78.1]
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'category'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'Matcha Latte'</span><span class="token punctuation">,</span> <span class="token string">'Milk Tea'</span><span class="token punctuation">,</span> <span class="token string">'Cheese Cocoa'</span><span class="token punctuation">,</span> <span class="token string">'Walnut Brownie'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'2015'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">89.3</span><span class="token punctuation">,</span> <span class="token number">92.1</span><span class="token punctuation">,</span> <span class="token number">94.4</span><span class="token punctuation">,</span> <span class="token number">85.4</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'2016'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">95.8</span><span class="token punctuation">,</span> <span class="token number">89.4</span><span class="token punctuation">,</span> <span class="token number">91.2</span><span class="token punctuation">,</span> <span class="token number">76.9</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'2017'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">97.7</span><span class="token punctuation">,</span> <span class="token number">83.1</span><span class="token punctuation">,</span> <span class="token number">92.5</span><span class="token punctuation">,</span> <span class="token number">78.1</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>其实,<a href="https://echarts.apache.org/option.html#series.data">series.data</a> 也是种会一直存在的重要设置方式。一些特殊的非 table 格式的图表,如 <a href="https://echarts.apache.org/option.html#series-treemap">treemap</a>、<a href="https://echarts.apache.org/option.html#series-graph">graph</a>、<a href="https://echarts.apache.org/option.html#series-lines">lines</a> 等,现在仍不支持在 dataset 中设置,仍然需要使用 <a href="https://echarts.apache.org/option.html#series.data">series.data</a>。另外,对于巨大数据量的渲染(如百万以上的数据量),需要使用 <a href="api.html#echartsInstance.appendData">appendData</a> 进行增量加载,这种情况不支持使用 <code>dataset</code>。</p> <h2 id="%E5%85%B6%E4%BB%96" tabindex="-1">其他</h2> <p>目前并非所有图表都支持 dataset。支持 dataset 的图表有:
+<code>line</code>、<code>bar</code>、<code>pie</code>、<code>scatter</code>、<code>effectScatter</code>、<code>parallel</code>、<code>candlestick</code>、<code>map</code>、<code>funnel</code>、<code>custom</code>。
+后续会有更多的图表进行支持。</p> <p>最后,给出这个 <a href="https://echarts.apache.org/examples/zh/editor.html?c=dataset-link&edit=1&reset=1">示例</a>,多个图表共享一个 <code>dataset</code>,并带有联动交互。</p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">本文贡献者</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/zh/concepts/dataset.md" title="编辑本文" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">在 GitHub 上编辑本页</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/plainheart" target="_blank" class="post-contributor has-avatar"><img alt="plainheart" src="https://echarts.apache.org/en/images/people/plainheart.jpg" loading="lazy" decoding="async" fetchpriority="low"> <span>plainheart</span></a><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a><a href="https://github.com/100pah" target="_blank" class="post-contributor has-avatar"><img alt="100pah" src="https://echarts.apache.org/en/images/people/宿爽.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>100pah</span></a><a href="https://github.com/Ovilia" target="_blank" class="post-contributor has-avatar"><img alt="Ovilia" src="https://echarts.apache.org/en/images/people/羡辙.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>Ovilia</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(e,i,t,g,d,l,I,a,o,C,n,A,s,c,r,h,p,B,u,m,y,b,E,v,L,O,W,D,w,Z,J,j,X,M,H,Y,z,G,N,S,K,k,f,F,T,x,Q,R,V,U,q,P,_,$,ee,ie,te,ge,de,le,Ie,ae,oe){return{layout:"default",data:[{html:'<h1 id="%E6%95%B0%E6%8D%AE%E9%9B%86" tabindex="-1">数据集</h1>\n<p><code>数据集(dataset)</code>是专门用来管理数据的组件。虽然每个系列都可以在 <code>series.data</code> 中设置数据,但是从 ECharts4 支持数据集开始,更推荐使用数据集来管理数据。因为这样,数据可以被多个组件复用,也方便进行 “数据和其他配置” 分离的配置风格。毕竟,在运行时,数据是最常改变的,而其他配置大多并不会改变。</p>\n<h2 id="%E5%9C%A8%E7%B3%BB%E5%88%97%E4%B8%AD%E8%AE%BE%E7%BD%AE%E6%95%B0%E6%8D%AE" tabindex="-1">在系列中设置数据</h2>\n<p>如果数据设置在 <code>系列(series)</code> 中,例如:</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICB0eXBlOiAnY2F0ZWdvcnknLAogICAgZGF0YTogWydNYXRjaGEgTGF0dGUnLCAnTWlsayBUZWEnLCAnQ2hlZXNlIENvY29hJywgJ1dhbG51dCBCcm93bmllJ10KICB9LAogIHlBeGlzOiB7fSwKICBzZXJpZXM6IFsKICAgIHsKICAgICAgdHlwZTogJ2JhcicsCiAgICAgIG5hbWU6ICcyMDE1JywKICAgICAgZGF0YTogWzg5LjMsIDkyLjEsIDk0LjQsIDg1LjRdCiAgICB9LAogICAgewogICAgICB0eXBlOiAnYmFyJywKICAgICAgbmFtZTogJzIwMTYnLAogICAgICBkYXRhOiBbOTUuOCwgODkuNCwgOTEuMiwgNzYuOV0KICAgIH0sCiAgICB7CiAgICAgIHR5cGU6ICdiYXInLAogICAgICBuYW1lOiAnMjAxNycsCiAgICAgIGRhdGE6IFs5Ny43LCA4My4xLCA5Mi41LCA3OC4xXQogICAgfQogIF0KfTs\'" v-bind="{}" />\n<p>这种方式的优点是,适于对一些特殊的数据结构(如“树”、“图”、超大数据)进行一定的数据类型定制。\n但是缺点是,常需要用户先处理数据,把数据分割设置到各个系列(和类目轴)中。此外,不利于多个系列共享一份数据,也不利于基于原始数据进行图表类型、系列的映射安排。</p>\n<h2 id="%E5%9C%A8%E6%95%B0%E6%8D%AE%E9%9B%86%E4%B8%AD%E8%AE%BE%E7%BD%AE%E6%95%B0%E6%8D%AE" tabindex="-1">在数据集中设置数据</h2>\n<p>而数据设置在 <code>数据集(dataset)</code> 中,会有这些好处:</p>\n<ul>\n<li>能够贴近数据可视化常见思维方式:(I)提供数据,(II)指定数据到视觉的映射,从而形成图表。</li>\n<li>数据和其他配置可以被分离开来。数据常变,其他配置常不变。分开易于分别管理。</li>\n<li>数据可以被多个系列或者组件复用,对于大数据量的场景,不必为每个系列创建一份数据。</li>\n<li>支持更多的数据的常用格式,例如二维数组、对象数组等,一定程度上避免使用者为了数据格式而进行转换。</li>\n</ul>\n<p>下面是一个最简单的 <code>dataset</code> 的例子:</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIGxlZ2VuZDoge30sCiAgdG9vbHRpcDoge30sCiAgZGF0YXNldDogewogICAgLy8g5o-Q5L6b5LiA5Lu95pWw5o2u44CCCiAgICBzb3VyY2U6IFsKICAgICAgWydwcm9kdWN0JywgJzIwMTUnLCAnMjAxNicsICcyMDE3J10sCiAgICAgIFsnTWF0Y2hhIExhdHRlJywgNDMuMywgODUuOCwgOTMuN10sCiAgICAgIFsnTWlsayBUZWEnLCA4My4xLCA3My40LCA1NS4xXSwKICAgICAgWydDaGVlc2UgQ29jb2EnLCA4Ni40LCA2NS4yLCA4Mi41XSwKICAgICAgWydXYWxudXQgQnJvd25pZScsIDcyLjQsIDUzLjksIDM5LjFdCiAgICBdCiAgfSwKICAvLyDlo7DmmI7kuIDkuKogWCDovbTvvIznsbvnm67ovbTvvIhjYXRlZ29yee-8ieOAgum7mOiupOaDheWGteS4i--8jOexu-ebrui9tOWvueW6lOWIsCBkYXRhc2V0IOesrOS4gOWIl-OAggogIHhBeGlzOiB7IHR5cGU6ICdjYXRlZ29yeScgfSwKICAvLyDlo7DmmI7kuIDkuKogWSDovbTvvIzmlbDlgLzovbTjgIIKICB5QXhpczoge30sCiAgLy8g5aOw5piO5aSa5LiqIGJhciDns7vliJfvvIzpu5jorqTmg4XlhrXkuIvvvIzmr4_kuKrns7vliJfkvJroh6rliqjlr7nlupTliLAgZGF0YXNldCDnmoTmr4_kuIDliJfjgIIKICBzZXJpZXM6IFt7IHR5cGU6ICdiYXInIH0sIHsgdHlwZTogJ2JhcicgfSwgeyB0eXBlOiAnYmFyJyB9XQp9Ow\'" v-bind="{}" />\n<p>或者也可以使用常见的“对象数组”的格式:</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIGxlZ2VuZDoge30sCiAgdG9vbHRpcDoge30sCiAgZGF0YXNldDogewogICAgLy8g55SoIGRpbWVuc2lvbnMg5oyH5a6a5LqG57u05bqm55qE6aG65bqP44CC55u06KeS5Z2Q5qCH57O75Lit77yM5aaC5p6cIFgg6L20IHR5cGUg5Li6IGNhdGVnb3J577yMCiAgICAvLyDpu5jorqTmiornrKzkuIDkuKrnu7TluqbmmKDlsITliLAgWCDovbTkuIrvvIzlkI7pnaLnu7TluqbmmKDlsITliLAgWSDovbTkuIrjgIIKICAgIC8vIOWmguaenOS4jeaMh-WumiBkaW1lbnNpb25z77yM5Lmf5Y-v5Lul6YCa6L-H5oyH5a6aIHNlcmllcy5lbmNvZGUKICAgIC8vIOWujOaIkOaYoOWwhO-8jOWPguingeWQjuaWh-OAggogICAgZGltZW5zaW9uczogWydwcm9kdWN0JywgJzIwMTUnLCAnMjAxNicsICcyMDE3J10sCiAgICBzb3VyY2U6IFsKICAgICAgeyBwcm9kdWN0OiAnTWF0Y2hhIExhdHRlJywgJzIwMTUnOiA0My4zLCAnMjAxNic6IDg1LjgsICcyMDE3JzogOTMuNyB9LAogICAgICB7IHByb2R1Y3Q6ICdNaWxrIFRlYScsICcyMDE1JzogODMuMSwgJzIwMTYnOiA3My40LCAnMjAxNyc6IDU1LjEgfSwKICAgICAgeyBwcm9kdWN0OiAnQ2hlZXNlIENvY29hJywgJzIwMTUnOiA4Ni40LCAnMjAxNic6IDY1LjIsICcyMDE3JzogODIuNSB9LAogICAgICB7IHByb2R1Y3Q6ICdXYWxudXQgQnJvd25pZScsICcyMDE1JzogNzIuNCwgJzIwMTYnOiA1My45LCAnMjAxNyc6IDM5LjEgfQogICAgXQogIH0sCiAgeEF4aXM6IHsgdHlwZTogJ2NhdGVnb3J5JyB9LAogIHlBeGlzOiB7fSwKICBzZXJpZXM6IFt7IHR5cGU6ICdiYXInIH0sIHsgdHlwZTogJ2JhcicgfSwgeyB0eXBlOiAnYmFyJyB9XQp9Ow\'" v-bind="{}" />\n<h2 id="%E6%95%B0%E6%8D%AE%E5%88%B0%E5%9B%BE%E5%BD%A2%E7%9A%84%E6%98%A0%E5%B0%84" tabindex="-1">数据到图形的映射</h2>\n<p>如上所述,数据可视化的一个常见思路是:(I)提供数据,(II)指定数据到视觉的映射。</p>\n<p>简而言之,可以进行这些映射的设定:</p>\n<ul>\n<li>指定 <code>数据集</code> 的列(column)还是行(row)映射为 <code>系列(series)</code>。这件事可以使用 <a href="https://echarts.apache.org/option.html#series.seriesLayoutBy">series.seriesLayoutBy</a> 属性来配置。默认是按照列(column)来映射。</li>\n<li>指定维度映射的规则:如何从 dataset 的维度(一个“维度”的意思是一行/列)映射到坐标轴(如 X、Y 轴)、提示框(tooltip)、标签(label)、图形元素大小颜色等(visualMap)。这件事可以使用 <a href="https://echarts.apache.org/option.html#series.encode">series.encode</a> 属性,以及 <a href="https://echarts.apache.org/option.html#visualMap">visualMap</a> 组件来配置(如果有需要映射颜色大小等视觉维度的话)。上面的例子中,没有给出这种映射配置,那么 ECharts 就按最常见的理解进行默认映射:X 坐标轴声明为类目轴,默认情况下会自动对应到 <code>dataset.source</code> 中的第一列;三个柱图系列,一一对应到 <code>dataset.source</code> 中后面每一列。</li>\n</ul>\n<p>下面详细解释这些映射的设定。</p>\n<h2 id="%E6%8A%8A%E6%95%B0%E6%8D%AE%E9%9B%86%EF%BC%88dataset%EF%BC%89%E7%9A%84%E8%A1%8C%E6%88%96%E5%88%97%E6%98%A0%E5%B0%84%E4%B8%BA%E7%B3%BB%E5%88%97%EF%BC%88series%EF%BC%89" tabindex="-1">把数据集(dataset)的行或列映射为系列(series)</h2>\n<p>有了数据表之后,使用者可以灵活地配置:数据如何对应到轴和图形系列。</p>\n<p>用户可以使用 <code>seriesLayoutBy</code> 配置项,改变图表对于行列的理解。<code>seriesLayoutBy</code> 可取值:</p>\n<ul>\n<li><code>\'column\'</code>: 默认值。系列被安放到 <code>dataset</code> 的列上面。</li>\n<li><code>\'row\'</code>: 系列被安放到 <code>dataset</code> 的行上面。</li>\n</ul>\n<p>看这个例子:</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIGxlZ2VuZDoge30sCiAgdG9vbHRpcDoge30sCiAgZGF0YXNldDogewogICAgc291cmNlOiBbCiAgICAgIFsncHJvZHVjdCcsICcyMDEyJywgJzIwMTMnLCAnMjAxNCcsICcyMDE1J10sCiAgICAgIFsnTWF0Y2hhIExhdHRlJywgNDEuMSwgMzAuNCwgNjUuMSwgNTMuM10sCiAgICAgIFsnTWlsayBUZWEnLCA4Ni41LCA5Mi4xLCA4NS43LCA4My4xXSwKICAgICAgWydDaGVlc2UgQ29jb2EnLCAyNC4xLCA2Ny4yLCA3OS41LCA4Ni40XQogICAgXQogIH0sCiAgeEF4aXM6IFsKICAgIHsgdHlwZTogJ2NhdGVnb3J5JywgZ3JpZEluZGV4OiAwIH0sCiAgICB7IHR5cGU6ICdjYXRlZ29yeScsIGdyaWRJbmRleDogMSB9CiAgXSwKICB5QXhpczogW3sgZ3JpZEluZGV4OiAwIH0sIHsgZ3JpZEluZGV4OiAxIH1dLAogIGdyaWQ6IFt7IGJvdHRvbTogJzU1JScgfSwgeyB0b3A6ICc1NSUnIH1dLAogIHNlcmllczogWwogICAgLy8g6L-Z5Yeg5Liq57O75YiX5Lya5Ye6546w5Zyo56ys5LiA5Liq55u06KeS5Z2Q5qCH57O75Lit77yM5q-P5Liq57O75YiX5a-55bqU5YiwIGRhdGFzZXQg55qE5q-P5LiA6KGM44CCCiAgICB7IHR5cGU6ICdiYXInLCBzZXJpZXNMYXlvdXRCeTogJ3JvdycsIHhBeGlzSW5kZXg6IDAsIHlBeGlzSW5kZXg6IDAgfSwKICAgIHsgdHlwZTogJ2JhcicsIHNlcmllc0xheW91dEJ5OiAncm93JywgeEF4aXNJbmRleDogMCwgeUF4aXNJbmRleDogMCB9LAogICAgeyB0eXBlOiAnYmFyJywgc2VyaWVzTGF5b3V0Qnk6ICdyb3cnLCB4QXhpc0luZGV4OiAwLCB5QXhpc0luZGV4OiAwIH0sCiAgICAvLyDov5nlh6DkuKrns7vliJfkvJrlh7rnjrDlnKjnrKzkuozkuKrnm7Top5LlnZDmoIfns7vkuK3vvIzmr4_kuKrns7vliJflr7nlupTliLAgZGF0YXNldCDnmoTmr4_kuIDliJfjgIIKICAgIHsgdHlwZTogJ2JhcicsIHNlcmllc0xheW91dEJ5OiAnY29sdW1uJywgeEF4aXNJbmRleDogMSwgeUF4aXNJbmRleDogMSB9LAogICAgeyB0eXBlOiAnYmFyJywgc2VyaWVzTGF5b3V0Qnk6ICdjb2x1bW4nLCB4QXhpc0luZGV4OiAxLCB5QXhpc0luZGV4OiAxIH0sCiAgICB7IHR5cGU6ICdiYXInLCBzZXJpZXNMYXlvdXRCeTogJ2NvbHVtbicsIHhBeGlzSW5kZXg6IDEsIHlBeGlzSW5kZXg6IDEgfSwKICAgIHsgdHlwZTogJ2JhcicsIHNlcmllc0xheW91dEJ5OiAnY29sdW1uJywgeEF4aXNJbmRleDogMSwgeUF4aXNJbmRleDogMSB9CiAgXQp9Ow\'" v-bind="{}" />\n<h2 id="%E7%BB%B4%E5%BA%A6%EF%BC%88dimension%EF%BC%89" tabindex="-1">维度(dimension)</h2>\n<p>常用图表所描述的数据大部分是“二维表”结构,上述的例子中,我们都使用二维数组来容纳二维表。现在,当我们把系列(series)对应到“列”的时候,那么每一列就称为一个“维度(dimension)”,而每一行称为数据项(item)。反之,如果我们把系列(series)对应到表行,那么每一行就是“维度(dimension)”,每一列就是数据项(item)。</p>\n<p>维度可以有单独的名字,便于在图表中显示。维度名(dimension name)可以在定义在 dataset 的第一行(或者第一列)。例如下面的<a href="zh/concepts/dataset/#%E6%95%B0%E6%8D%AE%E5%88%B0%E5%9B%BE%E5%BD%A2%E7%9A%84%E6%98%A0%E5%B0%84%EF%BC%88series.encode%EF%BC%89">例子</a>中,<code>\'score\'</code>、<code>\'amount\'</code>、<code>\'product\'</code> 就是维度名。从第二行开始,才是正式的数据。<code>dataset.source</code> 中第一行(列)到底包含不包含维度名,ECharts 默认会自动探测。当然也可以设置 <code>dataset.sourceHeader: true</code> 显示声明第一行(列)就是维度,或者 <code>dataset.sourceHeader: false</code> 表明第一行(列)开始就直接是数据。</p>\n<p>维度的定义,也可以使用单独的 <code>dataset.dimensions</code> 或者 <code>series.dimensions</code> 来定义,这样可以同时指定维度名,和维度的类型(dimension type):</p>\n<md-code-block lang="js" code="\'dmFyIG9wdGlvbjEgPSB7CiAgZGF0YXNldDogewogICAgZGltZW5zaW9uczogWwogICAgICB7IG5hbWU6ICdzY29yZScgfSwKICAgICAgLy8g5Y-v5Lul566A5YaZ5Li6IHN0cmluZyDvvIzooajnpLogZGltZW5zaW9uIG5hbWUg44CCCiAgICAgICdhbW91bnQnLAogICAgICAvLyDlj6_ku6XlnKggdHlwZSDkuK3mjIflrprnu7TluqbnsbvlnovjgIIKICAgICAgeyBuYW1lOiAncHJvZHVjdCcsIHR5cGU6ICdvcmRpbmFsJyB9CiAgICBdLAogICAgc291cmNlOiBbCiAgICAgIC8vLi4uCiAgICBdCiAgfQogIC8vIC4uLgp9OwoKdmFyIG9wdGlvbjIgPSB7CiAgZGF0YXNldDogewogICAgc291cmNlOiBbCiAgICAgIC8vIC4uLgogICAgXQogIH0sCiAgc2VyaWVzOiB7CiAgICB0eXBlOiAnbGluZScsCiAgICAvLyBzZXJpZXMuZGltZW5zaW9ucyDkvJrmm7TkvJjlhYjkuo4gZGF0YXNldC5kaW1lbnNpb24g6YeH57qz44CCCiAgICBkaW1lbnNpb25zOiBbCiAgICAgIG51bGwsIC8vIOWPr-S7peiuvue9ruS4uiBudWxsIOihqOekuuS4jeaDs-iuvue9rue7tOW6puWQjQogICAgICAnYW1vdW50JywKICAgICAgeyBuYW1lOiAncHJvZHVjdCcsIHR5cGU6ICdvcmRpbmFsJyB9CiAgICBdCiAgfQogIC8vIC4uLgp9Ow\'" line-highlights="\'\'" />\n<p>大多数情况下,我们并不需要去设置维度类型,因为 ECharts 会自动尝试判断。但是如果不足够准确时,可以手动设置维度类型。</p>\n<p>维度类型(dimension type)可以取这些值:</p>\n<ul>\n<li><code>\'number\'</code>: 默认,表示普通数据。</li>\n<li><code>\'ordinal\'</code>: 对于类目、文本这些 string 类型的数据,如果需要能在数轴上使用,须是 \'ordinal\' 类型。ECharts 默认会试图自动判断这个类型。但是自动判断也可能不准确,所以使用者也可以手动强制指定。</li>\n<li><code>\'time\'</code>: 表示时间数据。设置成 <code>\'time\'</code> 则能支持自动解析数据成时间戳(timestamp),比如该维度的数据是 \'2017-05-10\',会自动被解析。如果这个维度被用在时间数轴(<a href="https://echarts.apache.org/option.html#xAxis.type">axis.type</a> 为 <code>\'time\'</code>)上,那么会被自动设置为 <code>\'time\'</code> 类型。时间类型的支持参见 <a href="https://echarts.apache.org/option.html#series.data">data</a>。</li>\n<li><code>\'float\'</code>: 如果设置成 <code>\'float\'</code>,在存储时候会使用 <code>TypedArray</code>,对性能优化有好处。</li>\n<li><code>\'int\'</code>: 如果设置成 <code>\'int\'</code>,在存储时候会使用 <code>TypedArray</code>,对性能优化有好处。</li>\n</ul>\n<h2 id="%E6%95%B0%E6%8D%AE%E5%88%B0%E5%9B%BE%E5%BD%A2%E7%9A%84%E6%98%A0%E5%B0%84%EF%BC%88series.encode%EF%BC%89" tabindex="-1">数据到图形的映射(series.encode)</h2>\n<p>了解了维度的概念后,我们就可以使用 <a href="https://echarts.apache.org/option.html#series.encode">series.encode</a> 来做映射。总体是这样的感觉:</p>\n<md-live lang="js" code="\'dmFyIG9wdGlvbiA9IHsKICBkYXRhc2V0OiB7CiAgICBzb3VyY2U6IFsKICAgICAgWydzY29yZScsICdhbW91bnQnLCAncHJvZHVjdCddLAogICAgICBbODkuMywgNTgyMTIsICdNYXRjaGEgTGF0dGUnXSwKICAgICAgWzU3LjEsIDc4MjU0LCAnTWlsayBUZWEnXSwKICAgICAgWzc0LjQsIDQxMDMyLCAnQ2hlZXNlIENvY29hJ10sCiAgICAgIFs1MC4xLCAxMjc1NSwgJ0NoZWVzZSBCcm93bmllJ10sCiAgICAgIFs4OS43LCAyMDE0NSwgJ01hdGNoYSBDb2NvYSddLAogICAgICBbNjguMSwgNzkxNDYsICdUZWEnXSwKICAgICAgWzE5LjYsIDkxODUyLCAnT3JhbmdlIEp1aWNlJ10sCiAgICAgIFsxMC42LCAxMDE4NTIsICdMZW1vbiBKdWljZSddLAogICAgICBbMzIuNywgMjAxMTIsICdXYWxudXQgQnJvd25pZSddCiAgICBdCiAgfSwKICB4QXhpczoge30sCiAgeUF4aXM6IHsgdHlwZTogJ2NhdGVnb3J5JyB9LAogIHNlcmllczogWwogICAgewogICAgICB0eXBlOiAnYmFyJywKICAgICAgZW5jb2RlOiB7CiAgICAgICAgLy8g5bCGICJhbW91bnQiIOWIl-aYoOWwhOWIsCBYIOi9tOOAggogICAgICAgIHg6ICdhbW91bnQnLAogICAgICAgIC8vIOWwhiAicHJvZHVjdCIg5YiX5pig5bCE5YiwIFkg6L2044CCCiAgICAgICAgeTogJ3Byb2R1Y3QnCiAgICAgIH0KICAgIH0KICBdCn07\'" v-bind="{}" />\n<p><code>series.encode</code> 声明的基本结构如下。其中冒号左边是坐标系、标签等特定名称,如 <code>\'x\'</code>, <code>\'y\'</code>, <code>\'tooltip\'</code> 等,冒号右边是数据中的维度名(string 格式)或者维度的序号(number 格式,从 0 开始计数),可以指定一个或多个维度(使用数组)。通常情况下,下面各种信息不需要所有的都写,按需写即可。</p>\n<p>下面是 <code>series.encode</code> 支持的属性:</p>\n<md-code-block lang="js" code="\'Ly8g5Zyo5Lu75L2V5Z2Q5qCH57O75ZKM57O75YiX5Lit77yM6YO95pSv5oyB77yaCmVuY29kZTogewogIC8vIOS9v-eUqCDigJzlkI3kuLogcHJvZHVjdCDnmoTnu7TluqbigJ0g5ZKMIOKAnOWQjeS4uiBzY29yZSDnmoTnu7TluqbigJ0g55qE5YC85ZyoIHRvb2x0aXAg5Lit5pi-56S6CiAgdG9vbHRpcDogWydwcm9kdWN0JywgJ3Njb3JlJ10KICAvLyDkvb_nlKgg4oCc57u05bqmIDHigJ0g5ZKMIOKAnOe7tOW6piAz4oCdIOeahOe7tOW6puWQjei_nui1t-adpeS9nOS4uuezu-WIl-WQjeOAgu-8iOacieaXtuWAmeWQjeWtl-avlOi-g-mVv--8jOi_meWPr-S7pemBv-WFjeWcqCBzZXJpZXMubmFtZSDph43lpI3ovpPlhaXov5nkupvlkI3lrZfvvIkKICBzZXJpZXNOYW1lOiBbMSwgM10sCiAgLy8g6KGo56S65L2_55SoIOKAnOe7tOW6pjLigJ0g5Lit55qE5YC85L2c5Li6IGlk44CC6L-Z5Zyo5L2_55SoIHNldE9wdGlvbiDliqjmgIHmm7TmlrDmlbDmja7ml7bmnInnlKjlpITvvIzlj6_ku6Xkvb_mlrDogIHmlbDmja7nlKggaWQg5a-55bqU6LW35p2l77yM5LuO6ICM6IO95aSf5Lqn55Sf5ZCI6YCC55qE5pWw5o2u5pu05paw5Yqo55S744CCCiAgaXRlbUlkOiAyLAogIC8vIOaMh-WumuaVsOaNrumhueeahOWQjeensOS9v-eUqCDigJznu7TluqYz4oCdIOWcqOmlvOWbvuetieWbvuihqOS4reacieeUqO-8jOWPr-S7peS9v-i_meS4quWQjeWtl-aYvuekuuWcqOWbvuS-i--8iGxlZ2VuZO-8ieS4reOAggogIGl0ZW1OYW1lOiAzCn0KCi8vIOebtOinkuWdkOagh-ezu--8iGdyaWQvY2FydGVzaWFu77yJ54m55pyJ55qE5bGe5oCn77yaCmVuY29kZTogewogIC8vIOaKiiDigJznu7TluqYx4oCd44CB4oCc57u05bqmNeKAneOAgeKAnOWQjeS4uiBzY29yZSDnmoTnu7TluqbigJ0g5pig5bCE5YiwIFgg6L2077yaCiAgeDogWzEsIDUsICdzY29yZSddLAogIC8vIOaKiuKAnOe7tOW6pjDigJ3mmKDlsITliLAgWSDovbTjgIIKICB5OiAwCn0KCi8vIOWNlei9tO-8iHNpbmdsZUF4aXPvvInnibnmnInnmoTlsZ7mgKfvvJoKZW5jb2RlOiB7CiAgc2luZ2xlOiAzCn0KCi8vIOaegeWdkOagh-ezu--8iHBvbGFy77yJ54m55pyJ55qE5bGe5oCn77yaCmVuY29kZTogewogIHJhZGl1czogMywKICBhbmdsZTogMgp9CgovLyDlnLDnkIblnZDmoIfns7vvvIhnZW_vvInnibnmnInnmoTlsZ7mgKfvvJoKZW5jb2RlOiB7CiAgbG5nOiAzLAogIGxhdDogMgp9CgovLyDlr7nkuo7kuIDkupvmsqHmnInlnZDmoIfns7vnmoTlm77ooajvvIzkvovlpoLppbzlm77jgIHmvI_mlpflm77nrYnvvIzlj6_ku6XmmK_vvJoKZW5jb2RlOiB7CiAgdmFsdWU6IDMKfQ\'" line-highlights="\'\'" />\n<p>这是个更丰富的 <code>series.encode</code> 的 <a href="https://echarts.apache.org/examples/zh/editor.html?c=dataset-encode1&amp;edit=1&amp;reset=1">示例</a> 。</p>\n<h2 id="%E9%BB%98%E8%AE%A4%E7%9A%84-series.encode" tabindex="-1">默认的 series.encode</h2>\n<p>值得一提的是,当 <code>series.encode</code> 并没有指定时,ECharts 针对最常见直角坐标系中的图表(折线图、柱状图、散点图、K 线图等)、饼图、漏斗图,会采用一些默认的映射规则。默认的映射规则比较简单,大体是:</p>\n<ul>\n<li>在坐标系中(如直角坐标系、极坐标系等)\n<ul>\n<li>如果有类目轴(<a href="https://echarts.apache.org/option.html#xAxis.type">axis.type</a> 为 <code>\'category\'</code>),则将第一列(行)映射到这个轴上,后续每一列(行)对应一个系列。</li>\n<li>如果没有类目轴,假如坐标系有两个轴(例如直角坐标系的 X Y 轴),则每两列对应一个系列,这两列分别映射到这两个轴上。</li>\n</ul>\n</li>\n<li>如果没有坐标系(如饼图)\n<ul>\n<li>取第一列(行)为名字,第二列(行)为数值(如果只有一列,则取第一列为数值)。</li>\n</ul>\n</li>\n</ul>\n<p>默认的规则不能满足要求时,就可以自己来配置 <code>encode</code>,也并不复杂。这是一个 <a href="https://echarts.apache.org/examples/zh/editor.html?c=dataset-default&amp;edit=1&amp;reset=1">例子</a>。</p>\n<h2 id="%E5%87%A0%E4%B8%AA%E5%B8%B8%E8%A7%81%E7%9A%84-series.encode-%E8%AE%BE%E7%BD%AE%E6%96%B9%E5%BC%8F%E4%B8%BE%E4%BE%8B" tabindex="-1">几个常见的 series.encode 设置方式举例</h2>\n<p>问:如何把第三列设置为 X 轴,第五列设置为 Y 轴?</p>\n<p>答:</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIHNlcmllczogewogICAgLy8g5rOo5oSP57u05bqm5bqP5Y-377yIZGltZW5zaW9uSW5kZXjvvInku44gMCDlvIDlp4vorqHmlbDvvIznrKzkuInliJfmmK8gZGltZW5zaW9uc1syXeOAggogICAgZW5jb2RlOiB7IHg6IDIsIHk6IDQgfQogICAgLy8gLi4uCiAgfQp9Ow\'" line-highlights="\'\'" />\n<p>问:如何把第三行设置为 X 轴,第五行设置为 Y 轴?</p>\n<p>答:</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIHNlcmllczogewogICAgZW5jb2RlOiB7IHg6IDIsIHk6IDQgfSwKICAgIHNlcmllc0xheW91dEJ5OiAncm93JwogICAgLy8gLi4uCiAgfQp9Ow\'" line-highlights="\'\'" />\n<p>问:如何把第二列设置为标签?</p>\n<p>答:\n关于标签的显示 <a href="https://echarts.apache.org/option.html#series.label.formatter">label.formatter</a>,现在支持引用特定维度的值,例如:</p>\n<md-code-block lang="js" code="\'c2VyaWVzOiB7CiAgbGFiZWw6IHsKICAgIC8vIGAne0BzY29yZX0nYCDooajnpLog4oCc5ZCN5Li6IHNjb3Jl4oCdIOeahOe7tOW6pumHjOeahOWAvOOAggogICAgLy8gYCd7QFs0XX0nYCDooajnpLrlvJXnlKjluo_lj7fkuLogNCDnmoTnu7Tluqbph4znmoTlgLzjgIIKICAgIGZvcm1hdHRlcjogJ2FhYXtAcHJvZHVjdH1iYmJ7QHNjb3JlfWNjY3tAWzRdfWRkZCc7CiAgfQp9\'" line-highlights="\'\'" />\n<p>问:如何让第 2 列和第 3 列显示在提示框(tooltip)中?</p>\n<p>答:</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIHNlcmllczogewogICAgZW5jb2RlOiB7CiAgICAgIHRvb2x0aXA6IFsxLCAyXQogICAgICAvLyAuLi4KICAgIH0KICAgIC8vIC4uLgogIH0KfTs\'" line-highlights="\'\'" />\n<p>问:数据里没有维度名,那么怎么给出维度名?</p>\n<p>答:</p>\n<md-code-block lang="js" code="\'dmFyIG9wdGlvbiA9IHsKICBkYXRhc2V0OiB7CiAgICBkaW1lbnNpb25zOiBbJ3Njb3JlJywgJ2Ftb3VudCddLAogICAgc291cmNlOiBbCiAgICAgIFs4OS4zLCAzMzcxXSwKICAgICAgWzkyLjEsIDgxMjNdLAogICAgICBbOTQuNCwgMTk1NF0sCiAgICAgIFs4NS40LCA4MjldCiAgICBdCiAgfQp9Ow\'" line-highlights="\'\'" />\n<p>问:如何把第三列映射为气泡图的点的大小?</p>\n<p>答:</p>\n<md-live lang="js" code="\'dmFyIG9wdGlvbiA9IHsKICBkYXRhc2V0OiB7CiAgICBzb3VyY2U6IFsKICAgICAgWzEyLCAzMjMsIDExLjJdLAogICAgICBbMjMsIDE2NywgOC4zXSwKICAgICAgWzgxLCAyODQsIDEyXSwKICAgICAgWzkxLCA0MTMsIDQuMV0sCiAgICAgIFsxMywgMjg3LCAxMy41XQogICAgXQogIH0sCiAgdmlzdWFsTWFwOiB7CiAgICBzaG93OiBmYWxzZSwKICAgIGRpbWVuc2lvbjogMiwgLy8g5oyH5ZCR56ys5LiJ5YiX77yI5YiX5bqP5Y-35LuOIDAg5byA5aeL6K6w77yM5omA5Lul6K6-572u5Li6IDLvvInjgIIKICAgIG1pbjogMiwgLy8g6ZyA6KaB57uZ5Ye65pWw5YC86IyD5Zu077yM5pyA5bCP5pWw5YC844CCCiAgICBtYXg6IDE1LCAvLyDpnIDopoHnu5nlh7rmlbDlgLzojIPlm7TvvIzmnIDlpKfmlbDlgLzjgIIKICAgIGluUmFuZ2U6IHsKICAgICAgLy8g5rCU5rOh5bC65a-477yaNSDlg4_ntKDliLAgNjAg5YOP57Sg44CCCiAgICAgIHN5bWJvbFNpemU6IFs1LCA2MF0KICAgIH0KICB9LAogIHhBeGlzOiB7fSwKICB5QXhpczoge30sCiAgc2VyaWVzOiB7CiAgICB0eXBlOiAnc2NhdHRlcicKICB9Cn07\'" v-bind="{}" />\n<p>问:encode 里指定了映射,但是不管用?</p>\n<p>答:可以查查有没有拼错,比如,维度名是:<code>\'Life Expectancy\'</code>,encode 中拼成了 <code>\'Life Expectency\'</code>。</p>\n<h2 id="%E8%A7%86%E8%A7%89%E9%80%9A%E9%81%93%EF%BC%88%E9%A2%9C%E8%89%B2%E3%80%81%E5%B0%BA%E5%AF%B8%E7%AD%89%EF%BC%89%E7%9A%84%E6%98%A0%E5%B0%84" tabindex="-1">视觉通道(颜色、尺寸等)的映射</h2>\n<p>我们可以使用 <a href="https://echarts.apache.org/option.html#visualMap">visualMap</a> 组件进行视觉通道的映射。详见 <a href="https://echarts.apache.org/option.html#visualMap">visualMap</a> 文档的介绍。这是一个 <a href="https://echarts.apache.org/examples/zh/editor.html?c=dataset-encode0&amp;edit=1&amp;reset=1">示例</a>。</p>\n<h2 id="%E6%95%B0%E6%8D%AE%E7%9A%84%E5%90%84%E7%A7%8D%E6%A0%BC%E5%BC%8F" tabindex="-1">数据的各种格式</h2>\n<p>多数常见图表中,数据适于用二维表的形式描述。广为使用的数据表格软件(如 MS Excel、Numbers)或者关系数据数据库都是二维表。他们的数据可以导出成 JSON 格式,输入到 <code>dataset.source</code> 中,在不少情况下可以免去一些数据处理的步骤。</p>\n<blockquote>\n<p>假如数据导出成 csv 文件,那么可以使用一些 csv 工具如 <a href="https://github.com/d3/d3-dsv">dsv</a> 或者 <a href="https://github.com/mholt/PapaParse">PapaParse</a> 将 csv 转成 JSON。</p>\n</blockquote>\n<p>在 JavaScript 常用的数据传输格式中,二维数组可以比较直观的存储二维表。前面的示例都是使用二维数组表示。</p>\n<p>除了二维数组以外,dataset 也支持例如下面 key-value 方式的数据格式,这类格式也非常常见。但是这类格式中,目前并不支持 <a href="https://echarts.apache.org/option.html#series.seriesLayoutBy">seriesLayoutBy</a> 参数。</p>\n<md-code-block lang="js" code="\'ZGF0YXNldDogWwogIHsKICAgIC8vIOaMieihjOeahCBrZXktdmFsdWUg5b2i5byP77yI5a-56LGh5pWw57uE77yJ77yM6L-Z5piv5Liq5q-U6L6D5bi46KeB55qE5qC85byP44CCCiAgICBzb3VyY2U6IFsKICAgICAgeyBwcm9kdWN0OiAnTWF0Y2hhIExhdHRlJywgY291bnQ6IDgyMywgc2NvcmU6IDk1LjggfSwKICAgICAgeyBwcm9kdWN0OiAnTWlsayBUZWEnLCBjb3VudDogMjM1LCBzY29yZTogODEuNCB9LAogICAgICB7IHByb2R1Y3Q6ICdDaGVlc2UgQ29jb2EnLCBjb3VudDogMTA0Miwgc2NvcmU6IDkxLjIgfSwKICAgICAgeyBwcm9kdWN0OiAnV2FsbnV0IEJyb3duaWUnLCBjb3VudDogOTg4LCBzY29yZTogNzYuOSB9CiAgICBdCiAgfSwKICB7CiAgICAvLyDmjInliJfnmoQga2V5LXZhbHVlIOW9ouW8j-OAggogICAgc291cmNlOiB7CiAgICAgIHByb2R1Y3Q6IFsnTWF0Y2hhIExhdHRlJywgJ01pbGsgVGVhJywgJ0NoZWVzZSBDb2NvYScsICdXYWxudXQgQnJvd25pZSddLAogICAgICBjb3VudDogWzgyMywgMjM1LCAxMDQyLCA5ODhdLAogICAgICBzY29yZTogWzk1LjgsIDgxLjQsIDkxLjIsIDc2LjldCiAgICB9CiAgfQpdOw\'" line-highlights="\'\'" />\n<h2 id="%E5%A4%9A%E4%B8%AA-dataset-%E4%BB%A5%E5%8F%8A%E5%A6%82%E4%BD%95%E5%BC%95%E7%94%A8%E4%BB%96%E4%BB%AC" tabindex="-1">多个 dataset 以及如何引用他们</h2>\n<p>可以同时定义多个 dataset。系列可以通过 <a href="https://echarts.apache.org/option.html#series.datasetIndex">series.datasetIndex</a> 来指定引用哪个 dataset。例如:</p>\n<md-code-block lang="js" code="\'dmFyIG9wdGlvbiA9IHsKICBkYXRhc2V0OiBbCiAgICB7CiAgICAgIC8vIOW6j-WPt-S4uiAwIOeahCBkYXRhc2V044CCCiAgICAgIHNvdXJjZTogW10KICAgIH0sCiAgICB7CiAgICAgIC8vIOW6j-WPt-S4uiAxIOeahCBkYXRhc2V044CCCiAgICAgIHNvdXJjZTogW10KICAgIH0sCiAgICB7CiAgICAgIC8vIOW6j-WPt-S4uiAyIOeahCBkYXRhc2V044CCCiAgICAgIHNvdXJjZTogW10KICAgIH0KICBdLAogIHNlcmllczogWwogICAgewogICAgICAvLyDkvb_nlKjluo_lj7fkuLogMiDnmoQgZGF0YXNldOOAggogICAgICBkYXRhc2V0SW5kZXg6IDIKICAgIH0sCiAgICB7CiAgICAgIC8vIOS9v-eUqOW6j-WPt-S4uiAxIOeahCBkYXRhc2V044CCCiAgICAgIGRhdGFzZXRJbmRleDogMQogICAgfQogIF0KfTs\'" line-highlights="\'\'" />\n<h2 id="echarts-3-%E7%9A%84%E6%95%B0%E6%8D%AE%E8%AE%BE%E7%BD%AE%E6%96%B9%E5%BC%8F%EF%BC%88series.data%EF%BC%89%E4%BB%8D%E6%AD%A3%E5%B8%B8%E4%BD%BF%E7%94%A8" tabindex="-1">ECharts 3 的数据设置方式(series.data)仍正常使用</h2>\n<p>ECharts 4 之前一直以来的数据声明方式仍然被正常支持,如果系列已经声明了 <a href="https://echarts.apache.org/option.html#series.data">series.data</a>, 那么就会使用 <a href="https://echarts.apache.org/option.html#series.data">series.data</a> 而非 <code>dataset</code>。</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICB0eXBlOiAnY2F0ZWdvcnknLAogICAgZGF0YTogWydNYXRjaGEgTGF0dGUnLCAnTWlsayBUZWEnLCAnQ2hlZXNlIENvY29hJywgJ1dhbG51dCBCcm93bmllJ10KICB9LAogIHlBeGlzOiB7fSwKICBzZXJpZXM6IFsKICAgIHsKICAgICAgdHlwZTogJ2JhcicsCiAgICAgIG5hbWU6ICcyMDE1JywKICAgICAgZGF0YTogWzg5LjMsIDkyLjEsIDk0LjQsIDg1LjRdCiAgICB9LAogICAgewogICAgICB0eXBlOiAnYmFyJywKICAgICAgbmFtZTogJzIwMTYnLAogICAgICBkYXRhOiBbOTUuOCwgODkuNCwgOTEuMiwgNzYuOV0KICAgIH0sCiAgICB7CiAgICAgIHR5cGU6ICdiYXInLAogICAgICBuYW1lOiAnMjAxNycsCiAgICAgIGRhdGE6IFs5Ny43LCA4My4xLCA5Mi41LCA3OC4xXQogICAgfQogIF0KfTs\'" v-bind="{}" />\n<p>其实,<a href="https://echarts.apache.org/option.html#series.data">series.data</a> 也是种会一直存在的重要设置方式。一些特殊的非 table 格式的图表,如 <a href="https://echarts.apache.org/option.html#series-treemap">treemap</a>、<a href="https://echarts.apache.org/option.html#series-graph">graph</a>、<a href="https://echarts.apache.org/option.html#series-lines">lines</a> 等,现在仍不支持在 dataset 中设置,仍然需要使用 <a href="https://echarts.apache.org/option.html#series.data">series.data</a>。另外,对于巨大数据量的渲染(如百万以上的数据量),需要使用 <a href="api.html#echartsInstance.appendData">appendData</a> 进行增量加载,这种情况不支持使用 <code>dataset</code>。</p>\n<h2 id="%E5%85%B6%E4%BB%96" tabindex="-1">其他</h2>\n<p>目前并非所有图表都支持 dataset。支持 dataset 的图表有:\n<code>line</code>、<code>bar</code>、<code>pie</code>、<code>scatter</code>、<code>effectScatter</code>、<code>parallel</code>、<code>candlestick</code>、<code>map</code>、<code>funnel</code>、<code>custom</code>。\n后续会有更多的图表进行支持。</p>\n<p>最后,给出这个 <a href="https://echarts.apache.org/examples/zh/editor.html?c=dataset-link&amp;edit=1&amp;reset=1">示例</a>,多个图表共享一个 <code>dataset</code>,并带有联动交互。</p>\n',postPath:"zh/concepts/dataset",title:"数据集 - 概念篇"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:g},{title:"入门篇",dir:d,children:[{title:"获取 ECharts",dir:l},{title:"在项目中引入 ECharts",dir:I},{title:"资源列表",dir:a,draft:e},{title:"寻求帮助",dir:o},{title:"版本特性",dir:C,children:[{title:"ECharts 6 特性介绍",dir:n},{title:"v5 升级 v6 指南",dir:A},{title:"5.0",dir:s},{title:"v4 升级 v5 指南",dir:c},{title:5.2,dir:r},{title:5.3,dir:h},{title:5.4,dir:p},{title:5.5,dir:B},{title:5.6,dir:u}]}]},{title:"概念篇",dir:m,children:[{title:"图表容器及大小",dir:y},{title:"配置项",dir:b,draft:e},{title:"系列",dir:E,draft:e},{title:"样式",dir:v},{title:"数据集",dir:L},{title:"数据转换",dir:O},{title:"坐标系",dir:W,draft:e},{title:"坐标轴",dir:D},{title:"视觉映射",dir:t},{title:"图例",dir:w},{title:"事件与行为",dir:Z}]},{title:"应用篇",dir:J,children:[{title:"常用图表类型",dir:j,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:X},{title:"堆叠柱状图",dir:M},{title:"动态排序柱状图",dir:H},{title:"极坐标系柱状图",dir:Y,draft:e},{title:"阶梯瀑布图",dir:z},{title:"视觉映射的柱状图",dir:t,draft:e}]},{title:"折线图",dir:G,children:[{title:"基础折线图",dir:N},{title:"堆叠折线图",dir:S},{title:"区域面积图",dir:K},{title:"平滑曲线图",dir:k},{title:"阶梯线图",dir:f}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:F},{title:"圆环图",dir:T},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:x,children:[{title:"基础散点图",dir:Q}]}]},{title:"常用组件",dir:R,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:V}]}]},{title:"移动端优化",dir:i,draft:e},{title:"跨平台方案",dir:U,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:q},{title:"数据下钻",dir:P,draft:e}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:_}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:ee}]},{title:"交互",dir:ie,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:te,draft:e},{title:"智能指针吸附",dir:ge}]}]},{title:"最佳实践",dir:de,children:[{title:"移动端优化",dir:i,draft:e},{title:le,dir:Ie},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:ae}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:oe}]}],en:[{title:"Get Started",dir:g},{title:"Basics",dir:d,children:[{title:"Download ECharts",dir:l},{title:"Import ECharts",dir:I},{title:"Resources",dir:a,draft:e},{title:"Get Help",dir:o},{title:"What's New",dir:C,children:[{title:"ECharts 6 Features",dir:n},{title:"Migration from v5 to v6",dir:A},{title:"5.0",dir:s},{title:"Migration from v4 to v5",dir:c},{title:5.2,dir:r},{title:5.3,dir:h},{title:5.4,dir:p},{title:5.5,dir:B},{title:5.6,dir:u}]}]},{title:"Concepts",dir:m,children:[{title:"Chart Container",dir:y},{title:"Chart Option",dir:b,draft:e},{title:"Series",dir:E,draft:e},{title:"Style",dir:v},{title:"Dataset",dir:L},{title:"Data Transform",dir:O},{title:"Coordinate",dir:W,draft:e},{title:"Axis",dir:D},{title:"Visual Mapping",dir:t},{title:"Legend",dir:w},{title:"Event and Action",dir:Z}]},{title:"How To Guides",dir:J,children:[{title:"Common Charts",dir:j,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:X},{title:"Stacked Bar",dir:M},{title:"Bar Racing",dir:H},{title:"Bar Polar",dir:Y,draft:e},{title:"Waterfall",dir:z}]},{title:"Line",dir:G,children:[{title:"Basic Line",dir:N},{title:"Stacked Line",dir:S},{title:"Area Chart",dir:K},{title:"Smoothed Line",dir:k},{title:"Step Line",dir:f}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:F},{title:"Ring Style",dir:T},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:x,children:[{title:"Basic Scatter",dir:Q}]}]},{title:"Common Components",dir:R,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:V}]}]},{title:"Mobile",dir:i,draft:e},{title:"Cross Platform",dir:U,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:q},{title:"Drilldown",dir:P,draft:e}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:_}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:ee}]},{title:"Interaction",dir:ie,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:te,draft:e},{title:"Intelligent Pointer Snapping",dir:ge}]}]},{title:"Best Practices",dir:de,children:[{title:"Mobile Optimization",dir:i,draft:e},{title:le,dir:Ie},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:ae}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:oe}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:e,routePath:"/zh/concepts/dataset",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/zh/concepts/event/index.html b/docs/zh/concepts/event/index.html
new file mode 100644
index 0000000..e8b6824
--- /dev/null
+++ b/docs/zh/concepts/event/index.html
@@ -0,0 +1,333 @@
+<!doctype html>
+<html data-n-head-ssr lang="zh-CN" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh-CN%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>事件与行为 - 概念篇 - 使用手册 - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="zh"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/zh/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/zh/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/zh/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/zh/index.html" class="navbar-brand"><img src="https://echarts.apache.org/zh/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/zh/index.html">首页</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">文档<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/feature.html">特性</a></li><li><a href="https://echarts.apache.org/handbook/zh/get-started/">使用手册</a></li><li><a href="https://echarts.apache.org/zh/api.html">API</a></li><li><a href="https://echarts.apache.org/zh/option.html">配置项手册</a></li><li><a href="https://echarts.apache.org/zh/changelog.html">版本记录</a></li><li><a href="https://echarts.apache.org/zh/faq.html">常见问题</a></li><li><a href="https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide">v6 升级指南</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">下载<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/download.html">下载</a></li><li><a href="https://echarts.apache.org/zh/download-theme.html">主题下载</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">自定义系列下载<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/download-extension.html">扩展下载</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/zh/index.html">示例</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">资源<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/spreadsheet.html">表格工具</a></li><li><a href="https://echarts.apache.org/zh/theme-builder.html">主题构建工具</a></li><li><a href="https://echarts.apache.org/zh/cheat-sheet.html">术语速查手册</a></li><li><a href="https://echarts.apache.org/zh/resources.html">更多资源</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">社区<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/events.html">活动</a></li><li><a href="https://echarts.apache.org/zh/committers.html">贡献者列表</a></li><li><a href="https://echarts.apache.org/zh/maillist.html">邮件列表</a></li><li><a href="https://echarts.apache.org/zh/contributing.html">如何贡献</a></li><li><a href="https://echarts.apache.org/zh/dependencies.html">依赖项</a></li><li><a href="https://echarts.apache.org/zh/coding-standard.html">代码规范</a></li><li><a href="https://github.com/apache/echarts" target="_blank">源码(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/security.html">安全</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">版权<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">活动<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">捐赠<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">鸣谢<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("en")'>EN</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/zh/get-started" class="nav-link"><span class="title">快速上手</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">入门篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/basics/download" class="nav-link"><span class="title">获取 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/import" class="nav-link"><span class="title">在项目中引入 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/basics/help" class="nav-link"><span class="title">寻求帮助</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">版本特性</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 特性介绍</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">v5 升级 v6 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">v4 升级 v5 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">概念篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/concepts/chart-size" class="nav-link"><span class="title">图表容器及大小</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/style" class="nav-link"><span class="title">样式</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/dataset" class="nav-link"><span class="title">数据集</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/data-transform" class="nav-link"><span class="title">数据转换</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/axis" class="nav-link"><span class="title">坐标轴</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/visual-map" class="nav-link"><span class="title">视觉映射</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/legend" class="nav-link"><span class="title">图例</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/event" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">事件与行为</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">应用篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">常用图表类型</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">柱状图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">基础柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">堆叠柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">动态排序柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">阶梯瀑布图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">折线图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">基础折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">堆叠折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/area-line" class="nav-link"><span class="title">区域面积图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">平滑曲线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/step-line" class="nav-link"><span class="title">阶梯线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">饼图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">基础饼图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">圆环图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/rose" class="nav-link"><span class="title">南丁格尔图(玫瑰图)</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">散点图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">基础散点图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">常用组件</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">地理坐标系(Geo)</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG 底图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">跨平台方案</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/server" class="nav-link"><span class="title">服务端渲染</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/wechat-app" class="nav-link"><span class="title">微信小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/baidu-app" class="nav-link"><span class="title">百度智能小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">数据处理</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/data/dynamic-data" class="nav-link"><span class="title">动态的异步数据</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">标签</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/label/rich-text" class="nav-link"><span class="title">富文本标签</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">动画</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/animation/transition" class="nav-link"><span class="title">数据过渡动画</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">交互</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/drag" class="nav-link"><span class="title">拖拽的实现</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">智能指针吸附</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">最佳实践</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/aria" class="nav-link"><span class="title">无障碍访问</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/security" class="nav-link"><span class="title">安全指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">编辑本文档</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/meta/edit-guide" class="nav-link"><span class="title">文档编辑指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="%E4%BA%8B%E4%BB%B6%E4%B8%8E%E8%A1%8C%E4%B8%BA" tabindex="-1">事件与行为</h1> <p>在 Apache ECharts 的图表中用户的操作将会触发相应的事件。开发者可以监听这些事件,然后通过回调函数做相应的处理,比如跳转到一个地址,或者弹出对话框,或者做数据下钻等等。</p> <p>ECharts 中的事件名称对应 DOM 事件名称,均为小写的字符串,如下是一个绑定点击操作的示例。</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>myChart<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'click'</span><span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">params</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  <span class="token comment">// 控制台打印数据的名称</span>
+  console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>params<span class="token punctuation">.</span>name<span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>在 ECharts 中事件分为两种类型,一种是用户鼠标操作点击,或者 hover 图表的图形时触发的事件,还有一种是用户在使用可以交互的组件后触发的行为事件,例如在切换图例开关时触发的 <a href="https://echarts.apache.org/api.html#events.legendselectchanged">'legendselectchanged'</a> 事件(这里需要注意切换图例开关是不会触发 <code>'legendselected'</code> 事件的),数据区域缩放时触发的 <a href="https://echarts.apache.org/api.html#events.legendselectchanged">'datazoom'</a> 事件等等。</p> <h2 id="%E9%BC%A0%E6%A0%87%E4%BA%8B%E4%BB%B6%E7%9A%84%E5%A4%84%E7%90%86" tabindex="-1">鼠标事件的处理</h2> <p>ECharts 支持常规的鼠标事件类型,包括 <code>'click'</code>、 <code>'dblclick'</code>、 <code>'mousedown'</code>、 <code>'mousemove'</code>、 <code>'mouseup'</code>、 <code>'mouseover'</code>、 <code>'mouseout'</code>、 <code>'globalout'</code>、 <code>'contextmenu'</code> 事件。下面先来看一个简单的点击柱状图后打开相应的百度搜索页面的示例。</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">// 基于准备好的dom,初始化ECharts实例
+// var myChart = echarts.init(document.getElementById('main'));
+
+// 指定图表的配置项和数据
+var option = {
+  xAxis: {
+    data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']
+  },
+  yAxis: {},
+  series: [
+    {
+      name: '销量',
+      type: 'bar',
+      data: [5, 20, 36, 10, 10, 20]
+    }
+  ]
+};
+// 使用刚指定的配置项和数据显示图表。
+myChart.setOption(option);
+// 处理点击事件并且跳转到相应的百度搜索页面
+myChart.on('click', function(params) {
+  window.open('https://www.baidu.com/s?wd=' + encodeURIComponent(params.name));
+});</textarea><pre data-testid="preview" class="prism-editor__editor"><span class="token comment">// 基于准备好的dom,初始化ECharts实例</span>
+<span class="token comment">// var myChart = echarts.init(document.getElementById('main'));</span>
+
+<span class="token comment">// 指定图表的配置项和数据</span>
+<span class="token keyword">var</span> option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'衬衫'</span><span class="token punctuation">,</span> <span class="token string">'羊毛衫'</span><span class="token punctuation">,</span> <span class="token string">'雪纺衫'</span><span class="token punctuation">,</span> <span class="token string">'裤子'</span><span class="token punctuation">,</span> <span class="token string">'高跟鞋'</span><span class="token punctuation">,</span> <span class="token string">'袜子'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'销量'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">20</span><span class="token punctuation">,</span> <span class="token number">36</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">20</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span>
+<span class="token comment">// 使用刚指定的配置项和数据显示图表。</span>
+myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span>option<span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token comment">// 处理点击事件并且跳转到相应的百度搜索页面</span>
+myChart<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'click'</span><span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">params</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  window<span class="token punctuation">.</span><span class="token function">open</span><span class="token punctuation">(</span><span class="token string">'https://www.baidu.com/s?wd='</span> <span class="token operator">+</span> <span class="token function">encodeURIComponent</span><span class="token punctuation">(</span>params<span class="token punctuation">.</span>name<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>所有的鼠标事件包含参数 <code>params</code>,这是一个包含点击图形的数据信息的对象,如下格式:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code><span class="token keyword">type</span> <span class="token class-name">EventParams</span> <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token comment">// 当前点击的图形元素所属的组件名称,</span>
+  <span class="token comment">// 其值如 'series'、'markLine'、'markPoint'、'timeLine' 等。</span>
+  componentType<span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">;</span>
+  <span class="token comment">// 系列类型。值可能为:'line'、'bar'、'pie' 等。当 componentType 为 'series' 时有意义。</span>
+  seriesType<span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">;</span>
+  <span class="token comment">// 系列在传入的 option.series 中的 index。当 componentType 为 'series' 时有意义。</span>
+  seriesIndex<span class="token operator">:</span> <span class="token builtin">number</span><span class="token punctuation">;</span>
+  <span class="token comment">// 系列名称。当 componentType 为 'series' 时有意义。</span>
+  seriesName<span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">;</span>
+  <span class="token comment">// 数据名,类目名</span>
+  name<span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">;</span>
+  <span class="token comment">// 数据在传入的 data 数组中的 index</span>
+  dataIndex<span class="token operator">:</span> <span class="token builtin">number</span><span class="token punctuation">;</span>
+  <span class="token comment">// 传入的原始数据项</span>
+  data<span class="token operator">:</span> Object<span class="token punctuation">;</span>
+  <span class="token comment">// sankey、graph 等图表同时含有 nodeData 和 edgeData 两种 data,</span>
+  <span class="token comment">// dataType 的值会是 'node' 或者 'edge',表示当前点击在 node 还是 edge 上。</span>
+  <span class="token comment">// 其他大部分图表中只有一种 data,dataType 无意义。</span>
+  dataType<span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">;</span>
+  <span class="token comment">// 传入的数据值</span>
+  value<span class="token operator">:</span> <span class="token builtin">number</span> <span class="token operator">|</span> <span class="token builtin">Array</span><span class="token punctuation">;</span>
+  <span class="token comment">// 数据图形的颜色。当 componentType 为 'series' 时有意义。</span>
+  color<span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>如何区分鼠标点击到了哪里:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>myChart<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'click'</span><span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">params</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  <span class="token keyword">if</span> <span class="token punctuation">(</span>params<span class="token punctuation">.</span>componentType <span class="token operator">===</span> <span class="token string">'markPoint'</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+    <span class="token comment">// 点击到了 markPoint 上</span>
+    <span class="token keyword">if</span> <span class="token punctuation">(</span>params<span class="token punctuation">.</span>seriesIndex <span class="token operator">===</span> <span class="token number">5</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+      <span class="token comment">// 点击到了 index 为 5 的 series 的 markPoint 上。</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>params<span class="token punctuation">.</span>componentType <span class="token operator">===</span> <span class="token string">'series'</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+    <span class="token keyword">if</span> <span class="token punctuation">(</span>params<span class="token punctuation">.</span>seriesType <span class="token operator">===</span> <span class="token string">'graph'</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+      <span class="token keyword">if</span> <span class="token punctuation">(</span>params<span class="token punctuation">.</span>dataType <span class="token operator">===</span> <span class="token string">'edge'</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+        <span class="token comment">// 点击到了 graph 的 edge(边)上。</span>
+      <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span>
+        <span class="token comment">// 点击到了 graph 的 node(节点)上。</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>使用 <code>query</code> 只对指定的组件的图形元素的触发回调:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>chart<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span>eventName<span class="token punctuation">,</span> query<span class="token punctuation">,</span> handler<span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p><code>query</code> 可为 <code>string</code> 或者 <code>Object</code>。</p> <p>如果为 <code>string</code> 表示组件类型。格式可以是 'mainType' 或者 'mainType.subType'。例如:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>chart<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'click'</span><span class="token punctuation">,</span> <span class="token string">'series'</span><span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+chart<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'click'</span><span class="token punctuation">,</span> <span class="token string">'series.line'</span><span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+chart<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'click'</span><span class="token punctuation">,</span> <span class="token string">'dataZoom'</span><span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+chart<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'click'</span><span class="token punctuation">,</span> <span class="token string">'xAxis.category'</span><span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>如果为 <code>Object</code>,可以包含以下一个或多个属性,每个属性都是可选的:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code><span class="token punctuation">{</span>
+  $<span class="token punctuation">{</span>mainType<span class="token punctuation">}</span>Index<span class="token operator">:</span> <span class="token builtin">number</span> <span class="token comment">// 组件 index</span>
+  $<span class="token punctuation">{</span>mainType<span class="token punctuation">}</span>Name<span class="token operator">:</span> <span class="token builtin">string</span> <span class="token comment">// 组件 name</span>
+  $<span class="token punctuation">{</span>mainType<span class="token punctuation">}</span>Id<span class="token operator">:</span> <span class="token builtin">string</span> <span class="token comment">// 组件 id</span>
+  dataIndex<span class="token operator">:</span> <span class="token builtin">number</span> <span class="token comment">// 数据项 index</span>
+  name<span class="token operator">:</span> <span class="token builtin">string</span> <span class="token comment">// 数据项 name</span>
+  dataType<span class="token operator">:</span> <span class="token builtin">string</span> <span class="token comment">// 数据项 type,如关系图中的 'node', 'edge'</span>
+  element<span class="token operator">:</span> <span class="token builtin">string</span> <span class="token comment">// 自定义系列中的 el 的 name</span>
+<span class="token punctuation">}</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>例如:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>chart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+  <span class="token comment">// ...</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'uuu'</span>
+      <span class="token comment">// ...</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+chart<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'mouseover'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token literal-property property">seriesName</span><span class="token operator">:</span> <span class="token string">'uuu'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  <span class="token comment">// series name 为 'uuu' 的系列中的图形元素被 'mouseover' 时,此方法被回调。</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>例如:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>chart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+  <span class="token comment">// ...</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token comment">// ...</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token comment">// ...</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">{</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'xx'</span><span class="token punctuation">,</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">121</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'yy'</span><span class="token punctuation">,</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">33</span> <span class="token punctuation">}</span>
+      <span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+chart<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'mouseover'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token literal-property property">seriesIndex</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'xx'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  <span class="token comment">// series index 1 的系列中的 name 为 'xx' 的元素被 'mouseover' 时,此方法被回调。</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>例如:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>chart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+  <span class="token comment">// ...</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'graph'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">nodes</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">{</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'a'</span><span class="token punctuation">,</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">10</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'b'</span><span class="token punctuation">,</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">20</span> <span class="token punctuation">}</span>
+      <span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">edges</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">{</span> <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token literal-property property">target</span><span class="token operator">:</span> <span class="token number">1</span> <span class="token punctuation">}</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+chart<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'click'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token literal-property property">dataType</span><span class="token operator">:</span> <span class="token string">'node'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  <span class="token comment">// 关系图的节点被点击时此方法被回调。</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+chart<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'click'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token literal-property property">dataType</span><span class="token operator">:</span> <span class="token string">'edge'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  <span class="token comment">// 关系图的边被点击时此方法被回调。</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>例如:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>chart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+  <span class="token comment">// ...</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token comment">// ...</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'custom'</span><span class="token punctuation">,</span>
+    <span class="token function-variable function">renderItem</span><span class="token operator">:</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">params<span class="token punctuation">,</span> api</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+      <span class="token keyword">return</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'group'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">children</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+          <span class="token punctuation">{</span>
+            <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'circle'</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'my_el'</span>
+            <span class="token comment">// ...</span>
+          <span class="token punctuation">}</span><span class="token punctuation">,</span>
+          <span class="token punctuation">{</span>
+            <span class="token comment">// ...</span>
+          <span class="token punctuation">}</span>
+        <span class="token punctuation">]</span>
+      <span class="token punctuation">}</span><span class="token punctuation">;</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">[</span><span class="token number">12</span><span class="token punctuation">,</span> <span class="token number">33</span><span class="token punctuation">]</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+chart<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'mouseup'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token literal-property property">element</span><span class="token operator">:</span> <span class="token string">'my_el'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  <span class="token comment">// name 为 'my_el' 的元素被 'mouseup' 时,此方法被回调。</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>你可以在回调函数中获得这个对象中的数据名、系列名称后在自己的数据仓库中索引得到其它的信息后更新图表,显示浮层等等,如下示例代码:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>myChart<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'click'</span><span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">parmas</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  $<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span><span class="token string">'detail?q='</span> <span class="token operator">+</span> params<span class="token punctuation">.</span>name<span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">detail</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+    myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+      <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'pie'</span><span class="token punctuation">,</span>
+          <span class="token comment">// 通过饼图表现单个柱子中的数据分布</span>
+          <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>detail<span class="token punctuation">.</span>data<span class="token punctuation">]</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+  <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="%E7%BB%84%E4%BB%B6%E4%BA%A4%E4%BA%92%E7%9A%84%E8%A1%8C%E4%B8%BA%E4%BA%8B%E4%BB%B6" tabindex="-1">组件交互的行为事件</h2> <p>在 ECharts 中基本上所有的组件交互行为都会触发相应的事件,常用的事件和事件对应参数在 <a href="https://echarts.apache.org//api.html#events">events</a> 文档中有列出。</p> <p>下面是监听一个图例开关的示例:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token comment">// 图例开关的行为只会触发 legendselectchanged 事件</span>
+myChart<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'legendselectchanged'</span><span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">params</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  <span class="token comment">// 获取点击图例的选中状态</span>
+  <span class="token keyword">var</span> isSelected <span class="token operator">=</span> params<span class="token punctuation">.</span>selected<span class="token punctuation">[</span>params<span class="token punctuation">.</span>name<span class="token punctuation">]</span><span class="token punctuation">;</span>
+  <span class="token comment">// 在控制台中打印</span>
+  console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token punctuation">(</span>isSelected <span class="token operator">?</span> <span class="token string">'选中了'</span> <span class="token operator">:</span> <span class="token string">'取消选中了'</span><span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token string">'图例'</span> <span class="token operator">+</span> params<span class="token punctuation">.</span>name<span class="token punctuation">)</span><span class="token punctuation">;</span>
+  <span class="token comment">// 打印所有图例的状态</span>
+  console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>params<span class="token punctuation">.</span>selected<span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="%E4%BB%A3%E7%A0%81%E8%A7%A6%E5%8F%91-echarts-%E4%B8%AD%E7%BB%84%E4%BB%B6%E7%9A%84%E8%A1%8C%E4%B8%BA" tabindex="-1">代码触发 ECharts 中组件的行为</h2> <p>上面提到诸如 <code>'legendselectchanged'</code> 事件会由组件交互的行为触发,那除了用户的交互操作,有时候也会有需要在程序里调用方法触发图表的行为,诸如显示 tooltip,选中图例。</p> <p>在 ECharts 通过调用 <code>myChart.dispatchAction({ type: '' })</code> 触发图表行为,统一管理了所有动作,也可以方便地根据需要去记录用户的行为路径。</p> <p>常用的动作和动作对应参数在 <a href="https://echarts.apache.org//api.html#action">action</a> 文档中有列出。</p> <p>下面示例演示了如何通过 <code>dispatchAction</code> 去轮流高亮饼图的每个扇形。</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  title: {
+    text: '饼图程序调用高亮示例',
+    left: 'center'
+  },
+  tooltip: {
+    trigger: 'item',
+    formatter: '{a} &lt;br/>{b} : {c} ({d}%)'
+  },
+  legend: {
+    orient: 'vertical',
+    left: 'left',
+    data: ['直接访问', '邮件营销', '联盟广告', '视频广告', '搜索引擎']
+  },
+  series: [
+    {
+      name: '访问来源',
+      type: 'pie',
+      radius: '55%',
+      center: ['50%', '60%'],
+      data: [
+        { value: 335, name: '直接访问' },
+        { value: 310, name: '邮件营销' },
+        { value: 234, name: '联盟广告' },
+        { value: 135, name: '视频广告' },
+        { value: 1548, name: '搜索引擎' }
+      ],
+      emphasis: {
+        itemStyle: {
+          shadowBlur: 10,
+          shadowOffsetX: 0,
+          shadowColor: 'rgba(0, 0, 0, 0.5)'
+        }
+      }
+    }
+  ]
+};
+
+let currentIndex = -1;
+
+setInterval(function() {
+  var dataLen = option.series[0].data.length;
+  // 取消之前高亮的图形
+  myChart.dispatchAction({
+    type: 'downplay',
+    seriesIndex: 0,
+    dataIndex: currentIndex
+  });
+  currentIndex = (currentIndex + 1) % dataLen;
+  // 高亮当前图形
+  myChart.dispatchAction({
+    type: 'highlight',
+    seriesIndex: 0,
+    dataIndex: currentIndex
+  });
+  // 显示 tooltip
+  myChart.dispatchAction({
+    type: 'showTip',
+    seriesIndex: 0,
+    dataIndex: currentIndex
+  });
+}, 1000);</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">title</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'饼图程序调用高亮示例'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">left</span><span class="token operator">:</span> <span class="token string">'center'</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">tooltip</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">trigger</span><span class="token operator">:</span> <span class="token string">'item'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">formatter</span><span class="token operator">:</span> <span class="token string">'{a} &lt;br/>{b} : {c} ({d}%)'</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">legend</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">orient</span><span class="token operator">:</span> <span class="token string">'vertical'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">left</span><span class="token operator">:</span> <span class="token string">'left'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'直接访问'</span><span class="token punctuation">,</span> <span class="token string">'邮件营销'</span><span class="token punctuation">,</span> <span class="token string">'联盟广告'</span><span class="token punctuation">,</span> <span class="token string">'视频广告'</span><span class="token punctuation">,</span> <span class="token string">'搜索引擎'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'访问来源'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'pie'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">radius</span><span class="token operator">:</span> <span class="token string">'55%'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">center</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'50%'</span><span class="token punctuation">,</span> <span class="token string">'60%'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">{</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">335</span><span class="token punctuation">,</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'直接访问'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">310</span><span class="token punctuation">,</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'邮件营销'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">234</span><span class="token punctuation">,</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'联盟广告'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">135</span><span class="token punctuation">,</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'视频广告'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">1548</span><span class="token punctuation">,</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'搜索引擎'</span> <span class="token punctuation">}</span>
+      <span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">emphasis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">itemStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+          <span class="token literal-property property">shadowBlur</span><span class="token operator">:</span> <span class="token number">10</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">shadowOffsetX</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">shadowColor</span><span class="token operator">:</span> <span class="token string">'rgba(0, 0, 0, 0.5)'</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span>
+
+<span class="token keyword">let</span> currentIndex <span class="token operator">=</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">;</span>
+
+<span class="token function">setInterval</span><span class="token punctuation">(</span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  <span class="token keyword">var</span> dataLen <span class="token operator">=</span> option<span class="token punctuation">.</span>series<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">.</span>data<span class="token punctuation">.</span>length<span class="token punctuation">;</span>
+  <span class="token comment">// 取消之前高亮的图形</span>
+  myChart<span class="token punctuation">.</span><span class="token function">dispatchAction</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'downplay'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">seriesIndex</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">dataIndex</span><span class="token operator">:</span> currentIndex
+  <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+  currentIndex <span class="token operator">=</span> <span class="token punctuation">(</span>currentIndex <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">)</span> <span class="token operator">%</span> dataLen<span class="token punctuation">;</span>
+  <span class="token comment">// 高亮当前图形</span>
+  myChart<span class="token punctuation">.</span><span class="token function">dispatchAction</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'highlight'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">seriesIndex</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">dataIndex</span><span class="token operator">:</span> currentIndex
+  <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+  <span class="token comment">// 显示 tooltip</span>
+  myChart<span class="token punctuation">.</span><span class="token function">dispatchAction</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'showTip'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">seriesIndex</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">dataIndex</span><span class="token operator">:</span> currentIndex
+  <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token number">1000</span><span class="token punctuation">)</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <h2 id="%E7%9B%91%E5%90%AC%E2%80%9C%E7%A9%BA%E7%99%BD%E5%A4%84%E2%80%9D%E7%9A%84%E4%BA%8B%E4%BB%B6" tabindex="-1">监听“空白处”的事件</h2> <p>有时候,开发者需要监听画布的“空白处”所触发的事件。比如,当需要在用户点击“空白处”的时候重置图表时。</p> <p>在讨论这个功能之前,我们需要先明确两种事件。zrender 事件和 echarts 事件。</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>myChart<span class="token punctuation">.</span><span class="token function">getZr</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'click'</span><span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">event</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  <span class="token comment">// 该监听器正在监听一个`zrender 事件`。</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+myChart<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'click'</span><span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">event</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  <span class="token comment">// 该监听器正在监听一个`echarts 事件`。</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>zrender 事件与 echarts 事件不同。前者是当鼠标在任何地方都会被触发,而后者是只有当鼠标在图形元素上时才能被触发。事实上,echarts 事件是在 zrender 事件的基础上实现的,也就是说,当一个 zrender 事件在图形元素上被触发时,echarts 将触发一个 echarts 事件给开发者。</p> <p>有了 zrender 事件,我们就可以实现监听空白处的事件,具体如下:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>myChart<span class="token punctuation">.</span><span class="token function">getZr</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'click'</span><span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">event</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  <span class="token comment">// 没有 target 意味着鼠标/指针不在任何一个图形元素上,它是从“空白处”触发的。</span>
+  <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>event<span class="token punctuation">.</span>target<span class="token punctuation">)</span> <span class="token punctuation">{</span>
+    <span class="token comment">// 点击在了空白处,做些什么。</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">本文贡献者</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/zh/concepts/event.md" title="编辑本文" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">在 GitHub 上编辑本页</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a><a href="https://github.com/Ovilia" target="_blank" class="post-contributor has-avatar"><img alt="Ovilia" src="https://echarts.apache.org/en/images/people/羡辙.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>Ovilia</span></a><a href="https://github.com/plainheart" target="_blank" class="post-contributor has-avatar"><img alt="plainheart" src="https://echarts.apache.org/en/images/people/plainheart.jpg" loading="lazy" decoding="async" fetchpriority="low"> <span>plainheart</span></a><a href="https://github.com/100pah" target="_blank" class="post-contributor has-avatar"><img alt="100pah" src="https://echarts.apache.org/en/images/people/宿爽.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>100pah</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(i,e,t,l,g,d,I,C,n,a,o,r,c,A,h,s,b,m,p,u,B,Z,W,y,v,G,L,K,X,Y,O,k,w,J,S,H,V,j,F,R,E,D,f,z,N,T,U,q,M,Q,x,P,_,$,ii,ei,ti,li,gi,di,Ii,Ci,ni){return{layout:"default",data:[{html:'<h1 id="%E4%BA%8B%E4%BB%B6%E4%B8%8E%E8%A1%8C%E4%B8%BA" tabindex="-1">事件与行为</h1>\n<p>在 Apache ECharts 的图表中用户的操作将会触发相应的事件。开发者可以监听这些事件,然后通过回调函数做相应的处理,比如跳转到一个地址,或者弹出对话框,或者做数据下钻等等。</p>\n<p>ECharts 中的事件名称对应 DOM 事件名称,均为小写的字符串,如下是一个绑定点击操作的示例。</p>\n<md-code-block lang="js" code="\'bXlDaGFydC5vbignY2xpY2snLCBmdW5jdGlvbihwYXJhbXMpIHsKICAvLyDmjqfliLblj7DmiZPljbDmlbDmja7nmoTlkI3np7AKICBjb25zb2xlLmxvZyhwYXJhbXMubmFtZSk7Cn0pOw\'" line-highlights="\'\'" />\n<p>在 ECharts 中事件分为两种类型,一种是用户鼠标操作点击,或者 hover 图表的图形时触发的事件,还有一种是用户在使用可以交互的组件后触发的行为事件,例如在切换图例开关时触发的 <a href="https://echarts.apache.org/api.html#events.legendselectchanged">\'legendselectchanged\'</a> 事件(这里需要注意切换图例开关是不会触发 <code>\'legendselected\'</code> 事件的),数据区域缩放时触发的 <a href="https://echarts.apache.org/api.html#events.legendselectchanged">\'datazoom\'</a> 事件等等。</p>\n<h2 id="%E9%BC%A0%E6%A0%87%E4%BA%8B%E4%BB%B6%E7%9A%84%E5%A4%84%E7%90%86" tabindex="-1">鼠标事件的处理</h2>\n<p>ECharts 支持常规的鼠标事件类型,包括 <code>\'click\'</code>、 <code>\'dblclick\'</code>、 <code>\'mousedown\'</code>、 <code>\'mousemove\'</code>、 <code>\'mouseup\'</code>、 <code>\'mouseover\'</code>、 <code>\'mouseout\'</code>、 <code>\'globalout\'</code>、 <code>\'contextmenu\'</code> 事件。下面先来看一个简单的点击柱状图后打开相应的百度搜索页面的示例。</p>\n<md-live lang="js" code="\'Ly8g5Z-65LqO5YeG5aSH5aW955qEZG9t77yM5Yid5aeL5YyWRUNoYXJ0c-WunuS-iwovLyB2YXIgbXlDaGFydCA9IGVjaGFydHMuaW5pdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFpbicpKTsKCi8vIOaMh-WumuWbvuihqOeahOmFjee9rumhueWSjOaVsOaNrgp2YXIgb3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBkYXRhOiBbJ-ihrOihqycsICfnvormr5vooasnLCAn6Zuq57q66KGrJywgJ-ijpOWtkCcsICfpq5jot5_pnosnLCAn6KKc5a2QJ10KICB9LAogIHlBeGlzOiB7fSwKICBzZXJpZXM6IFsKICAgIHsKICAgICAgbmFtZTogJ-mUgOmHjycsCiAgICAgIHR5cGU6ICdiYXInLAogICAgICBkYXRhOiBbNSwgMjAsIDM2LCAxMCwgMTAsIDIwXQogICAgfQogIF0KfTsKLy8g5L2_55So5Yia5oyH5a6a55qE6YWN572u6aG55ZKM5pWw5o2u5pi-56S65Zu-6KGo44CCCm15Q2hhcnQuc2V0T3B0aW9uKG9wdGlvbik7Ci8vIOWkhOeQhueCueWHu-S6i-S7tuW5tuS4lOi3s-i9rOWIsOebuOW6lOeahOeZvuW6puaQnOe0oumhtemdogpteUNoYXJ0Lm9uKCdjbGljaycsIGZ1bmN0aW9uKHBhcmFtcykgewogIHdpbmRvdy5vcGVuKCdodHRwczovL3d3dy5iYWlkdS5jb20vcz93ZD0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHBhcmFtcy5uYW1lKSk7Cn0pOw\'" v-bind="{}" />\n<p>所有的鼠标事件包含参数 <code>params</code>,这是一个包含点击图形的数据信息的对象,如下格式:</p>\n<md-code-block lang="ts" code="\'dHlwZSBFdmVudFBhcmFtcyA9IHsKICAvLyDlvZPliY3ngrnlh7vnmoTlm77lvaLlhYPntKDmiYDlsZ7nmoTnu4Tku7blkI3np7DvvIwKICAvLyDlhbblgLzlpoIgJ3NlcmllcyfjgIEnbWFya0xpbmUn44CBJ21hcmtQb2ludCfjgIEndGltZUxpbmUnIOetieOAggogIGNvbXBvbmVudFR5cGU6IHN0cmluZzsKICAvLyDns7vliJfnsbvlnovjgILlgLzlj6_og73kuLrvvJonbGluZSfjgIEnYmFyJ-OAgSdwaWUnIOetieOAguW9kyBjb21wb25lbnRUeXBlIOS4uiAnc2VyaWVzJyDml7bmnInmhI_kuYnjgIIKICBzZXJpZXNUeXBlOiBzdHJpbmc7CiAgLy8g57O75YiX5Zyo5Lyg5YWl55qEIG9wdGlvbi5zZXJpZXMg5Lit55qEIGluZGV444CC5b2TIGNvbXBvbmVudFR5cGUg5Li6ICdzZXJpZXMnIOaXtuacieaEj-S5ieOAggogIHNlcmllc0luZGV4OiBudW1iZXI7CiAgLy8g57O75YiX5ZCN56ew44CC5b2TIGNvbXBvbmVudFR5cGUg5Li6ICdzZXJpZXMnIOaXtuacieaEj-S5ieOAggogIHNlcmllc05hbWU6IHN0cmluZzsKICAvLyDmlbDmja7lkI3vvIznsbvnm67lkI0KICBuYW1lOiBzdHJpbmc7CiAgLy8g5pWw5o2u5Zyo5Lyg5YWl55qEIGRhdGEg5pWw57uE5Lit55qEIGluZGV4CiAgZGF0YUluZGV4OiBudW1iZXI7CiAgLy8g5Lyg5YWl55qE5Y6f5aeL5pWw5o2u6aG5CiAgZGF0YTogT2JqZWN0OwogIC8vIHNhbmtleeOAgWdyYXBoIOetieWbvuihqOWQjOaXtuWQq-aciSBub2RlRGF0YSDlkowgZWRnZURhdGEg5Lik56eNIGRhdGHvvIwKICAvLyBkYXRhVHlwZSDnmoTlgLzkvJrmmK8gJ25vZGUnIOaIluiAhSAnZWRnZSfvvIzooajnpLrlvZPliY3ngrnlh7vlnKggbm9kZSDov5jmmK8gZWRnZSDkuIrjgIIKICAvLyDlhbbku5blpKfpg6jliIblm77ooajkuK3lj6rmnInkuIDnp40gZGF0Ye-8jGRhdGFUeXBlIOaXoOaEj-S5ieOAggogIGRhdGFUeXBlOiBzdHJpbmc7CiAgLy8g5Lyg5YWl55qE5pWw5o2u5YC8CiAgdmFsdWU6IG51bWJlciB8IEFycmF5OwogIC8vIOaVsOaNruWbvuW9oueahOminOiJsuOAguW9kyBjb21wb25lbnRUeXBlIOS4uiAnc2VyaWVzJyDml7bmnInmhI_kuYnjgIIKICBjb2xvcjogc3RyaW5nOwp9Ow\'" line-highlights="\'\'" />\n<p>如何区分鼠标点击到了哪里:</p>\n<md-code-block lang="js" code="\'bXlDaGFydC5vbignY2xpY2snLCBmdW5jdGlvbihwYXJhbXMpIHsKICBpZiAocGFyYW1zLmNvbXBvbmVudFR5cGUgPT09ICdtYXJrUG9pbnQnKSB7CiAgICAvLyDngrnlh7vliLDkuoYgbWFya1BvaW50IOS4igogICAgaWYgKHBhcmFtcy5zZXJpZXNJbmRleCA9PT0gNSkgewogICAgICAvLyDngrnlh7vliLDkuoYgaW5kZXgg5Li6IDUg55qEIHNlcmllcyDnmoQgbWFya1BvaW50IOS4iuOAggogICAgfQogIH0gZWxzZSBpZiAocGFyYW1zLmNvbXBvbmVudFR5cGUgPT09ICdzZXJpZXMnKSB7CiAgICBpZiAocGFyYW1zLnNlcmllc1R5cGUgPT09ICdncmFwaCcpIHsKICAgICAgaWYgKHBhcmFtcy5kYXRhVHlwZSA9PT0gJ2VkZ2UnKSB7CiAgICAgICAgLy8g54K55Ye75Yiw5LqGIGdyYXBoIOeahCBlZGdl77yI6L6577yJ5LiK44CCCiAgICAgIH0gZWxzZSB7CiAgICAgICAgLy8g54K55Ye75Yiw5LqGIGdyYXBoIOeahCBub2Rl77yI6IqC54K577yJ5LiK44CCCiAgICAgIH0KICAgIH0KICB9Cn0pOw\'" line-highlights="\'\'" />\n<p>使用 <code>query</code> 只对指定的组件的图形元素的触发回调:</p>\n<md-code-block lang="js" code="\'Y2hhcnQub24oZXZlbnROYW1lLCBxdWVyeSwgaGFuZGxlcik7\'" line-highlights="\'\'" />\n<p><code>query</code> 可为 <code>string</code> 或者 <code>Object</code>。</p>\n<p>如果为 <code>string</code> 表示组件类型。格式可以是 \'mainType\' 或者 \'mainType.subType\'。例如:</p>\n<md-code-block lang="js" code="\'Y2hhcnQub24oJ2NsaWNrJywgJ3NlcmllcycsIGZ1bmN0aW9uKCkge30pOwpjaGFydC5vbignY2xpY2snLCAnc2VyaWVzLmxpbmUnLCBmdW5jdGlvbigpIHt9KTsKY2hhcnQub24oJ2NsaWNrJywgJ2RhdGFab29tJywgZnVuY3Rpb24oKSB7fSk7CmNoYXJ0Lm9uKCdjbGljaycsICd4QXhpcy5jYXRlZ29yeScsIGZ1bmN0aW9uKCkge30pOw\'" line-highlights="\'\'" />\n<p>如果为 <code>Object</code>,可以包含以下一个或多个属性,每个属性都是可选的:</p>\n<md-code-block lang="ts" code="\'ewogICR7bWFpblR5cGV9SW5kZXg6IG51bWJlciAvLyDnu4Tku7YgaW5kZXgKICAke21haW5UeXBlfU5hbWU6IHN0cmluZyAvLyDnu4Tku7YgbmFtZQogICR7bWFpblR5cGV9SWQ6IHN0cmluZyAvLyDnu4Tku7YgaWQKICBkYXRhSW5kZXg6IG51bWJlciAvLyDmlbDmja7pobkgaW5kZXgKICBuYW1lOiBzdHJpbmcgLy8g5pWw5o2u6aG5IG5hbWUKICBkYXRhVHlwZTogc3RyaW5nIC8vIOaVsOaNrumhuSB0eXBl77yM5aaC5YWz57O75Zu-5Lit55qEICdub2RlJywgJ2VkZ2UnCiAgZWxlbWVudDogc3RyaW5nIC8vIOiHquWumuS5ieezu-WIl-S4reeahCBlbCDnmoQgbmFtZQp9\'" line-highlights="\'\'" />\n<p>例如:</p>\n<md-code-block lang="js" code="\'Y2hhcnQuc2V0T3B0aW9uKHsKICAvLyAuLi4KICBzZXJpZXM6IFsKICAgIHsKICAgICAgbmFtZTogJ3V1dScKICAgICAgLy8gLi4uCiAgICB9CiAgXQp9KTsKY2hhcnQub24oJ21vdXNlb3ZlcicsIHsgc2VyaWVzTmFtZTogJ3V1dScgfSwgZnVuY3Rpb24oKSB7CiAgLy8gc2VyaWVzIG5hbWUg5Li6ICd1dXUnIOeahOezu-WIl-S4reeahOWbvuW9ouWFg-e0oOiiqyAnbW91c2VvdmVyJyDml7bvvIzmraTmlrnms5Xooqvlm57osIPjgIIKfSk7\'" line-highlights="\'\'" />\n<p>例如:</p>\n<md-code-block lang="js" code="\'Y2hhcnQuc2V0T3B0aW9uKHsKICAvLyAuLi4KICBzZXJpZXM6IFsKICAgIHsKICAgICAgLy8gLi4uCiAgICB9LAogICAgewogICAgICAvLyAuLi4KICAgICAgZGF0YTogWwogICAgICAgIHsgbmFtZTogJ3h4JywgdmFsdWU6IDEyMSB9LAogICAgICAgIHsgbmFtZTogJ3l5JywgdmFsdWU6IDMzIH0KICAgICAgXQogICAgfQogIF0KfSk7CmNoYXJ0Lm9uKCdtb3VzZW92ZXInLCB7IHNlcmllc0luZGV4OiAxLCBuYW1lOiAneHgnIH0sIGZ1bmN0aW9uKCkgewogIC8vIHNlcmllcyBpbmRleCAxIOeahOezu-WIl-S4reeahCBuYW1lIOS4uiAneHgnIOeahOWFg-e0oOiiqyAnbW91c2VvdmVyJyDml7bvvIzmraTmlrnms5Xooqvlm57osIPjgIIKfSk7\'" line-highlights="\'\'" />\n<p>例如:</p>\n<md-code-block lang="js" code="\'Y2hhcnQuc2V0T3B0aW9uKHsKICAvLyAuLi4KICBzZXJpZXM6IFsKICAgIHsKICAgICAgdHlwZTogJ2dyYXBoJywKICAgICAgbm9kZXM6IFsKICAgICAgICB7IG5hbWU6ICdhJywgdmFsdWU6IDEwIH0sCiAgICAgICAgeyBuYW1lOiAnYicsIHZhbHVlOiAyMCB9CiAgICAgIF0sCiAgICAgIGVkZ2VzOiBbeyBzb3VyY2U6IDAsIHRhcmdldDogMSB9XQogICAgfQogIF0KfSk7CmNoYXJ0Lm9uKCdjbGljaycsIHsgZGF0YVR5cGU6ICdub2RlJyB9LCBmdW5jdGlvbigpIHsKICAvLyDlhbPns7vlm77nmoToioLngrnooqvngrnlh7vml7bmraTmlrnms5Xooqvlm57osIPjgIIKfSk7CmNoYXJ0Lm9uKCdjbGljaycsIHsgZGF0YVR5cGU6ICdlZGdlJyB9LCBmdW5jdGlvbigpIHsKICAvLyDlhbPns7vlm77nmoTovrnooqvngrnlh7vml7bmraTmlrnms5Xooqvlm57osIPjgIIKfSk7\'" line-highlights="\'\'" />\n<p>例如:</p>\n<md-code-block lang="js" code="\'Y2hhcnQuc2V0T3B0aW9uKHsKICAvLyAuLi4KICBzZXJpZXM6IHsKICAgIC8vIC4uLgogICAgdHlwZTogJ2N1c3RvbScsCiAgICByZW5kZXJJdGVtOiBmdW5jdGlvbihwYXJhbXMsIGFwaSkgewogICAgICByZXR1cm4gewogICAgICAgIHR5cGU6ICdncm91cCcsCiAgICAgICAgY2hpbGRyZW46IFsKICAgICAgICAgIHsKICAgICAgICAgICAgdHlwZTogJ2NpcmNsZScsCiAgICAgICAgICAgIG5hbWU6ICdteV9lbCcKICAgICAgICAgICAgLy8gLi4uCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAvLyAuLi4KICAgICAgICAgIH0KICAgICAgICBdCiAgICAgIH07CiAgICB9LAogICAgZGF0YTogW1sxMiwgMzNdXQogIH0KfSk7CmNoYXJ0Lm9uKCdtb3VzZXVwJywgeyBlbGVtZW50OiAnbXlfZWwnIH0sIGZ1bmN0aW9uKCkgewogIC8vIG5hbWUg5Li6ICdteV9lbCcg55qE5YWD57Sg6KKrICdtb3VzZXVwJyDml7bvvIzmraTmlrnms5Xooqvlm57osIPjgIIKfSk7\'" line-highlights="\'\'" />\n<p>你可以在回调函数中获得这个对象中的数据名、系列名称后在自己的数据仓库中索引得到其它的信息后更新图表,显示浮层等等,如下示例代码:</p>\n<md-code-block lang="js" code="\'bXlDaGFydC5vbignY2xpY2snLCBmdW5jdGlvbihwYXJtYXMpIHsKICAkLmdldCgnZGV0YWlsP3E9JyArIHBhcmFtcy5uYW1lLCBmdW5jdGlvbihkZXRhaWwpIHsKICAgIG15Q2hhcnQuc2V0T3B0aW9uKHsKICAgICAgc2VyaWVzOiBbCiAgICAgICAgewogICAgICAgICAgbmFtZTogJ3BpZScsCiAgICAgICAgICAvLyDpgJrov4fppbzlm77ooajnjrDljZXkuKrmn7HlrZDkuK3nmoTmlbDmja7liIbluIMKICAgICAgICAgIGRhdGE6IFtkZXRhaWwuZGF0YV0KICAgICAgICB9CiAgICAgIF0KICAgIH0pOwogIH0pOwp9KTs\'" line-highlights="\'\'" />\n<h2 id="%E7%BB%84%E4%BB%B6%E4%BA%A4%E4%BA%92%E7%9A%84%E8%A1%8C%E4%B8%BA%E4%BA%8B%E4%BB%B6" tabindex="-1">组件交互的行为事件</h2>\n<p>在 ECharts 中基本上所有的组件交互行为都会触发相应的事件,常用的事件和事件对应参数在 <a href="https://echarts.apache.org//api.html#events">events</a> 文档中有列出。</p>\n<p>下面是监听一个图例开关的示例:</p>\n<md-code-block lang="js" code="\'Ly8g5Zu-5L6L5byA5YWz55qE6KGM5Li65Y-q5Lya6Kem5Y-RIGxlZ2VuZHNlbGVjdGNoYW5nZWQg5LqL5Lu2Cm15Q2hhcnQub24oJ2xlZ2VuZHNlbGVjdGNoYW5nZWQnLCBmdW5jdGlvbihwYXJhbXMpIHsKICAvLyDojrflj5bngrnlh7vlm77kvovnmoTpgInkuK3nirbmgIEKICB2YXIgaXNTZWxlY3RlZCA9IHBhcmFtcy5zZWxlY3RlZFtwYXJhbXMubmFtZV07CiAgLy8g5Zyo5o6n5Yi25Y-w5Lit5omT5Y2wCiAgY29uc29sZS5sb2coKGlzU2VsZWN0ZWQgPyAn6YCJ5Lit5LqGJyA6ICflj5bmtojpgInkuK3kuoYnKSArICflm77kvosnICsgcGFyYW1zLm5hbWUpOwogIC8vIOaJk-WNsOaJgOacieWbvuS-i-eahOeKtuaAgQogIGNvbnNvbGUubG9nKHBhcmFtcy5zZWxlY3RlZCk7Cn0pOw\'" line-highlights="\'\'" />\n<h2 id="%E4%BB%A3%E7%A0%81%E8%A7%A6%E5%8F%91-echarts-%E4%B8%AD%E7%BB%84%E4%BB%B6%E7%9A%84%E8%A1%8C%E4%B8%BA" tabindex="-1">代码触发 ECharts 中组件的行为</h2>\n<p>上面提到诸如 <code>\'legendselectchanged\'</code> 事件会由组件交互的行为触发,那除了用户的交互操作,有时候也会有需要在程序里调用方法触发图表的行为,诸如显示 tooltip,选中图例。</p>\n<p>在 ECharts 通过调用 <code>myChart.dispatchAction({ type: \'\' })</code> 触发图表行为,统一管理了所有动作,也可以方便地根据需要去记录用户的行为路径。</p>\n<p>常用的动作和动作对应参数在 <a href="https://echarts.apache.org//api.html#action">action</a> 文档中有列出。</p>\n<p>下面示例演示了如何通过 <code>dispatchAction</code> 去轮流高亮饼图的每个扇形。</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHRpdGxlOiB7CiAgICB0ZXh0OiAn6aW85Zu-56iL5bqP6LCD55So6auY5Lqu56S65L6LJywKICAgIGxlZnQ6ICdjZW50ZXInCiAgfSwKICB0b29sdGlwOiB7CiAgICB0cmlnZ2VyOiAnaXRlbScsCiAgICBmb3JtYXR0ZXI6ICd7YX0gPGJyLz57Yn0gOiB7Y30gKHtkfSUpJwogIH0sCiAgbGVnZW5kOiB7CiAgICBvcmllbnQ6ICd2ZXJ0aWNhbCcsCiAgICBsZWZ0OiAnbGVmdCcsCiAgICBkYXRhOiBbJ-ebtOaOpeiuv-mXricsICfpgq7ku7bokKXplIAnLCAn6IGU55uf5bm_5ZGKJywgJ-inhumikeW5v-WRiicsICfmkJzntKLlvJXmk44nXQogIH0sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIG5hbWU6ICforr_pl67mnaXmupAnLAogICAgICB0eXBlOiAncGllJywKICAgICAgcmFkaXVzOiAnNTUlJywKICAgICAgY2VudGVyOiBbJzUwJScsICc2MCUnXSwKICAgICAgZGF0YTogWwogICAgICAgIHsgdmFsdWU6IDMzNSwgbmFtZTogJ-ebtOaOpeiuv-mXricgfSwKICAgICAgICB7IHZhbHVlOiAzMTAsIG5hbWU6ICfpgq7ku7bokKXplIAnIH0sCiAgICAgICAgeyB2YWx1ZTogMjM0LCBuYW1lOiAn6IGU55uf5bm_5ZGKJyB9LAogICAgICAgIHsgdmFsdWU6IDEzNSwgbmFtZTogJ-inhumikeW5v-WRiicgfSwKICAgICAgICB7IHZhbHVlOiAxNTQ4LCBuYW1lOiAn5pCc57Si5byV5pOOJyB9CiAgICAgIF0sCiAgICAgIGVtcGhhc2lzOiB7CiAgICAgICAgaXRlbVN0eWxlOiB7CiAgICAgICAgICBzaGFkb3dCbHVyOiAxMCwKICAgICAgICAgIHNoYWRvd09mZnNldFg6IDAsCiAgICAgICAgICBzaGFkb3dDb2xvcjogJ3JnYmEoMCwgMCwgMCwgMC41KScKICAgICAgICB9CiAgICAgIH0KICAgIH0KICBdCn07CgpsZXQgY3VycmVudEluZGV4ID0gLTE7CgpzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKICB2YXIgZGF0YUxlbiA9IG9wdGlvbi5zZXJpZXNbMF0uZGF0YS5sZW5ndGg7CiAgLy8g5Y-W5raI5LmL5YmN6auY5Lqu55qE5Zu-5b2iCiAgbXlDaGFydC5kaXNwYXRjaEFjdGlvbih7CiAgICB0eXBlOiAnZG93bnBsYXknLAogICAgc2VyaWVzSW5kZXg6IDAsCiAgICBkYXRhSW5kZXg6IGN1cnJlbnRJbmRleAogIH0pOwogIGN1cnJlbnRJbmRleCA9IChjdXJyZW50SW5kZXggKyAxKSAlIGRhdGFMZW47CiAgLy8g6auY5Lqu5b2T5YmN5Zu-5b2iCiAgbXlDaGFydC5kaXNwYXRjaEFjdGlvbih7CiAgICB0eXBlOiAnaGlnaGxpZ2h0JywKICAgIHNlcmllc0luZGV4OiAwLAogICAgZGF0YUluZGV4OiBjdXJyZW50SW5kZXgKICB9KTsKICAvLyDmmL7npLogdG9vbHRpcAogIG15Q2hhcnQuZGlzcGF0Y2hBY3Rpb24oewogICAgdHlwZTogJ3Nob3dUaXAnLAogICAgc2VyaWVzSW5kZXg6IDAsCiAgICBkYXRhSW5kZXg6IGN1cnJlbnRJbmRleAogIH0pOwp9LCAxMDAwKTs\'" v-bind="{}" />\n<h2 id="%E7%9B%91%E5%90%AC%E2%80%9C%E7%A9%BA%E7%99%BD%E5%A4%84%E2%80%9D%E7%9A%84%E4%BA%8B%E4%BB%B6" tabindex="-1">监听“空白处”的事件</h2>\n<p>有时候,开发者需要监听画布的“空白处”所触发的事件。比如,当需要在用户点击“空白处”的时候重置图表时。</p>\n<p>在讨论这个功能之前,我们需要先明确两种事件。zrender 事件和 echarts 事件。</p>\n<md-code-block lang="js" code="\'bXlDaGFydC5nZXRacigpLm9uKCdjbGljaycsIGZ1bmN0aW9uKGV2ZW50KSB7CiAgLy8g6K-l55uR5ZCs5Zmo5q2j5Zyo55uR5ZCs5LiA5LiqYHpyZW5kZXIg5LqL5Lu2YOOAggp9KTsKbXlDaGFydC5vbignY2xpY2snLCBmdW5jdGlvbihldmVudCkgewogIC8vIOivpeebkeWQrOWZqOato-WcqOebkeWQrOS4gOS4qmBlY2hhcnRzIOS6i-S7tmDjgIIKfSk7\'" line-highlights="\'\'" />\n<p>zrender 事件与 echarts 事件不同。前者是当鼠标在任何地方都会被触发,而后者是只有当鼠标在图形元素上时才能被触发。事实上,echarts 事件是在 zrender 事件的基础上实现的,也就是说,当一个 zrender 事件在图形元素上被触发时,echarts 将触发一个 echarts 事件给开发者。</p>\n<p>有了 zrender 事件,我们就可以实现监听空白处的事件,具体如下:</p>\n<md-code-block lang="js" code="\'bXlDaGFydC5nZXRacigpLm9uKCdjbGljaycsIGZ1bmN0aW9uKGV2ZW50KSB7CiAgLy8g5rKh5pyJIHRhcmdldCDmhI_lkbPnnYDpvKDmoIcv5oyH6ZKI5LiN5Zyo5Lu75L2V5LiA5Liq5Zu-5b2i5YWD57Sg5LiK77yM5a6D5piv5LuO4oCc56m655m95aSE4oCd6Kem5Y-R55qE44CCCiAgaWYgKCFldmVudC50YXJnZXQpIHsKICAgIC8vIOeCueWHu-WcqOS6huepuueZveWkhO-8jOWBmuS6m-S7gOS5iOOAggogIH0KfSk7\'" line-highlights="\'\'" />\n',postPath:"zh/concepts/event",title:"事件与行为 - 概念篇"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:l},{title:"入门篇",dir:g,children:[{title:"获取 ECharts",dir:d},{title:"在项目中引入 ECharts",dir:I},{title:"资源列表",dir:C,draft:i},{title:"寻求帮助",dir:n},{title:"版本特性",dir:a,children:[{title:"ECharts 6 特性介绍",dir:o},{title:"v5 升级 v6 指南",dir:r},{title:"5.0",dir:c},{title:"v4 升级 v5 指南",dir:A},{title:5.2,dir:h},{title:5.3,dir:s},{title:5.4,dir:b},{title:5.5,dir:m},{title:5.6,dir:p}]}]},{title:"概念篇",dir:u,children:[{title:"图表容器及大小",dir:B},{title:"配置项",dir:Z,draft:i},{title:"系列",dir:W,draft:i},{title:"样式",dir:y},{title:"数据集",dir:v},{title:"数据转换",dir:G},{title:"坐标系",dir:L,draft:i},{title:"坐标轴",dir:K},{title:"视觉映射",dir:t},{title:"图例",dir:X},{title:"事件与行为",dir:Y}]},{title:"应用篇",dir:O,children:[{title:"常用图表类型",dir:k,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:w},{title:"堆叠柱状图",dir:J},{title:"动态排序柱状图",dir:S},{title:"极坐标系柱状图",dir:H,draft:i},{title:"阶梯瀑布图",dir:V},{title:"视觉映射的柱状图",dir:t,draft:i}]},{title:"折线图",dir:j,children:[{title:"基础折线图",dir:F},{title:"堆叠折线图",dir:R},{title:"区域面积图",dir:E},{title:"平滑曲线图",dir:D},{title:"阶梯线图",dir:f}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:z},{title:"圆环图",dir:N},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:T,children:[{title:"基础散点图",dir:U}]}]},{title:"常用组件",dir:q,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:M}]}]},{title:"移动端优化",dir:e,draft:i},{title:"跨平台方案",dir:Q,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:x},{title:"数据下钻",dir:P,draft:i}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:_}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:ii}]},{title:"交互",dir:ei,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:ti,draft:i},{title:"智能指针吸附",dir:li}]}]},{title:"最佳实践",dir:gi,children:[{title:"移动端优化",dir:e,draft:i},{title:di,dir:Ii},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:Ci}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:ni}]}],en:[{title:"Get Started",dir:l},{title:"Basics",dir:g,children:[{title:"Download ECharts",dir:d},{title:"Import ECharts",dir:I},{title:"Resources",dir:C,draft:i},{title:"Get Help",dir:n},{title:"What's New",dir:a,children:[{title:"ECharts 6 Features",dir:o},{title:"Migration from v5 to v6",dir:r},{title:"5.0",dir:c},{title:"Migration from v4 to v5",dir:A},{title:5.2,dir:h},{title:5.3,dir:s},{title:5.4,dir:b},{title:5.5,dir:m},{title:5.6,dir:p}]}]},{title:"Concepts",dir:u,children:[{title:"Chart Container",dir:B},{title:"Chart Option",dir:Z,draft:i},{title:"Series",dir:W,draft:i},{title:"Style",dir:y},{title:"Dataset",dir:v},{title:"Data Transform",dir:G},{title:"Coordinate",dir:L,draft:i},{title:"Axis",dir:K},{title:"Visual Mapping",dir:t},{title:"Legend",dir:X},{title:"Event and Action",dir:Y}]},{title:"How To Guides",dir:O,children:[{title:"Common Charts",dir:k,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:w},{title:"Stacked Bar",dir:J},{title:"Bar Racing",dir:S},{title:"Bar Polar",dir:H,draft:i},{title:"Waterfall",dir:V}]},{title:"Line",dir:j,children:[{title:"Basic Line",dir:F},{title:"Stacked Line",dir:R},{title:"Area Chart",dir:E},{title:"Smoothed Line",dir:D},{title:"Step Line",dir:f}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:z},{title:"Ring Style",dir:N},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:T,children:[{title:"Basic Scatter",dir:U}]}]},{title:"Common Components",dir:q,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:M}]}]},{title:"Mobile",dir:e,draft:i},{title:"Cross Platform",dir:Q,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:x},{title:"Drilldown",dir:P,draft:i}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:_}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:ii}]},{title:"Interaction",dir:ei,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:ti,draft:i},{title:"Intelligent Pointer Snapping",dir:li}]}]},{title:"Best Practices",dir:gi,children:[{title:"Mobile Optimization",dir:e,draft:i},{title:di,dir:Ii},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:Ci}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:ni}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:i,routePath:"/zh/concepts/event",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/zh/concepts/legend/index.html b/docs/zh/concepts/legend/index.html
new file mode 100644
index 0000000..64229a2
--- /dev/null
+++ b/docs/zh/concepts/legend/index.html
@@ -0,0 +1,124 @@
+<!doctype html>
+<html data-n-head-ssr lang="zh-CN" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh-CN%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>图例 - 概念篇 - 使用手册 - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="zh"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/zh/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/zh/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/zh/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/zh/index.html" class="navbar-brand"><img src="https://echarts.apache.org/zh/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/zh/index.html">首页</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">文档<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/feature.html">特性</a></li><li><a href="https://echarts.apache.org/handbook/zh/get-started/">使用手册</a></li><li><a href="https://echarts.apache.org/zh/api.html">API</a></li><li><a href="https://echarts.apache.org/zh/option.html">配置项手册</a></li><li><a href="https://echarts.apache.org/zh/changelog.html">版本记录</a></li><li><a href="https://echarts.apache.org/zh/faq.html">常见问题</a></li><li><a href="https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide">v6 升级指南</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">下载<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/download.html">下载</a></li><li><a href="https://echarts.apache.org/zh/download-theme.html">主题下载</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">自定义系列下载<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/download-extension.html">扩展下载</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/zh/index.html">示例</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">资源<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/spreadsheet.html">表格工具</a></li><li><a href="https://echarts.apache.org/zh/theme-builder.html">主题构建工具</a></li><li><a href="https://echarts.apache.org/zh/cheat-sheet.html">术语速查手册</a></li><li><a href="https://echarts.apache.org/zh/resources.html">更多资源</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">社区<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/events.html">活动</a></li><li><a href="https://echarts.apache.org/zh/committers.html">贡献者列表</a></li><li><a href="https://echarts.apache.org/zh/maillist.html">邮件列表</a></li><li><a href="https://echarts.apache.org/zh/contributing.html">如何贡献</a></li><li><a href="https://echarts.apache.org/zh/dependencies.html">依赖项</a></li><li><a href="https://echarts.apache.org/zh/coding-standard.html">代码规范</a></li><li><a href="https://github.com/apache/echarts" target="_blank">源码(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/security.html">安全</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">版权<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">活动<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">捐赠<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">鸣谢<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("en")'>EN</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/zh/get-started" class="nav-link"><span class="title">快速上手</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">入门篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/basics/download" class="nav-link"><span class="title">获取 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/import" class="nav-link"><span class="title">在项目中引入 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/basics/help" class="nav-link"><span class="title">寻求帮助</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">版本特性</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 特性介绍</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">v5 升级 v6 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">v4 升级 v5 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">概念篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/concepts/chart-size" class="nav-link"><span class="title">图表容器及大小</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/style" class="nav-link"><span class="title">样式</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/dataset" class="nav-link"><span class="title">数据集</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/data-transform" class="nav-link"><span class="title">数据转换</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/axis" class="nav-link"><span class="title">坐标轴</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/visual-map" class="nav-link"><span class="title">视觉映射</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/legend" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">图例</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/event" class="nav-link"><span class="title">事件与行为</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">应用篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">常用图表类型</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">柱状图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">基础柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">堆叠柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">动态排序柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">阶梯瀑布图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">折线图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">基础折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">堆叠折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/area-line" class="nav-link"><span class="title">区域面积图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">平滑曲线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/step-line" class="nav-link"><span class="title">阶梯线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">饼图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">基础饼图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">圆环图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/rose" class="nav-link"><span class="title">南丁格尔图(玫瑰图)</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">散点图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">基础散点图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">常用组件</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">地理坐标系(Geo)</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG 底图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">跨平台方案</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/server" class="nav-link"><span class="title">服务端渲染</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/wechat-app" class="nav-link"><span class="title">微信小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/baidu-app" class="nav-link"><span class="title">百度智能小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">数据处理</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/data/dynamic-data" class="nav-link"><span class="title">动态的异步数据</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">标签</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/label/rich-text" class="nav-link"><span class="title">富文本标签</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">动画</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/animation/transition" class="nav-link"><span class="title">数据过渡动画</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">交互</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/drag" class="nav-link"><span class="title">拖拽的实现</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">智能指针吸附</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">最佳实践</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/aria" class="nav-link"><span class="title">无障碍访问</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/security" class="nav-link"><span class="title">安全指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">编辑本文档</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/meta/edit-guide" class="nav-link"><span class="title">文档编辑指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="%E5%9B%BE%E4%BE%8B" tabindex="-1">图例</h1> <p>图例是图表中对内容区元素的注释、用不同形状、颜色、文字等来标示不同数据列,通过点击对应数据列的标记,可以显示或隐藏该数据列。图例虽然不是图表中的主要信息、却是了解图表信息的钥匙。</p> <h2 id="%E5%B8%83%E5%B1%80" tabindex="-1">布局</h2> <p>图例一般放在图表的右上角、也可以放在图表的底部、同一页面中的所有图例位置保持一致,可以横排对齐也可以纵排对齐。还要综合考虑整体的图表空间是适合哪种摆放方式。当图表纵向空间紧张或者内容区量过大的时候、建议摆放在图表的下方。下面是几种图例的摆放方式:</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  legend: {
+    // Try 'horizontal'
+    orient: 'vertical',
+    right: 10,
+    top: 'center'
+  },
+  dataset: {
+    source: [
+      ['product', '2015', '2016', '2017'],
+      ['Matcha Latte', 43.3, 85.8, 93.7],
+      ['Milk Tea', 83.1, 73.4, 55.1],
+      ['Cheese Cocoa', 86.4, 65.2, 82.5],
+      ['Walnut Brownie', 72.4, 53.9, 39.1]
+    ]
+  },
+  xAxis: { type: 'category' },
+  yAxis: {},
+  series: [{ type: 'bar' }, { type: 'bar' }, { type: 'bar' }]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">legend</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token comment">// Try 'horizontal'</span>
+    <span class="token literal-property property">orient</span><span class="token operator">:</span> <span class="token string">'vertical'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">right</span><span class="token operator">:</span> <span class="token number">10</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">top</span><span class="token operator">:</span> <span class="token string">'center'</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">dataset</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token punctuation">[</span><span class="token string">'product'</span><span class="token punctuation">,</span> <span class="token string">'2015'</span><span class="token punctuation">,</span> <span class="token string">'2016'</span><span class="token punctuation">,</span> <span class="token string">'2017'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token string">'Matcha Latte'</span><span class="token punctuation">,</span> <span class="token number">43.3</span><span class="token punctuation">,</span> <span class="token number">85.8</span><span class="token punctuation">,</span> <span class="token number">93.7</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token string">'Milk Tea'</span><span class="token punctuation">,</span> <span class="token number">83.1</span><span class="token punctuation">,</span> <span class="token number">73.4</span><span class="token punctuation">,</span> <span class="token number">55.1</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token string">'Cheese Cocoa'</span><span class="token punctuation">,</span> <span class="token number">86.4</span><span class="token punctuation">,</span> <span class="token number">65.2</span><span class="token punctuation">,</span> <span class="token number">82.5</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token punctuation">[</span><span class="token string">'Walnut Brownie'</span><span class="token punctuation">,</span> <span class="token number">72.4</span><span class="token punctuation">,</span> <span class="token number">53.9</span><span class="token punctuation">,</span> <span class="token number">39.1</span><span class="token punctuation">]</span>
+    <span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'category'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span> <span class="token punctuation">}</span><span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>对于图例较多时,可以使用可滚动翻页的图例</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">legend</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'scroll'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">orient</span><span class="token operator">:</span> <span class="token string">'vertical'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">right</span><span class="token operator">:</span> <span class="token number">10</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">top</span><span class="token operator">:</span> <span class="token number">20</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">bottom</span><span class="token operator">:</span> <span class="token number">20</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'图例一'</span><span class="token punctuation">,</span> <span class="token string">'图例二'</span><span class="token punctuation">,</span> <span class="token string">'图例三'</span> <span class="token comment">/* ... */</span><span class="token punctuation">,</span> <span class="token punctuation">,</span> <span class="token string">'图例n'</span><span class="token punctuation">]</span>
+    <span class="token comment">// ...</span>
+  <span class="token punctuation">}</span>
+  <span class="token comment">// ...</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="%E6%A0%B7%E5%BC%8F" tabindex="-1">样式</h2> <p>在深色系背景下、为了方便阅读,建议给图例加上半透明的浅色背景层,文字颜色设置为浅色。</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">legend</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'图例一'</span><span class="token punctuation">,</span> <span class="token string">'图例二'</span><span class="token punctuation">,</span> <span class="token string">'图例三'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">backgroundColor</span><span class="token operator">:</span> <span class="token string">'#ccc'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">textStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'#ccc'</span>
+      <span class="token comment">// ...</span>
+    <span class="token punctuation">}</span>
+    <span class="token comment">// ...</span>
+  <span class="token punctuation">}</span>
+  <span class="token comment">// ...</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>图例的颜色标签有很多种设计方式、针对不同的图表、图例样式也会有所不同。</p> <img max-width="830" width="80%" height="80%" src="images/design/legend/charts_sign_img04.png"> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">legend</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'图例一'</span><span class="token punctuation">,</span> <span class="token string">'图例二'</span><span class="token punctuation">,</span> <span class="token string">'图例三'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">icon</span><span class="token operator">:</span> <span class="token string">'rect'</span>
+    <span class="token comment">// ...</span>
+  <span class="token punctuation">}</span>
+  <span class="token comment">// ...</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="%E4%BA%A4%E4%BA%92" tabindex="-1">交互</h2> <p>根据场景需要,图例可支持交互操作,点击控制显示或隐藏对应的数据列;</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">legend</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'图例一'</span><span class="token punctuation">,</span> <span class="token string">'图例二'</span><span class="token punctuation">,</span> <span class="token string">'图例三'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">selected</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">图例一</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">图例二</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">图例三</span><span class="token operator">:</span> <span class="token boolean">false</span>
+    <span class="token punctuation">}</span>
+    <span class="token comment">// ...</span>
+  <span class="token punctuation">}</span>
+  <span class="token comment">// ...</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="%E5%9B%BE%E4%BE%8B%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9" tabindex="-1">图例注意事项</h2> <p>图例要注意视情况使用,有些双轴图包含了多种图表类型,不同类型的图例样式要有所区分。</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">legend</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token punctuation">{</span>
+        <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'图例一'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">icon</span><span class="token operator">:</span> <span class="token string">'rect'</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token punctuation">{</span>
+        <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'图例二'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">icon</span><span class="token operator">:</span> <span class="token string">'circle'</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token punctuation">{</span>
+        <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'图例三'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">icon</span><span class="token operator">:</span> <span class="token string">'pin'</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">]</span>
+    <span class="token comment">// ...</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'图例一'</span>
+      <span class="token comment">// ...</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'图例二'</span>
+      <span class="token comment">// ...</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'图例三'</span>
+      <span class="token comment">// ...</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+  <span class="token comment">// ...</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>当图表只有一种数据信息时,用图表标题说明数据信息即可。建议此时不要加上图例。</p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">本文贡献者</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/zh/concepts/legend.md" title="编辑本文" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">在 GitHub 上编辑本页</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a><a href="https://github.com/Ovilia" target="_blank" class="post-contributor has-avatar"><img alt="Ovilia" src="https://echarts.apache.org/en/images/people/羡辙.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>Ovilia</span></a><a href="https://github.com/Geoffyscat" target="_blank" class="post-contributor"><!----> <span>Geoffyscat</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(i,t,e,d,r,l,g,a,n,o,C,s,I,c,A,h,u,p,L,b,m,v,B,w,y,f,S,Z,J,G,E,W,D,k,M,H,V,Y,x,F,K,N,j,T,O,P,X,R,z,Q,U,_,q,$,ii,ti,ei,di,ri,li,gi,ai,ni){return{layout:"default",data:[{html:'<h1 id="%E5%9B%BE%E4%BE%8B" tabindex="-1">图例</h1>\n<p>图例是图表中对内容区元素的注释、用不同形状、颜色、文字等来标示不同数据列,通过点击对应数据列的标记,可以显示或隐藏该数据列。图例虽然不是图表中的主要信息、却是了解图表信息的钥匙。</p>\n<h2 id="%E5%B8%83%E5%B1%80" tabindex="-1">布局</h2>\n<p>图例一般放在图表的右上角、也可以放在图表的底部、同一页面中的所有图例位置保持一致,可以横排对齐也可以纵排对齐。还要综合考虑整体的图表空间是适合哪种摆放方式。当图表纵向空间紧张或者内容区量过大的时候、建议摆放在图表的下方。下面是几种图例的摆放方式:</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIGxlZ2VuZDogewogICAgLy8gVHJ5ICdob3Jpem9udGFsJwogICAgb3JpZW50OiAndmVydGljYWwnLAogICAgcmlnaHQ6IDEwLAogICAgdG9wOiAnY2VudGVyJwogIH0sCiAgZGF0YXNldDogewogICAgc291cmNlOiBbCiAgICAgIFsncHJvZHVjdCcsICcyMDE1JywgJzIwMTYnLCAnMjAxNyddLAogICAgICBbJ01hdGNoYSBMYXR0ZScsIDQzLjMsIDg1LjgsIDkzLjddLAogICAgICBbJ01pbGsgVGVhJywgODMuMSwgNzMuNCwgNTUuMV0sCiAgICAgIFsnQ2hlZXNlIENvY29hJywgODYuNCwgNjUuMiwgODIuNV0sCiAgICAgIFsnV2FsbnV0IEJyb3duaWUnLCA3Mi40LCA1My45LCAzOS4xXQogICAgXQogIH0sCiAgeEF4aXM6IHsgdHlwZTogJ2NhdGVnb3J5JyB9LAogIHlBeGlzOiB7fSwKICBzZXJpZXM6IFt7IHR5cGU6ICdiYXInIH0sIHsgdHlwZTogJ2JhcicgfSwgeyB0eXBlOiAnYmFyJyB9XQp9Ow\'" v-bind="{}" />\n<p>对于图例较多时,可以使用可滚动翻页的图例</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIGxlZ2VuZDogewogICAgdHlwZTogJ3Njcm9sbCcsCiAgICBvcmllbnQ6ICd2ZXJ0aWNhbCcsCiAgICByaWdodDogMTAsCiAgICB0b3A6IDIwLAogICAgYm90dG9tOiAyMCwKICAgIGRhdGE6IFsn5Zu-5L6L5LiAJywgJ-WbvuS-i-S6jCcsICflm77kvovkuIknIC8qIC4uLiAqLywgLCAn5Zu-5L6LbiddCiAgICAvLyAuLi4KICB9CiAgLy8gLi4uCn07\'" line-highlights="\'\'" />\n<h2 id="%E6%A0%B7%E5%BC%8F" tabindex="-1">样式</h2>\n<p>在深色系背景下、为了方便阅读,建议给图例加上半透明的浅色背景层,文字颜色设置为浅色。</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIGxlZ2VuZDogewogICAgZGF0YTogWyflm77kvovkuIAnLCAn5Zu-5L6L5LqMJywgJ-WbvuS-i-S4iSddLAogICAgYmFja2dyb3VuZENvbG9yOiAnI2NjYycsCiAgICB0ZXh0U3R5bGU6IHsKICAgICAgY29sb3I6ICcjY2NjJwogICAgICAvLyAuLi4KICAgIH0KICAgIC8vIC4uLgogIH0KICAvLyAuLi4KfTs\'" line-highlights="\'\'" />\n<p>图例的颜色标签有很多种设计方式、针对不同的图表、图例样式也会有所不同。</p>\n<img max-width="830" width="80%" height="80%" src="images/design/legend/charts_sign_img04.png" />\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIGxlZ2VuZDogewogICAgZGF0YTogWyflm77kvovkuIAnLCAn5Zu-5L6L5LqMJywgJ-WbvuS-i-S4iSddLAogICAgaWNvbjogJ3JlY3QnCiAgICAvLyAuLi4KICB9CiAgLy8gLi4uCn07\'" line-highlights="\'\'" />\n<h2 id="%E4%BA%A4%E4%BA%92" tabindex="-1">交互</h2>\n<p>根据场景需要,图例可支持交互操作,点击控制显示或隐藏对应的数据列;</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIGxlZ2VuZDogewogICAgZGF0YTogWyflm77kvovkuIAnLCAn5Zu-5L6L5LqMJywgJ-WbvuS-i-S4iSddLAogICAgc2VsZWN0ZWQ6IHsKICAgICAg5Zu-5L6L5LiAOiB0cnVlLAogICAgICDlm77kvovkuow6IHRydWUsCiAgICAgIOWbvuS-i-S4iTogZmFsc2UKICAgIH0KICAgIC8vIC4uLgogIH0KICAvLyAuLi4KfTs\'" line-highlights="\'\'" />\n<h2 id="%E5%9B%BE%E4%BE%8B%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9" tabindex="-1">图例注意事项</h2>\n<p>图例要注意视情况使用,有些双轴图包含了多种图表类型,不同类型的图例样式要有所区分。</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIGxlZ2VuZDogewogICAgZGF0YTogWwogICAgICB7CiAgICAgICAgbmFtZTogJ-WbvuS-i-S4gCcsCiAgICAgICAgaWNvbjogJ3JlY3QnCiAgICAgIH0sCiAgICAgIHsKICAgICAgICBuYW1lOiAn5Zu-5L6L5LqMJywKICAgICAgICBpY29uOiAnY2lyY2xlJwogICAgICB9LAogICAgICB7CiAgICAgICAgbmFtZTogJ-WbvuS-i-S4iScsCiAgICAgICAgaWNvbjogJ3BpbicKICAgICAgfQogICAgXQogICAgLy8gLi4uCiAgfSwKICBzZXJpZXM6IFsKICAgIHsKICAgICAgbmFtZTogJ-WbvuS-i-S4gCcKICAgICAgLy8gLi4uCiAgICB9LAogICAgewogICAgICBuYW1lOiAn5Zu-5L6L5LqMJwogICAgICAvLyAuLi4KICAgIH0sCiAgICB7CiAgICAgIG5hbWU6ICflm77kvovkuIknCiAgICAgIC8vIC4uLgogICAgfQogIF0KICAvLyAuLi4KfTs\'" line-highlights="\'\'" />\n<p>当图表只有一种数据信息时,用图表标题说明数据信息即可。建议此时不要加上图例。</p>\n',postPath:"zh/concepts/legend",title:"图例 - 概念篇"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:d},{title:"入门篇",dir:r,children:[{title:"获取 ECharts",dir:l},{title:"在项目中引入 ECharts",dir:g},{title:"资源列表",dir:a,draft:i},{title:"寻求帮助",dir:n},{title:"版本特性",dir:o,children:[{title:"ECharts 6 特性介绍",dir:C},{title:"v5 升级 v6 指南",dir:s},{title:"5.0",dir:I},{title:"v4 升级 v5 指南",dir:c},{title:5.2,dir:A},{title:5.3,dir:h},{title:5.4,dir:u},{title:5.5,dir:p},{title:5.6,dir:L}]}]},{title:"概念篇",dir:b,children:[{title:"图表容器及大小",dir:m},{title:"配置项",dir:v,draft:i},{title:"系列",dir:B,draft:i},{title:"样式",dir:w},{title:"数据集",dir:y},{title:"数据转换",dir:f},{title:"坐标系",dir:S,draft:i},{title:"坐标轴",dir:Z},{title:"视觉映射",dir:e},{title:"图例",dir:J},{title:"事件与行为",dir:G}]},{title:"应用篇",dir:E,children:[{title:"常用图表类型",dir:W,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:D},{title:"堆叠柱状图",dir:k},{title:"动态排序柱状图",dir:M},{title:"极坐标系柱状图",dir:H,draft:i},{title:"阶梯瀑布图",dir:V},{title:"视觉映射的柱状图",dir:e,draft:i}]},{title:"折线图",dir:Y,children:[{title:"基础折线图",dir:x},{title:"堆叠折线图",dir:F},{title:"区域面积图",dir:K},{title:"平滑曲线图",dir:N},{title:"阶梯线图",dir:j}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:T},{title:"圆环图",dir:O},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:P,children:[{title:"基础散点图",dir:X}]}]},{title:"常用组件",dir:R,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:z}]}]},{title:"移动端优化",dir:t,draft:i},{title:"跨平台方案",dir:Q,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:U},{title:"数据下钻",dir:_,draft:i}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:q}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:ii}]},{title:"交互",dir:ti,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:ei,draft:i},{title:"智能指针吸附",dir:di}]}]},{title:"最佳实践",dir:ri,children:[{title:"移动端优化",dir:t,draft:i},{title:li,dir:gi},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:ai}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:ni}]}],en:[{title:"Get Started",dir:d},{title:"Basics",dir:r,children:[{title:"Download ECharts",dir:l},{title:"Import ECharts",dir:g},{title:"Resources",dir:a,draft:i},{title:"Get Help",dir:n},{title:"What's New",dir:o,children:[{title:"ECharts 6 Features",dir:C},{title:"Migration from v5 to v6",dir:s},{title:"5.0",dir:I},{title:"Migration from v4 to v5",dir:c},{title:5.2,dir:A},{title:5.3,dir:h},{title:5.4,dir:u},{title:5.5,dir:p},{title:5.6,dir:L}]}]},{title:"Concepts",dir:b,children:[{title:"Chart Container",dir:m},{title:"Chart Option",dir:v,draft:i},{title:"Series",dir:B,draft:i},{title:"Style",dir:w},{title:"Dataset",dir:y},{title:"Data Transform",dir:f},{title:"Coordinate",dir:S,draft:i},{title:"Axis",dir:Z},{title:"Visual Mapping",dir:e},{title:"Legend",dir:J},{title:"Event and Action",dir:G}]},{title:"How To Guides",dir:E,children:[{title:"Common Charts",dir:W,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:D},{title:"Stacked Bar",dir:k},{title:"Bar Racing",dir:M},{title:"Bar Polar",dir:H,draft:i},{title:"Waterfall",dir:V}]},{title:"Line",dir:Y,children:[{title:"Basic Line",dir:x},{title:"Stacked Line",dir:F},{title:"Area Chart",dir:K},{title:"Smoothed Line",dir:N},{title:"Step Line",dir:j}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:T},{title:"Ring Style",dir:O},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:P,children:[{title:"Basic Scatter",dir:X}]}]},{title:"Common Components",dir:R,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:z}]}]},{title:"Mobile",dir:t,draft:i},{title:"Cross Platform",dir:Q,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:U},{title:"Drilldown",dir:_,draft:i}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:q}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:ii}]},{title:"Interaction",dir:ti,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:ei,draft:i},{title:"Intelligent Pointer Snapping",dir:di}]}]},{title:"Best Practices",dir:ri,children:[{title:"Mobile Optimization",dir:t,draft:i},{title:li,dir:gi},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:ai}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:ni}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:i,routePath:"/zh/concepts/legend",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/zh/concepts/style/index.html b/docs/zh/concepts/style/index.html
new file mode 100644
index 0000000..f168873
--- /dev/null
+++ b/docs/zh/concepts/style/index.html
@@ -0,0 +1,458 @@
+<!doctype html>
+<html data-n-head-ssr lang="zh-CN" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh-CN%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>样式 - 概念篇 - 使用手册 - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="zh"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/zh/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/zh/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/zh/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/zh/index.html" class="navbar-brand"><img src="https://echarts.apache.org/zh/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/zh/index.html">首页</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">文档<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/feature.html">特性</a></li><li><a href="https://echarts.apache.org/handbook/zh/get-started/">使用手册</a></li><li><a href="https://echarts.apache.org/zh/api.html">API</a></li><li><a href="https://echarts.apache.org/zh/option.html">配置项手册</a></li><li><a href="https://echarts.apache.org/zh/changelog.html">版本记录</a></li><li><a href="https://echarts.apache.org/zh/faq.html">常见问题</a></li><li><a href="https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide">v6 升级指南</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">下载<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/download.html">下载</a></li><li><a href="https://echarts.apache.org/zh/download-theme.html">主题下载</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">自定义系列下载<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/download-extension.html">扩展下载</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/zh/index.html">示例</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">资源<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/spreadsheet.html">表格工具</a></li><li><a href="https://echarts.apache.org/zh/theme-builder.html">主题构建工具</a></li><li><a href="https://echarts.apache.org/zh/cheat-sheet.html">术语速查手册</a></li><li><a href="https://echarts.apache.org/zh/resources.html">更多资源</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">社区<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/events.html">活动</a></li><li><a href="https://echarts.apache.org/zh/committers.html">贡献者列表</a></li><li><a href="https://echarts.apache.org/zh/maillist.html">邮件列表</a></li><li><a href="https://echarts.apache.org/zh/contributing.html">如何贡献</a></li><li><a href="https://echarts.apache.org/zh/dependencies.html">依赖项</a></li><li><a href="https://echarts.apache.org/zh/coding-standard.html">代码规范</a></li><li><a href="https://github.com/apache/echarts" target="_blank">源码(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/security.html">安全</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">版权<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">活动<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">捐赠<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">鸣谢<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("en")'>EN</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/zh/get-started" class="nav-link"><span class="title">快速上手</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">入门篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/basics/download" class="nav-link"><span class="title">获取 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/import" class="nav-link"><span class="title">在项目中引入 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/basics/help" class="nav-link"><span class="title">寻求帮助</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">版本特性</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 特性介绍</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">v5 升级 v6 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">v4 升级 v5 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">概念篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/concepts/chart-size" class="nav-link"><span class="title">图表容器及大小</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/style" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">样式</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/dataset" class="nav-link"><span class="title">数据集</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/data-transform" class="nav-link"><span class="title">数据转换</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/axis" class="nav-link"><span class="title">坐标轴</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/visual-map" class="nav-link"><span class="title">视觉映射</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/legend" class="nav-link"><span class="title">图例</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/event" class="nav-link"><span class="title">事件与行为</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">应用篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">常用图表类型</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">柱状图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">基础柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">堆叠柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">动态排序柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">阶梯瀑布图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">折线图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">基础折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">堆叠折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/area-line" class="nav-link"><span class="title">区域面积图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">平滑曲线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/step-line" class="nav-link"><span class="title">阶梯线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">饼图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">基础饼图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">圆环图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/rose" class="nav-link"><span class="title">南丁格尔图(玫瑰图)</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">散点图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">基础散点图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">常用组件</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">地理坐标系(Geo)</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG 底图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">跨平台方案</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/server" class="nav-link"><span class="title">服务端渲染</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/wechat-app" class="nav-link"><span class="title">微信小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/baidu-app" class="nav-link"><span class="title">百度智能小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">数据处理</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/data/dynamic-data" class="nav-link"><span class="title">动态的异步数据</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">标签</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/label/rich-text" class="nav-link"><span class="title">富文本标签</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">动画</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/animation/transition" class="nav-link"><span class="title">数据过渡动画</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">交互</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/drag" class="nav-link"><span class="title">拖拽的实现</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">智能指针吸附</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">最佳实践</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/aria" class="nav-link"><span class="title">无障碍访问</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/security" class="nav-link"><span class="title">安全指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">编辑本文档</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/meta/edit-guide" class="nav-link"><span class="title">文档编辑指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="echarts-%E4%B8%AD%E7%9A%84%E6%A0%B7%E5%BC%8F%E7%AE%80%E4%BB%8B" tabindex="-1">ECharts 中的样式简介</h1> <p>本文主要是大略概述,用哪些方法,可以在 Apache ECharts<sup>TM</sup> 中设置样式,改变图形元素或者文字的颜色、明暗、大小等。</p> <blockquote><p>为了让表述更通俗易懂,我们在这里用了“样式”这种可能不是很符合数据可视化思维的词</p></blockquote> <p>本文介绍这几种方式,他们的功能范畴可能会有交叉(即同一种细节的效果可能可以用不同的方式实现),但是他们各有各的场景偏好。</p> <ul><li>颜色主题(Theme)</li> <li>调色盘</li> <li>直接样式设置(itemStyle、lineStyle、areaStyle、label、...)</li> <li>视觉映射(visualMap)</li></ul> <h2 id="%E9%A2%9C%E8%89%B2%E4%B8%BB%E9%A2%98%EF%BC%88theme%EF%BC%89" tabindex="-1">颜色主题(Theme)</h2> <p>最简单的更改全局样式的方式,是直接采用颜色主题(theme)。例如,在 <a href="https://echarts.apache.org/examples">示例集合</a> 中,可以通过切换深色模式,直接看到采用主题的效果。</p> <p>ECharts5 除了一贯的默认主题外,还内置了<code>'dark'</code>主题。可以像这样切换成深色模式:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">var</span> chart <span class="token operator">=</span> echarts<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span>dom<span class="token punctuation">,</span> <span class="token string">'dark'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>其他的主题,没有内置在 ECharts 中,需要自己加载。这些主题可以在 <a href="https://echarts.apache.org/theme-builder.html">主题编辑器</a> 里访问到。也可以使用这个主题编辑器,自己编辑主题。下载下来的主题可以这样使用:</p> <p>如果主题保存为 JSON 文件,则需要自行加载和注册,例如:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token comment">// 假设主题名称是 "vintage"</span>
+<span class="token function">fetch</span><span class="token punctuation">(</span><span class="token string">'theme/vintage.json'</span><span class="token punctuation">)</span>
+  <span class="token punctuation">.</span><span class="token function">then</span><span class="token punctuation">(</span><span class="token parameter">r</span> <span class="token operator">=></span> r<span class="token punctuation">.</span><span class="token function">json</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
+  <span class="token punctuation">.</span><span class="token function">then</span><span class="token punctuation">(</span><span class="token parameter">theme</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
+    echarts<span class="token punctuation">.</span><span class="token function">registerTheme</span><span class="token punctuation">(</span><span class="token string">'vintage'</span><span class="token punctuation">,</span> theme<span class="token punctuation">)</span><span class="token punctuation">;</span>
+    <span class="token keyword">var</span> chart <span class="token operator">=</span> echarts<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span>dom<span class="token punctuation">,</span> <span class="token string">'vintage'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+  <span class="token punctuation">}</span><span class="token punctuation">)</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>如果保存为 UMD 格式的 JS 文件,文件内部已经做了自注册,直接引入 JS 即可:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token comment">// HTML 引入 vintage.js 文件后(假设主题名称是 "vintage")</span>
+<span class="token keyword">var</span> chart <span class="token operator">=</span> echarts<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span>dom<span class="token punctuation">,</span> <span class="token string">'vintage'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token comment">// ...</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="%E8%B0%83%E8%89%B2%E7%9B%98" tabindex="-1">调色盘</h2> <p>调色盘,可以在 option 中设置。它给定了一组颜色,图形、系列会自动从其中选择颜色。
+可以设置全局的调色盘,也可以设置系列自己专属的调色盘。</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token comment">// 全局调色盘。</span>
+  <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token string">'#c23531'</span><span class="token punctuation">,</span>
+    <span class="token string">'#2f4554'</span><span class="token punctuation">,</span>
+    <span class="token string">'#61a0a8'</span><span class="token punctuation">,</span>
+    <span class="token string">'#d48265'</span><span class="token punctuation">,</span>
+    <span class="token string">'#91c7ae'</span><span class="token punctuation">,</span>
+    <span class="token string">'#749f83'</span><span class="token punctuation">,</span>
+    <span class="token string">'#ca8622'</span><span class="token punctuation">,</span>
+    <span class="token string">'#bda29a'</span><span class="token punctuation">,</span>
+    <span class="token string">'#6e7074'</span><span class="token punctuation">,</span>
+    <span class="token string">'#546570'</span><span class="token punctuation">,</span>
+    <span class="token string">'#c4ccd3'</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token comment">// 此系列自己的调色盘。</span>
+      <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token string">'#dd6b66'</span><span class="token punctuation">,</span>
+        <span class="token string">'#759aa0'</span><span class="token punctuation">,</span>
+        <span class="token string">'#e69d87'</span><span class="token punctuation">,</span>
+        <span class="token string">'#8dc1a9'</span><span class="token punctuation">,</span>
+        <span class="token string">'#ea7e53'</span><span class="token punctuation">,</span>
+        <span class="token string">'#eedd78'</span><span class="token punctuation">,</span>
+        <span class="token string">'#73a373'</span><span class="token punctuation">,</span>
+        <span class="token string">'#73b9bc'</span><span class="token punctuation">,</span>
+        <span class="token string">'#7289ab'</span><span class="token punctuation">,</span>
+        <span class="token string">'#91ca8c'</span><span class="token punctuation">,</span>
+        <span class="token string">'#f49f42'</span>
+      <span class="token punctuation">]</span>
+      <span class="token comment">// ...</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'pie'</span><span class="token punctuation">,</span>
+      <span class="token comment">// 此系列自己的调色盘。</span>
+      <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token string">'#37A2DA'</span><span class="token punctuation">,</span>
+        <span class="token string">'#32C5E9'</span><span class="token punctuation">,</span>
+        <span class="token string">'#67E0E3'</span><span class="token punctuation">,</span>
+        <span class="token string">'#9FE6B8'</span><span class="token punctuation">,</span>
+        <span class="token string">'#FFDB5C'</span><span class="token punctuation">,</span>
+        <span class="token string">'#ff9f7f'</span><span class="token punctuation">,</span>
+        <span class="token string">'#fb7293'</span><span class="token punctuation">,</span>
+        <span class="token string">'#E062AE'</span><span class="token punctuation">,</span>
+        <span class="token string">'#E690D1'</span><span class="token punctuation">,</span>
+        <span class="token string">'#e7bcf3'</span><span class="token punctuation">,</span>
+        <span class="token string">'#9d96f5'</span><span class="token punctuation">,</span>
+        <span class="token string">'#8378EA'</span><span class="token punctuation">,</span>
+        <span class="token string">'#96BFFF'</span>
+      <span class="token punctuation">]</span>
+      <span class="token comment">// ...</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="%E7%9B%B4%E6%8E%A5%E7%9A%84%E6%A0%B7%E5%BC%8F%E8%AE%BE%E7%BD%AE" tabindex="-1">直接的样式设置</h2> <p>直接的样式设置是比较常用设置方式。纵观 ECharts 的 <a href="https://echarts.apache.org/option.html#">option</a> 中,很多地方可以设置 <a href="https://echarts.apache.org/option.html#series-bar.itemStyle">itemStyle</a>、<a href="https://echarts.apache.org/option.html#series-line.lineStyle">lineStyle</a>、<a href="https://echarts.apache.org/option.html#series-line.areaStyle">areaStyle</a>、<a href="https://echarts.apache.org/option.html#series-bar.label">label</a> 等等。这些的地方可以直接设置图形元素的颜色、线宽、点的大小、标签的文字、标签的样式等等。</p> <p>一般来说,ECharts 的各个系列和组件,都遵从这些命名习惯,虽然不同图表和组件中,<code>itemStyle</code>、<code>label</code> 等可能出现在不同的地方。</p> <p>在下面例子中我们给气泡图设置了阴影,渐变色等复杂的样式,你可以修改代码中的样式看修改后的效果:</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">var data = [
+  [
+    [28604, 77, 17096869, 'Australia', 1990],
+    [31163, 77.4, 27662440, 'Canada', 1990],
+    [1516, 68, 1154605773, 'China', 1990],
+    [13670, 74.7, 10582082, 'Cuba', 1990],
+    [28599, 75, 4986705, 'Finland', 1990],
+    [29476, 77.1, 56943299, 'France', 1990],
+    [31476, 75.4, 78958237, 'Germany', 1990],
+    [28666, 78.1, 254830, 'Iceland', 1990],
+    [1777, 57.7, 870601776, 'India', 1990],
+    [29550, 79.1, 122249285, 'Japan', 1990],
+    [2076, 67.9, 20194354, 'North Korea', 1990],
+    [12087, 72, 42972254, 'South Korea', 1990],
+    [24021, 75.4, 3397534, 'New Zealand', 1990],
+    [43296, 76.8, 4240375, 'Norway', 1990],
+    [10088, 70.8, 38195258, 'Poland', 1990],
+    [19349, 69.6, 147568552, 'Russia', 1990],
+    [10670, 67.3, 53994605, 'Turkey', 1990],
+    [26424, 75.7, 57110117, 'United Kingdom', 1990],
+    [37062, 75.4, 252847810, 'United States', 1990]
+  ],
+  [
+    [44056, 81.8, 23968973, 'Australia', 2015],
+    [43294, 81.7, 35939927, 'Canada', 2015],
+    [13334, 76.9, 1376048943, 'China', 2015],
+    [21291, 78.5, 11389562, 'Cuba', 2015],
+    [38923, 80.8, 5503457, 'Finland', 2015],
+    [37599, 81.9, 64395345, 'France', 2015],
+    [44053, 81.1, 80688545, 'Germany', 2015],
+    [42182, 82.8, 329425, 'Iceland', 2015],
+    [5903, 66.8, 1311050527, 'India', 2015],
+    [36162, 83.5, 126573481, 'Japan', 2015],
+    [1390, 71.4, 25155317, 'North Korea', 2015],
+    [34644, 80.7, 50293439, 'South Korea', 2015],
+    [34186, 80.6, 4528526, 'New Zealand', 2015],
+    [64304, 81.6, 5210967, 'Norway', 2015],
+    [24787, 77.3, 38611794, 'Poland', 2015],
+    [23038, 73.13, 143456918, 'Russia', 2015],
+    [19360, 76.5, 78665830, 'Turkey', 2015],
+    [38225, 81.4, 64715810, 'United Kingdom', 2015],
+    [53354, 79.1, 321773631, 'United States', 2015]
+  ]
+];
+
+option = {
+  backgroundColor: {
+    type: 'radial',
+    x: 0.3,
+    y: 0.3,
+    r: 0.8,
+    colorStops: [
+      {
+        offset: 0,
+        color: '#f7f8fa'
+      },
+      {
+        offset: 1,
+        color: '#cdd0d5'
+      }
+    ]
+  },
+  grid: {
+    left: 10,
+    containLabel: true,
+    bottom: 10,
+    top: 10,
+    right: 30
+  },
+  xAxis: {
+    splitLine: {
+      show: false
+    }
+  },
+  yAxis: {
+    splitLine: {
+      show: false
+    },
+    scale: true
+  },
+  series: [
+    {
+      name: '1990',
+      data: data[0],
+      type: 'scatter',
+      symbolSize: function(data) {
+        return Math.sqrt(data[2]) / 5e2;
+      },
+      emphasis: {
+        focus: 'series',
+        label: {
+          show: true,
+          formatter: function(param) {
+            return param.data[3];
+          },
+          position: 'top'
+        }
+      },
+      itemStyle: {
+        shadowBlur: 10,
+        shadowColor: 'rgba(120, 36, 50, 0.5)',
+        shadowOffsetY: 5,
+        color: {
+          type: 'radial',
+          x: 0.4,
+          y: 0.3,
+          r: 1,
+          colorStops: [
+            {
+              offset: 0,
+              color: 'rgb(251, 118, 123)'
+            },
+            {
+              offset: 1,
+              color: 'rgb(204, 46, 72)'
+            }
+          ]
+        }
+      }
+    },
+    {
+      name: '2015',
+      data: data[1],
+      type: 'scatter',
+      symbolSize: function(data) {
+        return Math.sqrt(data[2]) / 5e2;
+      },
+      emphasis: {
+        focus: 'series',
+        label: {
+          show: true,
+          formatter: function(param) {
+            return param.data[3];
+          },
+          position: 'top'
+        }
+      },
+      itemStyle: {
+        shadowBlur: 10,
+        shadowColor: 'rgba(25, 100, 150, 0.5)',
+        shadowOffsetY: 5,
+        color: {
+          type: 'radial',
+          x: 0.4,
+          y: 0.3,
+          r: 1,
+          colorStops: [
+            {
+              offset: 0,
+              color: 'rgb(129, 227, 238)'
+            },
+            {
+              offset: 1,
+              color: 'rgb(25, 183, 207)'
+            }
+          ]
+        }
+      }
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor"><span class="token keyword">var</span> data <span class="token operator">=</span> <span class="token punctuation">[</span>
+  <span class="token punctuation">[</span>
+    <span class="token punctuation">[</span><span class="token number">28604</span><span class="token punctuation">,</span> <span class="token number">77</span><span class="token punctuation">,</span> <span class="token number">17096869</span><span class="token punctuation">,</span> <span class="token string">'Australia'</span><span class="token punctuation">,</span> <span class="token number">1990</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">31163</span><span class="token punctuation">,</span> <span class="token number">77.4</span><span class="token punctuation">,</span> <span class="token number">27662440</span><span class="token punctuation">,</span> <span class="token string">'Canada'</span><span class="token punctuation">,</span> <span class="token number">1990</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">1516</span><span class="token punctuation">,</span> <span class="token number">68</span><span class="token punctuation">,</span> <span class="token number">1154605773</span><span class="token punctuation">,</span> <span class="token string">'China'</span><span class="token punctuation">,</span> <span class="token number">1990</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">13670</span><span class="token punctuation">,</span> <span class="token number">74.7</span><span class="token punctuation">,</span> <span class="token number">10582082</span><span class="token punctuation">,</span> <span class="token string">'Cuba'</span><span class="token punctuation">,</span> <span class="token number">1990</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">28599</span><span class="token punctuation">,</span> <span class="token number">75</span><span class="token punctuation">,</span> <span class="token number">4986705</span><span class="token punctuation">,</span> <span class="token string">'Finland'</span><span class="token punctuation">,</span> <span class="token number">1990</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">29476</span><span class="token punctuation">,</span> <span class="token number">77.1</span><span class="token punctuation">,</span> <span class="token number">56943299</span><span class="token punctuation">,</span> <span class="token string">'France'</span><span class="token punctuation">,</span> <span class="token number">1990</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">31476</span><span class="token punctuation">,</span> <span class="token number">75.4</span><span class="token punctuation">,</span> <span class="token number">78958237</span><span class="token punctuation">,</span> <span class="token string">'Germany'</span><span class="token punctuation">,</span> <span class="token number">1990</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">28666</span><span class="token punctuation">,</span> <span class="token number">78.1</span><span class="token punctuation">,</span> <span class="token number">254830</span><span class="token punctuation">,</span> <span class="token string">'Iceland'</span><span class="token punctuation">,</span> <span class="token number">1990</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">1777</span><span class="token punctuation">,</span> <span class="token number">57.7</span><span class="token punctuation">,</span> <span class="token number">870601776</span><span class="token punctuation">,</span> <span class="token string">'India'</span><span class="token punctuation">,</span> <span class="token number">1990</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">29550</span><span class="token punctuation">,</span> <span class="token number">79.1</span><span class="token punctuation">,</span> <span class="token number">122249285</span><span class="token punctuation">,</span> <span class="token string">'Japan'</span><span class="token punctuation">,</span> <span class="token number">1990</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">2076</span><span class="token punctuation">,</span> <span class="token number">67.9</span><span class="token punctuation">,</span> <span class="token number">20194354</span><span class="token punctuation">,</span> <span class="token string">'North Korea'</span><span class="token punctuation">,</span> <span class="token number">1990</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">12087</span><span class="token punctuation">,</span> <span class="token number">72</span><span class="token punctuation">,</span> <span class="token number">42972254</span><span class="token punctuation">,</span> <span class="token string">'South Korea'</span><span class="token punctuation">,</span> <span class="token number">1990</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">24021</span><span class="token punctuation">,</span> <span class="token number">75.4</span><span class="token punctuation">,</span> <span class="token number">3397534</span><span class="token punctuation">,</span> <span class="token string">'New Zealand'</span><span class="token punctuation">,</span> <span class="token number">1990</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">43296</span><span class="token punctuation">,</span> <span class="token number">76.8</span><span class="token punctuation">,</span> <span class="token number">4240375</span><span class="token punctuation">,</span> <span class="token string">'Norway'</span><span class="token punctuation">,</span> <span class="token number">1990</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">10088</span><span class="token punctuation">,</span> <span class="token number">70.8</span><span class="token punctuation">,</span> <span class="token number">38195258</span><span class="token punctuation">,</span> <span class="token string">'Poland'</span><span class="token punctuation">,</span> <span class="token number">1990</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">19349</span><span class="token punctuation">,</span> <span class="token number">69.6</span><span class="token punctuation">,</span> <span class="token number">147568552</span><span class="token punctuation">,</span> <span class="token string">'Russia'</span><span class="token punctuation">,</span> <span class="token number">1990</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">10670</span><span class="token punctuation">,</span> <span class="token number">67.3</span><span class="token punctuation">,</span> <span class="token number">53994605</span><span class="token punctuation">,</span> <span class="token string">'Turkey'</span><span class="token punctuation">,</span> <span class="token number">1990</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">26424</span><span class="token punctuation">,</span> <span class="token number">75.7</span><span class="token punctuation">,</span> <span class="token number">57110117</span><span class="token punctuation">,</span> <span class="token string">'United Kingdom'</span><span class="token punctuation">,</span> <span class="token number">1990</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">37062</span><span class="token punctuation">,</span> <span class="token number">75.4</span><span class="token punctuation">,</span> <span class="token number">252847810</span><span class="token punctuation">,</span> <span class="token string">'United States'</span><span class="token punctuation">,</span> <span class="token number">1990</span><span class="token punctuation">]</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token punctuation">[</span>
+    <span class="token punctuation">[</span><span class="token number">44056</span><span class="token punctuation">,</span> <span class="token number">81.8</span><span class="token punctuation">,</span> <span class="token number">23968973</span><span class="token punctuation">,</span> <span class="token string">'Australia'</span><span class="token punctuation">,</span> <span class="token number">2015</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">43294</span><span class="token punctuation">,</span> <span class="token number">81.7</span><span class="token punctuation">,</span> <span class="token number">35939927</span><span class="token punctuation">,</span> <span class="token string">'Canada'</span><span class="token punctuation">,</span> <span class="token number">2015</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">13334</span><span class="token punctuation">,</span> <span class="token number">76.9</span><span class="token punctuation">,</span> <span class="token number">1376048943</span><span class="token punctuation">,</span> <span class="token string">'China'</span><span class="token punctuation">,</span> <span class="token number">2015</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">21291</span><span class="token punctuation">,</span> <span class="token number">78.5</span><span class="token punctuation">,</span> <span class="token number">11389562</span><span class="token punctuation">,</span> <span class="token string">'Cuba'</span><span class="token punctuation">,</span> <span class="token number">2015</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">38923</span><span class="token punctuation">,</span> <span class="token number">80.8</span><span class="token punctuation">,</span> <span class="token number">5503457</span><span class="token punctuation">,</span> <span class="token string">'Finland'</span><span class="token punctuation">,</span> <span class="token number">2015</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">37599</span><span class="token punctuation">,</span> <span class="token number">81.9</span><span class="token punctuation">,</span> <span class="token number">64395345</span><span class="token punctuation">,</span> <span class="token string">'France'</span><span class="token punctuation">,</span> <span class="token number">2015</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">44053</span><span class="token punctuation">,</span> <span class="token number">81.1</span><span class="token punctuation">,</span> <span class="token number">80688545</span><span class="token punctuation">,</span> <span class="token string">'Germany'</span><span class="token punctuation">,</span> <span class="token number">2015</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">42182</span><span class="token punctuation">,</span> <span class="token number">82.8</span><span class="token punctuation">,</span> <span class="token number">329425</span><span class="token punctuation">,</span> <span class="token string">'Iceland'</span><span class="token punctuation">,</span> <span class="token number">2015</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">5903</span><span class="token punctuation">,</span> <span class="token number">66.8</span><span class="token punctuation">,</span> <span class="token number">1311050527</span><span class="token punctuation">,</span> <span class="token string">'India'</span><span class="token punctuation">,</span> <span class="token number">2015</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">36162</span><span class="token punctuation">,</span> <span class="token number">83.5</span><span class="token punctuation">,</span> <span class="token number">126573481</span><span class="token punctuation">,</span> <span class="token string">'Japan'</span><span class="token punctuation">,</span> <span class="token number">2015</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">1390</span><span class="token punctuation">,</span> <span class="token number">71.4</span><span class="token punctuation">,</span> <span class="token number">25155317</span><span class="token punctuation">,</span> <span class="token string">'North Korea'</span><span class="token punctuation">,</span> <span class="token number">2015</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">34644</span><span class="token punctuation">,</span> <span class="token number">80.7</span><span class="token punctuation">,</span> <span class="token number">50293439</span><span class="token punctuation">,</span> <span class="token string">'South Korea'</span><span class="token punctuation">,</span> <span class="token number">2015</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">34186</span><span class="token punctuation">,</span> <span class="token number">80.6</span><span class="token punctuation">,</span> <span class="token number">4528526</span><span class="token punctuation">,</span> <span class="token string">'New Zealand'</span><span class="token punctuation">,</span> <span class="token number">2015</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">64304</span><span class="token punctuation">,</span> <span class="token number">81.6</span><span class="token punctuation">,</span> <span class="token number">5210967</span><span class="token punctuation">,</span> <span class="token string">'Norway'</span><span class="token punctuation">,</span> <span class="token number">2015</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">24787</span><span class="token punctuation">,</span> <span class="token number">77.3</span><span class="token punctuation">,</span> <span class="token number">38611794</span><span class="token punctuation">,</span> <span class="token string">'Poland'</span><span class="token punctuation">,</span> <span class="token number">2015</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">23038</span><span class="token punctuation">,</span> <span class="token number">73.13</span><span class="token punctuation">,</span> <span class="token number">143456918</span><span class="token punctuation">,</span> <span class="token string">'Russia'</span><span class="token punctuation">,</span> <span class="token number">2015</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">19360</span><span class="token punctuation">,</span> <span class="token number">76.5</span><span class="token punctuation">,</span> <span class="token number">78665830</span><span class="token punctuation">,</span> <span class="token string">'Turkey'</span><span class="token punctuation">,</span> <span class="token number">2015</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">38225</span><span class="token punctuation">,</span> <span class="token number">81.4</span><span class="token punctuation">,</span> <span class="token number">64715810</span><span class="token punctuation">,</span> <span class="token string">'United Kingdom'</span><span class="token punctuation">,</span> <span class="token number">2015</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">53354</span><span class="token punctuation">,</span> <span class="token number">79.1</span><span class="token punctuation">,</span> <span class="token number">321773631</span><span class="token punctuation">,</span> <span class="token string">'United States'</span><span class="token punctuation">,</span> <span class="token number">2015</span><span class="token punctuation">]</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">]</span><span class="token punctuation">;</span>
+
+option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">backgroundColor</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'radial'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token number">0.3</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">y</span><span class="token operator">:</span> <span class="token number">0.3</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">r</span><span class="token operator">:</span> <span class="token number">0.8</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">colorStops</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token punctuation">{</span>
+        <span class="token literal-property property">offset</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'#f7f8fa'</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token punctuation">{</span>
+        <span class="token literal-property property">offset</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'#cdd0d5'</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">grid</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">left</span><span class="token operator">:</span> <span class="token number">10</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">containLabel</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">bottom</span><span class="token operator">:</span> <span class="token number">10</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">top</span><span class="token operator">:</span> <span class="token number">10</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">right</span><span class="token operator">:</span> <span class="token number">30</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">splitLine</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">false</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">splitLine</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">false</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">scale</span><span class="token operator">:</span> <span class="token boolean">true</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'1990'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> data<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'scatter'</span><span class="token punctuation">,</span>
+      <span class="token function-variable function">symbolSize</span><span class="token operator">:</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">data</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+        <span class="token keyword">return</span> Math<span class="token punctuation">.</span><span class="token function">sqrt</span><span class="token punctuation">(</span>data<span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token operator">/</span> <span class="token number">5e2</span><span class="token punctuation">;</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">emphasis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">focus</span><span class="token operator">:</span> <span class="token string">'series'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+          <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+          <span class="token function-variable function">formatter</span><span class="token operator">:</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">param</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+            <span class="token keyword">return</span> param<span class="token punctuation">.</span>data<span class="token punctuation">[</span><span class="token number">3</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
+          <span class="token punctuation">}</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">position</span><span class="token operator">:</span> <span class="token string">'top'</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">itemStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">shadowBlur</span><span class="token operator">:</span> <span class="token number">10</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">shadowColor</span><span class="token operator">:</span> <span class="token string">'rgba(120, 36, 50, 0.5)'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">shadowOffsetY</span><span class="token operator">:</span> <span class="token number">5</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+          <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'radial'</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token number">0.4</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">y</span><span class="token operator">:</span> <span class="token number">0.3</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">r</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">colorStops</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+            <span class="token punctuation">{</span>
+              <span class="token literal-property property">offset</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+              <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'rgb(251, 118, 123)'</span>
+            <span class="token punctuation">}</span><span class="token punctuation">,</span>
+            <span class="token punctuation">{</span>
+              <span class="token literal-property property">offset</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+              <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'rgb(204, 46, 72)'</span>
+            <span class="token punctuation">}</span>
+          <span class="token punctuation">]</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'2015'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> data<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'scatter'</span><span class="token punctuation">,</span>
+      <span class="token function-variable function">symbolSize</span><span class="token operator">:</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">data</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+        <span class="token keyword">return</span> Math<span class="token punctuation">.</span><span class="token function">sqrt</span><span class="token punctuation">(</span>data<span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token operator">/</span> <span class="token number">5e2</span><span class="token punctuation">;</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">emphasis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">focus</span><span class="token operator">:</span> <span class="token string">'series'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+          <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+          <span class="token function-variable function">formatter</span><span class="token operator">:</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">param</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+            <span class="token keyword">return</span> param<span class="token punctuation">.</span>data<span class="token punctuation">[</span><span class="token number">3</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
+          <span class="token punctuation">}</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">position</span><span class="token operator">:</span> <span class="token string">'top'</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">itemStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">shadowBlur</span><span class="token operator">:</span> <span class="token number">10</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">shadowColor</span><span class="token operator">:</span> <span class="token string">'rgba(25, 100, 150, 0.5)'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">shadowOffsetY</span><span class="token operator">:</span> <span class="token number">5</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+          <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'radial'</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token number">0.4</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">y</span><span class="token operator">:</span> <span class="token number">0.3</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">r</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">colorStops</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+            <span class="token punctuation">{</span>
+              <span class="token literal-property property">offset</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+              <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'rgb(129, 227, 238)'</span>
+            <span class="token punctuation">}</span><span class="token punctuation">,</span>
+            <span class="token punctuation">{</span>
+              <span class="token literal-property property">offset</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+              <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'rgb(25, 183, 207)'</span>
+            <span class="token punctuation">}</span>
+          <span class="token punctuation">]</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <h2 id="%E9%AB%98%E4%BA%AE%E7%9A%84%E6%A0%B7%E5%BC%8F%EF%BC%9Aemphasis" tabindex="-1">高亮的样式:emphasis</h2> <p>在鼠标悬浮到图形元素上时,一般会出现高亮的样式。默认情况下,高亮的样式是根据普通样式自动生成的。但是高亮的样式也可以自己定义,主要是通过 <a href="https://echarts.apache.org/option.html#series-bar.emphasis">emphasis</a> 属性来定制。<a href="https://echarts.apache.org/option.html#series-bar.emphasis">emphasis</a> 中的结构,和普通样式的结构相同,例如:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'scatter'</span><span class="token punctuation">,</span>
+
+    <span class="token comment">// 普通样式。</span>
+    <span class="token literal-property property">itemStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token comment">// 点的颜色。</span>
+      <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'red'</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+      <span class="token comment">// 标签的文字。</span>
+      <span class="token literal-property property">formatter</span><span class="token operator">:</span> <span class="token string">'This is a normal label.'</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+
+    <span class="token comment">// 高亮样式。</span>
+    <span class="token literal-property property">emphasis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">itemStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token comment">// 高亮时点的颜色。</span>
+        <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'blue'</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+        <span class="token comment">// 高亮时标签的文字。</span>
+        <span class="token literal-property property">formatter</span><span class="token operator">:</span> <span class="token string">'This is a emphasis label.'</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>注意:在 ECharts4 以前,高亮和普通样式的写法,是这样的:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'scatter'</span><span class="token punctuation">,</span>
+
+    <span class="token literal-property property">itemStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token comment">// 普通样式。</span>
+      <span class="token literal-property property">normal</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token comment">// 点的颜色。</span>
+        <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'red'</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token comment">// 高亮样式。</span>
+      <span class="token literal-property property">emphasis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token comment">// 高亮时点的颜色。</span>
+        <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'blue'</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+
+    <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token comment">// 普通样式。</span>
+      <span class="token literal-property property">normal</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+        <span class="token comment">// 标签的文字。</span>
+        <span class="token literal-property property">formatter</span><span class="token operator">:</span> <span class="token string">'This is a normal label.'</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token comment">// 高亮样式。</span>
+      <span class="token literal-property property">emphasis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+        <span class="token comment">// 高亮时标签的文字。</span>
+        <span class="token literal-property property">formatter</span><span class="token operator">:</span> <span class="token string">'This is a emphasis label.'</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>这种写法 <strong>仍然被兼容</strong>,但是,不再推荐。事实上,多数情况下,开发者只想配置普通状态下的样式,而使用默认的高亮样式。所以在 ECharts4 中,支持不写 <code>normal</code> 的配置方法(即前一个代码片段里的写法),使得配置项更扁平简单。</p> <h2 id="%E9%80%9A%E8%BF%87-visualmap-%E7%BB%84%E4%BB%B6%E8%AE%BE%E5%AE%9A%E6%A0%B7%E5%BC%8F" tabindex="-1">通过 visualMap 组件设定样式</h2> <p><a href="https://echarts.apache.org/option.html#visualMap">visualMap 组件</a> 能指定数据到颜色、图形尺寸的映射规则,详见 <a href="zh/concepts/visual-map">数据的视觉映射</a>。</p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">本文贡献者</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/zh/concepts/style.md" title="编辑本文" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">在 GitHub 上编辑本页</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a><a href="https://github.com/plainheart" target="_blank" class="post-contributor has-avatar"><img alt="plainheart" src="https://echarts.apache.org/en/images/people/plainheart.jpg" loading="lazy" decoding="async" fetchpriority="low"> <span>plainheart</span></a><a href="https://github.com/wangcheng0825" target="_blank" class="post-contributor"><!----> <span>wangcheng0825</span></a><a href="https://github.com/fuchunhui" target="_blank" class="post-contributor has-avatar"><img alt="fuchunhui" src="https://echarts.apache.org/en/images/people/付春辉.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>fuchunhui</span></a><a href="https://github.com/1335951413" target="_blank" class="post-contributor"><!----> <span>1335951413</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(g,I,C,i,A,t,e,l,d,r,a,s,o,n,c,h,w,y,M,p,m,N,b,B,D,L,z,O,T,E,G,Y,K,S,j,u,Z,J,W,k,v,x,F,X,H,f,U,V,R,Q,P,q,_,$,gg,Ig,Cg,ig,Ag,tg,eg,lg,dg){return{layout:"default",data:[{html:'<h1 id="echarts-%E4%B8%AD%E7%9A%84%E6%A0%B7%E5%BC%8F%E7%AE%80%E4%BB%8B" tabindex="-1">ECharts 中的样式简介</h1>\n<p>本文主要是大略概述,用哪些方法,可以在 Apache ECharts<sup>TM</sup> 中设置样式,改变图形元素或者文字的颜色、明暗、大小等。</p>\n<blockquote>\n<p>为了让表述更通俗易懂,我们在这里用了“样式”这种可能不是很符合数据可视化思维的词</p>\n</blockquote>\n<p>本文介绍这几种方式,他们的功能范畴可能会有交叉(即同一种细节的效果可能可以用不同的方式实现),但是他们各有各的场景偏好。</p>\n<ul>\n<li>颜色主题(Theme)</li>\n<li>调色盘</li>\n<li>直接样式设置(itemStyle、lineStyle、areaStyle、label、...)</li>\n<li>视觉映射(visualMap)</li>\n</ul>\n<h2 id="%E9%A2%9C%E8%89%B2%E4%B8%BB%E9%A2%98%EF%BC%88theme%EF%BC%89" tabindex="-1">颜色主题(Theme)</h2>\n<p>最简单的更改全局样式的方式,是直接采用颜色主题(theme)。例如,在 <a href="https://echarts.apache.org/examples">示例集合</a> 中,可以通过切换深色模式,直接看到采用主题的效果。</p>\n<p>ECharts5 除了一贯的默认主题外,还内置了<code>\'dark\'</code>主题。可以像这样切换成深色模式:</p>\n<md-code-block lang="js" code="\'dmFyIGNoYXJ0ID0gZWNoYXJ0cy5pbml0KGRvbSwgJ2RhcmsnKTs\'" line-highlights="\'\'" />\n<p>其他的主题,没有内置在 ECharts 中,需要自己加载。这些主题可以在 <a href="https://echarts.apache.org/theme-builder.html">主题编辑器</a> 里访问到。也可以使用这个主题编辑器,自己编辑主题。下载下来的主题可以这样使用:</p>\n<p>如果主题保存为 JSON 文件,则需要自行加载和注册,例如:</p>\n<md-code-block lang="js" code="\'Ly8g5YGH6K6-5Li76aKY5ZCN56ew5pivICJ2aW50YWdlIgpmZXRjaCgndGhlbWUvdmludGFnZS5qc29uJykKICAudGhlbihyID0-IHIuanNvbigpKQogIC50aGVuKHRoZW1lID0-IHsKICAgIGVjaGFydHMucmVnaXN0ZXJUaGVtZSgndmludGFnZScsIHRoZW1lKTsKICAgIHZhciBjaGFydCA9IGVjaGFydHMuaW5pdChkb20sICd2aW50YWdlJyk7CiAgfSk\'" line-highlights="\'\'" />\n<p>如果保存为 UMD 格式的 JS 文件,文件内部已经做了自注册,直接引入 JS 即可:</p>\n<md-code-block lang="js" code="\'Ly8gSFRNTCDlvJXlhaUgdmludGFnZS5qcyDmlofku7blkI7vvIjlgYforr7kuLvpopjlkI3np7DmmK8gInZpbnRhZ2Ui77yJCnZhciBjaGFydCA9IGVjaGFydHMuaW5pdChkb20sICd2aW50YWdlJyk7Ci8vIC4uLg\'" line-highlights="\'\'" />\n<h2 id="%E8%B0%83%E8%89%B2%E7%9B%98" tabindex="-1">调色盘</h2>\n<p>调色盘,可以在 option 中设置。它给定了一组颜色,图形、系列会自动从其中选择颜色。\n可以设置全局的调色盘,也可以设置系列自己专属的调色盘。</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIC8vIOWFqOWxgOiwg-iJsuebmOOAggogIGNvbG9yOiBbCiAgICAnI2MyMzUzMScsCiAgICAnIzJmNDU1NCcsCiAgICAnIzYxYTBhOCcsCiAgICAnI2Q0ODI2NScsCiAgICAnIzkxYzdhZScsCiAgICAnIzc0OWY4MycsCiAgICAnI2NhODYyMicsCiAgICAnI2JkYTI5YScsCiAgICAnIzZlNzA3NCcsCiAgICAnIzU0NjU3MCcsCiAgICAnI2M0Y2NkMycKICBdLAoKICBzZXJpZXM6IFsKICAgIHsKICAgICAgdHlwZTogJ2JhcicsCiAgICAgIC8vIOatpOezu-WIl-iHquW3seeahOiwg-iJsuebmOOAggogICAgICBjb2xvcjogWwogICAgICAgICcjZGQ2YjY2JywKICAgICAgICAnIzc1OWFhMCcsCiAgICAgICAgJyNlNjlkODcnLAogICAgICAgICcjOGRjMWE5JywKICAgICAgICAnI2VhN2U1MycsCiAgICAgICAgJyNlZWRkNzgnLAogICAgICAgICcjNzNhMzczJywKICAgICAgICAnIzczYjliYycsCiAgICAgICAgJyM3Mjg5YWInLAogICAgICAgICcjOTFjYThjJywKICAgICAgICAnI2Y0OWY0MicKICAgICAgXQogICAgICAvLyAuLi4KICAgIH0sCiAgICB7CiAgICAgIHR5cGU6ICdwaWUnLAogICAgICAvLyDmraTns7vliJfoh6rlt7HnmoTosIPoibLnm5jjgIIKICAgICAgY29sb3I6IFsKICAgICAgICAnIzM3QTJEQScsCiAgICAgICAgJyMzMkM1RTknLAogICAgICAgICcjNjdFMEUzJywKICAgICAgICAnIzlGRTZCOCcsCiAgICAgICAgJyNGRkRCNUMnLAogICAgICAgICcjZmY5ZjdmJywKICAgICAgICAnI2ZiNzI5MycsCiAgICAgICAgJyNFMDYyQUUnLAogICAgICAgICcjRTY5MEQxJywKICAgICAgICAnI2U3YmNmMycsCiAgICAgICAgJyM5ZDk2ZjUnLAogICAgICAgICcjODM3OEVBJywKICAgICAgICAnIzk2QkZGRicKICAgICAgXQogICAgICAvLyAuLi4KICAgIH0KICBdCn07\'" line-highlights="\'\'" />\n<h2 id="%E7%9B%B4%E6%8E%A5%E7%9A%84%E6%A0%B7%E5%BC%8F%E8%AE%BE%E7%BD%AE" tabindex="-1">直接的样式设置</h2>\n<p>直接的样式设置是比较常用设置方式。纵观 ECharts 的 <a href="https://echarts.apache.org/option.html#">option</a> 中,很多地方可以设置 <a href="https://echarts.apache.org/option.html#series-bar.itemStyle">itemStyle</a>、<a href="https://echarts.apache.org/option.html#series-line.lineStyle">lineStyle</a>、<a href="https://echarts.apache.org/option.html#series-line.areaStyle">areaStyle</a>、<a href="https://echarts.apache.org/option.html#series-bar.label">label</a> 等等。这些的地方可以直接设置图形元素的颜色、线宽、点的大小、标签的文字、标签的样式等等。</p>\n<p>一般来说,ECharts 的各个系列和组件,都遵从这些命名习惯,虽然不同图表和组件中,<code>itemStyle</code>、<code>label</code> 等可能出现在不同的地方。</p>\n<p>在下面例子中我们给气泡图设置了阴影,渐变色等复杂的样式,你可以修改代码中的样式看修改后的效果:</p>\n<md-live lang="js" code="\'dmFyIGRhdGEgPSBbCiAgWwogICAgWzI4NjA0LCA3NywgMTcwOTY4NjksICdBdXN0cmFsaWEnLCAxOTkwXSwKICAgIFszMTE2MywgNzcuNCwgMjc2NjI0NDAsICdDYW5hZGEnLCAxOTkwXSwKICAgIFsxNTE2LCA2OCwgMTE1NDYwNTc3MywgJ0NoaW5hJywgMTk5MF0sCiAgICBbMTM2NzAsIDc0LjcsIDEwNTgyMDgyLCAnQ3ViYScsIDE5OTBdLAogICAgWzI4NTk5LCA3NSwgNDk4NjcwNSwgJ0ZpbmxhbmQnLCAxOTkwXSwKICAgIFsyOTQ3NiwgNzcuMSwgNTY5NDMyOTksICdGcmFuY2UnLCAxOTkwXSwKICAgIFszMTQ3NiwgNzUuNCwgNzg5NTgyMzcsICdHZXJtYW55JywgMTk5MF0sCiAgICBbMjg2NjYsIDc4LjEsIDI1NDgzMCwgJ0ljZWxhbmQnLCAxOTkwXSwKICAgIFsxNzc3LCA1Ny43LCA4NzA2MDE3NzYsICdJbmRpYScsIDE5OTBdLAogICAgWzI5NTUwLCA3OS4xLCAxMjIyNDkyODUsICdKYXBhbicsIDE5OTBdLAogICAgWzIwNzYsIDY3LjksIDIwMTk0MzU0LCAnTm9ydGggS29yZWEnLCAxOTkwXSwKICAgIFsxMjA4NywgNzIsIDQyOTcyMjU0LCAnU291dGggS29yZWEnLCAxOTkwXSwKICAgIFsyNDAyMSwgNzUuNCwgMzM5NzUzNCwgJ05ldyBaZWFsYW5kJywgMTk5MF0sCiAgICBbNDMyOTYsIDc2LjgsIDQyNDAzNzUsICdOb3J3YXknLCAxOTkwXSwKICAgIFsxMDA4OCwgNzAuOCwgMzgxOTUyNTgsICdQb2xhbmQnLCAxOTkwXSwKICAgIFsxOTM0OSwgNjkuNiwgMTQ3NTY4NTUyLCAnUnVzc2lhJywgMTk5MF0sCiAgICBbMTA2NzAsIDY3LjMsIDUzOTk0NjA1LCAnVHVya2V5JywgMTk5MF0sCiAgICBbMjY0MjQsIDc1LjcsIDU3MTEwMTE3LCAnVW5pdGVkIEtpbmdkb20nLCAxOTkwXSwKICAgIFszNzA2MiwgNzUuNCwgMjUyODQ3ODEwLCAnVW5pdGVkIFN0YXRlcycsIDE5OTBdCiAgXSwKICBbCiAgICBbNDQwNTYsIDgxLjgsIDIzOTY4OTczLCAnQXVzdHJhbGlhJywgMjAxNV0sCiAgICBbNDMyOTQsIDgxLjcsIDM1OTM5OTI3LCAnQ2FuYWRhJywgMjAxNV0sCiAgICBbMTMzMzQsIDc2LjksIDEzNzYwNDg5NDMsICdDaGluYScsIDIwMTVdLAogICAgWzIxMjkxLCA3OC41LCAxMTM4OTU2MiwgJ0N1YmEnLCAyMDE1XSwKICAgIFszODkyMywgODAuOCwgNTUwMzQ1NywgJ0ZpbmxhbmQnLCAyMDE1XSwKICAgIFszNzU5OSwgODEuOSwgNjQzOTUzNDUsICdGcmFuY2UnLCAyMDE1XSwKICAgIFs0NDA1MywgODEuMSwgODA2ODg1NDUsICdHZXJtYW55JywgMjAxNV0sCiAgICBbNDIxODIsIDgyLjgsIDMyOTQyNSwgJ0ljZWxhbmQnLCAyMDE1XSwKICAgIFs1OTAzLCA2Ni44LCAxMzExMDUwNTI3LCAnSW5kaWEnLCAyMDE1XSwKICAgIFszNjE2MiwgODMuNSwgMTI2NTczNDgxLCAnSmFwYW4nLCAyMDE1XSwKICAgIFsxMzkwLCA3MS40LCAyNTE1NTMxNywgJ05vcnRoIEtvcmVhJywgMjAxNV0sCiAgICBbMzQ2NDQsIDgwLjcsIDUwMjkzNDM5LCAnU291dGggS29yZWEnLCAyMDE1XSwKICAgIFszNDE4NiwgODAuNiwgNDUyODUyNiwgJ05ldyBaZWFsYW5kJywgMjAxNV0sCiAgICBbNjQzMDQsIDgxLjYsIDUyMTA5NjcsICdOb3J3YXknLCAyMDE1XSwKICAgIFsyNDc4NywgNzcuMywgMzg2MTE3OTQsICdQb2xhbmQnLCAyMDE1XSwKICAgIFsyMzAzOCwgNzMuMTMsIDE0MzQ1NjkxOCwgJ1J1c3NpYScsIDIwMTVdLAogICAgWzE5MzYwLCA3Ni41LCA3ODY2NTgzMCwgJ1R1cmtleScsIDIwMTVdLAogICAgWzM4MjI1LCA4MS40LCA2NDcxNTgxMCwgJ1VuaXRlZCBLaW5nZG9tJywgMjAxNV0sCiAgICBbNTMzNTQsIDc5LjEsIDMyMTc3MzYzMSwgJ1VuaXRlZCBTdGF0ZXMnLCAyMDE1XQogIF0KXTsKCm9wdGlvbiA9IHsKICBiYWNrZ3JvdW5kQ29sb3I6IHsKICAgIHR5cGU6ICdyYWRpYWwnLAogICAgeDogMC4zLAogICAgeTogMC4zLAogICAgcjogMC44LAogICAgY29sb3JTdG9wczogWwogICAgICB7CiAgICAgICAgb2Zmc2V0OiAwLAogICAgICAgIGNvbG9yOiAnI2Y3ZjhmYScKICAgICAgfSwKICAgICAgewogICAgICAgIG9mZnNldDogMSwKICAgICAgICBjb2xvcjogJyNjZGQwZDUnCiAgICAgIH0KICAgIF0KICB9LAogIGdyaWQ6IHsKICAgIGxlZnQ6IDEwLAogICAgY29udGFpbkxhYmVsOiB0cnVlLAogICAgYm90dG9tOiAxMCwKICAgIHRvcDogMTAsCiAgICByaWdodDogMzAKICB9LAogIHhBeGlzOiB7CiAgICBzcGxpdExpbmU6IHsKICAgICAgc2hvdzogZmFsc2UKICAgIH0KICB9LAogIHlBeGlzOiB7CiAgICBzcGxpdExpbmU6IHsKICAgICAgc2hvdzogZmFsc2UKICAgIH0sCiAgICBzY2FsZTogdHJ1ZQogIH0sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIG5hbWU6ICcxOTkwJywKICAgICAgZGF0YTogZGF0YVswXSwKICAgICAgdHlwZTogJ3NjYXR0ZXInLAogICAgICBzeW1ib2xTaXplOiBmdW5jdGlvbihkYXRhKSB7CiAgICAgICAgcmV0dXJuIE1hdGguc3FydChkYXRhWzJdKSAvIDVlMjsKICAgICAgfSwKICAgICAgZW1waGFzaXM6IHsKICAgICAgICBmb2N1czogJ3NlcmllcycsCiAgICAgICAgbGFiZWw6IHsKICAgICAgICAgIHNob3c6IHRydWUsCiAgICAgICAgICBmb3JtYXR0ZXI6IGZ1bmN0aW9uKHBhcmFtKSB7CiAgICAgICAgICAgIHJldHVybiBwYXJhbS5kYXRhWzNdOwogICAgICAgICAgfSwKICAgICAgICAgIHBvc2l0aW9uOiAndG9wJwogICAgICAgIH0KICAgICAgfSwKICAgICAgaXRlbVN0eWxlOiB7CiAgICAgICAgc2hhZG93Qmx1cjogMTAsCiAgICAgICAgc2hhZG93Q29sb3I6ICdyZ2JhKDEyMCwgMzYsIDUwLCAwLjUpJywKICAgICAgICBzaGFkb3dPZmZzZXRZOiA1LAogICAgICAgIGNvbG9yOiB7CiAgICAgICAgICB0eXBlOiAncmFkaWFsJywKICAgICAgICAgIHg6IDAuNCwKICAgICAgICAgIHk6IDAuMywKICAgICAgICAgIHI6IDEsCiAgICAgICAgICBjb2xvclN0b3BzOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBvZmZzZXQ6IDAsCiAgICAgICAgICAgICAgY29sb3I6ICdyZ2IoMjUxLCAxMTgsIDEyMyknCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBvZmZzZXQ6IDEsCiAgICAgICAgICAgICAgY29sb3I6ICdyZ2IoMjA0LCA0NiwgNzIpJwogICAgICAgICAgICB9CiAgICAgICAgICBdCiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgewogICAgICBuYW1lOiAnMjAxNScsCiAgICAgIGRhdGE6IGRhdGFbMV0sCiAgICAgIHR5cGU6ICdzY2F0dGVyJywKICAgICAgc3ltYm9sU2l6ZTogZnVuY3Rpb24oZGF0YSkgewogICAgICAgIHJldHVybiBNYXRoLnNxcnQoZGF0YVsyXSkgLyA1ZTI7CiAgICAgIH0sCiAgICAgIGVtcGhhc2lzOiB7CiAgICAgICAgZm9jdXM6ICdzZXJpZXMnLAogICAgICAgIGxhYmVsOiB7CiAgICAgICAgICBzaG93OiB0cnVlLAogICAgICAgICAgZm9ybWF0dGVyOiBmdW5jdGlvbihwYXJhbSkgewogICAgICAgICAgICByZXR1cm4gcGFyYW0uZGF0YVszXTsKICAgICAgICAgIH0sCiAgICAgICAgICBwb3NpdGlvbjogJ3RvcCcKICAgICAgICB9CiAgICAgIH0sCiAgICAgIGl0ZW1TdHlsZTogewogICAgICAgIHNoYWRvd0JsdXI6IDEwLAogICAgICAgIHNoYWRvd0NvbG9yOiAncmdiYSgyNSwgMTAwLCAxNTAsIDAuNSknLAogICAgICAgIHNoYWRvd09mZnNldFk6IDUsCiAgICAgICAgY29sb3I6IHsKICAgICAgICAgIHR5cGU6ICdyYWRpYWwnLAogICAgICAgICAgeDogMC40LAogICAgICAgICAgeTogMC4zLAogICAgICAgICAgcjogMSwKICAgICAgICAgIGNvbG9yU3RvcHM6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgIG9mZnNldDogMCwKICAgICAgICAgICAgICBjb2xvcjogJ3JnYigxMjksIDIyNywgMjM4KScKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgIG9mZnNldDogMSwKICAgICAgICAgICAgICBjb2xvcjogJ3JnYigyNSwgMTgzLCAyMDcpJwogICAgICAgICAgICB9CiAgICAgICAgICBdCiAgICAgICAgfQogICAgICB9CiAgICB9CiAgXQp9Ow\'" v-bind="{}" />\n<h2 id="%E9%AB%98%E4%BA%AE%E7%9A%84%E6%A0%B7%E5%BC%8F%EF%BC%9Aemphasis" tabindex="-1">高亮的样式:emphasis</h2>\n<p>在鼠标悬浮到图形元素上时,一般会出现高亮的样式。默认情况下,高亮的样式是根据普通样式自动生成的。但是高亮的样式也可以自己定义,主要是通过 <a href="https://echarts.apache.org/option.html#series-bar.emphasis">emphasis</a> 属性来定制。<a href="https://echarts.apache.org/option.html#series-bar.emphasis">emphasis</a> 中的结构,和普通样式的结构相同,例如:</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIHNlcmllczogewogICAgdHlwZTogJ3NjYXR0ZXInLAoKICAgIC8vIOaZrumAmuagt-W8j-OAggogICAgaXRlbVN0eWxlOiB7CiAgICAgIC8vIOeCueeahOminOiJsuOAggogICAgICBjb2xvcjogJ3JlZCcKICAgIH0sCiAgICBsYWJlbDogewogICAgICBzaG93OiB0cnVlLAogICAgICAvLyDmoIfnrb7nmoTmloflrZfjgIIKICAgICAgZm9ybWF0dGVyOiAnVGhpcyBpcyBhIG5vcm1hbCBsYWJlbC4nCiAgICB9LAoKICAgIC8vIOmrmOS6ruagt-W8j-OAggogICAgZW1waGFzaXM6IHsKICAgICAgaXRlbVN0eWxlOiB7CiAgICAgICAgLy8g6auY5Lqu5pe254K555qE6aKc6Imy44CCCiAgICAgICAgY29sb3I6ICdibHVlJwogICAgICB9LAogICAgICBsYWJlbDogewogICAgICAgIHNob3c6IHRydWUsCiAgICAgICAgLy8g6auY5Lqu5pe25qCH562-55qE5paH5a2X44CCCiAgICAgICAgZm9ybWF0dGVyOiAnVGhpcyBpcyBhIGVtcGhhc2lzIGxhYmVsLicKICAgICAgfQogICAgfQogIH0KfTs\'" line-highlights="\'\'" />\n<p>注意:在 ECharts4 以前,高亮和普通样式的写法,是这样的:</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIHNlcmllczogewogICAgdHlwZTogJ3NjYXR0ZXInLAoKICAgIGl0ZW1TdHlsZTogewogICAgICAvLyDmma7pgJrmoLflvI_jgIIKICAgICAgbm9ybWFsOiB7CiAgICAgICAgLy8g54K555qE6aKc6Imy44CCCiAgICAgICAgY29sb3I6ICdyZWQnCiAgICAgIH0sCiAgICAgIC8vIOmrmOS6ruagt-W8j-OAggogICAgICBlbXBoYXNpczogewogICAgICAgIC8vIOmrmOS6ruaXtueCueeahOminOiJsuOAggogICAgICAgIGNvbG9yOiAnYmx1ZScKICAgICAgfQogICAgfSwKCiAgICBsYWJlbDogewogICAgICAvLyDmma7pgJrmoLflvI_jgIIKICAgICAgbm9ybWFsOiB7CiAgICAgICAgc2hvdzogdHJ1ZSwKICAgICAgICAvLyDmoIfnrb7nmoTmloflrZfjgIIKICAgICAgICBmb3JtYXR0ZXI6ICdUaGlzIGlzIGEgbm9ybWFsIGxhYmVsLicKICAgICAgfSwKICAgICAgLy8g6auY5Lqu5qC35byP44CCCiAgICAgIGVtcGhhc2lzOiB7CiAgICAgICAgc2hvdzogdHJ1ZSwKICAgICAgICAvLyDpq5jkuq7ml7bmoIfnrb7nmoTmloflrZfjgIIKICAgICAgICBmb3JtYXR0ZXI6ICdUaGlzIGlzIGEgZW1waGFzaXMgbGFiZWwuJwogICAgICB9CiAgICB9CiAgfQp9Ow\'" line-highlights="\'\'" />\n<p>这种写法 <strong>仍然被兼容</strong>,但是,不再推荐。事实上,多数情况下,开发者只想配置普通状态下的样式,而使用默认的高亮样式。所以在 ECharts4 中,支持不写 <code>normal</code> 的配置方法(即前一个代码片段里的写法),使得配置项更扁平简单。</p>\n<h2 id="%E9%80%9A%E8%BF%87-visualmap-%E7%BB%84%E4%BB%B6%E8%AE%BE%E5%AE%9A%E6%A0%B7%E5%BC%8F" tabindex="-1">通过 visualMap 组件设定样式</h2>\n<p><a href="https://echarts.apache.org/option.html#visualMap">visualMap 组件</a> 能指定数据到颜色、图形尺寸的映射规则,详见 <a href="zh/concepts/visual-map">数据的视觉映射</a>。</p>\n',postPath:"zh/concepts/style",title:"样式 - 概念篇"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:i},{title:"入门篇",dir:A,children:[{title:"获取 ECharts",dir:t},{title:"在项目中引入 ECharts",dir:e},{title:"资源列表",dir:l,draft:g},{title:"寻求帮助",dir:d},{title:"版本特性",dir:r,children:[{title:"ECharts 6 特性介绍",dir:a},{title:"v5 升级 v6 指南",dir:s},{title:"5.0",dir:o},{title:"v4 升级 v5 指南",dir:n},{title:5.2,dir:c},{title:5.3,dir:h},{title:5.4,dir:w},{title:5.5,dir:y},{title:5.6,dir:M}]}]},{title:"概念篇",dir:p,children:[{title:"图表容器及大小",dir:m},{title:"配置项",dir:N,draft:g},{title:"系列",dir:b,draft:g},{title:"样式",dir:B},{title:"数据集",dir:D},{title:"数据转换",dir:L},{title:"坐标系",dir:z,draft:g},{title:"坐标轴",dir:O},{title:"视觉映射",dir:C},{title:"图例",dir:T},{title:"事件与行为",dir:E}]},{title:"应用篇",dir:G,children:[{title:"常用图表类型",dir:Y,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:K},{title:"堆叠柱状图",dir:S},{title:"动态排序柱状图",dir:j},{title:"极坐标系柱状图",dir:u,draft:g},{title:"阶梯瀑布图",dir:Z},{title:"视觉映射的柱状图",dir:C,draft:g}]},{title:"折线图",dir:J,children:[{title:"基础折线图",dir:W},{title:"堆叠折线图",dir:k},{title:"区域面积图",dir:v},{title:"平滑曲线图",dir:x},{title:"阶梯线图",dir:F}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:X},{title:"圆环图",dir:H},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:f,children:[{title:"基础散点图",dir:U}]}]},{title:"常用组件",dir:V,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:R}]}]},{title:"移动端优化",dir:I,draft:g},{title:"跨平台方案",dir:Q,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:P},{title:"数据下钻",dir:q,draft:g}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:_}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:gg}]},{title:"交互",dir:Ig,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:Cg,draft:g},{title:"智能指针吸附",dir:ig}]}]},{title:"最佳实践",dir:Ag,children:[{title:"移动端优化",dir:I,draft:g},{title:tg,dir:eg},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:lg}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:dg}]}],en:[{title:"Get Started",dir:i},{title:"Basics",dir:A,children:[{title:"Download ECharts",dir:t},{title:"Import ECharts",dir:e},{title:"Resources",dir:l,draft:g},{title:"Get Help",dir:d},{title:"What's New",dir:r,children:[{title:"ECharts 6 Features",dir:a},{title:"Migration from v5 to v6",dir:s},{title:"5.0",dir:o},{title:"Migration from v4 to v5",dir:n},{title:5.2,dir:c},{title:5.3,dir:h},{title:5.4,dir:w},{title:5.5,dir:y},{title:5.6,dir:M}]}]},{title:"Concepts",dir:p,children:[{title:"Chart Container",dir:m},{title:"Chart Option",dir:N,draft:g},{title:"Series",dir:b,draft:g},{title:"Style",dir:B},{title:"Dataset",dir:D},{title:"Data Transform",dir:L},{title:"Coordinate",dir:z,draft:g},{title:"Axis",dir:O},{title:"Visual Mapping",dir:C},{title:"Legend",dir:T},{title:"Event and Action",dir:E}]},{title:"How To Guides",dir:G,children:[{title:"Common Charts",dir:Y,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:K},{title:"Stacked Bar",dir:S},{title:"Bar Racing",dir:j},{title:"Bar Polar",dir:u,draft:g},{title:"Waterfall",dir:Z}]},{title:"Line",dir:J,children:[{title:"Basic Line",dir:W},{title:"Stacked Line",dir:k},{title:"Area Chart",dir:v},{title:"Smoothed Line",dir:x},{title:"Step Line",dir:F}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:X},{title:"Ring Style",dir:H},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:f,children:[{title:"Basic Scatter",dir:U}]}]},{title:"Common Components",dir:V,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:R}]}]},{title:"Mobile",dir:I,draft:g},{title:"Cross Platform",dir:Q,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:P},{title:"Drilldown",dir:q,draft:g}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:_}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:gg}]},{title:"Interaction",dir:Ig,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:Cg,draft:g},{title:"Intelligent Pointer Snapping",dir:ig}]}]},{title:"Best Practices",dir:Ag,children:[{title:"Mobile Optimization",dir:I,draft:g},{title:tg,dir:eg},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:lg}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:dg}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:g,routePath:"/zh/concepts/style",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/zh/concepts/visual-map/index.html b/docs/zh/concepts/visual-map/index.html
new file mode 100644
index 0000000..1cae7e5
--- /dev/null
+++ b/docs/zh/concepts/visual-map/index.html
@@ -0,0 +1,79 @@
+<!doctype html>
+<html data-n-head-ssr lang="zh-CN" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh-CN%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>视觉映射 - 概念篇 - 使用手册 - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="zh"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/zh/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/zh/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/zh/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/zh/index.html" class="navbar-brand"><img src="https://echarts.apache.org/zh/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/zh/index.html">首页</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">文档<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/feature.html">特性</a></li><li><a href="https://echarts.apache.org/handbook/zh/get-started/">使用手册</a></li><li><a href="https://echarts.apache.org/zh/api.html">API</a></li><li><a href="https://echarts.apache.org/zh/option.html">配置项手册</a></li><li><a href="https://echarts.apache.org/zh/changelog.html">版本记录</a></li><li><a href="https://echarts.apache.org/zh/faq.html">常见问题</a></li><li><a href="https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide">v6 升级指南</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">下载<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/download.html">下载</a></li><li><a href="https://echarts.apache.org/zh/download-theme.html">主题下载</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">自定义系列下载<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/download-extension.html">扩展下载</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/zh/index.html">示例</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">资源<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/spreadsheet.html">表格工具</a></li><li><a href="https://echarts.apache.org/zh/theme-builder.html">主题构建工具</a></li><li><a href="https://echarts.apache.org/zh/cheat-sheet.html">术语速查手册</a></li><li><a href="https://echarts.apache.org/zh/resources.html">更多资源</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">社区<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/events.html">活动</a></li><li><a href="https://echarts.apache.org/zh/committers.html">贡献者列表</a></li><li><a href="https://echarts.apache.org/zh/maillist.html">邮件列表</a></li><li><a href="https://echarts.apache.org/zh/contributing.html">如何贡献</a></li><li><a href="https://echarts.apache.org/zh/dependencies.html">依赖项</a></li><li><a href="https://echarts.apache.org/zh/coding-standard.html">代码规范</a></li><li><a href="https://github.com/apache/echarts" target="_blank">源码(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/security.html">安全</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">版权<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">活动<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">捐赠<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">鸣谢<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("en")'>EN</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/zh/get-started" class="nav-link"><span class="title">快速上手</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">入门篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/basics/download" class="nav-link"><span class="title">获取 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/import" class="nav-link"><span class="title">在项目中引入 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/basics/help" class="nav-link"><span class="title">寻求帮助</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">版本特性</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 特性介绍</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">v5 升级 v6 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">v4 升级 v5 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">概念篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/concepts/chart-size" class="nav-link"><span class="title">图表容器及大小</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/style" class="nav-link"><span class="title">样式</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/dataset" class="nav-link"><span class="title">数据集</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/data-transform" class="nav-link"><span class="title">数据转换</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/axis" class="nav-link"><span class="title">坐标轴</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/visual-map" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">视觉映射</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/legend" class="nav-link"><span class="title">图例</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/event" class="nav-link"><span class="title">事件与行为</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">应用篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">常用图表类型</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">柱状图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">基础柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">堆叠柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">动态排序柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">阶梯瀑布图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">折线图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">基础折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">堆叠折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/area-line" class="nav-link"><span class="title">区域面积图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">平滑曲线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/step-line" class="nav-link"><span class="title">阶梯线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">饼图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">基础饼图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">圆环图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/rose" class="nav-link"><span class="title">南丁格尔图(玫瑰图)</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">散点图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">基础散点图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">常用组件</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">地理坐标系(Geo)</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG 底图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">跨平台方案</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/server" class="nav-link"><span class="title">服务端渲染</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/wechat-app" class="nav-link"><span class="title">微信小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/baidu-app" class="nav-link"><span class="title">百度智能小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">数据处理</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/data/dynamic-data" class="nav-link"><span class="title">动态的异步数据</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">标签</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/label/rich-text" class="nav-link"><span class="title">富文本标签</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">动画</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/animation/transition" class="nav-link"><span class="title">数据过渡动画</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">交互</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/drag" class="nav-link"><span class="title">拖拽的实现</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">智能指针吸附</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">最佳实践</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/aria" class="nav-link"><span class="title">无障碍访问</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/security" class="nav-link"><span class="title">安全指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">编辑本文档</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/meta/edit-guide" class="nav-link"><span class="title">文档编辑指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="%E6%95%B0%E6%8D%AE%E7%9A%84%E8%A7%86%E8%A7%89%E6%98%A0%E5%B0%84" tabindex="-1">数据的视觉映射</h1> <p>数据可视化是数据到视觉元素的映射过程(这个过程也可称为视觉编码,视觉元素也可称为视觉通道)。</p> <p>ECharts 的每种图表本身就内置了这种映射过程,比如折线图把数据映射到“线”,柱状图把数据映射到“长度”。一些更复杂的图表,如关系图、事件河流图、树图也都会做出各自内置的映射。</p> <p>此外,ECharts 还提供了 <a href="https://echarts.apache.org/option.html#visualMap">visualMap 组件</a> 来提供通用的视觉映射。<code>visualMap</code> 组件中可以使用的视觉元素有:</p> <ul><li>图形类别(symbol)、图形大小(symbolSize)</li> <li>颜色(color)、透明度(opacity)、颜色透明度(colorAlpha)、</li> <li>颜色明暗度(colorLightness)、颜色饱和度(colorSaturation)、色调(colorHue)</li></ul> <p>下面对 <code>visualMap</code> 组件的使用方式进行简要的介绍。</p> <h2 id="%E6%95%B0%E6%8D%AE%E5%92%8C%E7%BB%B4%E5%BA%A6" tabindex="-1">数据和维度</h2> <p>ECharts 中的数据,一般存放于 <a href="https://echarts.apache.org/option.html#series.data"><code>series.data</code></a> 中。根据图表类型不同,数据的具体形式也可能有些许差异。比如可能是“线性表“、“树“、“图“等。但他们都有个共性:都是“数据项(dataItem)“的集合。每个数据项含有“数据值(value)“和其他信息(如果需要的话)。每个数据值,可以是单一的数值(一维)或者一个数组(多维)。</p> <p>例如,<a href="https://echarts.apache.org/option.html#series.data">series.data</a> 最常见的形式,是“线性表“,即一个普通数组:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token comment">// 这里每一个项就是数据项(dataItem)</span>
+      <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">2323</span><span class="token punctuation">,</span> <span class="token comment">// 这是数据项的数据值(value)</span>
+      <span class="token literal-property property">itemStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token number">1212</span><span class="token punctuation">,</span> <span class="token comment">// 也可以直接是 dataItem 的 value,这更常见。</span>
+    <span class="token number">2323</span><span class="token punctuation">,</span> <span class="token comment">// 每个 value 都是“一维“的。</span>
+    <span class="token number">4343</span><span class="token punctuation">,</span>
+    <span class="token number">3434</span>
+  <span class="token punctuation">]</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token comment">// 这里每一个项就是数据项(dataItem)</span>
+      <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">3434</span><span class="token punctuation">,</span> <span class="token number">129</span><span class="token punctuation">,</span> <span class="token string">'圣马力诺'</span><span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token comment">// 这是数据项的数据值(value)</span>
+      <span class="token literal-property property">itemStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">[</span><span class="token number">1212</span><span class="token punctuation">,</span> <span class="token number">5454</span><span class="token punctuation">,</span> <span class="token string">'梵蒂冈'</span><span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token comment">// 也可以直接是 dataItem 的 value,这更常见。</span>
+    <span class="token punctuation">[</span><span class="token number">2323</span><span class="token punctuation">,</span> <span class="token number">3223</span><span class="token punctuation">,</span> <span class="token string">'瑙鲁'</span><span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token comment">// 每个 value 都是“三维“的,每列是一个维度。</span>
+    <span class="token punctuation">[</span><span class="token number">4343</span><span class="token punctuation">,</span> <span class="token number">23</span><span class="token punctuation">,</span> <span class="token string">'图瓦卢'</span><span class="token punctuation">]</span> <span class="token comment">// 假如是“气泡图“,常见第一维度映射到x轴,</span>
+    <span class="token comment">// 第二维度映射到y轴,</span>
+    <span class="token comment">// 第三维度映射到气泡半径(symbolSize)</span>
+  <span class="token punctuation">]</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>在图表中,往往默认把 value 的前一两个维度进行映射,比如取第一个维度映射到 x 轴,取第二个维度映射到 y 轴。如果想要把更多的维度展现出来,可以借助 <code>visualMap</code>。最常见的情况,<a href="https://echarts.apache.org/option.html#series-scatter">散点图(scatter)</a> 使用半径展现了第三个维度。</p> <h2 id="visualmap-%E7%BB%84%E4%BB%B6" tabindex="-1">visualMap 组件</h2> <p>visualMap 组件定义了把数据的<em>哪个维度</em>映射到<em>什么视觉元素上</em>。</p> <p>现在提供如下两种类型的 visualMap 组件,通过 <a href="https://echarts.apache.org/option.html#visualMap.type">visualMap.type</a> 来区分。</p> <p>其定义结构例如:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">visualMap</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token comment">// 可以同时定义多个 visualMap 组件。</span>
+    <span class="token punctuation">{</span>
+      <span class="token comment">// 第一个 visualMap 组件</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'continuous'</span> <span class="token comment">// 定义为连续型 visualMap</span>
+      <span class="token comment">// ...</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token comment">// 第二个 visualMap 组件</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'piecewise'</span> <span class="token comment">// 定义为分段型 visualMap</span>
+      <span class="token comment">// ...</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+  <span class="token comment">// ...</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="%E8%BF%9E%E7%BB%AD%E5%9E%8B%E4%B8%8E%E5%88%86%E6%AE%B5%E5%9E%8B%E8%A7%86%E8%A7%89%E6%98%A0%E5%B0%84%E7%BB%84%E4%BB%B6" tabindex="-1">连续型与分段型视觉映射组件</h2> <p>ECharts 的视觉映射组件分为连续型(<a href="https://echarts.apache.org/option.html#visualMap-continuous">visualMapContinuous</a>)与分段型(<a href="https://echarts.apache.org/option.html#visualMap-piecewise">visualMapPiecewise</a>)。</p> <p>连续型的意思是,进行视觉映射的数据维度是连续的数值;而分段型则是数据被分成了多段或者是离散型的数据。</p> <h3 id="%E8%BF%9E%E7%BB%AD%E5%9E%8B%E8%A7%86%E8%A7%89%E6%98%A0%E5%B0%84" tabindex="-1">连续型视觉映射</h3> <p>连续型视觉映射通过指定最大值、最小值,就可以确定视觉映射的范围。</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">visualMap</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'continuous'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">min</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">max</span><span class="token operator">:</span> <span class="token number">5000</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">dimension</span><span class="token operator">:</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token comment">// series.data 的第四个维度(即 value[3])被映射</span>
+      <span class="token literal-property property">seriesIndex</span><span class="token operator">:</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token comment">// 对第四个系列进行映射。</span>
+      <span class="token literal-property property">inRange</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token comment">// 选中范围中的视觉配置</span>
+        <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'blue'</span><span class="token punctuation">,</span> <span class="token string">'#121122'</span><span class="token punctuation">,</span> <span class="token string">'red'</span><span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token comment">// 定义了图形颜色映射的颜色列表,</span>
+        <span class="token comment">// 数据最小值映射到'blue'上,</span>
+        <span class="token comment">// 最大值映射到'red'上,</span>
+        <span class="token comment">// 其余自动线性计算。</span>
+        <span class="token literal-property property">symbolSize</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">30</span><span class="token punctuation">,</span> <span class="token number">100</span><span class="token punctuation">]</span> <span class="token comment">// 定义了图形尺寸的映射范围,</span>
+        <span class="token comment">// 数据最小值映射到30上,</span>
+        <span class="token comment">// 最大值映射到100上,</span>
+        <span class="token comment">// 其余自动线性计算。</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">outOfRange</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token comment">// 选中范围外的视觉配置</span>
+        <span class="token literal-property property">symbolSize</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">30</span><span class="token punctuation">,</span> <span class="token number">100</span><span class="token punctuation">]</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+    <span class="token comment">//    ...</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>其中,<a href="https://echarts.apache.org/option.html#visualMap.inRange">visualMap.inRange</a> 表示在数据映射范围内的数据采用的样式;而 <a href="https://echarts.apache.org/option.html#visualMap.outOfRange">visualMap.outOfRange</a> 则指定了超出映射范围外的数据的样式。</p> <p><a href="~visualMap.dimension">visualMap.dimension</a> 则指定了将数据的哪个维度做视觉映射。</p> <h3 id="%E5%88%86%E6%AE%B5%E5%9E%8B%E8%A7%86%E8%A7%89%E6%98%A0%E5%B0%84" tabindex="-1">分段型视觉映射</h3> <p>分段型视觉映射组件有三种模式:</p> <ul><li>连续型数据平均分段:依据 <a href="https://echarts.apache.org/option.html#visualMap-piecewise.splitNumber">visualMap-piecewise.splitNumber</a> 来自动平均分割成若干块。</li> <li>连续型数据自定义分段:依据 <a href="https://echarts.apache.org/option.html#visualMap-piecewise.pieces">visualMap-piecewise.pieces</a> 来定义每块范围。</li> <li>离散数据(类别性数据):类别定义在 <a href="https://echarts.apache.org/option.html#visualMap-piecewise.categories">visualMap-piecewise.categories</a> 中。</li></ul> <p>使用分段型视觉映射时,需要将 <code>type</code> 设为 <code>'piecewise'</code>,并且将上面的三个配置项选其一配置即可,其他配置项类似连续型视觉映射。</p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">本文贡献者</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/zh/concepts/visual-map.md" title="编辑本文" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">在 GitHub 上编辑本页</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/Ovilia" target="_blank" class="post-contributor has-avatar"><img alt="Ovilia" src="https://echarts.apache.org/en/images/people/羡辙.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>Ovilia</span></a><a href="https://github.com/plainheart" target="_blank" class="post-contributor has-avatar"><img alt="plainheart" src="https://echarts.apache.org/en/images/people/plainheart.jpg" loading="lazy" decoding="async" fetchpriority="low"> <span>plainheart</span></a><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(i,t,e,a,r,l,d,o,n,s,g,h,p,c,I,C,A,u,m,v,b,E,O,W,B,M,y,L,w,f,D,S,Y,k,K,j,z,x,T,X,Z,V,G,R,H,P,q,N,F,J,Q,_,U,$,ii,ti,ei,ai,ri,li,di,oi,ni){return{layout:"default",data:[{html:'<h1 id="%E6%95%B0%E6%8D%AE%E7%9A%84%E8%A7%86%E8%A7%89%E6%98%A0%E5%B0%84" tabindex="-1">数据的视觉映射</h1>\n<p>数据可视化是数据到视觉元素的映射过程(这个过程也可称为视觉编码,视觉元素也可称为视觉通道)。</p>\n<p>ECharts 的每种图表本身就内置了这种映射过程,比如折线图把数据映射到“线”,柱状图把数据映射到“长度”。一些更复杂的图表,如关系图、事件河流图、树图也都会做出各自内置的映射。</p>\n<p>此外,ECharts 还提供了 <a href="https://echarts.apache.org/option.html#visualMap">visualMap 组件</a> 来提供通用的视觉映射。<code>visualMap</code> 组件中可以使用的视觉元素有:</p>\n<ul>\n<li>图形类别(symbol)、图形大小(symbolSize)</li>\n<li>颜色(color)、透明度(opacity)、颜色透明度(colorAlpha)、</li>\n<li>颜色明暗度(colorLightness)、颜色饱和度(colorSaturation)、色调(colorHue)</li>\n</ul>\n<p>下面对 <code>visualMap</code> 组件的使用方式进行简要的介绍。</p>\n<h2 id="%E6%95%B0%E6%8D%AE%E5%92%8C%E7%BB%B4%E5%BA%A6" tabindex="-1">数据和维度</h2>\n<p>ECharts 中的数据,一般存放于 <a href="https://echarts.apache.org/option.html#series.data"><code>series.data</code></a> 中。根据图表类型不同,数据的具体形式也可能有些许差异。比如可能是“线性表“、“树“、“图“等。但他们都有个共性:都是“数据项(dataItem)“的集合。每个数据项含有“数据值(value)“和其他信息(如果需要的话)。每个数据值,可以是单一的数值(一维)或者一个数组(多维)。</p>\n<p>例如,<a href="https://echarts.apache.org/option.html#series.data">series.data</a> 最常见的形式,是“线性表“,即一个普通数组:</p>\n<md-code-block lang="js" code="\'c2VyaWVzOiB7CiAgZGF0YTogWwogICAgewogICAgICAvLyDov5nph4zmr4_kuIDkuKrpobnlsLHmmK_mlbDmja7pobnvvIhkYXRhSXRlbe-8iQogICAgICB2YWx1ZTogMjMyMywgLy8g6L-Z5piv5pWw5o2u6aG555qE5pWw5o2u5YC877yIdmFsdWXvvIkKICAgICAgaXRlbVN0eWxlOiB7fQogICAgfSwKICAgIDEyMTIsIC8vIOS5n-WPr-S7peebtOaOpeaYryBkYXRhSXRlbSDnmoQgdmFsdWXvvIzov5nmm7TluLjop4HjgIIKICAgIDIzMjMsIC8vIOavj-S4qiB2YWx1ZSDpg73mmK_igJzkuIDnu7TigJznmoTjgIIKICAgIDQzNDMsCiAgICAzNDM0CiAgXTsKfQ\'" line-highlights="\'\'" />\n<md-code-block lang="js" code="\'c2VyaWVzOiB7CiAgZGF0YTogWwogICAgewogICAgICAvLyDov5nph4zmr4_kuIDkuKrpobnlsLHmmK_mlbDmja7pobnvvIhkYXRhSXRlbe-8iQogICAgICB2YWx1ZTogWzM0MzQsIDEyOSwgJ-Wco-mprOWKm-ivuiddLCAvLyDov5nmmK_mlbDmja7pobnnmoTmlbDmja7lgLzvvIh2YWx1Ze-8iQogICAgICBpdGVtU3R5bGU6IHt9CiAgICB9LAogICAgWzEyMTIsIDU0NTQsICfmorXokoLlhognXSwgLy8g5Lmf5Y-v5Lul55u05o6l5pivIGRhdGFJdGVtIOeahCB2YWx1Ze-8jOi_meabtOW4uOingeOAggogICAgWzIzMjMsIDMyMjMsICfnkZnpsoEnXSwgLy8g5q-P5LiqIHZhbHVlIOmDveaYr-KAnOS4iee7tOKAnOeahO-8jOavj-WIl-aYr-S4gOS4que7tOW6puOAggogICAgWzQzNDMsIDIzLCAn5Zu-55Om5Y2iJ10gLy8g5YGH5aaC5piv4oCc5rCU5rOh5Zu-4oCc77yM5bi46KeB56ys5LiA57u05bqm5pig5bCE5YiweOi9tO-8jAogICAgLy8g56ys5LqM57u05bqm5pig5bCE5Yiweei9tO-8jAogICAgLy8g56ys5LiJ57u05bqm5pig5bCE5Yiw5rCU5rOh5Y2K5b6E77yIc3ltYm9sU2l6Ze-8iQogIF07Cn0\'" line-highlights="\'\'" />\n<p>在图表中,往往默认把 value 的前一两个维度进行映射,比如取第一个维度映射到 x 轴,取第二个维度映射到 y 轴。如果想要把更多的维度展现出来,可以借助 <code>visualMap</code>。最常见的情况,<a href="https://echarts.apache.org/option.html#series-scatter">散点图(scatter)</a> 使用半径展现了第三个维度。</p>\n<h2 id="visualmap-%E7%BB%84%E4%BB%B6" tabindex="-1">visualMap 组件</h2>\n<p>visualMap 组件定义了把数据的<em>哪个维度</em>映射到<em>什么视觉元素上</em>。</p>\n<p>现在提供如下两种类型的 visualMap 组件,通过 <a href="https://echarts.apache.org/option.html#visualMap.type">visualMap.type</a> 来区分。</p>\n<p>其定义结构例如:</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIHZpc3VhbE1hcDogWwogICAgLy8g5Y-v5Lul5ZCM5pe25a6a5LmJ5aSa5LiqIHZpc3VhbE1hcCDnu4Tku7bjgIIKICAgIHsKICAgICAgLy8g56ys5LiA5LiqIHZpc3VhbE1hcCDnu4Tku7YKICAgICAgdHlwZTogJ2NvbnRpbnVvdXMnIC8vIOWumuS5ieS4uui_nue7reWeiyB2aXN1YWxNYXAKICAgICAgLy8gLi4uCiAgICB9LAogICAgewogICAgICAvLyDnrKzkuozkuKogdmlzdWFsTWFwIOe7hOS7tgogICAgICB0eXBlOiAncGllY2V3aXNlJyAvLyDlrprkuYnkuLrliIbmrrXlnosgdmlzdWFsTWFwCiAgICAgIC8vIC4uLgogICAgfQogIF0KICAvLyAuLi4KfTs\'" line-highlights="\'\'" />\n<h2 id="%E8%BF%9E%E7%BB%AD%E5%9E%8B%E4%B8%8E%E5%88%86%E6%AE%B5%E5%9E%8B%E8%A7%86%E8%A7%89%E6%98%A0%E5%B0%84%E7%BB%84%E4%BB%B6" tabindex="-1">连续型与分段型视觉映射组件</h2>\n<p>ECharts 的视觉映射组件分为连续型(<a href="https://echarts.apache.org/option.html#visualMap-continuous">visualMapContinuous</a>)与分段型(<a href="https://echarts.apache.org/option.html#visualMap-piecewise">visualMapPiecewise</a>)。</p>\n<p>连续型的意思是,进行视觉映射的数据维度是连续的数值;而分段型则是数据被分成了多段或者是离散型的数据。</p>\n<h3 id="%E8%BF%9E%E7%BB%AD%E5%9E%8B%E8%A7%86%E8%A7%89%E6%98%A0%E5%B0%84" tabindex="-1">连续型视觉映射</h3>\n<p>连续型视觉映射通过指定最大值、最小值,就可以确定视觉映射的范围。</p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIHZpc3VhbE1hcDogWwogICAgewogICAgICB0eXBlOiAnY29udGludW91cycsCiAgICAgIG1pbjogMCwKICAgICAgbWF4OiA1MDAwLAogICAgICBkaW1lbnNpb246IDMsIC8vIHNlcmllcy5kYXRhIOeahOesrOWbm-S4que7tOW6pu-8iOWNsyB2YWx1ZVszXe-8ieiiq-aYoOWwhAogICAgICBzZXJpZXNJbmRleDogNCwgLy8g5a-556ys5Zub5Liq57O75YiX6L-b6KGM5pig5bCE44CCCiAgICAgIGluUmFuZ2U6IHsKICAgICAgICAvLyDpgInkuK3ojIPlm7TkuK3nmoTop4bop4nphY3nva4KICAgICAgICBjb2xvcjogWydibHVlJywgJyMxMjExMjInLCAncmVkJ10sIC8vIOWumuS5ieS6huWbvuW9ouminOiJsuaYoOWwhOeahOminOiJsuWIl-ihqO-8jAogICAgICAgIC8vIOaVsOaNruacgOWwj-WAvOaYoOWwhOWIsCdibHVlJ-S4iu-8jAogICAgICAgIC8vIOacgOWkp-WAvOaYoOWwhOWIsCdyZWQn5LiK77yMCiAgICAgICAgLy8g5YW25L2Z6Ieq5Yqo57q_5oCn6K6h566X44CCCiAgICAgICAgc3ltYm9sU2l6ZTogWzMwLCAxMDBdIC8vIOWumuS5ieS6huWbvuW9ouWwuuWvuOeahOaYoOWwhOiMg-WbtO-8jAogICAgICAgIC8vIOaVsOaNruacgOWwj-WAvOaYoOWwhOWIsDMw5LiK77yMCiAgICAgICAgLy8g5pyA5aSn5YC85pig5bCE5YiwMTAw5LiK77yMCiAgICAgICAgLy8g5YW25L2Z6Ieq5Yqo57q_5oCn6K6h566X44CCCiAgICAgIH0sCiAgICAgIG91dE9mUmFuZ2U6IHsKICAgICAgICAvLyDpgInkuK3ojIPlm7TlpJbnmoTop4bop4nphY3nva4KICAgICAgICBzeW1ib2xTaXplOiBbMzAsIDEwMF0KICAgICAgfQogICAgfQogICAgLy8gICAgLi4uCiAgXQp9Ow\'" line-highlights="\'\'" />\n<p>其中,<a href="https://echarts.apache.org/option.html#visualMap.inRange">visualMap.inRange</a> 表示在数据映射范围内的数据采用的样式;而 <a href="https://echarts.apache.org/option.html#visualMap.outOfRange">visualMap.outOfRange</a> 则指定了超出映射范围外的数据的样式。</p>\n<p><a href="~visualMap.dimension">visualMap.dimension</a> 则指定了将数据的哪个维度做视觉映射。</p>\n<h3 id="%E5%88%86%E6%AE%B5%E5%9E%8B%E8%A7%86%E8%A7%89%E6%98%A0%E5%B0%84" tabindex="-1">分段型视觉映射</h3>\n<p>分段型视觉映射组件有三种模式:</p>\n<ul>\n<li>连续型数据平均分段:依据 <a href="https://echarts.apache.org/option.html#visualMap-piecewise.splitNumber">visualMap-piecewise.splitNumber</a> 来自动平均分割成若干块。</li>\n<li>连续型数据自定义分段:依据 <a href="https://echarts.apache.org/option.html#visualMap-piecewise.pieces">visualMap-piecewise.pieces</a> 来定义每块范围。</li>\n<li>离散数据(类别性数据):类别定义在 <a href="https://echarts.apache.org/option.html#visualMap-piecewise.categories">visualMap-piecewise.categories</a> 中。</li>\n</ul>\n<p>使用分段型视觉映射时,需要将 <code>type</code> 设为 <code>\'piecewise\'</code>,并且将上面的三个配置项选其一配置即可,其他配置项类似连续型视觉映射。</p>\n',postPath:"zh/concepts/visual-map",title:"视觉映射 - 概念篇"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:a},{title:"入门篇",dir:r,children:[{title:"获取 ECharts",dir:l},{title:"在项目中引入 ECharts",dir:d},{title:"资源列表",dir:o,draft:i},{title:"寻求帮助",dir:n},{title:"版本特性",dir:s,children:[{title:"ECharts 6 特性介绍",dir:g},{title:"v5 升级 v6 指南",dir:h},{title:"5.0",dir:p},{title:"v4 升级 v5 指南",dir:c},{title:5.2,dir:I},{title:5.3,dir:C},{title:5.4,dir:A},{title:5.5,dir:u},{title:5.6,dir:m}]}]},{title:"概念篇",dir:v,children:[{title:"图表容器及大小",dir:b},{title:"配置项",dir:E,draft:i},{title:"系列",dir:O,draft:i},{title:"样式",dir:W},{title:"数据集",dir:B},{title:"数据转换",dir:M},{title:"坐标系",dir:y,draft:i},{title:"坐标轴",dir:L},{title:"视觉映射",dir:e},{title:"图例",dir:w},{title:"事件与行为",dir:f}]},{title:"应用篇",dir:D,children:[{title:"常用图表类型",dir:S,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:Y},{title:"堆叠柱状图",dir:k},{title:"动态排序柱状图",dir:K},{title:"极坐标系柱状图",dir:j,draft:i},{title:"阶梯瀑布图",dir:z},{title:"视觉映射的柱状图",dir:e,draft:i}]},{title:"折线图",dir:x,children:[{title:"基础折线图",dir:T},{title:"堆叠折线图",dir:X},{title:"区域面积图",dir:Z},{title:"平滑曲线图",dir:V},{title:"阶梯线图",dir:G}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:R},{title:"圆环图",dir:H},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:P,children:[{title:"基础散点图",dir:q}]}]},{title:"常用组件",dir:N,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:F}]}]},{title:"移动端优化",dir:t,draft:i},{title:"跨平台方案",dir:J,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:Q},{title:"数据下钻",dir:_,draft:i}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:U}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:ii}]},{title:"交互",dir:ti,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:ei,draft:i},{title:"智能指针吸附",dir:ai}]}]},{title:"最佳实践",dir:ri,children:[{title:"移动端优化",dir:t,draft:i},{title:li,dir:di},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:oi}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:ni}]}],en:[{title:"Get Started",dir:a},{title:"Basics",dir:r,children:[{title:"Download ECharts",dir:l},{title:"Import ECharts",dir:d},{title:"Resources",dir:o,draft:i},{title:"Get Help",dir:n},{title:"What's New",dir:s,children:[{title:"ECharts 6 Features",dir:g},{title:"Migration from v5 to v6",dir:h},{title:"5.0",dir:p},{title:"Migration from v4 to v5",dir:c},{title:5.2,dir:I},{title:5.3,dir:C},{title:5.4,dir:A},{title:5.5,dir:u},{title:5.6,dir:m}]}]},{title:"Concepts",dir:v,children:[{title:"Chart Container",dir:b},{title:"Chart Option",dir:E,draft:i},{title:"Series",dir:O,draft:i},{title:"Style",dir:W},{title:"Dataset",dir:B},{title:"Data Transform",dir:M},{title:"Coordinate",dir:y,draft:i},{title:"Axis",dir:L},{title:"Visual Mapping",dir:e},{title:"Legend",dir:w},{title:"Event and Action",dir:f}]},{title:"How To Guides",dir:D,children:[{title:"Common Charts",dir:S,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:Y},{title:"Stacked Bar",dir:k},{title:"Bar Racing",dir:K},{title:"Bar Polar",dir:j,draft:i},{title:"Waterfall",dir:z}]},{title:"Line",dir:x,children:[{title:"Basic Line",dir:T},{title:"Stacked Line",dir:X},{title:"Area Chart",dir:Z},{title:"Smoothed Line",dir:V},{title:"Step Line",dir:G}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:R},{title:"Ring Style",dir:H},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:P,children:[{title:"Basic Scatter",dir:q}]}]},{title:"Common Components",dir:N,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:F}]}]},{title:"Mobile",dir:t,draft:i},{title:"Cross Platform",dir:J,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:Q},{title:"Drilldown",dir:_,draft:i}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:U}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:ii}]},{title:"Interaction",dir:ti,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:ei,draft:i},{title:"Intelligent Pointer Snapping",dir:ai}]}]},{title:"Best Practices",dir:ri,children:[{title:"Mobile Optimization",dir:t,draft:i},{title:li,dir:di},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:oi}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:ni}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:i,routePath:"/zh/concepts/visual-map",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/zh/get-started/index.html b/docs/zh/get-started/index.html
new file mode 100644
index 0000000..d51a808
--- /dev/null
+++ b/docs/zh/get-started/index.html
@@ -0,0 +1,64 @@
+<!doctype html>
+<html data-n-head-ssr lang="zh-CN" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh-CN%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>快速上手 - 使用手册 - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="zh"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/zh/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/zh/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/zh/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/zh/index.html" class="navbar-brand"><img src="https://echarts.apache.org/zh/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/zh/index.html">首页</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">文档<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/feature.html">特性</a></li><li><a href="https://echarts.apache.org/handbook/zh/get-started/">使用手册</a></li><li><a href="https://echarts.apache.org/zh/api.html">API</a></li><li><a href="https://echarts.apache.org/zh/option.html">配置项手册</a></li><li><a href="https://echarts.apache.org/zh/changelog.html">版本记录</a></li><li><a href="https://echarts.apache.org/zh/faq.html">常见问题</a></li><li><a href="https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide">v6 升级指南</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">下载<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/download.html">下载</a></li><li><a href="https://echarts.apache.org/zh/download-theme.html">主题下载</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">自定义系列下载<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/download-extension.html">扩展下载</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/zh/index.html">示例</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">资源<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/spreadsheet.html">表格工具</a></li><li><a href="https://echarts.apache.org/zh/theme-builder.html">主题构建工具</a></li><li><a href="https://echarts.apache.org/zh/cheat-sheet.html">术语速查手册</a></li><li><a href="https://echarts.apache.org/zh/resources.html">更多资源</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">社区<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/events.html">活动</a></li><li><a href="https://echarts.apache.org/zh/committers.html">贡献者列表</a></li><li><a href="https://echarts.apache.org/zh/maillist.html">邮件列表</a></li><li><a href="https://echarts.apache.org/zh/contributing.html">如何贡献</a></li><li><a href="https://echarts.apache.org/zh/dependencies.html">依赖项</a></li><li><a href="https://echarts.apache.org/zh/coding-standard.html">代码规范</a></li><li><a href="https://github.com/apache/echarts" target="_blank">源码(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/security.html">安全</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">版权<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">活动<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">捐赠<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">鸣谢<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("en")'>EN</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/zh/get-started" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">快速上手</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">入门篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/basics/download" class="nav-link"><span class="title">获取 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/import" class="nav-link"><span class="title">在项目中引入 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/basics/help" class="nav-link"><span class="title">寻求帮助</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">版本特性</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 特性介绍</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">v5 升级 v6 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">v4 升级 v5 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">概念篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/concepts/chart-size" class="nav-link"><span class="title">图表容器及大小</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/style" class="nav-link"><span class="title">样式</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/dataset" class="nav-link"><span class="title">数据集</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/data-transform" class="nav-link"><span class="title">数据转换</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/axis" class="nav-link"><span class="title">坐标轴</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/visual-map" class="nav-link"><span class="title">视觉映射</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/legend" class="nav-link"><span class="title">图例</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/event" class="nav-link"><span class="title">事件与行为</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">应用篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">常用图表类型</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">柱状图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">基础柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">堆叠柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">动态排序柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">阶梯瀑布图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">折线图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">基础折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">堆叠折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/area-line" class="nav-link"><span class="title">区域面积图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">平滑曲线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/step-line" class="nav-link"><span class="title">阶梯线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">饼图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">基础饼图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">圆环图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/rose" class="nav-link"><span class="title">南丁格尔图(玫瑰图)</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">散点图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">基础散点图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">常用组件</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">地理坐标系(Geo)</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG 底图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">跨平台方案</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/server" class="nav-link"><span class="title">服务端渲染</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/wechat-app" class="nav-link"><span class="title">微信小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/baidu-app" class="nav-link"><span class="title">百度智能小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">数据处理</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/data/dynamic-data" class="nav-link"><span class="title">动态的异步数据</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">标签</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/label/rich-text" class="nav-link"><span class="title">富文本标签</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">动画</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/animation/transition" class="nav-link"><span class="title">数据过渡动画</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">交互</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/drag" class="nav-link"><span class="title">拖拽的实现</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">智能指针吸附</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">最佳实践</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/aria" class="nav-link"><span class="title">无障碍访问</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/security" class="nav-link"><span class="title">安全指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">编辑本文档</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/meta/edit-guide" class="nav-link"><span class="title">文档编辑指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="%E5%BF%AB%E9%80%9F%E4%B8%8A%E6%89%8B" tabindex="-1">快速上手</h1> <h2 id="%E8%8E%B7%E5%8F%96-apache-echarts" tabindex="-1">获取 Apache ECharts</h2> <p>Apache ECharts 支持多种下载方式,可以在下一篇教程<a href="zh/basics/download">安装</a>中查看所有方式。这里,我们以从 <a href="https://www.jsdelivr.com/package/npm/echarts">jsDelivr</a> CDN 上获取为例,介绍如何快速安装。</p> <p>在 <a href="https://www.jsdelivr.com/package/npm/echarts">https://www.jsdelivr.com/package/npm/echarts</a> 选择 <code>dist/echarts.js</code>,点击并保存为 <code>echarts.js</code> 文件。</p> <blockquote><p>关于这些文件的介绍,可以在下一篇教程<a href="zh/basics/download">安装</a>中了解更多信息。</p></blockquote> <h2 id="%E5%BC%95%E5%85%A5-apache-echarts" tabindex="-1">引入 Apache ECharts</h2> <p>在刚才保存 <code>echarts.js</code> 的目录新建一个 <code>index.html</code> 文件,内容如下:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-html line-numbers"><code><span class="token doctype"><span class="token punctuation">&lt;!</span><span class="token doctype-tag">DOCTYPE</span> <span class="token name">html</span><span class="token punctuation">></span></span>
+<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>html</span><span class="token punctuation">></span></span>
+  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>head</span><span class="token punctuation">></span></span>
+    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>meta</span> <span class="token attr-name">charset</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>utf-8<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>
+    <span class="token comment">&lt;!-- 引入刚刚下载的 ECharts 文件 --></span>
+    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>echarts.js<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">></span></span>
+  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>head</span><span class="token punctuation">></span></span>
+<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>html</span><span class="token punctuation">></span></span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>打开这个 <code>index.html</code>,你会看到一片空白。但是不要担心,打开控制台确认没有报错信息,就可以进行下一步。</p> <h2 id="%E7%BB%98%E5%88%B6%E4%B8%80%E4%B8%AA%E7%AE%80%E5%8D%95%E7%9A%84%E5%9B%BE%E8%A1%A8" tabindex="-1">绘制一个简单的图表</h2> <p>在绘图前我们需要为 ECharts 准备一个定义了高宽的 DOM 容器。在刚才的例子 <code>&lt;/head></code> 之后,添加:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-html line-numbers"><code><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>body</span><span class="token punctuation">></span></span>
+  <span class="token comment">&lt;!-- 为 ECharts 准备一个定义了宽高的 DOM --></span>
+  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>main<span class="token punctuation">"</span></span> <span class="token special-attr"><span class="token attr-name">style</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token value css language-css"><span class="token property">width</span><span class="token punctuation">:</span> 600px<span class="token punctuation">;</span><span class="token property">height</span><span class="token punctuation">:</span>400px<span class="token punctuation">;</span></span><span class="token punctuation">"</span></span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">></span></span>
+<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>body</span><span class="token punctuation">></span></span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>然后就可以通过 <a href="https://echarts.apache.org//api.html#echarts.init">echarts.init</a> 方法初始化一个 echarts 实例并通过 <a href="https://echarts.apache.org//api.html#echartsInstance.setOption">setOption</a> 方法生成一个简单的柱状图,下面是完整代码。</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-html line-numbers"><code><span class="token doctype"><span class="token punctuation">&lt;!</span><span class="token doctype-tag">DOCTYPE</span> <span class="token name">html</span><span class="token punctuation">></span></span>
+<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>html</span><span class="token punctuation">></span></span>
+  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>head</span><span class="token punctuation">></span></span>
+    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>meta</span> <span class="token attr-name">charset</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>utf-8<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>
+    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>title</span><span class="token punctuation">></span></span>ECharts<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>title</span><span class="token punctuation">></span></span>
+    <span class="token comment">&lt;!-- 引入刚刚下载的 ECharts 文件 --></span>
+    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>echarts.js<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">></span></span>
+  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>head</span><span class="token punctuation">></span></span>
+  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>body</span><span class="token punctuation">></span></span>
+    <span class="token comment">&lt;!-- 为 ECharts 准备一个定义了宽高的 DOM --></span>
+    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>main<span class="token punctuation">"</span></span> <span class="token special-attr"><span class="token attr-name">style</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token value css language-css"><span class="token property">width</span><span class="token punctuation">:</span> 600px<span class="token punctuation">;</span><span class="token property">height</span><span class="token punctuation">:</span>400px<span class="token punctuation">;</span></span><span class="token punctuation">"</span></span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">></span></span>
+    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>text/javascript<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
+      // 基于准备好的dom,初始化echarts实例
+      var myChart = echarts.init(document.getElementById('main'));
+
+      // 指定图表的配置项和数据
+      var option = {
+        title: {
+          text: 'ECharts 入门示例'
+        },
+        tooltip: {},
+        legend: {
+          data: ['销量']
+        },
+        xAxis: {
+          data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']
+        },
+        yAxis: {},
+        series: [
+          {
+            name: '销量',
+            type: 'bar',
+            data: [5, 20, 36, 10, 10, 20]
+          }
+        ]
+      };
+
+      // 使用刚指定的配置项和数据显示图表。
+      myChart.setOption(option);
+    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">></span></span>
+  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>body</span><span class="token punctuation">></span></span>
+<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>html</span><span class="token punctuation">></span></span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>这样你的第一个图表就诞生了!</p> <p><iframe width="100%" height="350" src=""></iframe></p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">本文贡献者</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/zh/get-started.md" title="编辑本文" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">在 GitHub 上编辑本页</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/Ovilia" target="_blank" class="post-contributor has-avatar"><img alt="Ovilia" src="https://echarts.apache.org/en/images/people/羡辙.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>Ovilia</span></a><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a><a href="https://github.com/zxx0006" target="_blank" class="post-contributor"><!----> <span>zxx0006</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,i,e,r,d,l,a,h,o,c,n,g,s,C,I,p,A,m,u,b,w,v,f,B,E,G,S,W,k,P,D,L,H,R,x,Y,y,J,j,Z,z,F,O,K,N,M,Q,X,T,V,U,q,_,$,tt,it,et,rt,dt,lt,at,ht,ot,ct){return{layout:"default",data:[{html:'<h1 id="%E5%BF%AB%E9%80%9F%E4%B8%8A%E6%89%8B" tabindex="-1">快速上手</h1>\n<h2 id="%E8%8E%B7%E5%8F%96-apache-echarts" tabindex="-1">获取 Apache ECharts</h2>\n<p>Apache ECharts 支持多种下载方式,可以在下一篇教程<a href="zh/basics/download">安装</a>中查看所有方式。这里,我们以从 <a href="https://www.jsdelivr.com/package/npm/echarts">jsDelivr</a> CDN 上获取为例,介绍如何快速安装。</p>\n<p>在 <a href="https://www.jsdelivr.com/package/npm/echarts">https://www.jsdelivr.com/package/npm/echarts</a> 选择 <code>dist/echarts.js</code>,点击并保存为 <code>echarts.js</code> 文件。</p>\n<blockquote>\n<p>关于这些文件的介绍,可以在下一篇教程<a href="zh/basics/download">安装</a>中了解更多信息。</p>\n</blockquote>\n<h2 id="%E5%BC%95%E5%85%A5-apache-echarts" tabindex="-1">引入 Apache ECharts</h2>\n<p>在刚才保存 <code>echarts.js</code> 的目录新建一个 <code>index.html</code> 文件,内容如下:</p>\n<md-code-block lang="html" code="\'PCFET0NUWVBFIGh0bWw-CjxodG1sPgogIDxoZWFkPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiIC8-CiAgICA8IS0tIOW8leWFpeWImuWImuS4i-i9veeahCBFQ2hhcnRzIOaWh-S7tiAtLT4KICAgIDxzY3JpcHQgc3JjPSJlY2hhcnRzLmpzIj48L3NjcmlwdD4KICA8L2hlYWQ-CjwvaHRtbD4\'" line-highlights="\'\'" />\n<p>打开这个 <code>index.html</code>,你会看到一片空白。但是不要担心,打开控制台确认没有报错信息,就可以进行下一步。</p>\n<h2 id="%E7%BB%98%E5%88%B6%E4%B8%80%E4%B8%AA%E7%AE%80%E5%8D%95%E7%9A%84%E5%9B%BE%E8%A1%A8" tabindex="-1">绘制一个简单的图表</h2>\n<p>在绘图前我们需要为 ECharts 准备一个定义了高宽的 DOM 容器。在刚才的例子 <code>&lt;/head&gt;</code> 之后,添加:</p>\n<md-code-block lang="html" code="\'PGJvZHk-CiAgPCEtLSDkuLogRUNoYXJ0cyDlh4blpIfkuIDkuKrlrprkuYnkuoblrr3pq5jnmoQgRE9NIC0tPgogIDxkaXYgaWQ9Im1haW4iIHN0eWxlPSJ3aWR0aDogNjAwcHg7aGVpZ2h0OjQwMHB4OyI-PC9kaXY-CjwvYm9keT4\'" line-highlights="\'\'" />\n<p>然后就可以通过 <a href="https://echarts.apache.org//api.html#echarts.init">echarts.init</a> 方法初始化一个 echarts 实例并通过 <a href="https://echarts.apache.org//api.html#echartsInstance.setOption">setOption</a> 方法生成一个简单的柱状图,下面是完整代码。</p>\n<md-code-block lang="html" code="\'PCFET0NUWVBFIGh0bWw-CjxodG1sPgogIDxoZWFkPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiIC8-CiAgICA8dGl0bGU-RUNoYXJ0czwvdGl0bGU-CiAgICA8IS0tIOW8leWFpeWImuWImuS4i-i9veeahCBFQ2hhcnRzIOaWh-S7tiAtLT4KICAgIDxzY3JpcHQgc3JjPSJlY2hhcnRzLmpzIj48L3NjcmlwdD4KICA8L2hlYWQ-CiAgPGJvZHk-CiAgICA8IS0tIOS4uiBFQ2hhcnRzIOWHhuWkh-S4gOS4quWumuS5ieS6huWuvemrmOeahCBET00gLS0-CiAgICA8ZGl2IGlkPSJtYWluIiBzdHlsZT0id2lkdGg6IDYwMHB4O2hlaWdodDo0MDBweDsiPjwvZGl2PgogICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAvLyDln7rkuo7lh4blpIflpb3nmoRkb23vvIzliJ3lp4vljJZlY2hhcnRz5a6e5L6LCiAgICAgIHZhciBteUNoYXJ0ID0gZWNoYXJ0cy5pbml0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYWluJykpOwoKICAgICAgLy8g5oyH5a6a5Zu-6KGo55qE6YWN572u6aG55ZKM5pWw5o2uCiAgICAgIHZhciBvcHRpb24gPSB7CiAgICAgICAgdGl0bGU6IHsKICAgICAgICAgIHRleHQ6ICdFQ2hhcnRzIOWFpemXqOekuuS-iycKICAgICAgICB9LAogICAgICAgIHRvb2x0aXA6IHt9LAogICAgICAgIGxlZ2VuZDogewogICAgICAgICAgZGF0YTogWyfplIDph48nXQogICAgICAgIH0sCiAgICAgICAgeEF4aXM6IHsKICAgICAgICAgIGRhdGE6IFsn6KGs6KGrJywgJ-e-iuavm-ihqycsICfpm6rnurrooasnLCAn6KOk5a2QJywgJ-mrmOi3n-meiycsICfoopzlrZAnXQogICAgICAgIH0sCiAgICAgICAgeUF4aXM6IHt9LAogICAgICAgIHNlcmllczogWwogICAgICAgICAgewogICAgICAgICAgICBuYW1lOiAn6ZSA6YePJywKICAgICAgICAgICAgdHlwZTogJ2JhcicsCiAgICAgICAgICAgIGRhdGE6IFs1LCAyMCwgMzYsIDEwLCAxMCwgMjBdCiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9OwoKICAgICAgLy8g5L2_55So5Yia5oyH5a6a55qE6YWN572u6aG55ZKM5pWw5o2u5pi-56S65Zu-6KGo44CCCiAgICAgIG15Q2hhcnQuc2V0T3B0aW9uKG9wdGlvbik7CiAgICA8L3NjcmlwdD4KICA8L2JvZHk-CjwvaHRtbD4\'" line-highlights="\'\'" />\n<p>这样你的第一个图表就诞生了!</p>\n<p><md-example src="doc-example/getting-started"></md-example></p>\n',postPath:"zh/get-started",title:r}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:r,dir:d},{title:"入门篇",dir:l,children:[{title:"获取 ECharts",dir:a},{title:"在项目中引入 ECharts",dir:h},{title:"资源列表",dir:o,draft:t},{title:"寻求帮助",dir:c},{title:"版本特性",dir:n,children:[{title:"ECharts 6 特性介绍",dir:g},{title:"v5 升级 v6 指南",dir:s},{title:"5.0",dir:C},{title:"v4 升级 v5 指南",dir:I},{title:5.2,dir:p},{title:5.3,dir:A},{title:5.4,dir:m},{title:5.5,dir:u},{title:5.6,dir:b}]}]},{title:"概念篇",dir:w,children:[{title:"图表容器及大小",dir:v},{title:"配置项",dir:f,draft:t},{title:"系列",dir:B,draft:t},{title:"样式",dir:E},{title:"数据集",dir:G},{title:"数据转换",dir:S},{title:"坐标系",dir:W,draft:t},{title:"坐标轴",dir:k},{title:"视觉映射",dir:e},{title:"图例",dir:P},{title:"事件与行为",dir:D}]},{title:"应用篇",dir:L,children:[{title:"常用图表类型",dir:H,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:R},{title:"堆叠柱状图",dir:x},{title:"动态排序柱状图",dir:Y},{title:"极坐标系柱状图",dir:y,draft:t},{title:"阶梯瀑布图",dir:J},{title:"视觉映射的柱状图",dir:e,draft:t}]},{title:"折线图",dir:j,children:[{title:"基础折线图",dir:Z},{title:"堆叠折线图",dir:z},{title:"区域面积图",dir:F},{title:"平滑曲线图",dir:O},{title:"阶梯线图",dir:K}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:N},{title:"圆环图",dir:M},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:Q,children:[{title:"基础散点图",dir:X}]}]},{title:"常用组件",dir:T,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:V}]}]},{title:"移动端优化",dir:i,draft:t},{title:"跨平台方案",dir:U,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:q},{title:"数据下钻",dir:_,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:$}]},{title:"动画",dir:tt,children:[{title:"数据过渡动画",dir:it}]},{title:"交互",dir:et,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:rt,draft:t},{title:"智能指针吸附",dir:dt}]}]},{title:"最佳实践",dir:lt,children:[{title:"移动端优化",dir:i,draft:t},{title:at,dir:ht},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:ot}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:ct}]}],en:[{title:"Get Started",dir:d},{title:"Basics",dir:l,children:[{title:"Download ECharts",dir:a},{title:"Import ECharts",dir:h},{title:"Resources",dir:o,draft:t},{title:"Get Help",dir:c},{title:"What's New",dir:n,children:[{title:"ECharts 6 Features",dir:g},{title:"Migration from v5 to v6",dir:s},{title:"5.0",dir:C},{title:"Migration from v4 to v5",dir:I},{title:5.2,dir:p},{title:5.3,dir:A},{title:5.4,dir:m},{title:5.5,dir:u},{title:5.6,dir:b}]}]},{title:"Concepts",dir:w,children:[{title:"Chart Container",dir:v},{title:"Chart Option",dir:f,draft:t},{title:"Series",dir:B,draft:t},{title:"Style",dir:E},{title:"Dataset",dir:G},{title:"Data Transform",dir:S},{title:"Coordinate",dir:W,draft:t},{title:"Axis",dir:k},{title:"Visual Mapping",dir:e},{title:"Legend",dir:P},{title:"Event and Action",dir:D}]},{title:"How To Guides",dir:L,children:[{title:"Common Charts",dir:H,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:R},{title:"Stacked Bar",dir:x},{title:"Bar Racing",dir:Y},{title:"Bar Polar",dir:y,draft:t},{title:"Waterfall",dir:J}]},{title:"Line",dir:j,children:[{title:"Basic Line",dir:Z},{title:"Stacked Line",dir:z},{title:"Area Chart",dir:F},{title:"Smoothed Line",dir:O},{title:"Step Line",dir:K}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:N},{title:"Ring Style",dir:M},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:Q,children:[{title:"Basic Scatter",dir:X}]}]},{title:"Common Components",dir:T,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:V}]}]},{title:"Mobile",dir:i,draft:t},{title:"Cross Platform",dir:U,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:q},{title:"Drilldown",dir:_,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:$}]},{title:"Animation",dir:tt,children:[{title:"Data Transition",dir:it}]},{title:"Interaction",dir:et,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:rt,draft:t},{title:"Intelligent Pointer Snapping",dir:dt}]}]},{title:"Best Practices",dir:lt,children:[{title:"Mobile Optimization",dir:i,draft:t},{title:at,dir:ht},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:ot}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:ct}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/zh/get-started",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","快速上手","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/zh/how-to/animation/transition/index.html b/docs/zh/how-to/animation/transition/index.html
new file mode 100644
index 0000000..e20265b
--- /dev/null
+++ b/docs/zh/how-to/animation/transition/index.html
@@ -0,0 +1,194 @@
+<!doctype html>
+<html data-n-head-ssr lang="zh-CN" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh-CN%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>数据过渡动画 - 动画 - 应用篇 - 使用手册 - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="zh"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/zh/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/zh/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/zh/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/zh/index.html" class="navbar-brand"><img src="https://echarts.apache.org/zh/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/zh/index.html">首页</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">文档<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/feature.html">特性</a></li><li><a href="https://echarts.apache.org/handbook/zh/get-started/">使用手册</a></li><li><a href="https://echarts.apache.org/zh/api.html">API</a></li><li><a href="https://echarts.apache.org/zh/option.html">配置项手册</a></li><li><a href="https://echarts.apache.org/zh/changelog.html">版本记录</a></li><li><a href="https://echarts.apache.org/zh/faq.html">常见问题</a></li><li><a href="https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide">v6 升级指南</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">下载<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/download.html">下载</a></li><li><a href="https://echarts.apache.org/zh/download-theme.html">主题下载</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">自定义系列下载<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/download-extension.html">扩展下载</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/zh/index.html">示例</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">资源<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/spreadsheet.html">表格工具</a></li><li><a href="https://echarts.apache.org/zh/theme-builder.html">主题构建工具</a></li><li><a href="https://echarts.apache.org/zh/cheat-sheet.html">术语速查手册</a></li><li><a href="https://echarts.apache.org/zh/resources.html">更多资源</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">社区<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/events.html">活动</a></li><li><a href="https://echarts.apache.org/zh/committers.html">贡献者列表</a></li><li><a href="https://echarts.apache.org/zh/maillist.html">邮件列表</a></li><li><a href="https://echarts.apache.org/zh/contributing.html">如何贡献</a></li><li><a href="https://echarts.apache.org/zh/dependencies.html">依赖项</a></li><li><a href="https://echarts.apache.org/zh/coding-standard.html">代码规范</a></li><li><a href="https://github.com/apache/echarts" target="_blank">源码(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/security.html">安全</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">版权<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">活动<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">捐赠<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">鸣谢<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("en")'>EN</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/zh/get-started" class="nav-link"><span class="title">快速上手</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">入门篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/basics/download" class="nav-link"><span class="title">获取 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/import" class="nav-link"><span class="title">在项目中引入 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/basics/help" class="nav-link"><span class="title">寻求帮助</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">版本特性</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 特性介绍</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">v5 升级 v6 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">v4 升级 v5 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">概念篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/concepts/chart-size" class="nav-link"><span class="title">图表容器及大小</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/style" class="nav-link"><span class="title">样式</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/dataset" class="nav-link"><span class="title">数据集</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/data-transform" class="nav-link"><span class="title">数据转换</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/axis" class="nav-link"><span class="title">坐标轴</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/visual-map" class="nav-link"><span class="title">视觉映射</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/legend" class="nav-link"><span class="title">图例</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/event" class="nav-link"><span class="title">事件与行为</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">应用篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">常用图表类型</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">柱状图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">基础柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">堆叠柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">动态排序柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">阶梯瀑布图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">折线图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">基础折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">堆叠折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/area-line" class="nav-link"><span class="title">区域面积图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">平滑曲线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/step-line" class="nav-link"><span class="title">阶梯线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">饼图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">基础饼图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">圆环图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/rose" class="nav-link"><span class="title">南丁格尔图(玫瑰图)</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">散点图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">基础散点图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">常用组件</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">地理坐标系(Geo)</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG 底图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">跨平台方案</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/server" class="nav-link"><span class="title">服务端渲染</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/wechat-app" class="nav-link"><span class="title">微信小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/baidu-app" class="nav-link"><span class="title">百度智能小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">数据处理</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/data/dynamic-data" class="nav-link"><span class="title">动态的异步数据</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">标签</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/label/rich-text" class="nav-link"><span class="title">富文本标签</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">动画</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/animation/transition" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">数据过渡动画</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">交互</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/drag" class="nav-link"><span class="title">拖拽的实现</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">智能指针吸附</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">最佳实践</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/aria" class="nav-link"><span class="title">无障碍访问</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/security" class="nav-link"><span class="title">安全指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">编辑本文档</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/meta/edit-guide" class="nav-link"><span class="title">文档编辑指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="%E5%9F%BA%E7%A1%80%E7%9A%84%E8%BF%87%E6%B8%A1%E5%8A%A8%E7%94%BB" tabindex="-1">基础的过渡动画</h1> <p>Apache ECharts<sup>TM</sup> 中使用了平移,缩放,变形等形式的过渡动画让数据的添加更新删除,以及用户的交互变得更加顺滑。通常情况下开发者不需要操心该如何去使用动画,只需要按自己的需求使用<code>setOption</code>更新数据,ECharts 就会找出跟上一次数据之间的区别,然后自动应用最合适的过渡动画。</p> <p>比如下面例子就是定时更新饼图数据(随机)的过渡动画效果。</p> <div class="md-live layout-lr"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">function makeRandomData() {
+  return [
+    {
+      value: Math.random(),
+      name: 'A'
+    },
+    {
+      value: Math.random(),
+      name: 'B'
+    },
+    {
+      value: Math.random(),
+      name: 'C'
+    }
+  ];
+}
+option = {
+  series: [
+    {
+      type: 'pie',
+      radius: [0, '50%'],
+      data: makeRandomData()
+    }
+  ]
+};
+
+setInterval(() => {
+  myChart.setOption({
+    series: {
+      data: makeRandomData()
+    }
+  });
+}, 2000);</textarea><pre data-testid="preview" class="prism-editor__editor"><span class="token keyword">function</span> <span class="token function">makeRandomData</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  <span class="token keyword">return</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">value</span><span class="token operator">:</span> Math<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'A'</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">value</span><span class="token operator">:</span> Math<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'B'</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">value</span><span class="token operator">:</span> Math<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'C'</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span>
+option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'pie'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">radius</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token string">'50%'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token function">makeRandomData</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span>
+
+<span class="token function">setInterval</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
+  myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+    <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token function">makeRandomData</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token number">2000</span><span class="token punctuation">)</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <h2 id="%E8%BF%87%E6%B8%A1%E5%8A%A8%E7%94%BB%E7%9A%84%E9%85%8D%E7%BD%AE" tabindex="-1">过渡动画的配置</h2> <p>因为数据添加和数据更新往往会需要不一样的动画效果,比如我们会期望数据更新动画的时长更短,因此 ECharts 区分了这两者的动画配置:</p> <ul><li>对于新添加的数据,我们会应用入场动画,通过<code>animationDuration</code>, <code>animationEasing</code>, <code>animationDelay</code>三个配置项分别配置动画的时长,缓动以及延时。</li> <li>对于数据更新,我们会应用更新动画,通过<code>animationDurationUpdate</code>, <code>animationEasingUpdate</code>, <code>animationDelayUpdate</code>三个配置项分别配置动画的时长,缓动以及延时。</li></ul> <p>可以看到,更新动画配置是入场动画配置加上了<code>Update</code>的后缀。</p> <blockquote><p>在 ECharts 中每次 setOption 的更新,数据会跟上一次更新的数据做对比,然后根据对比结果分别为数据执行三种状态:添加,更新以及移除。这个比对是根据数据的<code>name</code>来决定的,例如上一次更新数据有三个<code>name</code>为<code>'A'</code>, <code>'B'</code>, <code>'C'</code>的数据,而新更新的数据变为了<code>'B'</code>, <code>'C'</code>, <code>'D'</code>的数据,则数据<code>'B'</code>, <code>'C'</code>会被执行更新,数据<code>'A'</code>会被移除,而数据<code>'D'</code>会被添加。如果是第一次更新因为没有旧数据,所以所有数据都会被执行添加。根据这三种状态 ECharts 会分别应用相应的入场动画,更新动画以及移除动画。</p></blockquote> <p>所有这些配置都可以分别设置在<code>option</code>最顶层对所有系列和组件生效,也可以分别为每个系列配置。</p> <p>如果我们想要关闭动画,可以直接设置<code>option.animation</code>为<code>false</code>。</p> <h3 id="%E5%8A%A8%E7%94%BB%E6%97%B6%E9%95%BF" tabindex="-1">动画时长</h3> <p><code>animationDuration</code>和<code>animationDurationUpdate</code>用于设置动画的时长,单位为<code>ms</code>,设置较长的动画时长可以让用户更清晰的看到过渡动画的效果,但是我们也需要小心过长的时间会让用户再等待的过程中失去耐心。</p> <p>设置为<code>0</code>会关闭动画,在我们只想要单独关闭入场动画或者更新动画的时候可以通过单独将相应的配置设置为<code>0</code>来实现。</p> <h3 id="%E5%8A%A8%E7%94%BB%E7%BC%93%E5%8A%A8" tabindex="-1">动画缓动</h3> <p><code>animationEasing</code>和<code>animationEasingUpdate</code>两个配置项用于设置动画的缓动函数,缓动函数是一个输入动画时间,输出动画进度的函数:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code><span class="token punctuation">(</span>t<span class="token operator">:</span> <span class="token builtin">number</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token builtin">number</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>在 ECharts 里内置了缓入<code>'cubicIn'</code>,缓出<code>'cubicOut'</code>等常见的动画缓动函数,我们可以直接通过名字来声明使用这些缓动函数。</p> <p>内置缓动函数:</p> <iframe width="100%" height="400" src=""></iframe> <h3 id="%E5%BB%B6%E6%97%B6%E8%A7%A6%E5%8F%91" tabindex="-1">延时触发</h3> <p><code>animationDelay</code>和<code>animationDelayUpdate</code>用于设置动画延迟开始的时间,通常我们会使用回调函数将不同数据设置不同的延时来实现交错动画的效果:</p> <div class="md-live layout-lr"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">var xAxisData = [];
+var data1 = [];
+var data2 = [];
+for (var i = 0; i &lt; 100; i++) {
+  xAxisData.push('A' + i);
+  data1.push((Math.sin(i / 5) * (i / 5 - 10) + i / 6) * 5);
+  data2.push((Math.cos(i / 5) * (i / 5 - 10) + i / 6) * 5);
+}
+option = {
+  legend: {
+    data: ['bar', 'bar2']
+  },
+  xAxis: {
+    data: xAxisData,
+    splitLine: {
+      show: false
+    }
+  },
+  yAxis: {},
+  series: [
+    {
+      name: 'bar',
+      type: 'bar',
+      data: data1,
+      emphasis: {
+        focus: 'series'
+      },
+      animationDelay: function(idx) {
+        return idx * 10;
+      }
+    },
+    {
+      name: 'bar2',
+      type: 'bar',
+      data: data2,
+      emphasis: {
+        focus: 'series'
+      },
+      animationDelay: function(idx) {
+        return idx * 10 + 100;
+      }
+    }
+  ],
+  animationEasing: 'elasticOut',
+  animationDelayUpdate: function(idx) {
+    return idx * 5;
+  }
+};</textarea><pre data-testid="preview" class="prism-editor__editor"><span class="token keyword">var</span> xAxisData <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
+<span class="token keyword">var</span> data1 <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
+<span class="token keyword">var</span> data2 <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
+<span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">var</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator">&lt;</span> <span class="token number">100</span><span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  xAxisData<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token string">'A'</span> <span class="token operator">+</span> i<span class="token punctuation">)</span><span class="token punctuation">;</span>
+  data1<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token punctuation">(</span>Math<span class="token punctuation">.</span><span class="token function">sin</span><span class="token punctuation">(</span>i <span class="token operator">/</span> <span class="token number">5</span><span class="token punctuation">)</span> <span class="token operator">*</span> <span class="token punctuation">(</span>i <span class="token operator">/</span> <span class="token number">5</span> <span class="token operator">-</span> <span class="token number">10</span><span class="token punctuation">)</span> <span class="token operator">+</span> i <span class="token operator">/</span> <span class="token number">6</span><span class="token punctuation">)</span> <span class="token operator">*</span> <span class="token number">5</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+  data2<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token punctuation">(</span>Math<span class="token punctuation">.</span><span class="token function">cos</span><span class="token punctuation">(</span>i <span class="token operator">/</span> <span class="token number">5</span><span class="token punctuation">)</span> <span class="token operator">*</span> <span class="token punctuation">(</span>i <span class="token operator">/</span> <span class="token number">5</span> <span class="token operator">-</span> <span class="token number">10</span><span class="token punctuation">)</span> <span class="token operator">+</span> i <span class="token operator">/</span> <span class="token number">6</span><span class="token punctuation">)</span> <span class="token operator">*</span> <span class="token number">5</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span>
+option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">legend</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'bar'</span><span class="token punctuation">,</span> <span class="token string">'bar2'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> xAxisData<span class="token punctuation">,</span>
+    <span class="token literal-property property">splitLine</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">false</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> data1<span class="token punctuation">,</span>
+      <span class="token literal-property property">emphasis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">focus</span><span class="token operator">:</span> <span class="token string">'series'</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token function-variable function">animationDelay</span><span class="token operator">:</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">idx</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+        <span class="token keyword">return</span> idx <span class="token operator">*</span> <span class="token number">10</span><span class="token punctuation">;</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'bar2'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> data2<span class="token punctuation">,</span>
+      <span class="token literal-property property">emphasis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">focus</span><span class="token operator">:</span> <span class="token string">'series'</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token function-variable function">animationDelay</span><span class="token operator">:</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">idx</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+        <span class="token keyword">return</span> idx <span class="token operator">*</span> <span class="token number">10</span> <span class="token operator">+</span> <span class="token number">100</span><span class="token punctuation">;</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">animationEasing</span><span class="token operator">:</span> <span class="token string">'elasticOut'</span><span class="token punctuation">,</span>
+  <span class="token function-variable function">animationDelayUpdate</span><span class="token operator">:</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">idx</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+    <span class="token keyword">return</span> idx <span class="token operator">*</span> <span class="token number">5</span><span class="token punctuation">;</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <h2 id="%E5%8A%A8%E7%94%BB%E7%9A%84%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96" tabindex="-1">动画的性能优化</h2> <p>在数据量特别大的时候,为图形应用动画可能会导致应用的卡顿,这个时候我们可以设置<code>animation: false</code>关闭动画。</p> <p>对于数据量会动态变化的图表,我们更推荐使用<code>animationThreshold</code>这个配置项,当画布中图形数量超过这个阈值的时候,ECharts 会自动关闭动画来提升绘制性能。这个配置往往是一个经验值,通常 ECharts 的性能足够实时渲染上千个图形的动画(我们默认值也是给了 2000),但是如果你的图表很复杂,或者你的用户环境比较恶劣,页面中又同时会运行很多其它复杂的代码,也可以适当的下调这个值保证整个应用的流畅性。</p> <h2 id="%E7%9B%91%E5%90%AC%E5%8A%A8%E7%94%BB%E7%BB%93%E6%9D%9F" tabindex="-1">监听动画结束</h2> <p>有时候我们想要获取当前渲染的结果,如果没有使用动画,我们在<code>setOption</code>之后 ECharts 就会直接执行渲染,我们可以同步的通过<code>getDataURL</code>方法获取渲染得到的结果。</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code><span class="token keyword">const</span> chart <span class="token operator">=</span> echarts<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span>dom<span class="token punctuation">)</span><span class="token punctuation">;</span>
+chart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+  animation<span class="token operator">:</span> <span class="token boolean">false</span>
+  <span class="token comment">//...</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token comment">// 可以直接同步执行</span>
+<span class="token keyword">const</span> dataUrl <span class="token operator">=</span> chart<span class="token punctuation">.</span><span class="token function">getDataURL</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>但是如果图表中有动画,马上执行<code>getDataURL</code>得到的是动画刚开始的画面,而非最终展示的结果。因此我们需要知道动画结束然后再执行<code>getDataURL</code>得到结果。</p> <p>假如你确定动画的时长,一种比较简单粗暴的方式是根据动画时长来执行<code>setTimeout</code>延迟执行:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code>chart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+  animationDuration<span class="token operator">:</span> <span class="token number">1000</span>
+  <span class="token comment">//...</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token function">setTimeout</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
+  <span class="token keyword">const</span> dataUrl <span class="token operator">=</span> chart<span class="token punctuation">.</span><span class="token function">getDataURL</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token number">1000</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>或者我们也可以使用 ECharts 提供的<code>rendered</code>事件来判断 ECharts 已经动画结束停止了渲染</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code>chart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+  animationDuration<span class="token operator">:</span> <span class="token number">1000</span>
+  <span class="token comment">//...</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+<span class="token keyword">function</span> <span class="token function">onRendered</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  <span class="token keyword">const</span> dataUrl <span class="token operator">=</span> chart<span class="token punctuation">.</span><span class="token function">getDataURL</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+  <span class="token comment">// ...</span>
+  <span class="token comment">// 后续如果有交互,交互发生重绘也会触发该事件,因此使用完就需要移除</span>
+  chart<span class="token punctuation">.</span><span class="token function">off</span><span class="token punctuation">(</span><span class="token string">'rendered'</span><span class="token punctuation">,</span> onRendered<span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span>
+chart<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'rendered'</span><span class="token punctuation">,</span> onRendered<span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">本文贡献者</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/zh/how-to/animation/transition.md" title="编辑本文" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">在 GitHub 上编辑本页</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(i,t,e,d,r,a,l,o,n,c,g,h,s,C,p,I,A,m,B,b,u,E,K,G,S,k,w,v,R,f,X,Y,O,V,W,F,Z,H,y,D,T,J,L,U,M,P,z,x,Q,N,j,_,q,$,ii,ti,ei,di,ri,ai,li,oi,ni){return{layout:"default",data:[{html:'<h1 id="%E5%9F%BA%E7%A1%80%E7%9A%84%E8%BF%87%E6%B8%A1%E5%8A%A8%E7%94%BB" tabindex="-1">基础的过渡动画</h1>\n<p>Apache ECharts<sup>TM</sup> 中使用了平移,缩放,变形等形式的过渡动画让数据的添加更新删除,以及用户的交互变得更加顺滑。通常情况下开发者不需要操心该如何去使用动画,只需要按自己的需求使用<code>setOption</code>更新数据,ECharts 就会找出跟上一次数据之间的区别,然后自动应用最合适的过渡动画。</p>\n<p>比如下面例子就是定时更新饼图数据(随机)的过渡动画效果。</p>\n<md-live lang="js" code="\'ZnVuY3Rpb24gbWFrZVJhbmRvbURhdGEoKSB7CiAgcmV0dXJuIFsKICAgIHsKICAgICAgdmFsdWU6IE1hdGgucmFuZG9tKCksCiAgICAgIG5hbWU6ICdBJwogICAgfSwKICAgIHsKICAgICAgdmFsdWU6IE1hdGgucmFuZG9tKCksCiAgICAgIG5hbWU6ICdCJwogICAgfSwKICAgIHsKICAgICAgdmFsdWU6IE1hdGgucmFuZG9tKCksCiAgICAgIG5hbWU6ICdDJwogICAgfQogIF07Cn0Kb3B0aW9uID0gewogIHNlcmllczogWwogICAgewogICAgICB0eXBlOiAncGllJywKICAgICAgcmFkaXVzOiBbMCwgJzUwJSddLAogICAgICBkYXRhOiBtYWtlUmFuZG9tRGF0YSgpCiAgICB9CiAgXQp9OwoKc2V0SW50ZXJ2YWwoKCkgPT4gewogIG15Q2hhcnQuc2V0T3B0aW9uKHsKICAgIHNlcmllczogewogICAgICBkYXRhOiBtYWtlUmFuZG9tRGF0YSgpCiAgICB9CiAgfSk7Cn0sIDIwMDApOw\'" v-bind="{layout: \'lr\'}" />\n<h2 id="%E8%BF%87%E6%B8%A1%E5%8A%A8%E7%94%BB%E7%9A%84%E9%85%8D%E7%BD%AE" tabindex="-1">过渡动画的配置</h2>\n<p>因为数据添加和数据更新往往会需要不一样的动画效果,比如我们会期望数据更新动画的时长更短,因此 ECharts 区分了这两者的动画配置:</p>\n<ul>\n<li>对于新添加的数据,我们会应用入场动画,通过<code>animationDuration</code>, <code>animationEasing</code>, <code>animationDelay</code>三个配置项分别配置动画的时长,缓动以及延时。</li>\n<li>对于数据更新,我们会应用更新动画,通过<code>animationDurationUpdate</code>, <code>animationEasingUpdate</code>, <code>animationDelayUpdate</code>三个配置项分别配置动画的时长,缓动以及延时。</li>\n</ul>\n<p>可以看到,更新动画配置是入场动画配置加上了<code>Update</code>的后缀。</p>\n<blockquote>\n<p>在 ECharts 中每次 setOption 的更新,数据会跟上一次更新的数据做对比,然后根据对比结果分别为数据执行三种状态:添加,更新以及移除。这个比对是根据数据的<code>name</code>来决定的,例如上一次更新数据有三个<code>name</code>为<code>\'A\'</code>, <code>\'B\'</code>, <code>\'C\'</code>的数据,而新更新的数据变为了<code>\'B\'</code>, <code>\'C\'</code>, <code>\'D\'</code>的数据,则数据<code>\'B\'</code>, <code>\'C\'</code>会被执行更新,数据<code>\'A\'</code>会被移除,而数据<code>\'D\'</code>会被添加。如果是第一次更新因为没有旧数据,所以所有数据都会被执行添加。根据这三种状态 ECharts 会分别应用相应的入场动画,更新动画以及移除动画。</p>\n</blockquote>\n<p>所有这些配置都可以分别设置在<code>option</code>最顶层对所有系列和组件生效,也可以分别为每个系列配置。</p>\n<p>如果我们想要关闭动画,可以直接设置<code>option.animation</code>为<code>false</code>。</p>\n<h3 id="%E5%8A%A8%E7%94%BB%E6%97%B6%E9%95%BF" tabindex="-1">动画时长</h3>\n<p><code>animationDuration</code>和<code>animationDurationUpdate</code>用于设置动画的时长,单位为<code>ms</code>,设置较长的动画时长可以让用户更清晰的看到过渡动画的效果,但是我们也需要小心过长的时间会让用户再等待的过程中失去耐心。</p>\n<p>设置为<code>0</code>会关闭动画,在我们只想要单独关闭入场动画或者更新动画的时候可以通过单独将相应的配置设置为<code>0</code>来实现。</p>\n<h3 id="%E5%8A%A8%E7%94%BB%E7%BC%93%E5%8A%A8" tabindex="-1">动画缓动</h3>\n<p><code>animationEasing</code>和<code>animationEasingUpdate</code>两个配置项用于设置动画的缓动函数,缓动函数是一个输入动画时间,输出动画进度的函数:</p>\n<md-code-block lang="ts" code="\'KHQ6IG51bWJlcikgPT4gbnVtYmVyOw\'" line-highlights="\'\'" />\n<p>在 ECharts 里内置了缓入<code>\'cubicIn\'</code>,缓出<code>\'cubicOut\'</code>等常见的动画缓动函数,我们可以直接通过名字来声明使用这些缓动函数。</p>\n<p>内置缓动函数:</p>\n<md-example src="line-easing" width="100%" height="400" />\n<h3 id="%E5%BB%B6%E6%97%B6%E8%A7%A6%E5%8F%91" tabindex="-1">延时触发</h3>\n<p><code>animationDelay</code>和<code>animationDelayUpdate</code>用于设置动画延迟开始的时间,通常我们会使用回调函数将不同数据设置不同的延时来实现交错动画的效果:</p>\n<md-live lang="ts" code="\'dmFyIHhBeGlzRGF0YSA9IFtdOwp2YXIgZGF0YTEgPSBbXTsKdmFyIGRhdGEyID0gW107CmZvciAodmFyIGkgPSAwOyBpIDwgMTAwOyBpKyspIHsKICB4QXhpc0RhdGEucHVzaCgnQScgKyBpKTsKICBkYXRhMS5wdXNoKChNYXRoLnNpbihpIC8gNSkgKiAoaSAvIDUgLSAxMCkgKyBpIC8gNikgKiA1KTsKICBkYXRhMi5wdXNoKChNYXRoLmNvcyhpIC8gNSkgKiAoaSAvIDUgLSAxMCkgKyBpIC8gNikgKiA1KTsKfQpvcHRpb24gPSB7CiAgbGVnZW5kOiB7CiAgICBkYXRhOiBbJ2JhcicsICdiYXIyJ10KICB9LAogIHhBeGlzOiB7CiAgICBkYXRhOiB4QXhpc0RhdGEsCiAgICBzcGxpdExpbmU6IHsKICAgICAgc2hvdzogZmFsc2UKICAgIH0KICB9LAogIHlBeGlzOiB7fSwKICBzZXJpZXM6IFsKICAgIHsKICAgICAgbmFtZTogJ2JhcicsCiAgICAgIHR5cGU6ICdiYXInLAogICAgICBkYXRhOiBkYXRhMSwKICAgICAgZW1waGFzaXM6IHsKICAgICAgICBmb2N1czogJ3NlcmllcycKICAgICAgfSwKICAgICAgYW5pbWF0aW9uRGVsYXk6IGZ1bmN0aW9uKGlkeCkgewogICAgICAgIHJldHVybiBpZHggKiAxMDsKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgbmFtZTogJ2JhcjInLAogICAgICB0eXBlOiAnYmFyJywKICAgICAgZGF0YTogZGF0YTIsCiAgICAgIGVtcGhhc2lzOiB7CiAgICAgICAgZm9jdXM6ICdzZXJpZXMnCiAgICAgIH0sCiAgICAgIGFuaW1hdGlvbkRlbGF5OiBmdW5jdGlvbihpZHgpIHsKICAgICAgICByZXR1cm4gaWR4ICogMTAgKyAxMDA7CiAgICAgIH0KICAgIH0KICBdLAogIGFuaW1hdGlvbkVhc2luZzogJ2VsYXN0aWNPdXQnLAogIGFuaW1hdGlvbkRlbGF5VXBkYXRlOiBmdW5jdGlvbihpZHgpIHsKICAgIHJldHVybiBpZHggKiA1OwogIH0KfTs\'" v-bind="{ layout: \'lr\' }" />\n<h2 id="%E5%8A%A8%E7%94%BB%E7%9A%84%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96" tabindex="-1">动画的性能优化</h2>\n<p>在数据量特别大的时候,为图形应用动画可能会导致应用的卡顿,这个时候我们可以设置<code>animation: false</code>关闭动画。</p>\n<p>对于数据量会动态变化的图表,我们更推荐使用<code>animationThreshold</code>这个配置项,当画布中图形数量超过这个阈值的时候,ECharts 会自动关闭动画来提升绘制性能。这个配置往往是一个经验值,通常 ECharts 的性能足够实时渲染上千个图形的动画(我们默认值也是给了 2000),但是如果你的图表很复杂,或者你的用户环境比较恶劣,页面中又同时会运行很多其它复杂的代码,也可以适当的下调这个值保证整个应用的流畅性。</p>\n<h2 id="%E7%9B%91%E5%90%AC%E5%8A%A8%E7%94%BB%E7%BB%93%E6%9D%9F" tabindex="-1">监听动画结束</h2>\n<p>有时候我们想要获取当前渲染的结果,如果没有使用动画,我们在<code>setOption</code>之后 ECharts 就会直接执行渲染,我们可以同步的通过<code>getDataURL</code>方法获取渲染得到的结果。</p>\n<md-code-block lang="ts" code="\'Y29uc3QgY2hhcnQgPSBlY2hhcnRzLmluaXQoZG9tKTsKY2hhcnQuc2V0T3B0aW9uKHsKICBhbmltYXRpb246IGZhbHNlCiAgLy8uLi4KfSk7Ci8vIOWPr-S7peebtOaOpeWQjOatpeaJp-ihjApjb25zdCBkYXRhVXJsID0gY2hhcnQuZ2V0RGF0YVVSTCgpOw\'" line-highlights="\'\'" />\n<p>但是如果图表中有动画,马上执行<code>getDataURL</code>得到的是动画刚开始的画面,而非最终展示的结果。因此我们需要知道动画结束然后再执行<code>getDataURL</code>得到结果。</p>\n<p>假如你确定动画的时长,一种比较简单粗暴的方式是根据动画时长来执行<code>setTimeout</code>延迟执行:</p>\n<md-code-block lang="ts" code="\'Y2hhcnQuc2V0T3B0aW9uKHsKICBhbmltYXRpb25EdXJhdGlvbjogMTAwMAogIC8vLi4uCn0pOwpzZXRUaW1lb3V0KCgpID0-IHsKICBjb25zdCBkYXRhVXJsID0gY2hhcnQuZ2V0RGF0YVVSTCgpOwp9LCAxMDAwKTs\'" line-highlights="\'\'" />\n<p>或者我们也可以使用 ECharts 提供的<code>rendered</code>事件来判断 ECharts 已经动画结束停止了渲染</p>\n<md-code-block lang="ts" code="\'Y2hhcnQuc2V0T3B0aW9uKHsKICBhbmltYXRpb25EdXJhdGlvbjogMTAwMAogIC8vLi4uCn0pOwoKZnVuY3Rpb24gb25SZW5kZXJlZCgpIHsKICBjb25zdCBkYXRhVXJsID0gY2hhcnQuZ2V0RGF0YVVSTCgpOwogIC8vIC4uLgogIC8vIOWQjue7reWmguaenOacieS6pOS6ku-8jOS6pOS6kuWPkeeUn-mHjee7mOS5n-S8muinpuWPkeivpeS6i-S7tu-8jOWboOatpOS9v-eUqOWujOWwsemcgOimgeenu-mZpAogIGNoYXJ0Lm9mZigncmVuZGVyZWQnLCBvblJlbmRlcmVkKTsKfQpjaGFydC5vbigncmVuZGVyZWQnLCBvblJlbmRlcmVkKTs\'" line-highlights="\'\'" />\n',postPath:"zh/how-to/animation/transition",title:"数据过渡动画 - 动画 - 应用篇"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:d},{title:"入门篇",dir:r,children:[{title:"获取 ECharts",dir:a},{title:"在项目中引入 ECharts",dir:l},{title:"资源列表",dir:o,draft:i},{title:"寻求帮助",dir:n},{title:"版本特性",dir:c,children:[{title:"ECharts 6 特性介绍",dir:g},{title:"v5 升级 v6 指南",dir:h},{title:"5.0",dir:s},{title:"v4 升级 v5 指南",dir:C},{title:5.2,dir:p},{title:5.3,dir:I},{title:5.4,dir:A},{title:5.5,dir:m},{title:5.6,dir:B}]}]},{title:"概念篇",dir:b,children:[{title:"图表容器及大小",dir:u},{title:"配置项",dir:E,draft:i},{title:"系列",dir:K,draft:i},{title:"样式",dir:G},{title:"数据集",dir:S},{title:"数据转换",dir:k},{title:"坐标系",dir:w,draft:i},{title:"坐标轴",dir:v},{title:"视觉映射",dir:e},{title:"图例",dir:R},{title:"事件与行为",dir:f}]},{title:"应用篇",dir:X,children:[{title:"常用图表类型",dir:Y,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:O},{title:"堆叠柱状图",dir:V},{title:"动态排序柱状图",dir:W},{title:"极坐标系柱状图",dir:F,draft:i},{title:"阶梯瀑布图",dir:Z},{title:"视觉映射的柱状图",dir:e,draft:i}]},{title:"折线图",dir:H,children:[{title:"基础折线图",dir:y},{title:"堆叠折线图",dir:D},{title:"区域面积图",dir:T},{title:"平滑曲线图",dir:J},{title:"阶梯线图",dir:L}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:U},{title:"圆环图",dir:M},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:P,children:[{title:"基础散点图",dir:z}]}]},{title:"常用组件",dir:x,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:Q}]}]},{title:"移动端优化",dir:t,draft:i},{title:"跨平台方案",dir:N,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:j},{title:"数据下钻",dir:_,draft:i}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:q}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:ii}]},{title:"交互",dir:ti,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:ei,draft:i},{title:"智能指针吸附",dir:di}]}]},{title:"最佳实践",dir:ri,children:[{title:"移动端优化",dir:t,draft:i},{title:ai,dir:li},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:oi}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:ni}]}],en:[{title:"Get Started",dir:d},{title:"Basics",dir:r,children:[{title:"Download ECharts",dir:a},{title:"Import ECharts",dir:l},{title:"Resources",dir:o,draft:i},{title:"Get Help",dir:n},{title:"What's New",dir:c,children:[{title:"ECharts 6 Features",dir:g},{title:"Migration from v5 to v6",dir:h},{title:"5.0",dir:s},{title:"Migration from v4 to v5",dir:C},{title:5.2,dir:p},{title:5.3,dir:I},{title:5.4,dir:A},{title:5.5,dir:m},{title:5.6,dir:B}]}]},{title:"Concepts",dir:b,children:[{title:"Chart Container",dir:u},{title:"Chart Option",dir:E,draft:i},{title:"Series",dir:K,draft:i},{title:"Style",dir:G},{title:"Dataset",dir:S},{title:"Data Transform",dir:k},{title:"Coordinate",dir:w,draft:i},{title:"Axis",dir:v},{title:"Visual Mapping",dir:e},{title:"Legend",dir:R},{title:"Event and Action",dir:f}]},{title:"How To Guides",dir:X,children:[{title:"Common Charts",dir:Y,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:O},{title:"Stacked Bar",dir:V},{title:"Bar Racing",dir:W},{title:"Bar Polar",dir:F,draft:i},{title:"Waterfall",dir:Z}]},{title:"Line",dir:H,children:[{title:"Basic Line",dir:y},{title:"Stacked Line",dir:D},{title:"Area Chart",dir:T},{title:"Smoothed Line",dir:J},{title:"Step Line",dir:L}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:U},{title:"Ring Style",dir:M},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:P,children:[{title:"Basic Scatter",dir:z}]}]},{title:"Common Components",dir:x,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:Q}]}]},{title:"Mobile",dir:t,draft:i},{title:"Cross Platform",dir:N,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:j},{title:"Drilldown",dir:_,draft:i}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:q}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:ii}]},{title:"Interaction",dir:ti,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:ei,draft:i},{title:"Intelligent Pointer Snapping",dir:di}]}]},{title:"Best Practices",dir:ri,children:[{title:"Mobile Optimization",dir:t,draft:i},{title:ai,dir:li},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:oi}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:ni}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:i,routePath:"/zh/how-to/animation/transition",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/zh/how-to/chart-types/bar/bar-race/index.html b/docs/zh/how-to/chart-types/bar/bar-race/index.html
new file mode 100644
index 0000000..d648e08
--- /dev/null
+++ b/docs/zh/how-to/chart-types/bar/bar-race/index.html
@@ -0,0 +1,119 @@
+<!doctype html>
+<html data-n-head-ssr lang="zh-CN" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh-CN%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>动态排序柱状图 - 柱状图 - 常用图表类型 - 应用篇 - 使用手册 - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="zh"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/zh/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/zh/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/zh/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/zh/index.html" class="navbar-brand"><img src="https://echarts.apache.org/zh/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/zh/index.html">首页</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">文档<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/feature.html">特性</a></li><li><a href="https://echarts.apache.org/handbook/zh/get-started/">使用手册</a></li><li><a href="https://echarts.apache.org/zh/api.html">API</a></li><li><a href="https://echarts.apache.org/zh/option.html">配置项手册</a></li><li><a href="https://echarts.apache.org/zh/changelog.html">版本记录</a></li><li><a href="https://echarts.apache.org/zh/faq.html">常见问题</a></li><li><a href="https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide">v6 升级指南</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">下载<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/download.html">下载</a></li><li><a href="https://echarts.apache.org/zh/download-theme.html">主题下载</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">自定义系列下载<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/download-extension.html">扩展下载</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/zh/index.html">示例</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">资源<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/spreadsheet.html">表格工具</a></li><li><a href="https://echarts.apache.org/zh/theme-builder.html">主题构建工具</a></li><li><a href="https://echarts.apache.org/zh/cheat-sheet.html">术语速查手册</a></li><li><a href="https://echarts.apache.org/zh/resources.html">更多资源</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">社区<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/events.html">活动</a></li><li><a href="https://echarts.apache.org/zh/committers.html">贡献者列表</a></li><li><a href="https://echarts.apache.org/zh/maillist.html">邮件列表</a></li><li><a href="https://echarts.apache.org/zh/contributing.html">如何贡献</a></li><li><a href="https://echarts.apache.org/zh/dependencies.html">依赖项</a></li><li><a href="https://echarts.apache.org/zh/coding-standard.html">代码规范</a></li><li><a href="https://github.com/apache/echarts" target="_blank">源码(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/security.html">安全</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">版权<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">活动<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">捐赠<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">鸣谢<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("en")'>EN</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/zh/get-started" class="nav-link"><span class="title">快速上手</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">入门篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/basics/download" class="nav-link"><span class="title">获取 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/import" class="nav-link"><span class="title">在项目中引入 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/basics/help" class="nav-link"><span class="title">寻求帮助</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">版本特性</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 特性介绍</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">v5 升级 v6 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">v4 升级 v5 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">概念篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/concepts/chart-size" class="nav-link"><span class="title">图表容器及大小</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/style" class="nav-link"><span class="title">样式</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/dataset" class="nav-link"><span class="title">数据集</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/data-transform" class="nav-link"><span class="title">数据转换</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/axis" class="nav-link"><span class="title">坐标轴</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/visual-map" class="nav-link"><span class="title">视觉映射</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/legend" class="nav-link"><span class="title">图例</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/event" class="nav-link"><span class="title">事件与行为</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">应用篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">常用图表类型</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a class="nav-link"><span class="title">柱状图</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level3"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">基础柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">堆叠柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/bar-race" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">动态排序柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">阶梯瀑布图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">折线图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">基础折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">堆叠折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/area-line" class="nav-link"><span class="title">区域面积图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">平滑曲线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/step-line" class="nav-link"><span class="title">阶梯线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">饼图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">基础饼图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">圆环图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/rose" class="nav-link"><span class="title">南丁格尔图(玫瑰图)</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">散点图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">基础散点图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">常用组件</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">地理坐标系(Geo)</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG 底图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">跨平台方案</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/server" class="nav-link"><span class="title">服务端渲染</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/wechat-app" class="nav-link"><span class="title">微信小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/baidu-app" class="nav-link"><span class="title">百度智能小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">数据处理</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/data/dynamic-data" class="nav-link"><span class="title">动态的异步数据</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">标签</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/label/rich-text" class="nav-link"><span class="title">富文本标签</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">动画</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/animation/transition" class="nav-link"><span class="title">数据过渡动画</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">交互</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/drag" class="nav-link"><span class="title">拖拽的实现</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">智能指针吸附</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">最佳实践</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/aria" class="nav-link"><span class="title">无障碍访问</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/security" class="nav-link"><span class="title">安全指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">编辑本文档</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/meta/edit-guide" class="nav-link"><span class="title">文档编辑指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="%E5%8A%A8%E6%80%81%E6%8E%92%E5%BA%8F%E6%9F%B1%E7%8A%B6%E5%9B%BE" tabindex="-1">动态排序柱状图</h1> <h2 id="%E5%9F%BA%E6%9C%AC%E8%AE%BE%E7%BD%AE" tabindex="-1">基本设置</h2> <p>动态排序柱状图是一种展示随时间变化的数据排名变化的图表,从 ECharts 5 开始内置支持。</p> <blockquote><p>动态排序柱状图通常是横向的柱条,如果想要采用纵向的柱条,只要把本教程中的 X 轴和 Y 轴相反设置即可。</p></blockquote> <ol><li>柱状图系列的 <code>realtimeSort</code> 设为 <code>true</code>,表示开启该系列的动态排序效果</li> <li><code>yAxis.inverse</code> 设为 <code>true</code>,表示 Y 轴从下往上是从小到大的排列</li> <li><code>yAxis.animationDuration</code> 建议设为 <code>300</code>,表示第一次柱条排序动画的时长</li> <li><code>yAxis.animationDurationUpdate</code> 建议设为 <code>300</code>,表示第一次后柱条排序动画的时长</li> <li>如果想只显示前 <em>n</em> 名,将 <code>yAxis.max</code> 设为 <em>n - 1</em>,否则显示所有柱条</li> <li><code>xAxis.max</code> 建议设为 <code>'dataMax'</code> 表示用数据的最大值作为 X 轴最大值,视觉效果更好</li> <li>如果想要实时改变标签,需要将 <code>series.label.valueAnimation</code> 设为 <code>true</code></li> <li><code>animationDuration</code> 设为 <code>0</code>,表示第一份数据不需要从 <code>0</code> 开始动画(如果希望从 <code>0</code> 开始则设为和 <code>animationDurationUpdate</code> 相同的值)</li> <li><code>animationDurationUpdate</code> 建议设为 <code>3000</code> 表示每次更新动画时长,这一数值应与调用 <code>setOption</code> 改变数据的频率相同</li> <li>以 <code>animationDurationUpdate</code> 的频率调用 <code>setInterval</code>,更新数据值,显示下一个时间点对应的柱条排序</li></ol> <h2 id="%E7%A4%BA%E4%BE%8B" tabindex="-1">示例</h2> <p>完整的例子如下:</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">var data = [];
+for (let i = 0; i &lt; 5; ++i) {
+  data.push(Math.round(Math.random() * 200));
+}
+
+option = {
+  xAxis: {
+    max: 'dataMax'
+  },
+  yAxis: {
+    type: 'category',
+    data: ['A', 'B', 'C', 'D', 'E'],
+    inverse: true,
+    animationDuration: 300,
+    animationDurationUpdate: 300,
+    max: 2 // only the largest 3 bars will be displayed
+  },
+  series: [
+    {
+      realtimeSort: true,
+      name: 'X',
+      type: 'bar',
+      data: data,
+      label: {
+        show: true,
+        position: 'right',
+        valueAnimation: true
+      }
+    }
+  ],
+  legend: {
+    show: true
+  },
+  animationDuration: 3000,
+  animationDurationUpdate: 3000,
+  animationEasing: 'linear',
+  animationEasingUpdate: 'linear'
+};
+
+function update() {
+  var data = option.series[0].data;
+  for (var i = 0; i &lt; data.length; ++i) {
+    if (Math.random() > 0.9) {
+      data[i] += Math.round(Math.random() * 2000);
+    } else {
+      data[i] += Math.round(Math.random() * 200);
+    }
+  }
+  myChart.setOption(option);
+}
+
+setInterval(function() {
+  update();
+}, 3000);</textarea><pre data-testid="preview" class="prism-editor__editor"><span class="token keyword">var</span> data <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
+<span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">let</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator">&lt;</span> <span class="token number">5</span><span class="token punctuation">;</span> <span class="token operator">++</span>i<span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  data<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span>Math<span class="token punctuation">.</span><span class="token function">round</span><span class="token punctuation">(</span>Math<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">*</span> <span class="token number">200</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span>
+
+option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">max</span><span class="token operator">:</span> <span class="token string">'dataMax'</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'category'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'A'</span><span class="token punctuation">,</span> <span class="token string">'B'</span><span class="token punctuation">,</span> <span class="token string">'C'</span><span class="token punctuation">,</span> <span class="token string">'D'</span><span class="token punctuation">,</span> <span class="token string">'E'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">inverse</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">animationDuration</span><span class="token operator">:</span> <span class="token number">300</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">animationDurationUpdate</span><span class="token operator">:</span> <span class="token number">300</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">max</span><span class="token operator">:</span> <span class="token number">2</span> <span class="token comment">// only the largest 3 bars will be displayed</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">realtimeSort</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'X'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> data<span class="token punctuation">,</span>
+      <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">position</span><span class="token operator">:</span> <span class="token string">'right'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">valueAnimation</span><span class="token operator">:</span> <span class="token boolean">true</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">legend</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">true</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">animationDuration</span><span class="token operator">:</span> <span class="token number">3000</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">animationDurationUpdate</span><span class="token operator">:</span> <span class="token number">3000</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">animationEasing</span><span class="token operator">:</span> <span class="token string">'linear'</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">animationEasingUpdate</span><span class="token operator">:</span> <span class="token string">'linear'</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span>
+
+<span class="token keyword">function</span> <span class="token function">update</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  <span class="token keyword">var</span> data <span class="token operator">=</span> option<span class="token punctuation">.</span>series<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">.</span>data<span class="token punctuation">;</span>
+  <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">var</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator">&lt;</span> data<span class="token punctuation">.</span>length<span class="token punctuation">;</span> <span class="token operator">++</span>i<span class="token punctuation">)</span> <span class="token punctuation">{</span>
+    <span class="token keyword">if</span> <span class="token punctuation">(</span>Math<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">></span> <span class="token number">0.9</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+      data<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">+=</span> Math<span class="token punctuation">.</span><span class="token function">round</span><span class="token punctuation">(</span>Math<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">*</span> <span class="token number">2000</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+    <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span>
+      data<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">+=</span> Math<span class="token punctuation">.</span><span class="token function">round</span><span class="token punctuation">(</span>Math<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">*</span> <span class="token number">200</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span>
+  myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span>option<span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span>
+
+<span class="token function">setInterval</span><span class="token punctuation">(</span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  <span class="token function">update</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token number">3000</span><span class="token punctuation">)</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">本文贡献者</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/zh/how-to/chart-types/bar/bar-race.md" title="编辑本文" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">在 GitHub 上编辑本页</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/Ovilia" target="_blank" class="post-contributor has-avatar"><img alt="Ovilia" src="https://echarts.apache.org/en/images/people/羡辙.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>Ovilia</span></a><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,i,e,d,r,l,a,o,n,c,h,s,g,p,C,A,I,b,m,B,u,G,v,y,W,f,w,R,S,E,Y,D,F,H,K,X,k,x,Z,V,L,M,P,J,O,U,z,T,N,Q,_,j,q,$,tt,it,et,dt,rt,lt,at,ot,nt){return{layout:"default",data:[{html:'<h1 id="%E5%8A%A8%E6%80%81%E6%8E%92%E5%BA%8F%E6%9F%B1%E7%8A%B6%E5%9B%BE" tabindex="-1">动态排序柱状图</h1>\n<h2 id="%E5%9F%BA%E6%9C%AC%E8%AE%BE%E7%BD%AE" tabindex="-1">基本设置</h2>\n<p>动态排序柱状图是一种展示随时间变化的数据排名变化的图表,从 ECharts 5 开始内置支持。</p>\n<blockquote>\n<p>动态排序柱状图通常是横向的柱条,如果想要采用纵向的柱条,只要把本教程中的 X 轴和 Y 轴相反设置即可。</p>\n</blockquote>\n<ol>\n<li>柱状图系列的 <code>realtimeSort</code> 设为 <code>true</code>,表示开启该系列的动态排序效果</li>\n<li><code>yAxis.inverse</code> 设为 <code>true</code>,表示 Y 轴从下往上是从小到大的排列</li>\n<li><code>yAxis.animationDuration</code> 建议设为 <code>300</code>,表示第一次柱条排序动画的时长</li>\n<li><code>yAxis.animationDurationUpdate</code> 建议设为 <code>300</code>,表示第一次后柱条排序动画的时长</li>\n<li>如果想只显示前 <em>n</em> 名,将 <code>yAxis.max</code> 设为 <em>n - 1</em>,否则显示所有柱条</li>\n<li><code>xAxis.max</code> 建议设为 <code>\'dataMax\'</code> 表示用数据的最大值作为 X 轴最大值,视觉效果更好</li>\n<li>如果想要实时改变标签,需要将 <code>series.label.valueAnimation</code> 设为 <code>true</code></li>\n<li><code>animationDuration</code> 设为 <code>0</code>,表示第一份数据不需要从 <code>0</code> 开始动画(如果希望从 <code>0</code> 开始则设为和 <code>animationDurationUpdate</code> 相同的值)</li>\n<li><code>animationDurationUpdate</code> 建议设为 <code>3000</code> 表示每次更新动画时长,这一数值应与调用 <code>setOption</code> 改变数据的频率相同</li>\n<li>以 <code>animationDurationUpdate</code> 的频率调用 <code>setInterval</code>,更新数据值,显示下一个时间点对应的柱条排序</li>\n</ol>\n<h2 id="%E7%A4%BA%E4%BE%8B" tabindex="-1">示例</h2>\n<p>完整的例子如下:</p>\n<md-live lang="js" code="\'dmFyIGRhdGEgPSBbXTsKZm9yIChsZXQgaSA9IDA7IGkgPCA1OyArK2kpIHsKICBkYXRhLnB1c2goTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogMjAwKSk7Cn0KCm9wdGlvbiA9IHsKICB4QXhpczogewogICAgbWF4OiAnZGF0YU1heCcKICB9LAogIHlBeGlzOiB7CiAgICB0eXBlOiAnY2F0ZWdvcnknLAogICAgZGF0YTogWydBJywgJ0InLCAnQycsICdEJywgJ0UnXSwKICAgIGludmVyc2U6IHRydWUsCiAgICBhbmltYXRpb25EdXJhdGlvbjogMzAwLAogICAgYW5pbWF0aW9uRHVyYXRpb25VcGRhdGU6IDMwMCwKICAgIG1heDogMiAvLyBvbmx5IHRoZSBsYXJnZXN0IDMgYmFycyB3aWxsIGJlIGRpc3BsYXllZAogIH0sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIHJlYWx0aW1lU29ydDogdHJ1ZSwKICAgICAgbmFtZTogJ1gnLAogICAgICB0eXBlOiAnYmFyJywKICAgICAgZGF0YTogZGF0YSwKICAgICAgbGFiZWw6IHsKICAgICAgICBzaG93OiB0cnVlLAogICAgICAgIHBvc2l0aW9uOiAncmlnaHQnLAogICAgICAgIHZhbHVlQW5pbWF0aW9uOiB0cnVlCiAgICAgIH0KICAgIH0KICBdLAogIGxlZ2VuZDogewogICAgc2hvdzogdHJ1ZQogIH0sCiAgYW5pbWF0aW9uRHVyYXRpb246IDMwMDAsCiAgYW5pbWF0aW9uRHVyYXRpb25VcGRhdGU6IDMwMDAsCiAgYW5pbWF0aW9uRWFzaW5nOiAnbGluZWFyJywKICBhbmltYXRpb25FYXNpbmdVcGRhdGU6ICdsaW5lYXInCn07CgpmdW5jdGlvbiB1cGRhdGUoKSB7CiAgdmFyIGRhdGEgPSBvcHRpb24uc2VyaWVzWzBdLmRhdGE7CiAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgKytpKSB7CiAgICBpZiAoTWF0aC5yYW5kb20oKSA-IDAuOSkgewogICAgICBkYXRhW2ldICs9IE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDIwMDApOwogICAgfSBlbHNlIHsKICAgICAgZGF0YVtpXSArPSBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiAyMDApOwogICAgfQogIH0KICBteUNoYXJ0LnNldE9wdGlvbihvcHRpb24pOwp9CgpzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKICB1cGRhdGUoKTsKfSwgMzAwMCk7\'" v-bind="{}" />\n',postPath:"zh/how-to/chart-types/bar/bar-race",title:"动态排序柱状图 - 柱状图 - 常用图表类型 - 应用篇"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:d},{title:"入门篇",dir:r,children:[{title:"获取 ECharts",dir:l},{title:"在项目中引入 ECharts",dir:a},{title:"资源列表",dir:o,draft:t},{title:"寻求帮助",dir:n},{title:"版本特性",dir:c,children:[{title:"ECharts 6 特性介绍",dir:h},{title:"v5 升级 v6 指南",dir:s},{title:"5.0",dir:g},{title:"v4 升级 v5 指南",dir:p},{title:5.2,dir:C},{title:5.3,dir:A},{title:5.4,dir:I},{title:5.5,dir:b},{title:5.6,dir:m}]}]},{title:"概念篇",dir:B,children:[{title:"图表容器及大小",dir:u},{title:"配置项",dir:G,draft:t},{title:"系列",dir:v,draft:t},{title:"样式",dir:y},{title:"数据集",dir:W},{title:"数据转换",dir:f},{title:"坐标系",dir:w,draft:t},{title:"坐标轴",dir:R},{title:"视觉映射",dir:e},{title:"图例",dir:S},{title:"事件与行为",dir:E}]},{title:"应用篇",dir:Y,children:[{title:"常用图表类型",dir:D,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:F},{title:"堆叠柱状图",dir:H},{title:"动态排序柱状图",dir:K},{title:"极坐标系柱状图",dir:X,draft:t},{title:"阶梯瀑布图",dir:k},{title:"视觉映射的柱状图",dir:e,draft:t}]},{title:"折线图",dir:x,children:[{title:"基础折线图",dir:Z},{title:"堆叠折线图",dir:V},{title:"区域面积图",dir:L},{title:"平滑曲线图",dir:M},{title:"阶梯线图",dir:P}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:J},{title:"圆环图",dir:O},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:U,children:[{title:"基础散点图",dir:z}]}]},{title:"常用组件",dir:T,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:N}]}]},{title:"移动端优化",dir:i,draft:t},{title:"跨平台方案",dir:Q,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:_},{title:"数据下钻",dir:j,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:q}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:it,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:et,draft:t},{title:"智能指针吸附",dir:dt}]}]},{title:"最佳实践",dir:rt,children:[{title:"移动端优化",dir:i,draft:t},{title:lt,dir:at},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:ot}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:nt}]}],en:[{title:"Get Started",dir:d},{title:"Basics",dir:r,children:[{title:"Download ECharts",dir:l},{title:"Import ECharts",dir:a},{title:"Resources",dir:o,draft:t},{title:"Get Help",dir:n},{title:"What's New",dir:c,children:[{title:"ECharts 6 Features",dir:h},{title:"Migration from v5 to v6",dir:s},{title:"5.0",dir:g},{title:"Migration from v4 to v5",dir:p},{title:5.2,dir:C},{title:5.3,dir:A},{title:5.4,dir:I},{title:5.5,dir:b},{title:5.6,dir:m}]}]},{title:"Concepts",dir:B,children:[{title:"Chart Container",dir:u},{title:"Chart Option",dir:G,draft:t},{title:"Series",dir:v,draft:t},{title:"Style",dir:y},{title:"Dataset",dir:W},{title:"Data Transform",dir:f},{title:"Coordinate",dir:w,draft:t},{title:"Axis",dir:R},{title:"Visual Mapping",dir:e},{title:"Legend",dir:S},{title:"Event and Action",dir:E}]},{title:"How To Guides",dir:Y,children:[{title:"Common Charts",dir:D,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:F},{title:"Stacked Bar",dir:H},{title:"Bar Racing",dir:K},{title:"Bar Polar",dir:X,draft:t},{title:"Waterfall",dir:k}]},{title:"Line",dir:x,children:[{title:"Basic Line",dir:Z},{title:"Stacked Line",dir:V},{title:"Area Chart",dir:L},{title:"Smoothed Line",dir:M},{title:"Step Line",dir:P}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:J},{title:"Ring Style",dir:O},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:U,children:[{title:"Basic Scatter",dir:z}]}]},{title:"Common Components",dir:T,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:N}]}]},{title:"Mobile",dir:i,draft:t},{title:"Cross Platform",dir:Q,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:_},{title:"Drilldown",dir:j,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:q}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:it,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:et,draft:t},{title:"Intelligent Pointer Snapping",dir:dt}]}]},{title:"Best Practices",dir:rt,children:[{title:"Mobile Optimization",dir:i,draft:t},{title:lt,dir:at},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:ot}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:nt}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/zh/how-to/chart-types/bar/bar-race",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/zh/how-to/chart-types/bar/basic-bar/index.html b/docs/zh/how-to/chart-types/bar/basic-bar/index.html
new file mode 100644
index 0000000..8cef51c
--- /dev/null
+++ b/docs/zh/how-to/chart-types/bar/basic-bar/index.html
@@ -0,0 +1,227 @@
+<!doctype html>
+<html data-n-head-ssr lang="zh-CN" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh-CN%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>基础柱状图 - 柱状图 - 常用图表类型 - 应用篇 - 使用手册 - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="zh"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/zh/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/zh/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/zh/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/zh/index.html" class="navbar-brand"><img src="https://echarts.apache.org/zh/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/zh/index.html">首页</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">文档<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/feature.html">特性</a></li><li><a href="https://echarts.apache.org/handbook/zh/get-started/">使用手册</a></li><li><a href="https://echarts.apache.org/zh/api.html">API</a></li><li><a href="https://echarts.apache.org/zh/option.html">配置项手册</a></li><li><a href="https://echarts.apache.org/zh/changelog.html">版本记录</a></li><li><a href="https://echarts.apache.org/zh/faq.html">常见问题</a></li><li><a href="https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide">v6 升级指南</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">下载<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/download.html">下载</a></li><li><a href="https://echarts.apache.org/zh/download-theme.html">主题下载</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">自定义系列下载<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/download-extension.html">扩展下载</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/zh/index.html">示例</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">资源<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/spreadsheet.html">表格工具</a></li><li><a href="https://echarts.apache.org/zh/theme-builder.html">主题构建工具</a></li><li><a href="https://echarts.apache.org/zh/cheat-sheet.html">术语速查手册</a></li><li><a href="https://echarts.apache.org/zh/resources.html">更多资源</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">社区<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/events.html">活动</a></li><li><a href="https://echarts.apache.org/zh/committers.html">贡献者列表</a></li><li><a href="https://echarts.apache.org/zh/maillist.html">邮件列表</a></li><li><a href="https://echarts.apache.org/zh/contributing.html">如何贡献</a></li><li><a href="https://echarts.apache.org/zh/dependencies.html">依赖项</a></li><li><a href="https://echarts.apache.org/zh/coding-standard.html">代码规范</a></li><li><a href="https://github.com/apache/echarts" target="_blank">源码(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/security.html">安全</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">版权<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">活动<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">捐赠<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">鸣谢<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("en")'>EN</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/zh/get-started" class="nav-link"><span class="title">快速上手</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">入门篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/basics/download" class="nav-link"><span class="title">获取 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/import" class="nav-link"><span class="title">在项目中引入 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/basics/help" class="nav-link"><span class="title">寻求帮助</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">版本特性</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 特性介绍</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">v5 升级 v6 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">v4 升级 v5 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">概念篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/concepts/chart-size" class="nav-link"><span class="title">图表容器及大小</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/style" class="nav-link"><span class="title">样式</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/dataset" class="nav-link"><span class="title">数据集</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/data-transform" class="nav-link"><span class="title">数据转换</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/axis" class="nav-link"><span class="title">坐标轴</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/visual-map" class="nav-link"><span class="title">视觉映射</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/legend" class="nav-link"><span class="title">图例</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/event" class="nav-link"><span class="title">事件与行为</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">应用篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">常用图表类型</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a class="nav-link"><span class="title">柱状图</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level3"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/basic-bar" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">基础柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">堆叠柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">动态排序柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">阶梯瀑布图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">折线图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">基础折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">堆叠折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/area-line" class="nav-link"><span class="title">区域面积图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">平滑曲线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/step-line" class="nav-link"><span class="title">阶梯线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">饼图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">基础饼图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">圆环图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/rose" class="nav-link"><span class="title">南丁格尔图(玫瑰图)</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">散点图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">基础散点图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">常用组件</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">地理坐标系(Geo)</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG 底图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">跨平台方案</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/server" class="nav-link"><span class="title">服务端渲染</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/wechat-app" class="nav-link"><span class="title">微信小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/baidu-app" class="nav-link"><span class="title">百度智能小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">数据处理</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/data/dynamic-data" class="nav-link"><span class="title">动态的异步数据</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">标签</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/label/rich-text" class="nav-link"><span class="title">富文本标签</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">动画</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/animation/transition" class="nav-link"><span class="title">数据过渡动画</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">交互</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/drag" class="nav-link"><span class="title">拖拽的实现</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">智能指针吸附</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">最佳实践</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/aria" class="nav-link"><span class="title">无障碍访问</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/security" class="nav-link"><span class="title">安全指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">编辑本文档</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/meta/edit-guide" class="nav-link"><span class="title">文档编辑指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="%E5%9F%BA%E6%9C%AC%E6%9F%B1%E7%8A%B6%E5%9B%BE" tabindex="-1">基本柱状图</h1> <p>柱状图(或称条形图)是一种通过柱形的长度来表现数据大小的一种常用图表类型。</p> <p>设置柱状图的方式,是将 <code>series</code> 的 <code>type</code> 设为 <code>'bar'</code>。</p> <p><a href="https://echarts.apache.org/option.html#series-bar">[配置项手册]</a></p> <h2 id="%E6%9C%80%E7%AE%80%E5%8D%95%E7%9A%84%E6%9F%B1%E7%8A%B6%E5%9B%BE" tabindex="-1">最简单的柱状图</h2> <p>最简单的柱状图可以这样设置:</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
+  },
+  yAxis: {},
+  series: [
+    {
+      type: 'bar',
+      data: [23, 24, 18, 25, 27, 28, 25]
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'Mon'</span><span class="token punctuation">,</span> <span class="token string">'Tue'</span><span class="token punctuation">,</span> <span class="token string">'Wed'</span><span class="token punctuation">,</span> <span class="token string">'Thu'</span><span class="token punctuation">,</span> <span class="token string">'Fri'</span><span class="token punctuation">,</span> <span class="token string">'Sat'</span><span class="token punctuation">,</span> <span class="token string">'Sun'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">23</span><span class="token punctuation">,</span> <span class="token number">24</span><span class="token punctuation">,</span> <span class="token number">18</span><span class="token punctuation">,</span> <span class="token number">25</span><span class="token punctuation">,</span> <span class="token number">27</span><span class="token punctuation">,</span> <span class="token number">28</span><span class="token punctuation">,</span> <span class="token number">25</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>在这个例子中,横坐标是类目型的,因此需要在 <code>xAxis</code> 中指定对应的值;而纵坐标是数值型的,可以根据 <code>series</code> 中的 <code>data</code>,自动生成对应的坐标范围。</p> <h2 id="%E5%A4%9A%E7%B3%BB%E5%88%97%E7%9A%84%E6%9F%B1%E7%8A%B6%E5%9B%BE" tabindex="-1">多系列的柱状图</h2> <p>我们可以用一个系列表示一组相关的数据,如果需要实现多系列的柱状图,只需要在 <code>series</code> 多添加一项就可以了——</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
+  },
+  yAxis: {},
+  series: [
+    {
+      type: 'bar',
+      data: [23, 24, 18, 25, 27, 28, 25]
+    },
+    {
+      type: 'bar',
+      data: [26, 24, 18, 22, 23, 20, 27]
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'Mon'</span><span class="token punctuation">,</span> <span class="token string">'Tue'</span><span class="token punctuation">,</span> <span class="token string">'Wed'</span><span class="token punctuation">,</span> <span class="token string">'Thu'</span><span class="token punctuation">,</span> <span class="token string">'Fri'</span><span class="token punctuation">,</span> <span class="token string">'Sat'</span><span class="token punctuation">,</span> <span class="token string">'Sun'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">23</span><span class="token punctuation">,</span> <span class="token number">24</span><span class="token punctuation">,</span> <span class="token number">18</span><span class="token punctuation">,</span> <span class="token number">25</span><span class="token punctuation">,</span> <span class="token number">27</span><span class="token punctuation">,</span> <span class="token number">28</span><span class="token punctuation">,</span> <span class="token number">25</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">26</span><span class="token punctuation">,</span> <span class="token number">24</span><span class="token punctuation">,</span> <span class="token number">18</span><span class="token punctuation">,</span> <span class="token number">22</span><span class="token punctuation">,</span> <span class="token number">23</span><span class="token punctuation">,</span> <span class="token number">20</span><span class="token punctuation">,</span> <span class="token number">27</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <h2 id="%E6%9F%B1%E7%8A%B6%E5%9B%BE%E6%A0%B7%E5%BC%8F%E8%AE%BE%E7%BD%AE" tabindex="-1">柱状图样式设置</h2> <h3 id="%E6%9F%B1%E6%9D%A1%E6%A0%B7%E5%BC%8F" tabindex="-1">柱条样式</h3> <p>柱条的样式可以通过 <a href="https://echarts.apache.org/option.html#series-bar.itemStyle"><code>series.itemStyle</code></a> 设置,包括:</p> <ul><li>柱条的颜色(<code>color</code>);</li> <li>柱条的描边颜色(<code>borderColor</code>)、宽度(<code>borderWidth</code>)、样式(<code>borderType</code>);</li> <li>柱条圆角的半径(<code>barBorderRadius</code>);</li> <li>柱条透明度(<code>opacity</code>);</li> <li>阴影(<code>shadowBlur</code>、<code>shadowColor</code>、<code>shadowOffsetX</code>、<code>shadowOffsetY</code>)。</li></ul> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    data: ['A', 'B', 'C', 'D', 'E']
+  },
+  yAxis: {},
+  series: [
+    {
+      type: 'bar',
+      data: [
+        10,
+        22,
+        28,
+        {
+          value: 43,
+          // 设置单个柱子的样式
+          itemStyle: {
+            color: '#91cc75',
+            shadowColor: '#91cc75',
+            borderType: 'dashed',
+            opacity: 0.5
+          }
+        },
+        49
+      ],
+      itemStyle: {
+        barBorderRadius: 5,
+        borderWidth: 1,
+        borderType: 'solid',
+        borderColor: '#73c0de',
+        shadowColor: '#5470c6',
+        shadowBlur: 3
+      }
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'A'</span><span class="token punctuation">,</span> <span class="token string">'B'</span><span class="token punctuation">,</span> <span class="token string">'C'</span><span class="token punctuation">,</span> <span class="token string">'D'</span><span class="token punctuation">,</span> <span class="token string">'E'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token number">10</span><span class="token punctuation">,</span>
+        <span class="token number">22</span><span class="token punctuation">,</span>
+        <span class="token number">28</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">43</span><span class="token punctuation">,</span>
+          <span class="token comment">// 设置单个柱子的样式</span>
+          <span class="token literal-property property">itemStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+            <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'#91cc75'</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">shadowColor</span><span class="token operator">:</span> <span class="token string">'#91cc75'</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">borderType</span><span class="token operator">:</span> <span class="token string">'dashed'</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">opacity</span><span class="token operator">:</span> <span class="token number">0.5</span>
+          <span class="token punctuation">}</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token number">49</span>
+      <span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">itemStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">barBorderRadius</span><span class="token operator">:</span> <span class="token number">5</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">borderWidth</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">borderType</span><span class="token operator">:</span> <span class="token string">'solid'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">borderColor</span><span class="token operator">:</span> <span class="token string">'#73c0de'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">shadowColor</span><span class="token operator">:</span> <span class="token string">'#5470c6'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">shadowBlur</span><span class="token operator">:</span> <span class="token number">3</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>在这个例子中,我们通过设置柱状图对应 <code>series</code> 的<code>itemStyle</code>,设置了柱条的样式。完整的配置项及其用法请参见配置项手册 <a href="https://echarts.apache.org/option.html#series-bar.itemStyle"><code>series.itemStyle</code></a>。</p> <h3 id="%E6%9F%B1%E6%9D%A1%E5%AE%BD%E5%BA%A6%E5%92%8C%E9%AB%98%E5%BA%A6" tabindex="-1">柱条宽度和高度</h3> <p>柱条宽度可以通过 <a href="https://echarts.apache.org/option.html##series-bar.barWidth"><code>barWidth</code></a> 设置。比如在下面的例子中,将 <code>barWidth</code> 设为 <code>'20%'</code>,表示每个柱条的宽度就是类目宽度的 20%。由于这个例子中,每个系列有 5 个数据,20% 的类目宽度也就是整个 x 轴宽度的 4%。</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    data: ['A', 'B', 'C', 'D', 'E']
+  },
+  yAxis: {},
+  series: [
+    {
+      type: 'bar',
+      data: [10, 22, 28, 43, 49],
+      barWidth: '20%'
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'A'</span><span class="token punctuation">,</span> <span class="token string">'B'</span><span class="token punctuation">,</span> <span class="token string">'C'</span><span class="token punctuation">,</span> <span class="token string">'D'</span><span class="token punctuation">,</span> <span class="token string">'E'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">22</span><span class="token punctuation">,</span> <span class="token number">28</span><span class="token punctuation">,</span> <span class="token number">43</span><span class="token punctuation">,</span> <span class="token number">49</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">barWidth</span><span class="token operator">:</span> <span class="token string">'20%'</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>另外,还可以设置 <a href="https://echarts.apache.org/option.html#series-bar.barMaxWidth"><code>barMaxWidth</code></a> 限制柱条的最大宽度。对于一些特别小的数据,我们也可以为柱条指定最小高度 <a href="https://echarts.apache.org/option.html#series-bar.barMinHeight"><code>barMinHeight</code></a>,当数据对应的柱条高度小于该值时,柱条高度将采用这个最小高度。</p> <h3 id="%E6%9F%B1%E6%9D%A1%E9%97%B4%E8%B7%9D" tabindex="-1">柱条间距</h3> <p>柱条间距分为两种,一种是不同系列在同一类目下的距离 <a href="https://echarts.apache.org/option.html#series-bar.barGap"><code>barGap</code></a>,另一种是类目与类目的距离 <a href="https://echarts.apache.org/option.html#series-bar.barCategoryGap"><code>barCategoryGap</code></a>。</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    data: ['A', 'B', 'C', 'D', 'E']
+  },
+  yAxis: {},
+  series: [
+    {
+      type: 'bar',
+      data: [23, 24, 18, 25, 18],
+      barGap: '20%',
+      barCategoryGap: '40%'
+    },
+    {
+      type: 'bar',
+      data: [12, 14, 9, 9, 11]
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'A'</span><span class="token punctuation">,</span> <span class="token string">'B'</span><span class="token punctuation">,</span> <span class="token string">'C'</span><span class="token punctuation">,</span> <span class="token string">'D'</span><span class="token punctuation">,</span> <span class="token string">'E'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">23</span><span class="token punctuation">,</span> <span class="token number">24</span><span class="token punctuation">,</span> <span class="token number">18</span><span class="token punctuation">,</span> <span class="token number">25</span><span class="token punctuation">,</span> <span class="token number">18</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">barGap</span><span class="token operator">:</span> <span class="token string">'20%'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">barCategoryGap</span><span class="token operator">:</span> <span class="token string">'40%'</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">12</span><span class="token punctuation">,</span> <span class="token number">14</span><span class="token punctuation">,</span> <span class="token number">9</span><span class="token punctuation">,</span> <span class="token number">9</span><span class="token punctuation">,</span> <span class="token number">11</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>在这个例子中,<code>barGap</code> 被设为 <code>'20%'</code>,这意味着每个类目(比如 <code>A</code>)下的两个柱子之间的距离,相对于柱条宽度的百分比。而 <code>barCategoryGap</code> 是 <code>'40%'</code>,意味着柱条每侧空余的距离,相对于柱条宽度的百分比。</p> <p>通常而言,设置 <code>barGap</code> 及 <code>barCategoryGap</code> 后,就不需要设置 <code>barWidth</code> 了,这时候的宽度会自动调整。如果有需要的话,可以设置 <code>barMaxWidth</code> 作为柱条宽度的上限,当图表宽度很大的时候,柱条宽度也不会太宽。</p> <blockquote><p>在同一坐标系上,此属性会被多个柱状图系列共享。此属性应设置于此坐标系中最后一个柱状图系列上才会生效,并且是对此坐标系中所有柱状图系列生效。</p></blockquote> <h3 id="%E4%B8%BA%E6%9F%B1%E6%9D%A1%E6%B7%BB%E5%8A%A0%E8%83%8C%E6%99%AF%E8%89%B2" tabindex="-1">为柱条添加背景色</h3> <p>有时,我们希望能够为柱条添加背景色。从 ECharts 4.7.0 版本开始,这一功能可以简单地用 <a href="https://echarts.apache.org/option.html#series-bar.showBackground"><code>showBackground</code></a> 开启,并且可以通过 <a href="https://echarts.apache.org/option.html#series-bar.backgroundStyle"><code>backgroundStyle</code></a> 配置。</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    type: 'category',
+    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
+  },
+  yAxis: {
+    type: 'value'
+  },
+  series: [
+    {
+      data: [120, 200, 150, 80, 70, 110, 130],
+      type: 'bar',
+      showBackground: true,
+      backgroundStyle: {
+        color: 'rgba(220, 220, 220, 0.8)'
+      }
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'category'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'Mon'</span><span class="token punctuation">,</span> <span class="token string">'Tue'</span><span class="token punctuation">,</span> <span class="token string">'Wed'</span><span class="token punctuation">,</span> <span class="token string">'Thu'</span><span class="token punctuation">,</span> <span class="token string">'Fri'</span><span class="token punctuation">,</span> <span class="token string">'Sat'</span><span class="token punctuation">,</span> <span class="token string">'Sun'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'value'</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">120</span><span class="token punctuation">,</span> <span class="token number">200</span><span class="token punctuation">,</span> <span class="token number">150</span><span class="token punctuation">,</span> <span class="token number">80</span><span class="token punctuation">,</span> <span class="token number">70</span><span class="token punctuation">,</span> <span class="token number">110</span><span class="token punctuation">,</span> <span class="token number">130</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">showBackground</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">backgroundStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'rgba(220, 220, 220, 0.8)'</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">本文贡献者</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/zh/how-to/chart-types/bar/basic-bar.md" title="编辑本文" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">在 GitHub 上编辑本页</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/plainheart" target="_blank" class="post-contributor has-avatar"><img alt="plainheart" src="https://echarts.apache.org/en/images/people/plainheart.jpg" loading="lazy" decoding="async" fetchpriority="low"> <span>plainheart</span></a><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a><a href="https://github.com/tanjiasong005" target="_blank" class="post-contributor"><!----> <span>tanjiasong005</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(i,e,t,d,r,a,l,o,c,g,C,n,A,s,I,h,p,B,b,w,y,m,E,f,u,D,G,O,L,v,M,R,S,Y,F,X,k,J,x,V,W,z,H,j,Q,U,K,T,N,Z,P,_,q,$,ii,ei,ti,di,ri,ai,li,oi,ci){return{layout:"default",data:[{html:'<h1 id="%E5%9F%BA%E6%9C%AC%E6%9F%B1%E7%8A%B6%E5%9B%BE" tabindex="-1">基本柱状图</h1>\n<p>柱状图(或称条形图)是一种通过柱形的长度来表现数据大小的一种常用图表类型。</p>\n<p>设置柱状图的方式,是将 <code>series</code> 的 <code>type</code> 设为 <code>\'bar\'</code>。</p>\n<p><a href="https://echarts.apache.org/option.html#series-bar">[配置项手册]</a></p>\n<h2 id="%E6%9C%80%E7%AE%80%E5%8D%95%E7%9A%84%E6%9F%B1%E7%8A%B6%E5%9B%BE" tabindex="-1">最简单的柱状图</h2>\n<p>最简单的柱状图可以这样设置:</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBkYXRhOiBbJ01vbicsICdUdWUnLCAnV2VkJywgJ1RodScsICdGcmknLCAnU2F0JywgJ1N1biddCiAgfSwKICB5QXhpczoge30sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIHR5cGU6ICdiYXInLAogICAgICBkYXRhOiBbMjMsIDI0LCAxOCwgMjUsIDI3LCAyOCwgMjVdCiAgICB9CiAgXQp9Ow\'" v-bind="{}" />\n<p>在这个例子中,横坐标是类目型的,因此需要在 <code>xAxis</code> 中指定对应的值;而纵坐标是数值型的,可以根据 <code>series</code> 中的 <code>data</code>,自动生成对应的坐标范围。</p>\n<h2 id="%E5%A4%9A%E7%B3%BB%E5%88%97%E7%9A%84%E6%9F%B1%E7%8A%B6%E5%9B%BE" tabindex="-1">多系列的柱状图</h2>\n<p>我们可以用一个系列表示一组相关的数据,如果需要实现多系列的柱状图,只需要在 <code>series</code> 多添加一项就可以了——</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBkYXRhOiBbJ01vbicsICdUdWUnLCAnV2VkJywgJ1RodScsICdGcmknLCAnU2F0JywgJ1N1biddCiAgfSwKICB5QXhpczoge30sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIHR5cGU6ICdiYXInLAogICAgICBkYXRhOiBbMjMsIDI0LCAxOCwgMjUsIDI3LCAyOCwgMjVdCiAgICB9LAogICAgewogICAgICB0eXBlOiAnYmFyJywKICAgICAgZGF0YTogWzI2LCAyNCwgMTgsIDIyLCAyMywgMjAsIDI3XQogICAgfQogIF0KfTs\'" v-bind="{}" />\n<h2 id="%E6%9F%B1%E7%8A%B6%E5%9B%BE%E6%A0%B7%E5%BC%8F%E8%AE%BE%E7%BD%AE" tabindex="-1">柱状图样式设置</h2>\n<h3 id="%E6%9F%B1%E6%9D%A1%E6%A0%B7%E5%BC%8F" tabindex="-1">柱条样式</h3>\n<p>柱条的样式可以通过 <a href="https://echarts.apache.org/option.html#series-bar.itemStyle"><code>series.itemStyle</code></a> 设置,包括:</p>\n<ul>\n<li>柱条的颜色(<code>color</code>);</li>\n<li>柱条的描边颜色(<code>borderColor</code>)、宽度(<code>borderWidth</code>)、样式(<code>borderType</code>);</li>\n<li>柱条圆角的半径(<code>barBorderRadius</code>);</li>\n<li>柱条透明度(<code>opacity</code>);</li>\n<li>阴影(<code>shadowBlur</code>、<code>shadowColor</code>、<code>shadowOffsetX</code>、<code>shadowOffsetY</code>)。</li>\n</ul>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBkYXRhOiBbJ0EnLCAnQicsICdDJywgJ0QnLCAnRSddCiAgfSwKICB5QXhpczoge30sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIHR5cGU6ICdiYXInLAogICAgICBkYXRhOiBbCiAgICAgICAgMTAsCiAgICAgICAgMjIsCiAgICAgICAgMjgsCiAgICAgICAgewogICAgICAgICAgdmFsdWU6IDQzLAogICAgICAgICAgLy8g6K6-572u5Y2V5Liq5p-x5a2Q55qE5qC35byPCiAgICAgICAgICBpdGVtU3R5bGU6IHsKICAgICAgICAgICAgY29sb3I6ICcjOTFjYzc1JywKICAgICAgICAgICAgc2hhZG93Q29sb3I6ICcjOTFjYzc1JywKICAgICAgICAgICAgYm9yZGVyVHlwZTogJ2Rhc2hlZCcsCiAgICAgICAgICAgIG9wYWNpdHk6IDAuNQogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgNDkKICAgICAgXSwKICAgICAgaXRlbVN0eWxlOiB7CiAgICAgICAgYmFyQm9yZGVyUmFkaXVzOiA1LAogICAgICAgIGJvcmRlcldpZHRoOiAxLAogICAgICAgIGJvcmRlclR5cGU6ICdzb2xpZCcsCiAgICAgICAgYm9yZGVyQ29sb3I6ICcjNzNjMGRlJywKICAgICAgICBzaGFkb3dDb2xvcjogJyM1NDcwYzYnLAogICAgICAgIHNoYWRvd0JsdXI6IDMKICAgICAgfQogICAgfQogIF0KfTs\'" v-bind="{}" />\n<p>在这个例子中,我们通过设置柱状图对应 <code>series</code> 的<code>itemStyle</code>,设置了柱条的样式。完整的配置项及其用法请参见配置项手册 <a href="https://echarts.apache.org/option.html#series-bar.itemStyle"><code>series.itemStyle</code></a>。</p>\n<h3 id="%E6%9F%B1%E6%9D%A1%E5%AE%BD%E5%BA%A6%E5%92%8C%E9%AB%98%E5%BA%A6" tabindex="-1">柱条宽度和高度</h3>\n<p>柱条宽度可以通过 <a href="https://echarts.apache.org/option.html##series-bar.barWidth"><code>barWidth</code></a> 设置。比如在下面的例子中,将 <code>barWidth</code> 设为 <code>\'20%\'</code>,表示每个柱条的宽度就是类目宽度的 20%。由于这个例子中,每个系列有 5 个数据,20% 的类目宽度也就是整个 x 轴宽度的 4%。</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBkYXRhOiBbJ0EnLCAnQicsICdDJywgJ0QnLCAnRSddCiAgfSwKICB5QXhpczoge30sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIHR5cGU6ICdiYXInLAogICAgICBkYXRhOiBbMTAsIDIyLCAyOCwgNDMsIDQ5XSwKICAgICAgYmFyV2lkdGg6ICcyMCUnCiAgICB9CiAgXQp9Ow\'" v-bind="{}" />\n<p>另外,还可以设置 <a href="https://echarts.apache.org/option.html#series-bar.barMaxWidth"><code>barMaxWidth</code></a> 限制柱条的最大宽度。对于一些特别小的数据,我们也可以为柱条指定最小高度 <a href="https://echarts.apache.org/option.html#series-bar.barMinHeight"><code>barMinHeight</code></a>,当数据对应的柱条高度小于该值时,柱条高度将采用这个最小高度。</p>\n<h3 id="%E6%9F%B1%E6%9D%A1%E9%97%B4%E8%B7%9D" tabindex="-1">柱条间距</h3>\n<p>柱条间距分为两种,一种是不同系列在同一类目下的距离 <a href="https://echarts.apache.org/option.html#series-bar.barGap"><code>barGap</code></a>,另一种是类目与类目的距离 <a href="https://echarts.apache.org/option.html#series-bar.barCategoryGap"><code>barCategoryGap</code></a>。</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBkYXRhOiBbJ0EnLCAnQicsICdDJywgJ0QnLCAnRSddCiAgfSwKICB5QXhpczoge30sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIHR5cGU6ICdiYXInLAogICAgICBkYXRhOiBbMjMsIDI0LCAxOCwgMjUsIDE4XSwKICAgICAgYmFyR2FwOiAnMjAlJywKICAgICAgYmFyQ2F0ZWdvcnlHYXA6ICc0MCUnCiAgICB9LAogICAgewogICAgICB0eXBlOiAnYmFyJywKICAgICAgZGF0YTogWzEyLCAxNCwgOSwgOSwgMTFdCiAgICB9CiAgXQp9Ow\'" v-bind="{}" />\n<p>在这个例子中,<code>barGap</code> 被设为 <code>\'20%\'</code>,这意味着每个类目(比如 <code>A</code>)下的两个柱子之间的距离,相对于柱条宽度的百分比。而 <code>barCategoryGap</code> 是 <code>\'40%\'</code>,意味着柱条每侧空余的距离,相对于柱条宽度的百分比。</p>\n<p>通常而言,设置 <code>barGap</code> 及 <code>barCategoryGap</code> 后,就不需要设置 <code>barWidth</code> 了,这时候的宽度会自动调整。如果有需要的话,可以设置 <code>barMaxWidth</code> 作为柱条宽度的上限,当图表宽度很大的时候,柱条宽度也不会太宽。</p>\n<blockquote>\n<p>在同一坐标系上,此属性会被多个柱状图系列共享。此属性应设置于此坐标系中最后一个柱状图系列上才会生效,并且是对此坐标系中所有柱状图系列生效。</p>\n</blockquote>\n<h3 id="%E4%B8%BA%E6%9F%B1%E6%9D%A1%E6%B7%BB%E5%8A%A0%E8%83%8C%E6%99%AF%E8%89%B2" tabindex="-1">为柱条添加背景色</h3>\n<p>有时,我们希望能够为柱条添加背景色。从 ECharts 4.7.0 版本开始,这一功能可以简单地用 <a href="https://echarts.apache.org/option.html#series-bar.showBackground"><code>showBackground</code></a> 开启,并且可以通过 <a href="https://echarts.apache.org/option.html#series-bar.backgroundStyle"><code>backgroundStyle</code></a> 配置。</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICB0eXBlOiAnY2F0ZWdvcnknLAogICAgZGF0YTogWydNb24nLCAnVHVlJywgJ1dlZCcsICdUaHUnLCAnRnJpJywgJ1NhdCcsICdTdW4nXQogIH0sCiAgeUF4aXM6IHsKICAgIHR5cGU6ICd2YWx1ZScKICB9LAogIHNlcmllczogWwogICAgewogICAgICBkYXRhOiBbMTIwLCAyMDAsIDE1MCwgODAsIDcwLCAxMTAsIDEzMF0sCiAgICAgIHR5cGU6ICdiYXInLAogICAgICBzaG93QmFja2dyb3VuZDogdHJ1ZSwKICAgICAgYmFja2dyb3VuZFN0eWxlOiB7CiAgICAgICAgY29sb3I6ICdyZ2JhKDIyMCwgMjIwLCAyMjAsIDAuOCknCiAgICAgIH0KICAgIH0KICBdCn07\'" v-bind="{}" />\n',postPath:"zh/how-to/chart-types/bar/basic-bar",title:"基础柱状图 - 柱状图 - 常用图表类型 - 应用篇"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:d},{title:"入门篇",dir:r,children:[{title:"获取 ECharts",dir:a},{title:"在项目中引入 ECharts",dir:l},{title:"资源列表",dir:o,draft:i},{title:"寻求帮助",dir:c},{title:"版本特性",dir:g,children:[{title:"ECharts 6 特性介绍",dir:C},{title:"v5 升级 v6 指南",dir:n},{title:"5.0",dir:A},{title:"v4 升级 v5 指南",dir:s},{title:5.2,dir:I},{title:5.3,dir:h},{title:5.4,dir:p},{title:5.5,dir:B},{title:5.6,dir:b}]}]},{title:"概念篇",dir:w,children:[{title:"图表容器及大小",dir:y},{title:"配置项",dir:m,draft:i},{title:"系列",dir:E,draft:i},{title:"样式",dir:f},{title:"数据集",dir:u},{title:"数据转换",dir:D},{title:"坐标系",dir:G,draft:i},{title:"坐标轴",dir:O},{title:"视觉映射",dir:t},{title:"图例",dir:L},{title:"事件与行为",dir:v}]},{title:"应用篇",dir:M,children:[{title:"常用图表类型",dir:R,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:S},{title:"堆叠柱状图",dir:Y},{title:"动态排序柱状图",dir:F},{title:"极坐标系柱状图",dir:X,draft:i},{title:"阶梯瀑布图",dir:k},{title:"视觉映射的柱状图",dir:t,draft:i}]},{title:"折线图",dir:J,children:[{title:"基础折线图",dir:x},{title:"堆叠折线图",dir:V},{title:"区域面积图",dir:W},{title:"平滑曲线图",dir:z},{title:"阶梯线图",dir:H}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:j},{title:"圆环图",dir:Q},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:U,children:[{title:"基础散点图",dir:K}]}]},{title:"常用组件",dir:T,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:N}]}]},{title:"移动端优化",dir:e,draft:i},{title:"跨平台方案",dir:Z,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:P},{title:"数据下钻",dir:_,draft:i}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:q}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:ii}]},{title:"交互",dir:ei,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:ti,draft:i},{title:"智能指针吸附",dir:di}]}]},{title:"最佳实践",dir:ri,children:[{title:"移动端优化",dir:e,draft:i},{title:ai,dir:li},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:oi}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:ci}]}],en:[{title:"Get Started",dir:d},{title:"Basics",dir:r,children:[{title:"Download ECharts",dir:a},{title:"Import ECharts",dir:l},{title:"Resources",dir:o,draft:i},{title:"Get Help",dir:c},{title:"What's New",dir:g,children:[{title:"ECharts 6 Features",dir:C},{title:"Migration from v5 to v6",dir:n},{title:"5.0",dir:A},{title:"Migration from v4 to v5",dir:s},{title:5.2,dir:I},{title:5.3,dir:h},{title:5.4,dir:p},{title:5.5,dir:B},{title:5.6,dir:b}]}]},{title:"Concepts",dir:w,children:[{title:"Chart Container",dir:y},{title:"Chart Option",dir:m,draft:i},{title:"Series",dir:E,draft:i},{title:"Style",dir:f},{title:"Dataset",dir:u},{title:"Data Transform",dir:D},{title:"Coordinate",dir:G,draft:i},{title:"Axis",dir:O},{title:"Visual Mapping",dir:t},{title:"Legend",dir:L},{title:"Event and Action",dir:v}]},{title:"How To Guides",dir:M,children:[{title:"Common Charts",dir:R,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:S},{title:"Stacked Bar",dir:Y},{title:"Bar Racing",dir:F},{title:"Bar Polar",dir:X,draft:i},{title:"Waterfall",dir:k}]},{title:"Line",dir:J,children:[{title:"Basic Line",dir:x},{title:"Stacked Line",dir:V},{title:"Area Chart",dir:W},{title:"Smoothed Line",dir:z},{title:"Step Line",dir:H}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:j},{title:"Ring Style",dir:Q},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:U,children:[{title:"Basic Scatter",dir:K}]}]},{title:"Common Components",dir:T,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:N}]}]},{title:"Mobile",dir:e,draft:i},{title:"Cross Platform",dir:Z,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:P},{title:"Drilldown",dir:_,draft:i}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:q}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:ii}]},{title:"Interaction",dir:ei,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:ti,draft:i},{title:"Intelligent Pointer Snapping",dir:di}]}]},{title:"Best Practices",dir:ri,children:[{title:"Mobile Optimization",dir:e,draft:i},{title:ai,dir:li},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:oi}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:ci}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:i,routePath:"/zh/how-to/chart-types/bar/basic-bar",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/zh/how-to/chart-types/bar/stacked-bar/index.html b/docs/zh/how-to/chart-types/bar/stacked-bar/index.html
new file mode 100644
index 0000000..34b3f83
--- /dev/null
+++ b/docs/zh/how-to/chart-types/bar/stacked-bar/index.html
@@ -0,0 +1,47 @@
+<!doctype html>
+<html data-n-head-ssr lang="zh-CN" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh-CN%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>堆叠柱状图 - 柱状图 - 常用图表类型 - 应用篇 - 使用手册 - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="zh"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/zh/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/zh/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/zh/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/zh/index.html" class="navbar-brand"><img src="https://echarts.apache.org/zh/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/zh/index.html">首页</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">文档<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/feature.html">特性</a></li><li><a href="https://echarts.apache.org/handbook/zh/get-started/">使用手册</a></li><li><a href="https://echarts.apache.org/zh/api.html">API</a></li><li><a href="https://echarts.apache.org/zh/option.html">配置项手册</a></li><li><a href="https://echarts.apache.org/zh/changelog.html">版本记录</a></li><li><a href="https://echarts.apache.org/zh/faq.html">常见问题</a></li><li><a href="https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide">v6 升级指南</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">下载<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/download.html">下载</a></li><li><a href="https://echarts.apache.org/zh/download-theme.html">主题下载</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">自定义系列下载<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/download-extension.html">扩展下载</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/zh/index.html">示例</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">资源<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/spreadsheet.html">表格工具</a></li><li><a href="https://echarts.apache.org/zh/theme-builder.html">主题构建工具</a></li><li><a href="https://echarts.apache.org/zh/cheat-sheet.html">术语速查手册</a></li><li><a href="https://echarts.apache.org/zh/resources.html">更多资源</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">社区<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/events.html">活动</a></li><li><a href="https://echarts.apache.org/zh/committers.html">贡献者列表</a></li><li><a href="https://echarts.apache.org/zh/maillist.html">邮件列表</a></li><li><a href="https://echarts.apache.org/zh/contributing.html">如何贡献</a></li><li><a href="https://echarts.apache.org/zh/dependencies.html">依赖项</a></li><li><a href="https://echarts.apache.org/zh/coding-standard.html">代码规范</a></li><li><a href="https://github.com/apache/echarts" target="_blank">源码(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/security.html">安全</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">版权<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">活动<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">捐赠<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">鸣谢<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("en")'>EN</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/zh/get-started" class="nav-link"><span class="title">快速上手</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">入门篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/basics/download" class="nav-link"><span class="title">获取 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/import" class="nav-link"><span class="title">在项目中引入 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/basics/help" class="nav-link"><span class="title">寻求帮助</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">版本特性</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 特性介绍</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">v5 升级 v6 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">v4 升级 v5 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">概念篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/concepts/chart-size" class="nav-link"><span class="title">图表容器及大小</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/style" class="nav-link"><span class="title">样式</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/dataset" class="nav-link"><span class="title">数据集</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/data-transform" class="nav-link"><span class="title">数据转换</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/axis" class="nav-link"><span class="title">坐标轴</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/visual-map" class="nav-link"><span class="title">视觉映射</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/legend" class="nav-link"><span class="title">图例</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/event" class="nav-link"><span class="title">事件与行为</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">应用篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">常用图表类型</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a class="nav-link"><span class="title">柱状图</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level3"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">基础柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/stacked-bar" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">堆叠柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">动态排序柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">阶梯瀑布图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">折线图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">基础折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">堆叠折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/area-line" class="nav-link"><span class="title">区域面积图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">平滑曲线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/step-line" class="nav-link"><span class="title">阶梯线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">饼图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">基础饼图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">圆环图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/rose" class="nav-link"><span class="title">南丁格尔图(玫瑰图)</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">散点图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">基础散点图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">常用组件</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">地理坐标系(Geo)</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG 底图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">跨平台方案</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/server" class="nav-link"><span class="title">服务端渲染</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/wechat-app" class="nav-link"><span class="title">微信小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/baidu-app" class="nav-link"><span class="title">百度智能小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">数据处理</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/data/dynamic-data" class="nav-link"><span class="title">动态的异步数据</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">标签</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/label/rich-text" class="nav-link"><span class="title">富文本标签</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">动画</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/animation/transition" class="nav-link"><span class="title">数据过渡动画</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">交互</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/drag" class="nav-link"><span class="title">拖拽的实现</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">智能指针吸附</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">最佳实践</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/aria" class="nav-link"><span class="title">无障碍访问</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/security" class="nav-link"><span class="title">安全指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">编辑本文档</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/meta/edit-guide" class="nav-link"><span class="title">文档编辑指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="%E5%A0%86%E5%8F%A0%E6%9F%B1%E7%8A%B6%E5%9B%BE" tabindex="-1">堆叠柱状图</h1> <p>有时候,我们不仅希望知道不同系列各自的数值,还希望知道它们之和的变化,这时候通常使用堆叠柱状图来表现。顾名思义,堆叠柱状图就是一个系列的数值“堆叠”在另一个系列上,因而从他们的高度总和就能表达总量的变化。</p> <p>使用 EChart 实现堆叠柱状图的方法非常简单,只需要给一个系列的 <code>stack</code> 值设置一个字符串类型的值,这一个值表示该系列堆叠的类别。也就是说,拥有同样 <code>stack</code> 值的系列将堆叠在一组。</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    data: ['A', 'B', 'C', 'D', 'E']
+  },
+  yAxis: {},
+  series: [
+    {
+      data: [10, 22, 28, 43, 49],
+      type: 'bar',
+      stack: 'x'
+    },
+    {
+      data: [5, 4, 3, 5, 10],
+      type: 'bar',
+      stack: 'x'
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'A'</span><span class="token punctuation">,</span> <span class="token string">'B'</span><span class="token punctuation">,</span> <span class="token string">'C'</span><span class="token punctuation">,</span> <span class="token string">'D'</span><span class="token punctuation">,</span> <span class="token string">'E'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">22</span><span class="token punctuation">,</span> <span class="token number">28</span><span class="token punctuation">,</span> <span class="token number">43</span><span class="token punctuation">,</span> <span class="token number">49</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">stack</span><span class="token operator">:</span> <span class="token string">'x'</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">stack</span><span class="token operator">:</span> <span class="token string">'x'</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>在这个例子中,第二个系列所在的位置是在第一个系列的位置的基础上,上升了第二个系列数值对应的高度。因此,从第二个系列的位置,就能看出这两者总和的变化趋势。</p> <blockquote><p><code>stack</code> 的取值用来表明哪些系列将被堆叠在一起,理论上只要取值相同即可,具体的取值并没有什么区别。但在实际的应用中,我们建议使用一些有意义的字符串方便阅读。</p> <p>比如,在一个统计男女人数的图中,有四个系列,“成年男性”和“男孩”系列需要进行堆叠,“成年女性”和“女孩”系列需要堆叠。这时,这两组的的 <code>stack</code> 值就建议分别设为 <code>'男'</code> 和 <code>'女'</code>。虽然使用 <code>'a'</code> 和 <code>'b'</code> 这样没有意义的字符串也能实现同样的效果,但是代码的可阅读性就差了。</p></blockquote></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">本文贡献者</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/zh/how-to/chart-types/bar/stacked-bar.md" title="编辑本文" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">在 GitHub 上编辑本页</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/ArisLittle" target="_blank" class="post-contributor"><!----> <span>ArisLittle</span></a><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,i,e,r,d,l,a,n,o,c,s,h,p,g,C,b,f,m,I,u,A,v,B,w,S,k,E,y,D,P,G,R,x,L,M,z,V,H,J,K,O,T,F,W,_,N,X,Y,Q,U,j,q,Z,$,tt,it,et,rt,dt,lt,at,nt,ot){return{layout:"default",data:[{html:"<h1 id=\"%E5%A0%86%E5%8F%A0%E6%9F%B1%E7%8A%B6%E5%9B%BE\" tabindex=\"-1\">堆叠柱状图</h1>\n<p>有时候,我们不仅希望知道不同系列各自的数值,还希望知道它们之和的变化,这时候通常使用堆叠柱状图来表现。顾名思义,堆叠柱状图就是一个系列的数值“堆叠”在另一个系列上,因而从他们的高度总和就能表达总量的变化。</p>\n<p>使用 EChart 实现堆叠柱状图的方法非常简单,只需要给一个系列的 <code>stack</code> 值设置一个字符串类型的值,这一个值表示该系列堆叠的类别。也就是说,拥有同样 <code>stack</code> 值的系列将堆叠在一组。</p>\n<md-live lang=\"js\" code=\"'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBkYXRhOiBbJ0EnLCAnQicsICdDJywgJ0QnLCAnRSddCiAgfSwKICB5QXhpczoge30sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIGRhdGE6IFsxMCwgMjIsIDI4LCA0MywgNDldLAogICAgICB0eXBlOiAnYmFyJywKICAgICAgc3RhY2s6ICd4JwogICAgfSwKICAgIHsKICAgICAgZGF0YTogWzUsIDQsIDMsIDUsIDEwXSwKICAgICAgdHlwZTogJ2JhcicsCiAgICAgIHN0YWNrOiAneCcKICAgIH0KICBdCn07'\" v-bind=\"{}\" />\n<p>在这个例子中,第二个系列所在的位置是在第一个系列的位置的基础上,上升了第二个系列数值对应的高度。因此,从第二个系列的位置,就能看出这两者总和的变化趋势。</p>\n<blockquote>\n<p><code>stack</code> 的取值用来表明哪些系列将被堆叠在一起,理论上只要取值相同即可,具体的取值并没有什么区别。但在实际的应用中,我们建议使用一些有意义的字符串方便阅读。</p>\n<p>比如,在一个统计男女人数的图中,有四个系列,“成年男性”和“男孩”系列需要进行堆叠,“成年女性”和“女孩”系列需要堆叠。这时,这两组的的 <code>stack</code> 值就建议分别设为 <code>'男'</code> 和 <code>'女'</code>。虽然使用 <code>'a'</code> 和 <code>'b'</code> 这样没有意义的字符串也能实现同样的效果,但是代码的可阅读性就差了。</p>\n</blockquote>\n",postPath:"zh/how-to/chart-types/bar/stacked-bar",title:"堆叠柱状图 - 柱状图 - 常用图表类型 - 应用篇"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:r},{title:"入门篇",dir:d,children:[{title:"获取 ECharts",dir:l},{title:"在项目中引入 ECharts",dir:a},{title:"资源列表",dir:n,draft:t},{title:"寻求帮助",dir:o},{title:"版本特性",dir:c,children:[{title:"ECharts 6 特性介绍",dir:s},{title:"v5 升级 v6 指南",dir:h},{title:"5.0",dir:p},{title:"v4 升级 v5 指南",dir:g},{title:5.2,dir:C},{title:5.3,dir:b},{title:5.4,dir:f},{title:5.5,dir:m},{title:5.6,dir:I}]}]},{title:"概念篇",dir:u,children:[{title:"图表容器及大小",dir:A},{title:"配置项",dir:v,draft:t},{title:"系列",dir:B,draft:t},{title:"样式",dir:w},{title:"数据集",dir:S},{title:"数据转换",dir:k},{title:"坐标系",dir:E,draft:t},{title:"坐标轴",dir:y},{title:"视觉映射",dir:e},{title:"图例",dir:D},{title:"事件与行为",dir:P}]},{title:"应用篇",dir:G,children:[{title:"常用图表类型",dir:R,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:x},{title:"堆叠柱状图",dir:L},{title:"动态排序柱状图",dir:M},{title:"极坐标系柱状图",dir:z,draft:t},{title:"阶梯瀑布图",dir:V},{title:"视觉映射的柱状图",dir:e,draft:t}]},{title:"折线图",dir:H,children:[{title:"基础折线图",dir:J},{title:"堆叠折线图",dir:K},{title:"区域面积图",dir:O},{title:"平滑曲线图",dir:T},{title:"阶梯线图",dir:F}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:W},{title:"圆环图",dir:_},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:N,children:[{title:"基础散点图",dir:X}]}]},{title:"常用组件",dir:Y,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:Q}]}]},{title:"移动端优化",dir:i,draft:t},{title:"跨平台方案",dir:U,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:j},{title:"数据下钻",dir:q,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:Z}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:it,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:et,draft:t},{title:"智能指针吸附",dir:rt}]}]},{title:"最佳实践",dir:dt,children:[{title:"移动端优化",dir:i,draft:t},{title:lt,dir:at},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:nt}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:ot}]}],en:[{title:"Get Started",dir:r},{title:"Basics",dir:d,children:[{title:"Download ECharts",dir:l},{title:"Import ECharts",dir:a},{title:"Resources",dir:n,draft:t},{title:"Get Help",dir:o},{title:"What's New",dir:c,children:[{title:"ECharts 6 Features",dir:s},{title:"Migration from v5 to v6",dir:h},{title:"5.0",dir:p},{title:"Migration from v4 to v5",dir:g},{title:5.2,dir:C},{title:5.3,dir:b},{title:5.4,dir:f},{title:5.5,dir:m},{title:5.6,dir:I}]}]},{title:"Concepts",dir:u,children:[{title:"Chart Container",dir:A},{title:"Chart Option",dir:v,draft:t},{title:"Series",dir:B,draft:t},{title:"Style",dir:w},{title:"Dataset",dir:S},{title:"Data Transform",dir:k},{title:"Coordinate",dir:E,draft:t},{title:"Axis",dir:y},{title:"Visual Mapping",dir:e},{title:"Legend",dir:D},{title:"Event and Action",dir:P}]},{title:"How To Guides",dir:G,children:[{title:"Common Charts",dir:R,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:x},{title:"Stacked Bar",dir:L},{title:"Bar Racing",dir:M},{title:"Bar Polar",dir:z,draft:t},{title:"Waterfall",dir:V}]},{title:"Line",dir:H,children:[{title:"Basic Line",dir:J},{title:"Stacked Line",dir:K},{title:"Area Chart",dir:O},{title:"Smoothed Line",dir:T},{title:"Step Line",dir:F}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:W},{title:"Ring Style",dir:_},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:N,children:[{title:"Basic Scatter",dir:X}]}]},{title:"Common Components",dir:Y,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:Q}]}]},{title:"Mobile",dir:i,draft:t},{title:"Cross Platform",dir:U,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:j},{title:"Drilldown",dir:q,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:Z}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:it,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:et,draft:t},{title:"Intelligent Pointer Snapping",dir:rt}]}]},{title:"Best Practices",dir:dt,children:[{title:"Mobile Optimization",dir:i,draft:t},{title:lt,dir:at},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:nt}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:ot}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/zh/how-to/chart-types/bar/stacked-bar",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/zh/how-to/chart-types/bar/waterfall/index.html b/docs/zh/how-to/chart-types/bar/waterfall/index.html
new file mode 100644
index 0000000..a318ab9
--- /dev/null
+++ b/docs/zh/how-to/chart-types/bar/waterfall/index.html
@@ -0,0 +1,175 @@
+<!doctype html>
+<html data-n-head-ssr lang="zh-CN" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh-CN%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>阶梯瀑布图 - 柱状图 - 常用图表类型 - 应用篇 - 使用手册 - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="zh"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/zh/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/zh/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/zh/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/zh/index.html" class="navbar-brand"><img src="https://echarts.apache.org/zh/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/zh/index.html">首页</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">文档<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/feature.html">特性</a></li><li><a href="https://echarts.apache.org/handbook/zh/get-started/">使用手册</a></li><li><a href="https://echarts.apache.org/zh/api.html">API</a></li><li><a href="https://echarts.apache.org/zh/option.html">配置项手册</a></li><li><a href="https://echarts.apache.org/zh/changelog.html">版本记录</a></li><li><a href="https://echarts.apache.org/zh/faq.html">常见问题</a></li><li><a href="https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide">v6 升级指南</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">下载<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/download.html">下载</a></li><li><a href="https://echarts.apache.org/zh/download-theme.html">主题下载</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">自定义系列下载<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/download-extension.html">扩展下载</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/zh/index.html">示例</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">资源<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/spreadsheet.html">表格工具</a></li><li><a href="https://echarts.apache.org/zh/theme-builder.html">主题构建工具</a></li><li><a href="https://echarts.apache.org/zh/cheat-sheet.html">术语速查手册</a></li><li><a href="https://echarts.apache.org/zh/resources.html">更多资源</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">社区<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/events.html">活动</a></li><li><a href="https://echarts.apache.org/zh/committers.html">贡献者列表</a></li><li><a href="https://echarts.apache.org/zh/maillist.html">邮件列表</a></li><li><a href="https://echarts.apache.org/zh/contributing.html">如何贡献</a></li><li><a href="https://echarts.apache.org/zh/dependencies.html">依赖项</a></li><li><a href="https://echarts.apache.org/zh/coding-standard.html">代码规范</a></li><li><a href="https://github.com/apache/echarts" target="_blank">源码(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/security.html">安全</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">版权<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">活动<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">捐赠<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">鸣谢<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("en")'>EN</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/zh/get-started" class="nav-link"><span class="title">快速上手</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">入门篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/basics/download" class="nav-link"><span class="title">获取 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/import" class="nav-link"><span class="title">在项目中引入 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/basics/help" class="nav-link"><span class="title">寻求帮助</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">版本特性</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 特性介绍</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">v5 升级 v6 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">v4 升级 v5 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">概念篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/concepts/chart-size" class="nav-link"><span class="title">图表容器及大小</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/style" class="nav-link"><span class="title">样式</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/dataset" class="nav-link"><span class="title">数据集</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/data-transform" class="nav-link"><span class="title">数据转换</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/axis" class="nav-link"><span class="title">坐标轴</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/visual-map" class="nav-link"><span class="title">视觉映射</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/legend" class="nav-link"><span class="title">图例</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/event" class="nav-link"><span class="title">事件与行为</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">应用篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">常用图表类型</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a class="nav-link"><span class="title">柱状图</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level3"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">基础柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">堆叠柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">动态排序柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/waterfall" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">阶梯瀑布图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">折线图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">基础折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">堆叠折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/area-line" class="nav-link"><span class="title">区域面积图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">平滑曲线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/step-line" class="nav-link"><span class="title">阶梯线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">饼图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">基础饼图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">圆环图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/rose" class="nav-link"><span class="title">南丁格尔图(玫瑰图)</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">散点图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">基础散点图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">常用组件</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">地理坐标系(Geo)</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG 底图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">跨平台方案</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/server" class="nav-link"><span class="title">服务端渲染</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/wechat-app" class="nav-link"><span class="title">微信小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/baidu-app" class="nav-link"><span class="title">百度智能小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">数据处理</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/data/dynamic-data" class="nav-link"><span class="title">动态的异步数据</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">标签</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/label/rich-text" class="nav-link"><span class="title">富文本标签</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">动画</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/animation/transition" class="nav-link"><span class="title">数据过渡动画</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">交互</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/drag" class="nav-link"><span class="title">拖拽的实现</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">智能指针吸附</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">最佳实践</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/aria" class="nav-link"><span class="title">无障碍访问</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/security" class="nav-link"><span class="title">安全指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">编辑本文档</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/meta/edit-guide" class="nav-link"><span class="title">文档编辑指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="%E9%98%B6%E6%A2%AF%E7%80%91%E5%B8%83%E5%9B%BE" tabindex="-1">阶梯瀑布图</h1> <p>Apache ECharts 中并没有单独的瀑布图类型,但是我们可以使用堆叠的柱状图模拟该效果。</p> <p>假设数据数组中的值是表示对前一个值的增减:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">var</span> data <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token number">900</span><span class="token punctuation">,</span> <span class="token number">345</span><span class="token punctuation">,</span> <span class="token number">393</span><span class="token punctuation">,</span> <span class="token operator">-</span><span class="token number">108</span><span class="token punctuation">,</span> <span class="token operator">-</span><span class="token number">154</span><span class="token punctuation">,</span> <span class="token number">135</span><span class="token punctuation">,</span> <span class="token number">178</span><span class="token punctuation">,</span> <span class="token number">286</span><span class="token punctuation">,</span> <span class="token operator">-</span><span class="token number">119</span><span class="token punctuation">,</span> <span class="token operator">-</span><span class="token number">361</span><span class="token punctuation">,</span> <span class="token operator">-</span><span class="token number">203</span><span class="token punctuation">]</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>也就是第一个数据是 <code>900</code>,第二个数据 <code>345</code> 表示的是在 <code>900</code> 的基础上增加了 <code>345</code>……将这个数据展示为阶梯瀑布图时,我们可以使用三个系列:第一个是不可交互的透明系列,用来实现“悬空”的柱状图效果;第二个系列用来表示正数;第三个系列用来表示负数。</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">var data = [900, 345, 393, -108, -154, 135, 178, 286, -119, -361, -203];
+var help = [];
+var positive = [];
+var negative = [];
+for (var i = 0, sum = 0; i &lt; data.length; ++i) {
+  if (data[i] >= 0) {
+    positive.push(data[i]);
+    negative.push('-');
+  } else {
+    positive.push('-');
+    negative.push(-data[i]);
+  }
+
+  if (i === 0) {
+    help.push(0);
+  } else {
+    sum += data[i - 1];
+    if (data[i] &lt; 0) {
+      help.push(sum + data[i]);
+    } else {
+      help.push(sum);
+    }
+  }
+}
+
+option = {
+  title: {
+    text: 'Waterfall'
+  },
+  grid: {
+    left: '3%',
+    right: '4%',
+    bottom: '3%',
+    containLabel: true
+  },
+  xAxis: {
+    type: 'category',
+    splitLine: { show: false },
+    data: (function() {
+      var list = [];
+      for (var i = 1; i &lt;= 11; i++) {
+        list.push('Oct/' + i);
+      }
+      return list;
+    })()
+  },
+  yAxis: {
+    type: 'value'
+  },
+  series: [
+    {
+      type: 'bar',
+      stack: 'all',
+      itemStyle: {
+        normal: {
+          barBorderColor: 'rgba(0,0,0,0)',
+          color: 'rgba(0,0,0,0)'
+        },
+        emphasis: {
+          barBorderColor: 'rgba(0,0,0,0)',
+          color: 'rgba(0,0,0,0)'
+        }
+      },
+      data: help
+    },
+    {
+      name: 'positive',
+      type: 'bar',
+      stack: 'all',
+      data: positive
+    },
+    {
+      name: 'negative',
+      type: 'bar',
+      stack: 'all',
+      data: negative,
+      itemStyle: {
+        color: '#f33'
+      }
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor"><span class="token keyword">var</span> data <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token number">900</span><span class="token punctuation">,</span> <span class="token number">345</span><span class="token punctuation">,</span> <span class="token number">393</span><span class="token punctuation">,</span> <span class="token operator">-</span><span class="token number">108</span><span class="token punctuation">,</span> <span class="token operator">-</span><span class="token number">154</span><span class="token punctuation">,</span> <span class="token number">135</span><span class="token punctuation">,</span> <span class="token number">178</span><span class="token punctuation">,</span> <span class="token number">286</span><span class="token punctuation">,</span> <span class="token operator">-</span><span class="token number">119</span><span class="token punctuation">,</span> <span class="token operator">-</span><span class="token number">361</span><span class="token punctuation">,</span> <span class="token operator">-</span><span class="token number">203</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
+<span class="token keyword">var</span> help <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
+<span class="token keyword">var</span> positive <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
+<span class="token keyword">var</span> negative <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
+<span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">var</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">,</span> sum <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator">&lt;</span> data<span class="token punctuation">.</span>length<span class="token punctuation">;</span> <span class="token operator">++</span>i<span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  <span class="token keyword">if</span> <span class="token punctuation">(</span>data<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">>=</span> <span class="token number">0</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+    positive<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span>data<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+    negative<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token string">'-'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+  <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span>
+    positive<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token string">'-'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+    negative<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token operator">-</span>data<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+  <span class="token punctuation">}</span>
+
+  <span class="token keyword">if</span> <span class="token punctuation">(</span>i <span class="token operator">===</span> <span class="token number">0</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+    help<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+  <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span>
+    sum <span class="token operator">+=</span> data<span class="token punctuation">[</span>i <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
+    <span class="token keyword">if</span> <span class="token punctuation">(</span>data<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">&lt;</span> <span class="token number">0</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+      help<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span>sum <span class="token operator">+</span> data<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+    <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span>
+      help<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span>sum<span class="token punctuation">)</span><span class="token punctuation">;</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span>
+
+option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">title</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'Waterfall'</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">grid</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">left</span><span class="token operator">:</span> <span class="token string">'3%'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">right</span><span class="token operator">:</span> <span class="token string">'4%'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">bottom</span><span class="token operator">:</span> <span class="token string">'3%'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">containLabel</span><span class="token operator">:</span> <span class="token boolean">true</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'category'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">splitLine</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">false</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">(</span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+      <span class="token keyword">var</span> list <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
+      <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">var</span> i <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span> i <span class="token operator">&lt;=</span> <span class="token number">11</span><span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+        list<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token string">'Oct/'</span> <span class="token operator">+</span> i<span class="token punctuation">)</span><span class="token punctuation">;</span>
+      <span class="token punctuation">}</span>
+      <span class="token keyword">return</span> list<span class="token punctuation">;</span>
+    <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'value'</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">stack</span><span class="token operator">:</span> <span class="token string">'all'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">itemStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">normal</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+          <span class="token literal-property property">barBorderColor</span><span class="token operator">:</span> <span class="token string">'rgba(0,0,0,0)'</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'rgba(0,0,0,0)'</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">emphasis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+          <span class="token literal-property property">barBorderColor</span><span class="token operator">:</span> <span class="token string">'rgba(0,0,0,0)'</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'rgba(0,0,0,0)'</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> help
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'positive'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">stack</span><span class="token operator">:</span> <span class="token string">'all'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> positive
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'negative'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">stack</span><span class="token operator">:</span> <span class="token string">'all'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> negative<span class="token punctuation">,</span>
+      <span class="token literal-property property">itemStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'#f33'</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">本文贡献者</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/zh/how-to/chart-types/bar/waterfall.md" title="编辑本文" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">在 GitHub 上编辑本页</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/robyle" target="_blank" class="post-contributor"><!----> <span>robyle</span></a><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(i,t,e,r,d,l,a,g,o,C,c,n,I,s,h,A,p,w,b,B,m,G,S,f,H,Z,u,K,L,v,y,M,D,R,X,T,V,z,E,k,N,Y,P,x,J,O,F,W,U,j,Q,_,$,q,ii,ti,ei,ri,di,li,ai,gi,oi){return{layout:"default",data:[{html:'<h1 id="%E9%98%B6%E6%A2%AF%E7%80%91%E5%B8%83%E5%9B%BE" tabindex="-1">阶梯瀑布图</h1>\n<p>Apache ECharts 中并没有单独的瀑布图类型,但是我们可以使用堆叠的柱状图模拟该效果。</p>\n<p>假设数据数组中的值是表示对前一个值的增减:</p>\n<md-code-block lang="js" code="\'dmFyIGRhdGEgPSBbOTAwLCAzNDUsIDM5MywgLTEwOCwgLTE1NCwgMTM1LCAxNzgsIDI4NiwgLTExOSwgLTM2MSwgLTIwM107\'" line-highlights="\'\'" />\n<p>也就是第一个数据是 <code>900</code>,第二个数据 <code>345</code> 表示的是在 <code>900</code> 的基础上增加了 <code>345</code>……将这个数据展示为阶梯瀑布图时,我们可以使用三个系列:第一个是不可交互的透明系列,用来实现“悬空”的柱状图效果;第二个系列用来表示正数;第三个系列用来表示负数。</p>\n<md-live lang="js" code="\'dmFyIGRhdGEgPSBbOTAwLCAzNDUsIDM5MywgLTEwOCwgLTE1NCwgMTM1LCAxNzgsIDI4NiwgLTExOSwgLTM2MSwgLTIwM107CnZhciBoZWxwID0gW107CnZhciBwb3NpdGl2ZSA9IFtdOwp2YXIgbmVnYXRpdmUgPSBbXTsKZm9yICh2YXIgaSA9IDAsIHN1bSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgKytpKSB7CiAgaWYgKGRhdGFbaV0gPj0gMCkgewogICAgcG9zaXRpdmUucHVzaChkYXRhW2ldKTsKICAgIG5lZ2F0aXZlLnB1c2goJy0nKTsKICB9IGVsc2UgewogICAgcG9zaXRpdmUucHVzaCgnLScpOwogICAgbmVnYXRpdmUucHVzaCgtZGF0YVtpXSk7CiAgfQoKICBpZiAoaSA9PT0gMCkgewogICAgaGVscC5wdXNoKDApOwogIH0gZWxzZSB7CiAgICBzdW0gKz0gZGF0YVtpIC0gMV07CiAgICBpZiAoZGF0YVtpXSA8IDApIHsKICAgICAgaGVscC5wdXNoKHN1bSArIGRhdGFbaV0pOwogICAgfSBlbHNlIHsKICAgICAgaGVscC5wdXNoKHN1bSk7CiAgICB9CiAgfQp9CgpvcHRpb24gPSB7CiAgdGl0bGU6IHsKICAgIHRleHQ6ICdXYXRlcmZhbGwnCiAgfSwKICBncmlkOiB7CiAgICBsZWZ0OiAnMyUnLAogICAgcmlnaHQ6ICc0JScsCiAgICBib3R0b206ICczJScsCiAgICBjb250YWluTGFiZWw6IHRydWUKICB9LAogIHhBeGlzOiB7CiAgICB0eXBlOiAnY2F0ZWdvcnknLAogICAgc3BsaXRMaW5lOiB7IHNob3c6IGZhbHNlIH0sCiAgICBkYXRhOiAoZnVuY3Rpb24oKSB7CiAgICAgIHZhciBsaXN0ID0gW107CiAgICAgIGZvciAodmFyIGkgPSAxOyBpIDw9IDExOyBpKyspIHsKICAgICAgICBsaXN0LnB1c2goJ09jdC8nICsgaSk7CiAgICAgIH0KICAgICAgcmV0dXJuIGxpc3Q7CiAgICB9KSgpCiAgfSwKICB5QXhpczogewogICAgdHlwZTogJ3ZhbHVlJwogIH0sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIHR5cGU6ICdiYXInLAogICAgICBzdGFjazogJ2FsbCcsCiAgICAgIGl0ZW1TdHlsZTogewogICAgICAgIG5vcm1hbDogewogICAgICAgICAgYmFyQm9yZGVyQ29sb3I6ICdyZ2JhKDAsMCwwLDApJywKICAgICAgICAgIGNvbG9yOiAncmdiYSgwLDAsMCwwKScKICAgICAgICB9LAogICAgICAgIGVtcGhhc2lzOiB7CiAgICAgICAgICBiYXJCb3JkZXJDb2xvcjogJ3JnYmEoMCwwLDAsMCknLAogICAgICAgICAgY29sb3I6ICdyZ2JhKDAsMCwwLDApJwogICAgICAgIH0KICAgICAgfSwKICAgICAgZGF0YTogaGVscAogICAgfSwKICAgIHsKICAgICAgbmFtZTogJ3Bvc2l0aXZlJywKICAgICAgdHlwZTogJ2JhcicsCiAgICAgIHN0YWNrOiAnYWxsJywKICAgICAgZGF0YTogcG9zaXRpdmUKICAgIH0sCiAgICB7CiAgICAgIG5hbWU6ICduZWdhdGl2ZScsCiAgICAgIHR5cGU6ICdiYXInLAogICAgICBzdGFjazogJ2FsbCcsCiAgICAgIGRhdGE6IG5lZ2F0aXZlLAogICAgICBpdGVtU3R5bGU6IHsKICAgICAgICBjb2xvcjogJyNmMzMnCiAgICAgIH0KICAgIH0KICBdCn07\'" v-bind="{}" />\n',postPath:"zh/how-to/chart-types/bar/waterfall",title:"阶梯瀑布图 - 柱状图 - 常用图表类型 - 应用篇"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:r},{title:"入门篇",dir:d,children:[{title:"获取 ECharts",dir:l},{title:"在项目中引入 ECharts",dir:a},{title:"资源列表",dir:g,draft:i},{title:"寻求帮助",dir:o},{title:"版本特性",dir:C,children:[{title:"ECharts 6 特性介绍",dir:c},{title:"v5 升级 v6 指南",dir:n},{title:"5.0",dir:I},{title:"v4 升级 v5 指南",dir:s},{title:5.2,dir:h},{title:5.3,dir:A},{title:5.4,dir:p},{title:5.5,dir:w},{title:5.6,dir:b}]}]},{title:"概念篇",dir:B,children:[{title:"图表容器及大小",dir:m},{title:"配置项",dir:G,draft:i},{title:"系列",dir:S,draft:i},{title:"样式",dir:f},{title:"数据集",dir:H},{title:"数据转换",dir:Z},{title:"坐标系",dir:u,draft:i},{title:"坐标轴",dir:K},{title:"视觉映射",dir:e},{title:"图例",dir:L},{title:"事件与行为",dir:v}]},{title:"应用篇",dir:y,children:[{title:"常用图表类型",dir:M,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:D},{title:"堆叠柱状图",dir:R},{title:"动态排序柱状图",dir:X},{title:"极坐标系柱状图",dir:T,draft:i},{title:"阶梯瀑布图",dir:V},{title:"视觉映射的柱状图",dir:e,draft:i}]},{title:"折线图",dir:z,children:[{title:"基础折线图",dir:E},{title:"堆叠折线图",dir:k},{title:"区域面积图",dir:N},{title:"平滑曲线图",dir:Y},{title:"阶梯线图",dir:P}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:x},{title:"圆环图",dir:J},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:O,children:[{title:"基础散点图",dir:F}]}]},{title:"常用组件",dir:W,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:U}]}]},{title:"移动端优化",dir:t,draft:i},{title:"跨平台方案",dir:j,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:Q},{title:"数据下钻",dir:_,draft:i}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:$}]},{title:"动画",dir:q,children:[{title:"数据过渡动画",dir:ii}]},{title:"交互",dir:ti,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:ei,draft:i},{title:"智能指针吸附",dir:ri}]}]},{title:"最佳实践",dir:di,children:[{title:"移动端优化",dir:t,draft:i},{title:li,dir:ai},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:gi}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:oi}]}],en:[{title:"Get Started",dir:r},{title:"Basics",dir:d,children:[{title:"Download ECharts",dir:l},{title:"Import ECharts",dir:a},{title:"Resources",dir:g,draft:i},{title:"Get Help",dir:o},{title:"What's New",dir:C,children:[{title:"ECharts 6 Features",dir:c},{title:"Migration from v5 to v6",dir:n},{title:"5.0",dir:I},{title:"Migration from v4 to v5",dir:s},{title:5.2,dir:h},{title:5.3,dir:A},{title:5.4,dir:p},{title:5.5,dir:w},{title:5.6,dir:b}]}]},{title:"Concepts",dir:B,children:[{title:"Chart Container",dir:m},{title:"Chart Option",dir:G,draft:i},{title:"Series",dir:S,draft:i},{title:"Style",dir:f},{title:"Dataset",dir:H},{title:"Data Transform",dir:Z},{title:"Coordinate",dir:u,draft:i},{title:"Axis",dir:K},{title:"Visual Mapping",dir:e},{title:"Legend",dir:L},{title:"Event and Action",dir:v}]},{title:"How To Guides",dir:y,children:[{title:"Common Charts",dir:M,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:D},{title:"Stacked Bar",dir:R},{title:"Bar Racing",dir:X},{title:"Bar Polar",dir:T,draft:i},{title:"Waterfall",dir:V}]},{title:"Line",dir:z,children:[{title:"Basic Line",dir:E},{title:"Stacked Line",dir:k},{title:"Area Chart",dir:N},{title:"Smoothed Line",dir:Y},{title:"Step Line",dir:P}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:x},{title:"Ring Style",dir:J},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:O,children:[{title:"Basic Scatter",dir:F}]}]},{title:"Common Components",dir:W,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:U}]}]},{title:"Mobile",dir:t,draft:i},{title:"Cross Platform",dir:j,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:Q},{title:"Drilldown",dir:_,draft:i}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:$}]},{title:"Animation",dir:q,children:[{title:"Data Transition",dir:ii}]},{title:"Interaction",dir:ti,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:ei,draft:i},{title:"Intelligent Pointer Snapping",dir:ri}]}]},{title:"Best Practices",dir:di,children:[{title:"Mobile Optimization",dir:t,draft:i},{title:li,dir:ai},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:gi}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:oi}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:i,routePath:"/zh/how-to/chart-types/bar/waterfall",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/zh/how-to/chart-types/line/area-line/index.html b/docs/zh/how-to/chart-types/line/area-line/index.html
new file mode 100644
index 0000000..380f45b
--- /dev/null
+++ b/docs/zh/how-to/chart-types/line/area-line/index.html
@@ -0,0 +1,53 @@
+<!doctype html>
+<html data-n-head-ssr lang="zh-CN" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh-CN%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>区域面积图 - 折线图 - 常用图表类型 - 应用篇 - 使用手册 - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="zh"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/zh/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/zh/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/zh/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/zh/index.html" class="navbar-brand"><img src="https://echarts.apache.org/zh/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/zh/index.html">首页</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">文档<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/feature.html">特性</a></li><li><a href="https://echarts.apache.org/handbook/zh/get-started/">使用手册</a></li><li><a href="https://echarts.apache.org/zh/api.html">API</a></li><li><a href="https://echarts.apache.org/zh/option.html">配置项手册</a></li><li><a href="https://echarts.apache.org/zh/changelog.html">版本记录</a></li><li><a href="https://echarts.apache.org/zh/faq.html">常见问题</a></li><li><a href="https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide">v6 升级指南</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">下载<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/download.html">下载</a></li><li><a href="https://echarts.apache.org/zh/download-theme.html">主题下载</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">自定义系列下载<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/download-extension.html">扩展下载</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/zh/index.html">示例</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">资源<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/spreadsheet.html">表格工具</a></li><li><a href="https://echarts.apache.org/zh/theme-builder.html">主题构建工具</a></li><li><a href="https://echarts.apache.org/zh/cheat-sheet.html">术语速查手册</a></li><li><a href="https://echarts.apache.org/zh/resources.html">更多资源</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">社区<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/events.html">活动</a></li><li><a href="https://echarts.apache.org/zh/committers.html">贡献者列表</a></li><li><a href="https://echarts.apache.org/zh/maillist.html">邮件列表</a></li><li><a href="https://echarts.apache.org/zh/contributing.html">如何贡献</a></li><li><a href="https://echarts.apache.org/zh/dependencies.html">依赖项</a></li><li><a href="https://echarts.apache.org/zh/coding-standard.html">代码规范</a></li><li><a href="https://github.com/apache/echarts" target="_blank">源码(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/security.html">安全</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">版权<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">活动<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">捐赠<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">鸣谢<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("en")'>EN</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/zh/get-started" class="nav-link"><span class="title">快速上手</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">入门篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/basics/download" class="nav-link"><span class="title">获取 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/import" class="nav-link"><span class="title">在项目中引入 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/basics/help" class="nav-link"><span class="title">寻求帮助</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">版本特性</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 特性介绍</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">v5 升级 v6 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">v4 升级 v5 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">概念篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/concepts/chart-size" class="nav-link"><span class="title">图表容器及大小</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/style" class="nav-link"><span class="title">样式</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/dataset" class="nav-link"><span class="title">数据集</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/data-transform" class="nav-link"><span class="title">数据转换</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/axis" class="nav-link"><span class="title">坐标轴</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/visual-map" class="nav-link"><span class="title">视觉映射</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/legend" class="nav-link"><span class="title">图例</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/event" class="nav-link"><span class="title">事件与行为</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">应用篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">常用图表类型</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a class="nav-link"><span class="title">柱状图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">基础柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">堆叠柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">动态排序柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">阶梯瀑布图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">折线图</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level3"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">基础折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">堆叠折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/area-line" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">区域面积图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">平滑曲线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/step-line" class="nav-link"><span class="title">阶梯线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">饼图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">基础饼图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">圆环图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/rose" class="nav-link"><span class="title">南丁格尔图(玫瑰图)</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">散点图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">基础散点图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">常用组件</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">地理坐标系(Geo)</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG 底图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">跨平台方案</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/server" class="nav-link"><span class="title">服务端渲染</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/wechat-app" class="nav-link"><span class="title">微信小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/baidu-app" class="nav-link"><span class="title">百度智能小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">数据处理</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/data/dynamic-data" class="nav-link"><span class="title">动态的异步数据</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">标签</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/label/rich-text" class="nav-link"><span class="title">富文本标签</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">动画</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/animation/transition" class="nav-link"><span class="title">数据过渡动画</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">交互</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/drag" class="nav-link"><span class="title">拖拽的实现</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">智能指针吸附</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">最佳实践</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/aria" class="nav-link"><span class="title">无障碍访问</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/security" class="nav-link"><span class="title">安全指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">编辑本文档</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/meta/edit-guide" class="nav-link"><span class="title">文档编辑指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="%E5%8C%BA%E5%9F%9F%E9%9D%A2%E7%A7%AF%E5%9B%BE" tabindex="-1">区域面积图</h1> <p>区域面积图将折线到坐标轴的空间设置背景色,用区域面积表达数据。相比普通的折线图,区域面积图的视觉效果更加饱满丰富,在系列不多的场景下尤其适用。</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    data: ['A', 'B', 'C', 'D', 'E']
+  },
+  yAxis: {},
+  series: [
+    {
+      data: [10, 22, 28, 23, 19],
+      type: 'line',
+      areaStyle: {}
+    },
+    {
+      data: [25, 14, 23, 35, 10],
+      type: 'line',
+      areaStyle: {
+        color: '#ff0',
+        opacity: 0.5
+      }
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'A'</span><span class="token punctuation">,</span> <span class="token string">'B'</span><span class="token punctuation">,</span> <span class="token string">'C'</span><span class="token punctuation">,</span> <span class="token string">'D'</span><span class="token punctuation">,</span> <span class="token string">'E'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">22</span><span class="token punctuation">,</span> <span class="token number">28</span><span class="token punctuation">,</span> <span class="token number">23</span><span class="token punctuation">,</span> <span class="token number">19</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">areaStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">25</span><span class="token punctuation">,</span> <span class="token number">14</span><span class="token punctuation">,</span> <span class="token number">23</span><span class="token punctuation">,</span> <span class="token number">35</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">areaStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'#ff0'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">opacity</span><span class="token operator">:</span> <span class="token number">0.5</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>通过 <a href="https://echarts.apache.org/option.html#series-line.areaStyle"><code>areaStyle</code></a> 设置折线图的填充区域样式,将其设为为 <code>{}</code> 表示使用默认样式,即使用系列的颜色以半透明的方式填充区域。如果想指定特定的样式,可以通过设置 <code>areaStyle</code> 下的配置项覆盖,如第二个系列将填充区域的颜色设为不透明度为 0.5 的黄色。</p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">本文贡献者</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/zh/how-to/chart-types/line/area-line.md" title="编辑本文" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">在 GitHub 上编辑本页</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,i,e,r,d,l,a,n,o,s,c,h,g,p,C,A,I,m,f,b,u,B,v,S,y,w,G,E,P,M,D,L,R,T,k,x,z,F,H,V,O,Z,W,_,N,X,K,Q,J,j,U,Y,$,q,tt,it,et,rt,dt,lt,at,nt,ot){return{layout:"default",data:[{html:'<h1 id="%E5%8C%BA%E5%9F%9F%E9%9D%A2%E7%A7%AF%E5%9B%BE" tabindex="-1">区域面积图</h1>\n<p>区域面积图将折线到坐标轴的空间设置背景色,用区域面积表达数据。相比普通的折线图,区域面积图的视觉效果更加饱满丰富,在系列不多的场景下尤其适用。</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBkYXRhOiBbJ0EnLCAnQicsICdDJywgJ0QnLCAnRSddCiAgfSwKICB5QXhpczoge30sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIGRhdGE6IFsxMCwgMjIsIDI4LCAyMywgMTldLAogICAgICB0eXBlOiAnbGluZScsCiAgICAgIGFyZWFTdHlsZToge30KICAgIH0sCiAgICB7CiAgICAgIGRhdGE6IFsyNSwgMTQsIDIzLCAzNSwgMTBdLAogICAgICB0eXBlOiAnbGluZScsCiAgICAgIGFyZWFTdHlsZTogewogICAgICAgIGNvbG9yOiAnI2ZmMCcsCiAgICAgICAgb3BhY2l0eTogMC41CiAgICAgIH0KICAgIH0KICBdCn07\'" v-bind="{}" />\n<p>通过 <a href="https://echarts.apache.org/option.html#series-line.areaStyle"><code>areaStyle</code></a> 设置折线图的填充区域样式,将其设为为 <code>{}</code> 表示使用默认样式,即使用系列的颜色以半透明的方式填充区域。如果想指定特定的样式,可以通过设置 <code>areaStyle</code> 下的配置项覆盖,如第二个系列将填充区域的颜色设为不透明度为 0.5 的黄色。</p>\n',postPath:"zh/how-to/chart-types/line/area-line",title:"区域面积图 - 折线图 - 常用图表类型 - 应用篇"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:r},{title:"入门篇",dir:d,children:[{title:"获取 ECharts",dir:l},{title:"在项目中引入 ECharts",dir:a},{title:"资源列表",dir:n,draft:t},{title:"寻求帮助",dir:o},{title:"版本特性",dir:s,children:[{title:"ECharts 6 特性介绍",dir:c},{title:"v5 升级 v6 指南",dir:h},{title:"5.0",dir:g},{title:"v4 升级 v5 指南",dir:p},{title:5.2,dir:C},{title:5.3,dir:A},{title:5.4,dir:I},{title:5.5,dir:m},{title:5.6,dir:f}]}]},{title:"概念篇",dir:b,children:[{title:"图表容器及大小",dir:u},{title:"配置项",dir:B,draft:t},{title:"系列",dir:v,draft:t},{title:"样式",dir:S},{title:"数据集",dir:y},{title:"数据转换",dir:w},{title:"坐标系",dir:G,draft:t},{title:"坐标轴",dir:E},{title:"视觉映射",dir:e},{title:"图例",dir:P},{title:"事件与行为",dir:M}]},{title:"应用篇",dir:D,children:[{title:"常用图表类型",dir:L,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:R},{title:"堆叠柱状图",dir:T},{title:"动态排序柱状图",dir:k},{title:"极坐标系柱状图",dir:x,draft:t},{title:"阶梯瀑布图",dir:z},{title:"视觉映射的柱状图",dir:e,draft:t}]},{title:"折线图",dir:F,children:[{title:"基础折线图",dir:H},{title:"堆叠折线图",dir:V},{title:"区域面积图",dir:O},{title:"平滑曲线图",dir:Z},{title:"阶梯线图",dir:W}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:_},{title:"圆环图",dir:N},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:X,children:[{title:"基础散点图",dir:K}]}]},{title:"常用组件",dir:Q,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:J}]}]},{title:"移动端优化",dir:i,draft:t},{title:"跨平台方案",dir:j,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:U},{title:"数据下钻",dir:Y,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:$}]},{title:"动画",dir:q,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:it,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:et,draft:t},{title:"智能指针吸附",dir:rt}]}]},{title:"最佳实践",dir:dt,children:[{title:"移动端优化",dir:i,draft:t},{title:lt,dir:at},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:nt}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:ot}]}],en:[{title:"Get Started",dir:r},{title:"Basics",dir:d,children:[{title:"Download ECharts",dir:l},{title:"Import ECharts",dir:a},{title:"Resources",dir:n,draft:t},{title:"Get Help",dir:o},{title:"What's New",dir:s,children:[{title:"ECharts 6 Features",dir:c},{title:"Migration from v5 to v6",dir:h},{title:"5.0",dir:g},{title:"Migration from v4 to v5",dir:p},{title:5.2,dir:C},{title:5.3,dir:A},{title:5.4,dir:I},{title:5.5,dir:m},{title:5.6,dir:f}]}]},{title:"Concepts",dir:b,children:[{title:"Chart Container",dir:u},{title:"Chart Option",dir:B,draft:t},{title:"Series",dir:v,draft:t},{title:"Style",dir:S},{title:"Dataset",dir:y},{title:"Data Transform",dir:w},{title:"Coordinate",dir:G,draft:t},{title:"Axis",dir:E},{title:"Visual Mapping",dir:e},{title:"Legend",dir:P},{title:"Event and Action",dir:M}]},{title:"How To Guides",dir:D,children:[{title:"Common Charts",dir:L,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:R},{title:"Stacked Bar",dir:T},{title:"Bar Racing",dir:k},{title:"Bar Polar",dir:x,draft:t},{title:"Waterfall",dir:z}]},{title:"Line",dir:F,children:[{title:"Basic Line",dir:H},{title:"Stacked Line",dir:V},{title:"Area Chart",dir:O},{title:"Smoothed Line",dir:Z},{title:"Step Line",dir:W}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:_},{title:"Ring Style",dir:N},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:X,children:[{title:"Basic Scatter",dir:K}]}]},{title:"Common Components",dir:Q,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:J}]}]},{title:"Mobile",dir:i,draft:t},{title:"Cross Platform",dir:j,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:U},{title:"Drilldown",dir:Y,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:$}]},{title:"Animation",dir:q,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:it,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:et,draft:t},{title:"Intelligent Pointer Snapping",dir:rt}]}]},{title:"Best Practices",dir:dt,children:[{title:"Mobile Optimization",dir:i,draft:t},{title:lt,dir:at},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:nt}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:ot}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/zh/how-to/chart-types/line/area-line",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/zh/how-to/chart-types/line/basic-line/index.html b/docs/zh/how-to/chart-types/line/basic-line/index.html
new file mode 100644
index 0000000..b3f0da1
--- /dev/null
+++ b/docs/zh/how-to/chart-types/line/basic-line/index.html
@@ -0,0 +1,161 @@
+<!doctype html>
+<html data-n-head-ssr lang="zh-CN" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh-CN%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>基础折线图 - 折线图 - 常用图表类型 - 应用篇 - 使用手册 - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="zh"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/zh/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/zh/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/zh/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/zh/index.html" class="navbar-brand"><img src="https://echarts.apache.org/zh/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/zh/index.html">首页</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">文档<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/feature.html">特性</a></li><li><a href="https://echarts.apache.org/handbook/zh/get-started/">使用手册</a></li><li><a href="https://echarts.apache.org/zh/api.html">API</a></li><li><a href="https://echarts.apache.org/zh/option.html">配置项手册</a></li><li><a href="https://echarts.apache.org/zh/changelog.html">版本记录</a></li><li><a href="https://echarts.apache.org/zh/faq.html">常见问题</a></li><li><a href="https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide">v6 升级指南</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">下载<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/download.html">下载</a></li><li><a href="https://echarts.apache.org/zh/download-theme.html">主题下载</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">自定义系列下载<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/download-extension.html">扩展下载</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/zh/index.html">示例</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">资源<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/spreadsheet.html">表格工具</a></li><li><a href="https://echarts.apache.org/zh/theme-builder.html">主题构建工具</a></li><li><a href="https://echarts.apache.org/zh/cheat-sheet.html">术语速查手册</a></li><li><a href="https://echarts.apache.org/zh/resources.html">更多资源</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">社区<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/events.html">活动</a></li><li><a href="https://echarts.apache.org/zh/committers.html">贡献者列表</a></li><li><a href="https://echarts.apache.org/zh/maillist.html">邮件列表</a></li><li><a href="https://echarts.apache.org/zh/contributing.html">如何贡献</a></li><li><a href="https://echarts.apache.org/zh/dependencies.html">依赖项</a></li><li><a href="https://echarts.apache.org/zh/coding-standard.html">代码规范</a></li><li><a href="https://github.com/apache/echarts" target="_blank">源码(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/security.html">安全</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">版权<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">活动<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">捐赠<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">鸣谢<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("en")'>EN</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/zh/get-started" class="nav-link"><span class="title">快速上手</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">入门篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/basics/download" class="nav-link"><span class="title">获取 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/import" class="nav-link"><span class="title">在项目中引入 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/basics/help" class="nav-link"><span class="title">寻求帮助</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">版本特性</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 特性介绍</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">v5 升级 v6 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">v4 升级 v5 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">概念篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/concepts/chart-size" class="nav-link"><span class="title">图表容器及大小</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/style" class="nav-link"><span class="title">样式</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/dataset" class="nav-link"><span class="title">数据集</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/data-transform" class="nav-link"><span class="title">数据转换</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/axis" class="nav-link"><span class="title">坐标轴</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/visual-map" class="nav-link"><span class="title">视觉映射</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/legend" class="nav-link"><span class="title">图例</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/event" class="nav-link"><span class="title">事件与行为</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">应用篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">常用图表类型</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a class="nav-link"><span class="title">柱状图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">基础柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">堆叠柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">动态排序柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">阶梯瀑布图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">折线图</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level3"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/basic-line" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">基础折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">堆叠折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/area-line" class="nav-link"><span class="title">区域面积图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">平滑曲线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/step-line" class="nav-link"><span class="title">阶梯线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">饼图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">基础饼图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">圆环图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/rose" class="nav-link"><span class="title">南丁格尔图(玫瑰图)</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">散点图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">基础散点图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">常用组件</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">地理坐标系(Geo)</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG 底图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">跨平台方案</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/server" class="nav-link"><span class="title">服务端渲染</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/wechat-app" class="nav-link"><span class="title">微信小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/baidu-app" class="nav-link"><span class="title">百度智能小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">数据处理</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/data/dynamic-data" class="nav-link"><span class="title">动态的异步数据</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">标签</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/label/rich-text" class="nav-link"><span class="title">富文本标签</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">动画</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/animation/transition" class="nav-link"><span class="title">数据过渡动画</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">交互</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/drag" class="nav-link"><span class="title">拖拽的实现</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">智能指针吸附</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">最佳实践</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/aria" class="nav-link"><span class="title">无障碍访问</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/security" class="nav-link"><span class="title">安全指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">编辑本文档</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/meta/edit-guide" class="nav-link"><span class="title">文档编辑指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="%E5%9F%BA%E7%A1%80%E6%8A%98%E7%BA%BF%E5%9B%BE" tabindex="-1">基础折线图</h1> <p>折线图主要用来展示数据项随着时间推移的趋势或变化。</p> <h2 id="%E6%9C%80%E7%AE%80%E5%8D%95%E7%9A%84%E6%8A%98%E7%BA%BF%E5%9B%BE" tabindex="-1">最简单的折线图</h2> <p>如果我们想建立一个横坐标是类目型(category)、纵坐标是数值型(value)的折线图,我们可以使用这样的方式:</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    type: 'category',
+    data: ['A', 'B', 'C']
+  },
+  yAxis: {
+    type: 'value'
+  },
+  series: [
+    {
+      data: [120, 200, 150],
+      type: 'line'
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'category'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'A'</span><span class="token punctuation">,</span> <span class="token string">'B'</span><span class="token punctuation">,</span> <span class="token string">'C'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'value'</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">120</span><span class="token punctuation">,</span> <span class="token number">200</span><span class="token punctuation">,</span> <span class="token number">150</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>在这个例子中,我们通过 <code>xAxis</code> 将横坐标设为类目型,并指定了对应的值;通过 <code>type</code> 将 <code>yAxis</code> 的类型设定为数值型。在 <code>series</code> 中,我们将系列类型设为 <code>line</code>,并且通过 <code>data</code> 指定了折线图三个点的取值。这样,就能得到一个最简单的折线图了。</p> <blockquote><p>这里 <code>xAxis</code> 和 <code>yAxis</code> 的 <code>type</code> 属性都可以隐去不写。因为坐标轴的默认类型是数值型,而 <code>xAxis</code> 指定了类目型的 <code>data</code>,所以 <code>ECharts</code> 也能识别出这是类目型的坐标轴。为了让大家更容易理解,我们特意写了 <code>type</code>。在实际的应用中,如果是 <code>'value'</code> 类型,也可以省略不写。</p></blockquote> <h2 id="%E7%AC%9B%E5%8D%A1%E5%B0%94%E5%9D%90%E6%A0%87%E7%B3%BB%E4%B8%AD%E7%9A%84%E6%8A%98%E7%BA%BF%E5%9B%BE" tabindex="-1">笛卡尔坐标系中的折线图</h2> <p>如果我们希望折线图在横坐标和纵坐标上都是连续的,即在笛卡尔坐标系中,应该如何实现呢?答案也很简单,只要把 <code>series</code> 的 <code>data</code> 每个数据用一个包含两个元素的数组表示就行了。</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {},
+  yAxis: {},
+  series: [
+    {
+      data: [
+        [20, 120],
+        [50, 200],
+        [40, 50]
+      ],
+      type: 'line'
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">[</span><span class="token number">20</span><span class="token punctuation">,</span> <span class="token number">120</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token number">50</span><span class="token punctuation">,</span> <span class="token number">200</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token number">40</span><span class="token punctuation">,</span> <span class="token number">50</span><span class="token punctuation">]</span>
+      <span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <h2 id="%E6%8A%98%E7%BA%BF%E5%9B%BE%E6%A0%B7%E5%BC%8F%E8%AE%BE%E7%BD%AE" tabindex="-1">折线图样式设置</h2> <h3 id="%E6%8A%98%E7%BA%BF%E7%9A%84%E6%A0%B7%E5%BC%8F" tabindex="-1">折线的样式</h3> <p>折线图中折线的样式可以通过 <code>lineStyle</code> 设置。可以为其指定颜色、线宽、折线类型、阴影、不透明度等等,具体的可以参考配置项手册 <a href="https://echarts.apache.org/option.html#series-line.lineStyle"><code>series.lineStyle</code></a> 了解。这里,我们以设置颜色(color)、线宽(width)和折线类型(type)为例说明。</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    data: ['A', 'B', 'C', 'D', 'E']
+  },
+  yAxis: {},
+  series: [
+    {
+      data: [10, 22, 28, 23, 19],
+      type: 'line',
+      lineStyle: {
+        normal: {
+          color: 'green',
+          width: 4,
+          type: 'dashed'
+        }
+      }
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'A'</span><span class="token punctuation">,</span> <span class="token string">'B'</span><span class="token punctuation">,</span> <span class="token string">'C'</span><span class="token punctuation">,</span> <span class="token string">'D'</span><span class="token punctuation">,</span> <span class="token string">'E'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">22</span><span class="token punctuation">,</span> <span class="token number">28</span><span class="token punctuation">,</span> <span class="token number">23</span><span class="token punctuation">,</span> <span class="token number">19</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">lineStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">normal</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+          <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'green'</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">width</span><span class="token operator">:</span> <span class="token number">4</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'dashed'</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>这里设置折线宽度时,数据点描边的宽度是不会跟着改变的,而应该在数据点的配置项中另外设置。</p> <h3 id="%E6%95%B0%E6%8D%AE%E7%82%B9%E7%9A%84%E6%A0%B7%E5%BC%8F" tabindex="-1">数据点的样式</h3> <p>数据点的样式可以通过 <a href="https://echarts.apache.org/option.html#series-line.itemStyle"><code>series.itemStyle</code></a> 指定填充颜色(color)、描边颜色(borderColor)、描边宽度(borderWidth)、描边类型(borderType)、阴影(shadowColor)、不透明度(opacity)等。与折线样式的设置十分相似,这里不再展开说明。</p> <h2 id="%E5%9C%A8%E6%95%B0%E6%8D%AE%E7%82%B9%E5%A4%84%E6%98%BE%E7%A4%BA%E6%95%B0%E5%80%BC" tabindex="-1">在数据点处显示数值</h2> <p>在系列中,这数据点的标签通过 <a href="https://echarts.apache.org/option.html#series-line.label"><code>series.label</code></a> 属性指定。如果将 <code>label</code> 下的 <code>show</code> 指定为<code>true</code>,则表示该数值默认时就显示;如果为 <code>false</code>,而 <a href="https://echarts.apache.org/option.html#series-line.emphasis.label.show"><code>series.emphasis.label.show</code></a> 为 <code>true</code>,则表示只有在鼠标移动到该数据时,才显示数值。</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    data: ['A', 'B', 'C', 'D', 'E']
+  },
+  yAxis: {},
+  series: [
+    {
+      data: [10, 22, 28, 23, 19],
+      type: 'line',
+      label: {
+        show: true,
+        position: 'bottom',
+        textStyle: {
+          fontSize: 20
+        }
+      }
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'A'</span><span class="token punctuation">,</span> <span class="token string">'B'</span><span class="token punctuation">,</span> <span class="token string">'C'</span><span class="token punctuation">,</span> <span class="token string">'D'</span><span class="token punctuation">,</span> <span class="token string">'E'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">22</span><span class="token punctuation">,</span> <span class="token number">28</span><span class="token punctuation">,</span> <span class="token number">23</span><span class="token punctuation">,</span> <span class="token number">19</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">position</span><span class="token operator">:</span> <span class="token string">'bottom'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">textStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+          <span class="token literal-property property">fontSize</span><span class="token operator">:</span> <span class="token number">20</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <h2 id="%E7%A9%BA%E6%95%B0%E6%8D%AE" tabindex="-1">空数据</h2> <p>在一个系列中,可能一个横坐标对应的取值是“空”的,将其设为 0 有时并不能满足我们的期望--空数据不应被其左右的数据连接。</p> <p>在 ECharts 中,我们使用字符串 <code>'-'</code> 表示空数据,这对其他系列的数据也是适用的。</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    data: ['A', 'B', 'C', 'D', 'E']
+  },
+  yAxis: {},
+  series: [
+    {
+      data: [0, 22, '-', 23, 19],
+      type: 'line'
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'A'</span><span class="token punctuation">,</span> <span class="token string">'B'</span><span class="token punctuation">,</span> <span class="token string">'C'</span><span class="token punctuation">,</span> <span class="token string">'D'</span><span class="token punctuation">,</span> <span class="token string">'E'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">22</span><span class="token punctuation">,</span> <span class="token string">'-'</span><span class="token punctuation">,</span> <span class="token number">23</span><span class="token punctuation">,</span> <span class="token number">19</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <blockquote><p>注意区别这个例子中,“空”数据与取值为 0 的数据。</p></blockquote></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">本文贡献者</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/zh/how-to/chart-types/line/basic-line.md" title="编辑本文" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">在 GitHub 上编辑本页</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(i,t,e,d,r,l,a,o,n,c,s,g,h,C,A,I,p,B,E,b,w,m,f,u,y,v,S,G,x,D,M,L,R,O,z,F,V,k,H,W,J,T,P,Q,X,K,Z,j,U,Y,N,_,q,$,ii,ti,ei,di,ri,li,ai,oi,ni){return{layout:"default",data:[{html:'<h1 id="%E5%9F%BA%E7%A1%80%E6%8A%98%E7%BA%BF%E5%9B%BE" tabindex="-1">基础折线图</h1>\n<p>折线图主要用来展示数据项随着时间推移的趋势或变化。</p>\n<h2 id="%E6%9C%80%E7%AE%80%E5%8D%95%E7%9A%84%E6%8A%98%E7%BA%BF%E5%9B%BE" tabindex="-1">最简单的折线图</h2>\n<p>如果我们想建立一个横坐标是类目型(category)、纵坐标是数值型(value)的折线图,我们可以使用这样的方式:</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICB0eXBlOiAnY2F0ZWdvcnknLAogICAgZGF0YTogWydBJywgJ0InLCAnQyddCiAgfSwKICB5QXhpczogewogICAgdHlwZTogJ3ZhbHVlJwogIH0sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIGRhdGE6IFsxMjAsIDIwMCwgMTUwXSwKICAgICAgdHlwZTogJ2xpbmUnCiAgICB9CiAgXQp9Ow\'" v-bind="{}" />\n<p>在这个例子中,我们通过 <code>xAxis</code> 将横坐标设为类目型,并指定了对应的值;通过 <code>type</code> 将 <code>yAxis</code> 的类型设定为数值型。在 <code>series</code> 中,我们将系列类型设为 <code>line</code>,并且通过 <code>data</code> 指定了折线图三个点的取值。这样,就能得到一个最简单的折线图了。</p>\n<blockquote>\n<p>这里 <code>xAxis</code> 和 <code>yAxis</code> 的 <code>type</code> 属性都可以隐去不写。因为坐标轴的默认类型是数值型,而 <code>xAxis</code> 指定了类目型的 <code>data</code>,所以 <code>ECharts</code> 也能识别出这是类目型的坐标轴。为了让大家更容易理解,我们特意写了 <code>type</code>。在实际的应用中,如果是 <code>\'value\'</code> 类型,也可以省略不写。</p>\n</blockquote>\n<h2 id="%E7%AC%9B%E5%8D%A1%E5%B0%94%E5%9D%90%E6%A0%87%E7%B3%BB%E4%B8%AD%E7%9A%84%E6%8A%98%E7%BA%BF%E5%9B%BE" tabindex="-1">笛卡尔坐标系中的折线图</h2>\n<p>如果我们希望折线图在横坐标和纵坐标上都是连续的,即在笛卡尔坐标系中,应该如何实现呢?答案也很简单,只要把 <code>series</code> 的 <code>data</code> 每个数据用一个包含两个元素的数组表示就行了。</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7fSwKICB5QXhpczoge30sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIGRhdGE6IFsKICAgICAgICBbMjAsIDEyMF0sCiAgICAgICAgWzUwLCAyMDBdLAogICAgICAgIFs0MCwgNTBdCiAgICAgIF0sCiAgICAgIHR5cGU6ICdsaW5lJwogICAgfQogIF0KfTs\'" v-bind="{}" />\n<h2 id="%E6%8A%98%E7%BA%BF%E5%9B%BE%E6%A0%B7%E5%BC%8F%E8%AE%BE%E7%BD%AE" tabindex="-1">折线图样式设置</h2>\n<h3 id="%E6%8A%98%E7%BA%BF%E7%9A%84%E6%A0%B7%E5%BC%8F" tabindex="-1">折线的样式</h3>\n<p>折线图中折线的样式可以通过 <code>lineStyle</code> 设置。可以为其指定颜色、线宽、折线类型、阴影、不透明度等等,具体的可以参考配置项手册 <a href="https://echarts.apache.org/option.html#series-line.lineStyle"><code>series.lineStyle</code></a> 了解。这里,我们以设置颜色(color)、线宽(width)和折线类型(type)为例说明。</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBkYXRhOiBbJ0EnLCAnQicsICdDJywgJ0QnLCAnRSddCiAgfSwKICB5QXhpczoge30sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIGRhdGE6IFsxMCwgMjIsIDI4LCAyMywgMTldLAogICAgICB0eXBlOiAnbGluZScsCiAgICAgIGxpbmVTdHlsZTogewogICAgICAgIG5vcm1hbDogewogICAgICAgICAgY29sb3I6ICdncmVlbicsCiAgICAgICAgICB3aWR0aDogNCwKICAgICAgICAgIHR5cGU6ICdkYXNoZWQnCiAgICAgICAgfQogICAgICB9CiAgICB9CiAgXQp9Ow\'" v-bind="{}" />\n<p>这里设置折线宽度时,数据点描边的宽度是不会跟着改变的,而应该在数据点的配置项中另外设置。</p>\n<h3 id="%E6%95%B0%E6%8D%AE%E7%82%B9%E7%9A%84%E6%A0%B7%E5%BC%8F" tabindex="-1">数据点的样式</h3>\n<p>数据点的样式可以通过 <a href="https://echarts.apache.org/option.html#series-line.itemStyle"><code>series.itemStyle</code></a> 指定填充颜色(color)、描边颜色(borderColor)、描边宽度(borderWidth)、描边类型(borderType)、阴影(shadowColor)、不透明度(opacity)等。与折线样式的设置十分相似,这里不再展开说明。</p>\n<h2 id="%E5%9C%A8%E6%95%B0%E6%8D%AE%E7%82%B9%E5%A4%84%E6%98%BE%E7%A4%BA%E6%95%B0%E5%80%BC" tabindex="-1">在数据点处显示数值</h2>\n<p>在系列中,这数据点的标签通过 <a href="https://echarts.apache.org/option.html#series-line.label"><code>series.label</code></a> 属性指定。如果将 <code>label</code> 下的 <code>show</code> 指定为<code>true</code>,则表示该数值默认时就显示;如果为 <code>false</code>,而 <a href="https://echarts.apache.org/option.html#series-line.emphasis.label.show"><code>series.emphasis.label.show</code></a> 为 <code>true</code>,则表示只有在鼠标移动到该数据时,才显示数值。</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBkYXRhOiBbJ0EnLCAnQicsICdDJywgJ0QnLCAnRSddCiAgfSwKICB5QXhpczoge30sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIGRhdGE6IFsxMCwgMjIsIDI4LCAyMywgMTldLAogICAgICB0eXBlOiAnbGluZScsCiAgICAgIGxhYmVsOiB7CiAgICAgICAgc2hvdzogdHJ1ZSwKICAgICAgICBwb3NpdGlvbjogJ2JvdHRvbScsCiAgICAgICAgdGV4dFN0eWxlOiB7CiAgICAgICAgICBmb250U2l6ZTogMjAKICAgICAgICB9CiAgICAgIH0KICAgIH0KICBdCn07\'" v-bind="{}" />\n<h2 id="%E7%A9%BA%E6%95%B0%E6%8D%AE" tabindex="-1">空数据</h2>\n<p>在一个系列中,可能一个横坐标对应的取值是“空”的,将其设为 0 有时并不能满足我们的期望--空数据不应被其左右的数据连接。</p>\n<p>在 ECharts 中,我们使用字符串 <code>\'-\'</code> 表示空数据,这对其他系列的数据也是适用的。</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBkYXRhOiBbJ0EnLCAnQicsICdDJywgJ0QnLCAnRSddCiAgfSwKICB5QXhpczoge30sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIGRhdGE6IFswLCAyMiwgJy0nLCAyMywgMTldLAogICAgICB0eXBlOiAnbGluZScKICAgIH0KICBdCn07\'" v-bind="{}" />\n<blockquote>\n<p>注意区别这个例子中,“空”数据与取值为 0 的数据。</p>\n</blockquote>\n',postPath:"zh/how-to/chart-types/line/basic-line",title:"基础折线图 - 折线图 - 常用图表类型 - 应用篇"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:d},{title:"入门篇",dir:r,children:[{title:"获取 ECharts",dir:l},{title:"在项目中引入 ECharts",dir:a},{title:"资源列表",dir:o,draft:i},{title:"寻求帮助",dir:n},{title:"版本特性",dir:c,children:[{title:"ECharts 6 特性介绍",dir:s},{title:"v5 升级 v6 指南",dir:g},{title:"5.0",dir:h},{title:"v4 升级 v5 指南",dir:C},{title:5.2,dir:A},{title:5.3,dir:I},{title:5.4,dir:p},{title:5.5,dir:B},{title:5.6,dir:E}]}]},{title:"概念篇",dir:b,children:[{title:"图表容器及大小",dir:w},{title:"配置项",dir:m,draft:i},{title:"系列",dir:f,draft:i},{title:"样式",dir:u},{title:"数据集",dir:y},{title:"数据转换",dir:v},{title:"坐标系",dir:S,draft:i},{title:"坐标轴",dir:G},{title:"视觉映射",dir:e},{title:"图例",dir:x},{title:"事件与行为",dir:D}]},{title:"应用篇",dir:M,children:[{title:"常用图表类型",dir:L,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:R},{title:"堆叠柱状图",dir:O},{title:"动态排序柱状图",dir:z},{title:"极坐标系柱状图",dir:F,draft:i},{title:"阶梯瀑布图",dir:V},{title:"视觉映射的柱状图",dir:e,draft:i}]},{title:"折线图",dir:k,children:[{title:"基础折线图",dir:H},{title:"堆叠折线图",dir:W},{title:"区域面积图",dir:J},{title:"平滑曲线图",dir:T},{title:"阶梯线图",dir:P}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:Q},{title:"圆环图",dir:X},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:K,children:[{title:"基础散点图",dir:Z}]}]},{title:"常用组件",dir:j,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:U}]}]},{title:"移动端优化",dir:t,draft:i},{title:"跨平台方案",dir:Y,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:N},{title:"数据下钻",dir:_,draft:i}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:q}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:ii}]},{title:"交互",dir:ti,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:ei,draft:i},{title:"智能指针吸附",dir:di}]}]},{title:"最佳实践",dir:ri,children:[{title:"移动端优化",dir:t,draft:i},{title:li,dir:ai},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:oi}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:ni}]}],en:[{title:"Get Started",dir:d},{title:"Basics",dir:r,children:[{title:"Download ECharts",dir:l},{title:"Import ECharts",dir:a},{title:"Resources",dir:o,draft:i},{title:"Get Help",dir:n},{title:"What's New",dir:c,children:[{title:"ECharts 6 Features",dir:s},{title:"Migration from v5 to v6",dir:g},{title:"5.0",dir:h},{title:"Migration from v4 to v5",dir:C},{title:5.2,dir:A},{title:5.3,dir:I},{title:5.4,dir:p},{title:5.5,dir:B},{title:5.6,dir:E}]}]},{title:"Concepts",dir:b,children:[{title:"Chart Container",dir:w},{title:"Chart Option",dir:m,draft:i},{title:"Series",dir:f,draft:i},{title:"Style",dir:u},{title:"Dataset",dir:y},{title:"Data Transform",dir:v},{title:"Coordinate",dir:S,draft:i},{title:"Axis",dir:G},{title:"Visual Mapping",dir:e},{title:"Legend",dir:x},{title:"Event and Action",dir:D}]},{title:"How To Guides",dir:M,children:[{title:"Common Charts",dir:L,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:R},{title:"Stacked Bar",dir:O},{title:"Bar Racing",dir:z},{title:"Bar Polar",dir:F,draft:i},{title:"Waterfall",dir:V}]},{title:"Line",dir:k,children:[{title:"Basic Line",dir:H},{title:"Stacked Line",dir:W},{title:"Area Chart",dir:J},{title:"Smoothed Line",dir:T},{title:"Step Line",dir:P}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:Q},{title:"Ring Style",dir:X},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:K,children:[{title:"Basic Scatter",dir:Z}]}]},{title:"Common Components",dir:j,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:U}]}]},{title:"Mobile",dir:t,draft:i},{title:"Cross Platform",dir:Y,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:N},{title:"Drilldown",dir:_,draft:i}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:q}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:ii}]},{title:"Interaction",dir:ti,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:ei,draft:i},{title:"Intelligent Pointer Snapping",dir:di}]}]},{title:"Best Practices",dir:ri,children:[{title:"Mobile Optimization",dir:t,draft:i},{title:li,dir:ai},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:oi}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:ni}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:i,routePath:"/zh/how-to/chart-types/line/basic-line",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/zh/how-to/chart-types/line/smooth-line/index.html b/docs/zh/how-to/chart-types/line/smooth-line/index.html
new file mode 100644
index 0000000..472027a
--- /dev/null
+++ b/docs/zh/how-to/chart-types/line/smooth-line/index.html
@@ -0,0 +1,37 @@
+<!doctype html>
+<html data-n-head-ssr lang="zh-CN" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh-CN%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>平滑曲线图 - 折线图 - 常用图表类型 - 应用篇 - 使用手册 - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="zh"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/zh/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/zh/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/zh/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/zh/index.html" class="navbar-brand"><img src="https://echarts.apache.org/zh/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/zh/index.html">首页</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">文档<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/feature.html">特性</a></li><li><a href="https://echarts.apache.org/handbook/zh/get-started/">使用手册</a></li><li><a href="https://echarts.apache.org/zh/api.html">API</a></li><li><a href="https://echarts.apache.org/zh/option.html">配置项手册</a></li><li><a href="https://echarts.apache.org/zh/changelog.html">版本记录</a></li><li><a href="https://echarts.apache.org/zh/faq.html">常见问题</a></li><li><a href="https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide">v6 升级指南</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">下载<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/download.html">下载</a></li><li><a href="https://echarts.apache.org/zh/download-theme.html">主题下载</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">自定义系列下载<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/download-extension.html">扩展下载</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/zh/index.html">示例</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">资源<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/spreadsheet.html">表格工具</a></li><li><a href="https://echarts.apache.org/zh/theme-builder.html">主题构建工具</a></li><li><a href="https://echarts.apache.org/zh/cheat-sheet.html">术语速查手册</a></li><li><a href="https://echarts.apache.org/zh/resources.html">更多资源</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">社区<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/events.html">活动</a></li><li><a href="https://echarts.apache.org/zh/committers.html">贡献者列表</a></li><li><a href="https://echarts.apache.org/zh/maillist.html">邮件列表</a></li><li><a href="https://echarts.apache.org/zh/contributing.html">如何贡献</a></li><li><a href="https://echarts.apache.org/zh/dependencies.html">依赖项</a></li><li><a href="https://echarts.apache.org/zh/coding-standard.html">代码规范</a></li><li><a href="https://github.com/apache/echarts" target="_blank">源码(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/security.html">安全</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">版权<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">活动<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">捐赠<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">鸣谢<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("en")'>EN</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/zh/get-started" class="nav-link"><span class="title">快速上手</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">入门篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/basics/download" class="nav-link"><span class="title">获取 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/import" class="nav-link"><span class="title">在项目中引入 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/basics/help" class="nav-link"><span class="title">寻求帮助</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">版本特性</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 特性介绍</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">v5 升级 v6 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">v4 升级 v5 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">概念篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/concepts/chart-size" class="nav-link"><span class="title">图表容器及大小</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/style" class="nav-link"><span class="title">样式</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/dataset" class="nav-link"><span class="title">数据集</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/data-transform" class="nav-link"><span class="title">数据转换</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/axis" class="nav-link"><span class="title">坐标轴</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/visual-map" class="nav-link"><span class="title">视觉映射</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/legend" class="nav-link"><span class="title">图例</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/event" class="nav-link"><span class="title">事件与行为</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">应用篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">常用图表类型</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a class="nav-link"><span class="title">柱状图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">基础柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">堆叠柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">动态排序柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">阶梯瀑布图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">折线图</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level3"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">基础折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">堆叠折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/area-line" class="nav-link"><span class="title">区域面积图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/smooth-line" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">平滑曲线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/step-line" class="nav-link"><span class="title">阶梯线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">饼图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">基础饼图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">圆环图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/rose" class="nav-link"><span class="title">南丁格尔图(玫瑰图)</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">散点图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">基础散点图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">常用组件</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">地理坐标系(Geo)</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG 底图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">跨平台方案</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/server" class="nav-link"><span class="title">服务端渲染</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/wechat-app" class="nav-link"><span class="title">微信小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/baidu-app" class="nav-link"><span class="title">百度智能小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">数据处理</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/data/dynamic-data" class="nav-link"><span class="title">动态的异步数据</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">标签</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/label/rich-text" class="nav-link"><span class="title">富文本标签</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">动画</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/animation/transition" class="nav-link"><span class="title">数据过渡动画</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">交互</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/drag" class="nav-link"><span class="title">拖拽的实现</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">智能指针吸附</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">最佳实践</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/aria" class="nav-link"><span class="title">无障碍访问</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/security" class="nav-link"><span class="title">安全指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">编辑本文档</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/meta/edit-guide" class="nav-link"><span class="title">文档编辑指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="%E5%B9%B3%E6%BB%91%E6%9B%B2%E7%BA%BF%E5%9B%BE" tabindex="-1">平滑曲线图</h1> <p>平滑曲线图也是折线图的一种变形,这种更柔和的样式也是一种不错的视觉选择。使用时,只需要将折线图系列的 <code>smooth</code> 属性设置为 <code>true</code> 即可。</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    data: ['A', 'B', 'C', 'D', 'E']
+  },
+  yAxis: {},
+  series: [
+    {
+      data: [10, 22, 28, 23, 19],
+      type: 'line',
+      smooth: true
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'A'</span><span class="token punctuation">,</span> <span class="token string">'B'</span><span class="token punctuation">,</span> <span class="token string">'C'</span><span class="token punctuation">,</span> <span class="token string">'D'</span><span class="token punctuation">,</span> <span class="token string">'E'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">22</span><span class="token punctuation">,</span> <span class="token number">28</span><span class="token punctuation">,</span> <span class="token number">23</span><span class="token punctuation">,</span> <span class="token number">19</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">smooth</span><span class="token operator">:</span> <span class="token boolean">true</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">本文贡献者</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/zh/how-to/chart-types/line/smooth-line.md" title="编辑本文" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">在 GitHub 上编辑本页</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,i,e,r,d,l,a,n,o,c,s,h,p,g,m,f,C,b,u,B,v,A,S,I,w,E,y,P,G,D,k,x,L,R,M,V,z,T,H,O,_,Q,F,J,W,X,N,j,K,U,Z,$,Y,q,tt,it,et,rt,dt,lt,at,nt,ot){return{layout:"default",data:[{html:'<h1 id="%E5%B9%B3%E6%BB%91%E6%9B%B2%E7%BA%BF%E5%9B%BE" tabindex="-1">平滑曲线图</h1>\n<p>平滑曲线图也是折线图的一种变形,这种更柔和的样式也是一种不错的视觉选择。使用时,只需要将折线图系列的 <code>smooth</code> 属性设置为 <code>true</code> 即可。</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBkYXRhOiBbJ0EnLCAnQicsICdDJywgJ0QnLCAnRSddCiAgfSwKICB5QXhpczoge30sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIGRhdGE6IFsxMCwgMjIsIDI4LCAyMywgMTldLAogICAgICB0eXBlOiAnbGluZScsCiAgICAgIHNtb290aDogdHJ1ZQogICAgfQogIF0KfTs\'" v-bind="{}" />\n',postPath:"zh/how-to/chart-types/line/smooth-line",title:"平滑曲线图 - 折线图 - 常用图表类型 - 应用篇"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:r},{title:"入门篇",dir:d,children:[{title:"获取 ECharts",dir:l},{title:"在项目中引入 ECharts",dir:a},{title:"资源列表",dir:n,draft:t},{title:"寻求帮助",dir:o},{title:"版本特性",dir:c,children:[{title:"ECharts 6 特性介绍",dir:s},{title:"v5 升级 v6 指南",dir:h},{title:"5.0",dir:p},{title:"v4 升级 v5 指南",dir:g},{title:5.2,dir:m},{title:5.3,dir:f},{title:5.4,dir:C},{title:5.5,dir:b},{title:5.6,dir:u}]}]},{title:"概念篇",dir:B,children:[{title:"图表容器及大小",dir:v},{title:"配置项",dir:A,draft:t},{title:"系列",dir:S,draft:t},{title:"样式",dir:I},{title:"数据集",dir:w},{title:"数据转换",dir:E},{title:"坐标系",dir:y,draft:t},{title:"坐标轴",dir:P},{title:"视觉映射",dir:e},{title:"图例",dir:G},{title:"事件与行为",dir:D}]},{title:"应用篇",dir:k,children:[{title:"常用图表类型",dir:x,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:L},{title:"堆叠柱状图",dir:R},{title:"动态排序柱状图",dir:M},{title:"极坐标系柱状图",dir:V,draft:t},{title:"阶梯瀑布图",dir:z},{title:"视觉映射的柱状图",dir:e,draft:t}]},{title:"折线图",dir:T,children:[{title:"基础折线图",dir:H},{title:"堆叠折线图",dir:O},{title:"区域面积图",dir:_},{title:"平滑曲线图",dir:Q},{title:"阶梯线图",dir:F}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:J},{title:"圆环图",dir:W},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:X,children:[{title:"基础散点图",dir:N}]}]},{title:"常用组件",dir:j,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:K}]}]},{title:"移动端优化",dir:i,draft:t},{title:"跨平台方案",dir:U,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:Z},{title:"数据下钻",dir:$,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:Y}]},{title:"动画",dir:q,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:it,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:et,draft:t},{title:"智能指针吸附",dir:rt}]}]},{title:"最佳实践",dir:dt,children:[{title:"移动端优化",dir:i,draft:t},{title:lt,dir:at},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:nt}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:ot}]}],en:[{title:"Get Started",dir:r},{title:"Basics",dir:d,children:[{title:"Download ECharts",dir:l},{title:"Import ECharts",dir:a},{title:"Resources",dir:n,draft:t},{title:"Get Help",dir:o},{title:"What's New",dir:c,children:[{title:"ECharts 6 Features",dir:s},{title:"Migration from v5 to v6",dir:h},{title:"5.0",dir:p},{title:"Migration from v4 to v5",dir:g},{title:5.2,dir:m},{title:5.3,dir:f},{title:5.4,dir:C},{title:5.5,dir:b},{title:5.6,dir:u}]}]},{title:"Concepts",dir:B,children:[{title:"Chart Container",dir:v},{title:"Chart Option",dir:A,draft:t},{title:"Series",dir:S,draft:t},{title:"Style",dir:I},{title:"Dataset",dir:w},{title:"Data Transform",dir:E},{title:"Coordinate",dir:y,draft:t},{title:"Axis",dir:P},{title:"Visual Mapping",dir:e},{title:"Legend",dir:G},{title:"Event and Action",dir:D}]},{title:"How To Guides",dir:k,children:[{title:"Common Charts",dir:x,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:L},{title:"Stacked Bar",dir:R},{title:"Bar Racing",dir:M},{title:"Bar Polar",dir:V,draft:t},{title:"Waterfall",dir:z}]},{title:"Line",dir:T,children:[{title:"Basic Line",dir:H},{title:"Stacked Line",dir:O},{title:"Area Chart",dir:_},{title:"Smoothed Line",dir:Q},{title:"Step Line",dir:F}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:J},{title:"Ring Style",dir:W},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:X,children:[{title:"Basic Scatter",dir:N}]}]},{title:"Common Components",dir:j,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:K}]}]},{title:"Mobile",dir:i,draft:t},{title:"Cross Platform",dir:U,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:Z},{title:"Drilldown",dir:$,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:Y}]},{title:"Animation",dir:q,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:it,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:et,draft:t},{title:"Intelligent Pointer Snapping",dir:rt}]}]},{title:"Best Practices",dir:dt,children:[{title:"Mobile Optimization",dir:i,draft:t},{title:lt,dir:at},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:nt}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:ot}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/zh/how-to/chart-types/line/smooth-line",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/zh/how-to/chart-types/line/stacked-line/index.html b/docs/zh/how-to/chart-types/line/stacked-line/index.html
new file mode 100644
index 0000000..e9b699c
--- /dev/null
+++ b/docs/zh/how-to/chart-types/line/stacked-line/index.html
@@ -0,0 +1,85 @@
+<!doctype html>
+<html data-n-head-ssr lang="zh-CN" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh-CN%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>堆叠折线图 - 折线图 - 常用图表类型 - 应用篇 - 使用手册 - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="zh"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/zh/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/zh/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/zh/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/zh/index.html" class="navbar-brand"><img src="https://echarts.apache.org/zh/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/zh/index.html">首页</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">文档<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/feature.html">特性</a></li><li><a href="https://echarts.apache.org/handbook/zh/get-started/">使用手册</a></li><li><a href="https://echarts.apache.org/zh/api.html">API</a></li><li><a href="https://echarts.apache.org/zh/option.html">配置项手册</a></li><li><a href="https://echarts.apache.org/zh/changelog.html">版本记录</a></li><li><a href="https://echarts.apache.org/zh/faq.html">常见问题</a></li><li><a href="https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide">v6 升级指南</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">下载<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/download.html">下载</a></li><li><a href="https://echarts.apache.org/zh/download-theme.html">主题下载</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">自定义系列下载<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/download-extension.html">扩展下载</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/zh/index.html">示例</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">资源<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/spreadsheet.html">表格工具</a></li><li><a href="https://echarts.apache.org/zh/theme-builder.html">主题构建工具</a></li><li><a href="https://echarts.apache.org/zh/cheat-sheet.html">术语速查手册</a></li><li><a href="https://echarts.apache.org/zh/resources.html">更多资源</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">社区<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/events.html">活动</a></li><li><a href="https://echarts.apache.org/zh/committers.html">贡献者列表</a></li><li><a href="https://echarts.apache.org/zh/maillist.html">邮件列表</a></li><li><a href="https://echarts.apache.org/zh/contributing.html">如何贡献</a></li><li><a href="https://echarts.apache.org/zh/dependencies.html">依赖项</a></li><li><a href="https://echarts.apache.org/zh/coding-standard.html">代码规范</a></li><li><a href="https://github.com/apache/echarts" target="_blank">源码(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/security.html">安全</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">版权<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">活动<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">捐赠<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">鸣谢<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("en")'>EN</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/zh/get-started" class="nav-link"><span class="title">快速上手</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">入门篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/basics/download" class="nav-link"><span class="title">获取 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/import" class="nav-link"><span class="title">在项目中引入 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/basics/help" class="nav-link"><span class="title">寻求帮助</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">版本特性</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 特性介绍</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">v5 升级 v6 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">v4 升级 v5 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">概念篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/concepts/chart-size" class="nav-link"><span class="title">图表容器及大小</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/style" class="nav-link"><span class="title">样式</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/dataset" class="nav-link"><span class="title">数据集</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/data-transform" class="nav-link"><span class="title">数据转换</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/axis" class="nav-link"><span class="title">坐标轴</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/visual-map" class="nav-link"><span class="title">视觉映射</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/legend" class="nav-link"><span class="title">图例</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/event" class="nav-link"><span class="title">事件与行为</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">应用篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">常用图表类型</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a class="nav-link"><span class="title">柱状图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">基础柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">堆叠柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">动态排序柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">阶梯瀑布图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">折线图</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level3"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">基础折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/stacked-line" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">堆叠折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/area-line" class="nav-link"><span class="title">区域面积图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">平滑曲线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/step-line" class="nav-link"><span class="title">阶梯线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">饼图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">基础饼图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">圆环图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/rose" class="nav-link"><span class="title">南丁格尔图(玫瑰图)</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">散点图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">基础散点图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">常用组件</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">地理坐标系(Geo)</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG 底图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">跨平台方案</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/server" class="nav-link"><span class="title">服务端渲染</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/wechat-app" class="nav-link"><span class="title">微信小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/baidu-app" class="nav-link"><span class="title">百度智能小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">数据处理</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/data/dynamic-data" class="nav-link"><span class="title">动态的异步数据</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">标签</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/label/rich-text" class="nav-link"><span class="title">富文本标签</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">动画</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/animation/transition" class="nav-link"><span class="title">数据过渡动画</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">交互</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/drag" class="nav-link"><span class="title">拖拽的实现</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">智能指针吸附</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">最佳实践</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/aria" class="nav-link"><span class="title">无障碍访问</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/security" class="nav-link"><span class="title">安全指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">编辑本文档</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/meta/edit-guide" class="nav-link"><span class="title">文档编辑指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="%E5%A0%86%E5%8F%A0%E6%8A%98%E7%BA%BF%E5%9B%BE" tabindex="-1">堆叠折线图</h1> <p>与<a href="./zh/how-to/chart-types/bar/stacked-bar">堆叠柱状图</a>类似,堆叠折线图也是用系列的 <code>stack</code> 设置哪些系列堆叠在一起。</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    data: ['A', 'B', 'C', 'D', 'E']
+  },
+  yAxis: {},
+  series: [
+    {
+      data: [10, 22, 28, 43, 49],
+      type: 'line',
+      stack: 'x'
+    },
+    {
+      data: [5, 4, 3, 5, 10],
+      type: 'line',
+      stack: 'x'
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'A'</span><span class="token punctuation">,</span> <span class="token string">'B'</span><span class="token punctuation">,</span> <span class="token string">'C'</span><span class="token punctuation">,</span> <span class="token string">'D'</span><span class="token punctuation">,</span> <span class="token string">'E'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">22</span><span class="token punctuation">,</span> <span class="token number">28</span><span class="token punctuation">,</span> <span class="token number">43</span><span class="token punctuation">,</span> <span class="token number">49</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">stack</span><span class="token operator">:</span> <span class="token string">'x'</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">stack</span><span class="token operator">:</span> <span class="token string">'x'</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>但是不同的是,如果不加说明的话,我们很难判断出这是一个堆叠折线图,还是一个普通的折线图。所以,对于堆叠折线图而言,一般建议使用区域填充色以表明堆叠的情况。</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    data: ['A', 'B', 'C', 'D', 'E']
+  },
+  yAxis: {},
+  series: [
+    {
+      data: [10, 22, 28, 43, 49],
+      type: 'line',
+      stack: 'x',
+      areaStyle: {}
+    },
+    {
+      data: [5, 4, 3, 5, 10],
+      type: 'line',
+      stack: 'x',
+      areaStyle: {}
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'A'</span><span class="token punctuation">,</span> <span class="token string">'B'</span><span class="token punctuation">,</span> <span class="token string">'C'</span><span class="token punctuation">,</span> <span class="token string">'D'</span><span class="token punctuation">,</span> <span class="token string">'E'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">22</span><span class="token punctuation">,</span> <span class="token number">28</span><span class="token punctuation">,</span> <span class="token number">43</span><span class="token punctuation">,</span> <span class="token number">49</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">stack</span><span class="token operator">:</span> <span class="token string">'x'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">areaStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">stack</span><span class="token operator">:</span> <span class="token string">'x'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">areaStyle</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">本文贡献者</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/zh/how-to/chart-types/line/stacked-line.md" title="编辑本文" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">在 GitHub 上编辑本页</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/vincentbernat" target="_blank" class="post-contributor"><!----> <span>vincentbernat</span></a><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,i,e,r,d,l,a,n,s,o,c,h,g,C,p,A,I,f,b,B,m,u,v,w,G,S,y,L,E,R,k,D,P,x,M,z,F,O,H,V,W,J,K,N,Q,T,X,Y,_,j,U,Z,$,q,tt,it,et,rt,dt,lt,at,nt,st){return{layout:"default",data:[{html:'<h1 id="%E5%A0%86%E5%8F%A0%E6%8A%98%E7%BA%BF%E5%9B%BE" tabindex="-1">堆叠折线图</h1>\n<p>与<a href="./zh/how-to/chart-types/bar/stacked-bar">堆叠柱状图</a>类似,堆叠折线图也是用系列的 <code>stack</code> 设置哪些系列堆叠在一起。</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBkYXRhOiBbJ0EnLCAnQicsICdDJywgJ0QnLCAnRSddCiAgfSwKICB5QXhpczoge30sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIGRhdGE6IFsxMCwgMjIsIDI4LCA0MywgNDldLAogICAgICB0eXBlOiAnbGluZScsCiAgICAgIHN0YWNrOiAneCcKICAgIH0sCiAgICB7CiAgICAgIGRhdGE6IFs1LCA0LCAzLCA1LCAxMF0sCiAgICAgIHR5cGU6ICdsaW5lJywKICAgICAgc3RhY2s6ICd4JwogICAgfQogIF0KfTs\'" v-bind="{}" />\n<p>但是不同的是,如果不加说明的话,我们很难判断出这是一个堆叠折线图,还是一个普通的折线图。所以,对于堆叠折线图而言,一般建议使用区域填充色以表明堆叠的情况。</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBkYXRhOiBbJ0EnLCAnQicsICdDJywgJ0QnLCAnRSddCiAgfSwKICB5QXhpczoge30sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIGRhdGE6IFsxMCwgMjIsIDI4LCA0MywgNDldLAogICAgICB0eXBlOiAnbGluZScsCiAgICAgIHN0YWNrOiAneCcsCiAgICAgIGFyZWFTdHlsZToge30KICAgIH0sCiAgICB7CiAgICAgIGRhdGE6IFs1LCA0LCAzLCA1LCAxMF0sCiAgICAgIHR5cGU6ICdsaW5lJywKICAgICAgc3RhY2s6ICd4JywKICAgICAgYXJlYVN0eWxlOiB7fQogICAgfQogIF0KfTs\'" v-bind="{}" />\n',postPath:"zh/how-to/chart-types/line/stacked-line",title:"堆叠折线图 - 折线图 - 常用图表类型 - 应用篇"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:r},{title:"入门篇",dir:d,children:[{title:"获取 ECharts",dir:l},{title:"在项目中引入 ECharts",dir:a},{title:"资源列表",dir:n,draft:t},{title:"寻求帮助",dir:s},{title:"版本特性",dir:o,children:[{title:"ECharts 6 特性介绍",dir:c},{title:"v5 升级 v6 指南",dir:h},{title:"5.0",dir:g},{title:"v4 升级 v5 指南",dir:C},{title:5.2,dir:p},{title:5.3,dir:A},{title:5.4,dir:I},{title:5.5,dir:f},{title:5.6,dir:b}]}]},{title:"概念篇",dir:B,children:[{title:"图表容器及大小",dir:m},{title:"配置项",dir:u,draft:t},{title:"系列",dir:v,draft:t},{title:"样式",dir:w},{title:"数据集",dir:G},{title:"数据转换",dir:S},{title:"坐标系",dir:y,draft:t},{title:"坐标轴",dir:L},{title:"视觉映射",dir:e},{title:"图例",dir:E},{title:"事件与行为",dir:R}]},{title:"应用篇",dir:k,children:[{title:"常用图表类型",dir:D,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:P},{title:"堆叠柱状图",dir:x},{title:"动态排序柱状图",dir:M},{title:"极坐标系柱状图",dir:z,draft:t},{title:"阶梯瀑布图",dir:F},{title:"视觉映射的柱状图",dir:e,draft:t}]},{title:"折线图",dir:O,children:[{title:"基础折线图",dir:H},{title:"堆叠折线图",dir:V},{title:"区域面积图",dir:W},{title:"平滑曲线图",dir:J},{title:"阶梯线图",dir:K}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:N},{title:"圆环图",dir:Q},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:T,children:[{title:"基础散点图",dir:X}]}]},{title:"常用组件",dir:Y,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:_}]}]},{title:"移动端优化",dir:i,draft:t},{title:"跨平台方案",dir:j,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:U},{title:"数据下钻",dir:Z,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:$}]},{title:"动画",dir:q,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:it,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:et,draft:t},{title:"智能指针吸附",dir:rt}]}]},{title:"最佳实践",dir:dt,children:[{title:"移动端优化",dir:i,draft:t},{title:lt,dir:at},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:nt}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:st}]}],en:[{title:"Get Started",dir:r},{title:"Basics",dir:d,children:[{title:"Download ECharts",dir:l},{title:"Import ECharts",dir:a},{title:"Resources",dir:n,draft:t},{title:"Get Help",dir:s},{title:"What's New",dir:o,children:[{title:"ECharts 6 Features",dir:c},{title:"Migration from v5 to v6",dir:h},{title:"5.0",dir:g},{title:"Migration from v4 to v5",dir:C},{title:5.2,dir:p},{title:5.3,dir:A},{title:5.4,dir:I},{title:5.5,dir:f},{title:5.6,dir:b}]}]},{title:"Concepts",dir:B,children:[{title:"Chart Container",dir:m},{title:"Chart Option",dir:u,draft:t},{title:"Series",dir:v,draft:t},{title:"Style",dir:w},{title:"Dataset",dir:G},{title:"Data Transform",dir:S},{title:"Coordinate",dir:y,draft:t},{title:"Axis",dir:L},{title:"Visual Mapping",dir:e},{title:"Legend",dir:E},{title:"Event and Action",dir:R}]},{title:"How To Guides",dir:k,children:[{title:"Common Charts",dir:D,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:P},{title:"Stacked Bar",dir:x},{title:"Bar Racing",dir:M},{title:"Bar Polar",dir:z,draft:t},{title:"Waterfall",dir:F}]},{title:"Line",dir:O,children:[{title:"Basic Line",dir:H},{title:"Stacked Line",dir:V},{title:"Area Chart",dir:W},{title:"Smoothed Line",dir:J},{title:"Step Line",dir:K}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:N},{title:"Ring Style",dir:Q},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:T,children:[{title:"Basic Scatter",dir:X}]}]},{title:"Common Components",dir:Y,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:_}]}]},{title:"Mobile",dir:i,draft:t},{title:"Cross Platform",dir:j,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:U},{title:"Drilldown",dir:Z,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:$}]},{title:"Animation",dir:q,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:it,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:et,draft:t},{title:"Intelligent Pointer Snapping",dir:rt}]}]},{title:"Best Practices",dir:dt,children:[{title:"Mobile Optimization",dir:i,draft:t},{title:lt,dir:at},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:nt}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:st}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/zh/how-to/chart-types/line/stacked-line",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/zh/how-to/chart-types/line/step-line/index.html b/docs/zh/how-to/chart-types/line/step-line/index.html
new file mode 100644
index 0000000..92c3647
--- /dev/null
+++ b/docs/zh/how-to/chart-types/line/step-line/index.html
@@ -0,0 +1,69 @@
+<!doctype html>
+<html data-n-head-ssr lang="zh-CN" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh-CN%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>阶梯线图 - 折线图 - 常用图表类型 - 应用篇 - 使用手册 - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="zh"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/zh/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/zh/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/zh/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/zh/index.html" class="navbar-brand"><img src="https://echarts.apache.org/zh/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/zh/index.html">首页</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">文档<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/feature.html">特性</a></li><li><a href="https://echarts.apache.org/handbook/zh/get-started/">使用手册</a></li><li><a href="https://echarts.apache.org/zh/api.html">API</a></li><li><a href="https://echarts.apache.org/zh/option.html">配置项手册</a></li><li><a href="https://echarts.apache.org/zh/changelog.html">版本记录</a></li><li><a href="https://echarts.apache.org/zh/faq.html">常见问题</a></li><li><a href="https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide">v6 升级指南</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">下载<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/download.html">下载</a></li><li><a href="https://echarts.apache.org/zh/download-theme.html">主题下载</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">自定义系列下载<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/download-extension.html">扩展下载</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/zh/index.html">示例</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">资源<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/spreadsheet.html">表格工具</a></li><li><a href="https://echarts.apache.org/zh/theme-builder.html">主题构建工具</a></li><li><a href="https://echarts.apache.org/zh/cheat-sheet.html">术语速查手册</a></li><li><a href="https://echarts.apache.org/zh/resources.html">更多资源</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">社区<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/events.html">活动</a></li><li><a href="https://echarts.apache.org/zh/committers.html">贡献者列表</a></li><li><a href="https://echarts.apache.org/zh/maillist.html">邮件列表</a></li><li><a href="https://echarts.apache.org/zh/contributing.html">如何贡献</a></li><li><a href="https://echarts.apache.org/zh/dependencies.html">依赖项</a></li><li><a href="https://echarts.apache.org/zh/coding-standard.html">代码规范</a></li><li><a href="https://github.com/apache/echarts" target="_blank">源码(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/security.html">安全</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">版权<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">活动<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">捐赠<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">鸣谢<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("en")'>EN</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/zh/get-started" class="nav-link"><span class="title">快速上手</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">入门篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/basics/download" class="nav-link"><span class="title">获取 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/import" class="nav-link"><span class="title">在项目中引入 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/basics/help" class="nav-link"><span class="title">寻求帮助</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">版本特性</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 特性介绍</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">v5 升级 v6 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">v4 升级 v5 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">概念篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/concepts/chart-size" class="nav-link"><span class="title">图表容器及大小</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/style" class="nav-link"><span class="title">样式</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/dataset" class="nav-link"><span class="title">数据集</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/data-transform" class="nav-link"><span class="title">数据转换</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/axis" class="nav-link"><span class="title">坐标轴</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/visual-map" class="nav-link"><span class="title">视觉映射</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/legend" class="nav-link"><span class="title">图例</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/event" class="nav-link"><span class="title">事件与行为</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">应用篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">常用图表类型</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a class="nav-link"><span class="title">柱状图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">基础柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">堆叠柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">动态排序柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">阶梯瀑布图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">折线图</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level3"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">基础折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">堆叠折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/area-line" class="nav-link"><span class="title">区域面积图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">平滑曲线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/step-line" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">阶梯线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">饼图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">基础饼图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">圆环图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/rose" class="nav-link"><span class="title">南丁格尔图(玫瑰图)</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">散点图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">基础散点图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">常用组件</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">地理坐标系(Geo)</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG 底图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">跨平台方案</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/server" class="nav-link"><span class="title">服务端渲染</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/wechat-app" class="nav-link"><span class="title">微信小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/baidu-app" class="nav-link"><span class="title">百度智能小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">数据处理</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/data/dynamic-data" class="nav-link"><span class="title">动态的异步数据</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">标签</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/label/rich-text" class="nav-link"><span class="title">富文本标签</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">动画</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/animation/transition" class="nav-link"><span class="title">数据过渡动画</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">交互</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/drag" class="nav-link"><span class="title">拖拽的实现</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">智能指针吸附</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">最佳实践</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/aria" class="nav-link"><span class="title">无障碍访问</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/security" class="nav-link"><span class="title">安全指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">编辑本文档</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/meta/edit-guide" class="nav-link"><span class="title">文档编辑指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="%E9%98%B6%E6%A2%AF%E7%BA%BF%E5%9B%BE" tabindex="-1">阶梯线图</h1> <p>阶梯线图又称方波图,它使用水平和垂直的线来连接两个数据点,而普通折线图则直接将两个点连接起来。阶梯线图能够很好地表达数据的突变。</p> <p>在 ECharts 中,系列的 <code>step</code> 属性用来表征阶梯线图的连接类型,它共有三种取值:<code>'start'</code>、<code>'middle'</code> 和 <code>'end'</code>,分别表示在当前点,当前点与下个点的中间点,下个点拐弯。</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    type: 'category',
+    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
+  },
+  yAxis: {
+    type: 'value'
+  },
+  series: [
+    {
+      name: 'Step Start',
+      type: 'line',
+      step: 'start',
+      data: [120, 132, 101, 134, 90, 230, 210]
+    },
+    {
+      name: 'Step Middle',
+      type: 'line',
+      step: 'middle',
+      data: [220, 282, 201, 234, 290, 430, 410]
+    },
+    {
+      name: 'Step End',
+      type: 'line',
+      step: 'end',
+      data: [450, 432, 401, 454, 590, 530, 510]
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'category'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'Mon'</span><span class="token punctuation">,</span> <span class="token string">'Tue'</span><span class="token punctuation">,</span> <span class="token string">'Wed'</span><span class="token punctuation">,</span> <span class="token string">'Thu'</span><span class="token punctuation">,</span> <span class="token string">'Fri'</span><span class="token punctuation">,</span> <span class="token string">'Sat'</span><span class="token punctuation">,</span> <span class="token string">'Sun'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'value'</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Step Start'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">step</span><span class="token operator">:</span> <span class="token string">'start'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">120</span><span class="token punctuation">,</span> <span class="token number">132</span><span class="token punctuation">,</span> <span class="token number">101</span><span class="token punctuation">,</span> <span class="token number">134</span><span class="token punctuation">,</span> <span class="token number">90</span><span class="token punctuation">,</span> <span class="token number">230</span><span class="token punctuation">,</span> <span class="token number">210</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Step Middle'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">step</span><span class="token operator">:</span> <span class="token string">'middle'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">220</span><span class="token punctuation">,</span> <span class="token number">282</span><span class="token punctuation">,</span> <span class="token number">201</span><span class="token punctuation">,</span> <span class="token number">234</span><span class="token punctuation">,</span> <span class="token number">290</span><span class="token punctuation">,</span> <span class="token number">430</span><span class="token punctuation">,</span> <span class="token number">410</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Step End'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">step</span><span class="token operator">:</span> <span class="token string">'end'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">450</span><span class="token punctuation">,</span> <span class="token number">432</span><span class="token punctuation">,</span> <span class="token number">401</span><span class="token punctuation">,</span> <span class="token number">454</span><span class="token punctuation">,</span> <span class="token number">590</span><span class="token punctuation">,</span> <span class="token number">530</span><span class="token punctuation">,</span> <span class="token number">510</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <blockquote><p>请注意这个例子中不同的 <code>step</code> 取值对应的数据点和连线的区别。</p></blockquote></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">本文贡献者</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/zh/how-to/chart-types/line/step-line.md" title="编辑本文" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">在 GitHub 上编辑本页</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,i,e,r,d,l,a,n,o,c,s,h,g,C,p,I,A,m,w,b,f,u,B,v,y,G,M,E,D,S,T,x,L,k,P,R,W,z,H,J,N,V,Z,F,U,K,O,X,Y,Q,_,j,q,$,tt,it,et,rt,dt,lt,at,nt,ot){return{layout:"default",data:[{html:'<h1 id="%E9%98%B6%E6%A2%AF%E7%BA%BF%E5%9B%BE" tabindex="-1">阶梯线图</h1>\n<p>阶梯线图又称方波图,它使用水平和垂直的线来连接两个数据点,而普通折线图则直接将两个点连接起来。阶梯线图能够很好地表达数据的突变。</p>\n<p>在 ECharts 中,系列的 <code>step</code> 属性用来表征阶梯线图的连接类型,它共有三种取值:<code>\'start\'</code>、<code>\'middle\'</code> 和 <code>\'end\'</code>,分别表示在当前点,当前点与下个点的中间点,下个点拐弯。</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICB0eXBlOiAnY2F0ZWdvcnknLAogICAgZGF0YTogWydNb24nLCAnVHVlJywgJ1dlZCcsICdUaHUnLCAnRnJpJywgJ1NhdCcsICdTdW4nXQogIH0sCiAgeUF4aXM6IHsKICAgIHR5cGU6ICd2YWx1ZScKICB9LAogIHNlcmllczogWwogICAgewogICAgICBuYW1lOiAnU3RlcCBTdGFydCcsCiAgICAgIHR5cGU6ICdsaW5lJywKICAgICAgc3RlcDogJ3N0YXJ0JywKICAgICAgZGF0YTogWzEyMCwgMTMyLCAxMDEsIDEzNCwgOTAsIDIzMCwgMjEwXQogICAgfSwKICAgIHsKICAgICAgbmFtZTogJ1N0ZXAgTWlkZGxlJywKICAgICAgdHlwZTogJ2xpbmUnLAogICAgICBzdGVwOiAnbWlkZGxlJywKICAgICAgZGF0YTogWzIyMCwgMjgyLCAyMDEsIDIzNCwgMjkwLCA0MzAsIDQxMF0KICAgIH0sCiAgICB7CiAgICAgIG5hbWU6ICdTdGVwIEVuZCcsCiAgICAgIHR5cGU6ICdsaW5lJywKICAgICAgc3RlcDogJ2VuZCcsCiAgICAgIGRhdGE6IFs0NTAsIDQzMiwgNDAxLCA0NTQsIDU5MCwgNTMwLCA1MTBdCiAgICB9CiAgXQp9Ow\'" v-bind="{}" />\n<blockquote>\n<p>请注意这个例子中不同的 <code>step</code> 取值对应的数据点和连线的区别。</p>\n</blockquote>\n',postPath:"zh/how-to/chart-types/line/step-line",title:"阶梯线图 - 折线图 - 常用图表类型 - 应用篇"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:r},{title:"入门篇",dir:d,children:[{title:"获取 ECharts",dir:l},{title:"在项目中引入 ECharts",dir:a},{title:"资源列表",dir:n,draft:t},{title:"寻求帮助",dir:o},{title:"版本特性",dir:c,children:[{title:"ECharts 6 特性介绍",dir:s},{title:"v5 升级 v6 指南",dir:h},{title:"5.0",dir:g},{title:"v4 升级 v5 指南",dir:C},{title:5.2,dir:p},{title:5.3,dir:I},{title:5.4,dir:A},{title:5.5,dir:m},{title:5.6,dir:w}]}]},{title:"概念篇",dir:b,children:[{title:"图表容器及大小",dir:f},{title:"配置项",dir:u,draft:t},{title:"系列",dir:B,draft:t},{title:"样式",dir:v},{title:"数据集",dir:y},{title:"数据转换",dir:G},{title:"坐标系",dir:M,draft:t},{title:"坐标轴",dir:E},{title:"视觉映射",dir:e},{title:"图例",dir:D},{title:"事件与行为",dir:S}]},{title:"应用篇",dir:T,children:[{title:"常用图表类型",dir:x,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:L},{title:"堆叠柱状图",dir:k},{title:"动态排序柱状图",dir:P},{title:"极坐标系柱状图",dir:R,draft:t},{title:"阶梯瀑布图",dir:W},{title:"视觉映射的柱状图",dir:e,draft:t}]},{title:"折线图",dir:z,children:[{title:"基础折线图",dir:H},{title:"堆叠折线图",dir:J},{title:"区域面积图",dir:N},{title:"平滑曲线图",dir:V},{title:"阶梯线图",dir:Z}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:F},{title:"圆环图",dir:U},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:K,children:[{title:"基础散点图",dir:O}]}]},{title:"常用组件",dir:X,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:Y}]}]},{title:"移动端优化",dir:i,draft:t},{title:"跨平台方案",dir:Q,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:_},{title:"数据下钻",dir:j,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:q}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:it,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:et,draft:t},{title:"智能指针吸附",dir:rt}]}]},{title:"最佳实践",dir:dt,children:[{title:"移动端优化",dir:i,draft:t},{title:lt,dir:at},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:nt}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:ot}]}],en:[{title:"Get Started",dir:r},{title:"Basics",dir:d,children:[{title:"Download ECharts",dir:l},{title:"Import ECharts",dir:a},{title:"Resources",dir:n,draft:t},{title:"Get Help",dir:o},{title:"What's New",dir:c,children:[{title:"ECharts 6 Features",dir:s},{title:"Migration from v5 to v6",dir:h},{title:"5.0",dir:g},{title:"Migration from v4 to v5",dir:C},{title:5.2,dir:p},{title:5.3,dir:I},{title:5.4,dir:A},{title:5.5,dir:m},{title:5.6,dir:w}]}]},{title:"Concepts",dir:b,children:[{title:"Chart Container",dir:f},{title:"Chart Option",dir:u,draft:t},{title:"Series",dir:B,draft:t},{title:"Style",dir:v},{title:"Dataset",dir:y},{title:"Data Transform",dir:G},{title:"Coordinate",dir:M,draft:t},{title:"Axis",dir:E},{title:"Visual Mapping",dir:e},{title:"Legend",dir:D},{title:"Event and Action",dir:S}]},{title:"How To Guides",dir:T,children:[{title:"Common Charts",dir:x,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:L},{title:"Stacked Bar",dir:k},{title:"Bar Racing",dir:P},{title:"Bar Polar",dir:R,draft:t},{title:"Waterfall",dir:W}]},{title:"Line",dir:z,children:[{title:"Basic Line",dir:H},{title:"Stacked Line",dir:J},{title:"Area Chart",dir:N},{title:"Smoothed Line",dir:V},{title:"Step Line",dir:Z}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:F},{title:"Ring Style",dir:U},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:K,children:[{title:"Basic Scatter",dir:O}]}]},{title:"Common Components",dir:X,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:Y}]}]},{title:"Mobile",dir:i,draft:t},{title:"Cross Platform",dir:Q,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:_},{title:"Drilldown",dir:j,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:q}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:it,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:et,draft:t},{title:"Intelligent Pointer Snapping",dir:rt}]}]},{title:"Best Practices",dir:dt,children:[{title:"Mobile Optimization",dir:i,draft:t},{title:lt,dir:at},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:nt}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:ot}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/zh/how-to/chart-types/line/step-line",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/zh/how-to/chart-types/pie/basic-pie/index.html b/docs/zh/how-to/chart-types/pie/basic-pie/index.html
new file mode 100644
index 0000000..8a0b570
--- /dev/null
+++ b/docs/zh/how-to/chart-types/pie/basic-pie/index.html
@@ -0,0 +1,185 @@
+<!doctype html>
+<html data-n-head-ssr lang="zh-CN" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh-CN%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>基础饼图 - 饼图 - 常用图表类型 - 应用篇 - 使用手册 - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="zh"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/zh/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/zh/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/zh/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/zh/index.html" class="navbar-brand"><img src="https://echarts.apache.org/zh/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/zh/index.html">首页</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">文档<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/feature.html">特性</a></li><li><a href="https://echarts.apache.org/handbook/zh/get-started/">使用手册</a></li><li><a href="https://echarts.apache.org/zh/api.html">API</a></li><li><a href="https://echarts.apache.org/zh/option.html">配置项手册</a></li><li><a href="https://echarts.apache.org/zh/changelog.html">版本记录</a></li><li><a href="https://echarts.apache.org/zh/faq.html">常见问题</a></li><li><a href="https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide">v6 升级指南</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">下载<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/download.html">下载</a></li><li><a href="https://echarts.apache.org/zh/download-theme.html">主题下载</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">自定义系列下载<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/download-extension.html">扩展下载</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/zh/index.html">示例</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">资源<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/spreadsheet.html">表格工具</a></li><li><a href="https://echarts.apache.org/zh/theme-builder.html">主题构建工具</a></li><li><a href="https://echarts.apache.org/zh/cheat-sheet.html">术语速查手册</a></li><li><a href="https://echarts.apache.org/zh/resources.html">更多资源</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">社区<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/events.html">活动</a></li><li><a href="https://echarts.apache.org/zh/committers.html">贡献者列表</a></li><li><a href="https://echarts.apache.org/zh/maillist.html">邮件列表</a></li><li><a href="https://echarts.apache.org/zh/contributing.html">如何贡献</a></li><li><a href="https://echarts.apache.org/zh/dependencies.html">依赖项</a></li><li><a href="https://echarts.apache.org/zh/coding-standard.html">代码规范</a></li><li><a href="https://github.com/apache/echarts" target="_blank">源码(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/security.html">安全</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">版权<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">活动<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">捐赠<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">鸣谢<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("en")'>EN</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/zh/get-started" class="nav-link"><span class="title">快速上手</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">入门篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/basics/download" class="nav-link"><span class="title">获取 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/import" class="nav-link"><span class="title">在项目中引入 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/basics/help" class="nav-link"><span class="title">寻求帮助</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">版本特性</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 特性介绍</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">v5 升级 v6 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">v4 升级 v5 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">概念篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/concepts/chart-size" class="nav-link"><span class="title">图表容器及大小</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/style" class="nav-link"><span class="title">样式</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/dataset" class="nav-link"><span class="title">数据集</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/data-transform" class="nav-link"><span class="title">数据转换</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/axis" class="nav-link"><span class="title">坐标轴</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/visual-map" class="nav-link"><span class="title">视觉映射</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/legend" class="nav-link"><span class="title">图例</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/event" class="nav-link"><span class="title">事件与行为</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">应用篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">常用图表类型</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a class="nav-link"><span class="title">柱状图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">基础柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">堆叠柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">动态排序柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">阶梯瀑布图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">折线图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">基础折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">堆叠折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/area-line" class="nav-link"><span class="title">区域面积图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">平滑曲线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/step-line" class="nav-link"><span class="title">阶梯线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">饼图</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level3"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/basic-pie" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">基础饼图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">圆环图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/rose" class="nav-link"><span class="title">南丁格尔图(玫瑰图)</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">散点图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">基础散点图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">常用组件</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">地理坐标系(Geo)</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG 底图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">跨平台方案</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/server" class="nav-link"><span class="title">服务端渲染</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/wechat-app" class="nav-link"><span class="title">微信小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/baidu-app" class="nav-link"><span class="title">百度智能小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">数据处理</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/data/dynamic-data" class="nav-link"><span class="title">动态的异步数据</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">标签</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/label/rich-text" class="nav-link"><span class="title">富文本标签</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">动画</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/animation/transition" class="nav-link"><span class="title">数据过渡动画</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">交互</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/drag" class="nav-link"><span class="title">拖拽的实现</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">智能指针吸附</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">最佳实践</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/aria" class="nav-link"><span class="title">无障碍访问</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/security" class="nav-link"><span class="title">安全指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">编辑本文档</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/meta/edit-guide" class="nav-link"><span class="title">文档编辑指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="%E5%9F%BA%E7%A1%80%E9%A5%BC%E5%9B%BE" tabindex="-1">基础饼图</h1> <p>饼图主要用于表现不同类目的数据在总和中的占比。每个的弧度表示数据数量的比例。</p> <h2 id="%E6%9C%80%E7%AE%80%E5%8D%95%E7%9A%84%E9%A5%BC%E5%9B%BE" tabindex="-1">最简单的饼图</h2> <p>饼图的配置和折线图、柱状图略有不同,不再需要配置坐标轴,而是把数据名称和值都写在系列中。以下是一个最简单的饼图的例子。</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  series: [
+    {
+      type: 'pie',
+      data: [
+        {
+          value: 335,
+          name: '直接访问'
+        },
+        {
+          value: 234,
+          name: '联盟广告'
+        },
+        {
+          value: 1548,
+          name: '搜索引擎'
+        }
+      ]
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'pie'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">335</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'直接访问'</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">234</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'联盟广告'</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">1548</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'搜索引擎'</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>需要注意的是,这里是 <code>value</code> 不需要是百分比数据,ECharts 会根据所有数据的 <code>value</code> ,按比例分配它们在饼图中对应的弧度。</p> <h2 id="%E9%A5%BC%E5%9B%BE%E6%A0%B7%E5%BC%8F%E8%AE%BE%E7%BD%AE" tabindex="-1">饼图样式设置</h2> <h3 id="%E9%A5%BC%E5%9B%BE%E7%9A%84%E5%8D%8A%E5%BE%84" tabindex="-1">饼图的半径</h3> <p>饼图的半径可以通过 <a href="https://echarts.apache.org/option.html#series-pie.radius"><code>series.radius</code></a> 设置,可以是诸如 <code>'60%'</code> 这样相对的百分比字符串,或是 <code>200</code> 这样的绝对像素数值。当它是百分比字符串时,它是相对于容器宽高中较小的一条边的。也就是说,如果宽度大于高度,则百分比是相对于高度的,反之则反;当它是数值型时,它表示绝对的像素大小。</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  series: [
+    {
+      type: 'pie',
+      data: [
+        {
+          value: 335,
+          name: '直接访问'
+        },
+        {
+          value: 234,
+          name: '联盟广告'
+        },
+        {
+          value: 1548,
+          name: '搜索引擎'
+        }
+      ],
+      radius: '50%'
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'pie'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">335</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'直接访问'</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">234</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'联盟广告'</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">1548</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'搜索引擎'</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">radius</span><span class="token operator">:</span> <span class="token string">'50%'</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <h2 id="%E5%A6%82%E6%9E%9C%E6%95%B0%E6%8D%AE%E5%92%8C%E4%B8%BA-0%EF%BC%8C%E4%B8%8D%E6%98%BE%E7%A4%BA%E9%A5%BC%E5%9B%BE" tabindex="-1">如果数据和为 0,不显示饼图</h2> <p>在默认情况下,如果数据值和为 0,会显示平均分割的扇形。比如,如果有 4 个数据项,并且每个数据项都是 0,则每个扇形都是 90°。如果我们希望在这种情况下不显示任何扇形,可以将 <a href="https://echarts.apache.org/option.html#series-pie.stillShowZeroSum"><code>series.stillShowZeroSum</code></a> 设为 <code>false</code>。</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  series: [
+    {
+      type: 'pie',
+      stillShowZeroSum: false,
+      data: [
+        {
+          value: 0,
+          name: '直接访问'
+        },
+        {
+          value: 0,
+          name: '联盟广告'
+        },
+        {
+          value: 0,
+          name: '搜索引擎'
+        }
+      ]
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'pie'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">stillShowZeroSum</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'直接访问'</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'联盟广告'</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'搜索引擎'</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>如果希望扇形对应的标签也不显示,可以将 <a href="https://echarts.apache.org/option.html#series-pie.label.show"><code>series.label.show</code></a> 设为 <code>false</code>。</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  series: [
+    {
+      type: 'pie',
+      stillShowZeroSum: false,
+      label: {
+        show: false
+      },
+      data: [
+        {
+          value: 0,
+          name: '直接访问'
+        },
+        {
+          value: 0,
+          name: '联盟广告'
+        },
+        {
+          value: 0,
+          name: '搜索引擎'
+        }
+      ]
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'pie'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">stillShowZeroSum</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">false</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'直接访问'</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'联盟广告'</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'搜索引擎'</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">本文贡献者</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/zh/how-to/chart-types/pie/basic-pie.md" title="编辑本文" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">在 GitHub 上编辑本页</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(i,t,e,r,d,l,g,a,C,o,I,A,n,c,s,h,p,B,m,b,w,f,E,u,v,W,K,G,S,T,Z,H,x,O,k,y,D,z,U,F,L,P,M,J,V,Y,_,R,X,N,Q,j,$,q,ii,ti,ei,ri,di,li,gi,ai,Ci){return{layout:"default",data:[{html:'<h1 id="%E5%9F%BA%E7%A1%80%E9%A5%BC%E5%9B%BE" tabindex="-1">基础饼图</h1>\n<p>饼图主要用于表现不同类目的数据在总和中的占比。每个的弧度表示数据数量的比例。</p>\n<h2 id="%E6%9C%80%E7%AE%80%E5%8D%95%E7%9A%84%E9%A5%BC%E5%9B%BE" tabindex="-1">最简单的饼图</h2>\n<p>饼图的配置和折线图、柱状图略有不同,不再需要配置坐标轴,而是把数据名称和值都写在系列中。以下是一个最简单的饼图的例子。</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHNlcmllczogWwogICAgewogICAgICB0eXBlOiAncGllJywKICAgICAgZGF0YTogWwogICAgICAgIHsKICAgICAgICAgIHZhbHVlOiAzMzUsCiAgICAgICAgICBuYW1lOiAn55u05o6l6K6_6ZeuJwogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgdmFsdWU6IDIzNCwKICAgICAgICAgIG5hbWU6ICfogZTnm5_lub_lkYonCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICB2YWx1ZTogMTU0OCwKICAgICAgICAgIG5hbWU6ICfmkJzntKLlvJXmk44nCiAgICAgICAgfQogICAgICBdCiAgICB9CiAgXQp9Ow\'" v-bind="{}" />\n<p>需要注意的是,这里是 <code>value</code> 不需要是百分比数据,ECharts 会根据所有数据的 <code>value</code> ,按比例分配它们在饼图中对应的弧度。</p>\n<h2 id="%E9%A5%BC%E5%9B%BE%E6%A0%B7%E5%BC%8F%E8%AE%BE%E7%BD%AE" tabindex="-1">饼图样式设置</h2>\n<h3 id="%E9%A5%BC%E5%9B%BE%E7%9A%84%E5%8D%8A%E5%BE%84" tabindex="-1">饼图的半径</h3>\n<p>饼图的半径可以通过 <a href="https://echarts.apache.org/option.html#series-pie.radius"><code>series.radius</code></a> 设置,可以是诸如 <code>\'60%\'</code> 这样相对的百分比字符串,或是 <code>200</code> 这样的绝对像素数值。当它是百分比字符串时,它是相对于容器宽高中较小的一条边的。也就是说,如果宽度大于高度,则百分比是相对于高度的,反之则反;当它是数值型时,它表示绝对的像素大小。</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHNlcmllczogWwogICAgewogICAgICB0eXBlOiAncGllJywKICAgICAgZGF0YTogWwogICAgICAgIHsKICAgICAgICAgIHZhbHVlOiAzMzUsCiAgICAgICAgICBuYW1lOiAn55u05o6l6K6_6ZeuJwogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgdmFsdWU6IDIzNCwKICAgICAgICAgIG5hbWU6ICfogZTnm5_lub_lkYonCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICB2YWx1ZTogMTU0OCwKICAgICAgICAgIG5hbWU6ICfmkJzntKLlvJXmk44nCiAgICAgICAgfQogICAgICBdLAogICAgICByYWRpdXM6ICc1MCUnCiAgICB9CiAgXQp9Ow\'" v-bind="{}" />\n<h2 id="%E5%A6%82%E6%9E%9C%E6%95%B0%E6%8D%AE%E5%92%8C%E4%B8%BA-0%EF%BC%8C%E4%B8%8D%E6%98%BE%E7%A4%BA%E9%A5%BC%E5%9B%BE" tabindex="-1">如果数据和为 0,不显示饼图</h2>\n<p>在默认情况下,如果数据值和为 0,会显示平均分割的扇形。比如,如果有 4 个数据项,并且每个数据项都是 0,则每个扇形都是 90°。如果我们希望在这种情况下不显示任何扇形,可以将 <a href="https://echarts.apache.org/option.html#series-pie.stillShowZeroSum"><code>series.stillShowZeroSum</code></a> 设为 <code>false</code>。</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHNlcmllczogWwogICAgewogICAgICB0eXBlOiAncGllJywKICAgICAgc3RpbGxTaG93WmVyb1N1bTogZmFsc2UsCiAgICAgIGRhdGE6IFsKICAgICAgICB7CiAgICAgICAgICB2YWx1ZTogMCwKICAgICAgICAgIG5hbWU6ICfnm7TmjqXorr_pl64nCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICB2YWx1ZTogMCwKICAgICAgICAgIG5hbWU6ICfogZTnm5_lub_lkYonCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICB2YWx1ZTogMCwKICAgICAgICAgIG5hbWU6ICfmkJzntKLlvJXmk44nCiAgICAgICAgfQogICAgICBdCiAgICB9CiAgXQp9Ow\'" v-bind="{}" />\n<p>如果希望扇形对应的标签也不显示,可以将 <a href="https://echarts.apache.org/option.html#series-pie.label.show"><code>series.label.show</code></a> 设为 <code>false</code>。</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHNlcmllczogWwogICAgewogICAgICB0eXBlOiAncGllJywKICAgICAgc3RpbGxTaG93WmVyb1N1bTogZmFsc2UsCiAgICAgIGxhYmVsOiB7CiAgICAgICAgc2hvdzogZmFsc2UKICAgICAgfSwKICAgICAgZGF0YTogWwogICAgICAgIHsKICAgICAgICAgIHZhbHVlOiAwLAogICAgICAgICAgbmFtZTogJ-ebtOaOpeiuv-mXricKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgIHZhbHVlOiAwLAogICAgICAgICAgbmFtZTogJ-iBlOebn-W5v-WRiicKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgIHZhbHVlOiAwLAogICAgICAgICAgbmFtZTogJ-aQnOe0ouW8leaTjicKICAgICAgICB9CiAgICAgIF0KICAgIH0KICBdCn07\'" v-bind="{}" />\n',postPath:"zh/how-to/chart-types/pie/basic-pie",title:"基础饼图 - 饼图 - 常用图表类型 - 应用篇"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:r},{title:"入门篇",dir:d,children:[{title:"获取 ECharts",dir:l},{title:"在项目中引入 ECharts",dir:g},{title:"资源列表",dir:a,draft:i},{title:"寻求帮助",dir:C},{title:"版本特性",dir:o,children:[{title:"ECharts 6 特性介绍",dir:I},{title:"v5 升级 v6 指南",dir:A},{title:"5.0",dir:n},{title:"v4 升级 v5 指南",dir:c},{title:5.2,dir:s},{title:5.3,dir:h},{title:5.4,dir:p},{title:5.5,dir:B},{title:5.6,dir:m}]}]},{title:"概念篇",dir:b,children:[{title:"图表容器及大小",dir:w},{title:"配置项",dir:f,draft:i},{title:"系列",dir:E,draft:i},{title:"样式",dir:u},{title:"数据集",dir:v},{title:"数据转换",dir:W},{title:"坐标系",dir:K,draft:i},{title:"坐标轴",dir:G},{title:"视觉映射",dir:e},{title:"图例",dir:S},{title:"事件与行为",dir:T}]},{title:"应用篇",dir:Z,children:[{title:"常用图表类型",dir:H,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:x},{title:"堆叠柱状图",dir:O},{title:"动态排序柱状图",dir:k},{title:"极坐标系柱状图",dir:y,draft:i},{title:"阶梯瀑布图",dir:D},{title:"视觉映射的柱状图",dir:e,draft:i}]},{title:"折线图",dir:z,children:[{title:"基础折线图",dir:U},{title:"堆叠折线图",dir:F},{title:"区域面积图",dir:L},{title:"平滑曲线图",dir:P},{title:"阶梯线图",dir:M}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:J},{title:"圆环图",dir:V},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:Y,children:[{title:"基础散点图",dir:_}]}]},{title:"常用组件",dir:R,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:X}]}]},{title:"移动端优化",dir:t,draft:i},{title:"跨平台方案",dir:N,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:Q},{title:"数据下钻",dir:j,draft:i}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:$}]},{title:"动画",dir:q,children:[{title:"数据过渡动画",dir:ii}]},{title:"交互",dir:ti,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:ei,draft:i},{title:"智能指针吸附",dir:ri}]}]},{title:"最佳实践",dir:di,children:[{title:"移动端优化",dir:t,draft:i},{title:li,dir:gi},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:ai}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:Ci}]}],en:[{title:"Get Started",dir:r},{title:"Basics",dir:d,children:[{title:"Download ECharts",dir:l},{title:"Import ECharts",dir:g},{title:"Resources",dir:a,draft:i},{title:"Get Help",dir:C},{title:"What's New",dir:o,children:[{title:"ECharts 6 Features",dir:I},{title:"Migration from v5 to v6",dir:A},{title:"5.0",dir:n},{title:"Migration from v4 to v5",dir:c},{title:5.2,dir:s},{title:5.3,dir:h},{title:5.4,dir:p},{title:5.5,dir:B},{title:5.6,dir:m}]}]},{title:"Concepts",dir:b,children:[{title:"Chart Container",dir:w},{title:"Chart Option",dir:f,draft:i},{title:"Series",dir:E,draft:i},{title:"Style",dir:u},{title:"Dataset",dir:v},{title:"Data Transform",dir:W},{title:"Coordinate",dir:K,draft:i},{title:"Axis",dir:G},{title:"Visual Mapping",dir:e},{title:"Legend",dir:S},{title:"Event and Action",dir:T}]},{title:"How To Guides",dir:Z,children:[{title:"Common Charts",dir:H,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:x},{title:"Stacked Bar",dir:O},{title:"Bar Racing",dir:k},{title:"Bar Polar",dir:y,draft:i},{title:"Waterfall",dir:D}]},{title:"Line",dir:z,children:[{title:"Basic Line",dir:U},{title:"Stacked Line",dir:F},{title:"Area Chart",dir:L},{title:"Smoothed Line",dir:P},{title:"Step Line",dir:M}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:J},{title:"Ring Style",dir:V},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:Y,children:[{title:"Basic Scatter",dir:_}]}]},{title:"Common Components",dir:R,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:X}]}]},{title:"Mobile",dir:t,draft:i},{title:"Cross Platform",dir:N,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:Q},{title:"Drilldown",dir:j,draft:i}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:$}]},{title:"Animation",dir:q,children:[{title:"Data Transition",dir:ii}]},{title:"Interaction",dir:ti,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:ei,draft:i},{title:"Intelligent Pointer Snapping",dir:ri}]}]},{title:"Best Practices",dir:di,children:[{title:"Mobile Optimization",dir:t,draft:i},{title:li,dir:gi},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:ai}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:Ci}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:i,routePath:"/zh/how-to/chart-types/pie/basic-pie",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/zh/how-to/chart-types/pie/doughnut/index.html b/docs/zh/how-to/chart-types/pie/doughnut/index.html
new file mode 100644
index 0000000..47ac3e4
--- /dev/null
+++ b/docs/zh/how-to/chart-types/pie/doughnut/index.html
@@ -0,0 +1,133 @@
+<!doctype html>
+<html data-n-head-ssr lang="zh-CN" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh-CN%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>圆环图 - 饼图 - 常用图表类型 - 应用篇 - 使用手册 - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="zh"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/zh/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/zh/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/zh/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/zh/index.html" class="navbar-brand"><img src="https://echarts.apache.org/zh/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/zh/index.html">首页</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">文档<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/feature.html">特性</a></li><li><a href="https://echarts.apache.org/handbook/zh/get-started/">使用手册</a></li><li><a href="https://echarts.apache.org/zh/api.html">API</a></li><li><a href="https://echarts.apache.org/zh/option.html">配置项手册</a></li><li><a href="https://echarts.apache.org/zh/changelog.html">版本记录</a></li><li><a href="https://echarts.apache.org/zh/faq.html">常见问题</a></li><li><a href="https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide">v6 升级指南</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">下载<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/download.html">下载</a></li><li><a href="https://echarts.apache.org/zh/download-theme.html">主题下载</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">自定义系列下载<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/download-extension.html">扩展下载</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/zh/index.html">示例</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">资源<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/spreadsheet.html">表格工具</a></li><li><a href="https://echarts.apache.org/zh/theme-builder.html">主题构建工具</a></li><li><a href="https://echarts.apache.org/zh/cheat-sheet.html">术语速查手册</a></li><li><a href="https://echarts.apache.org/zh/resources.html">更多资源</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">社区<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/events.html">活动</a></li><li><a href="https://echarts.apache.org/zh/committers.html">贡献者列表</a></li><li><a href="https://echarts.apache.org/zh/maillist.html">邮件列表</a></li><li><a href="https://echarts.apache.org/zh/contributing.html">如何贡献</a></li><li><a href="https://echarts.apache.org/zh/dependencies.html">依赖项</a></li><li><a href="https://echarts.apache.org/zh/coding-standard.html">代码规范</a></li><li><a href="https://github.com/apache/echarts" target="_blank">源码(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/security.html">安全</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">版权<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">活动<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">捐赠<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">鸣谢<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("en")'>EN</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/zh/get-started" class="nav-link"><span class="title">快速上手</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">入门篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/basics/download" class="nav-link"><span class="title">获取 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/import" class="nav-link"><span class="title">在项目中引入 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/basics/help" class="nav-link"><span class="title">寻求帮助</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">版本特性</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 特性介绍</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">v5 升级 v6 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">v4 升级 v5 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">概念篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/concepts/chart-size" class="nav-link"><span class="title">图表容器及大小</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/style" class="nav-link"><span class="title">样式</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/dataset" class="nav-link"><span class="title">数据集</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/data-transform" class="nav-link"><span class="title">数据转换</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/axis" class="nav-link"><span class="title">坐标轴</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/visual-map" class="nav-link"><span class="title">视觉映射</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/legend" class="nav-link"><span class="title">图例</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/event" class="nav-link"><span class="title">事件与行为</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">应用篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">常用图表类型</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a class="nav-link"><span class="title">柱状图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">基础柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">堆叠柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">动态排序柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">阶梯瀑布图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">折线图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">基础折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">堆叠折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/area-line" class="nav-link"><span class="title">区域面积图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">平滑曲线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/step-line" class="nav-link"><span class="title">阶梯线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">饼图</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level3"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">基础饼图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/doughnut" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">圆环图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/rose" class="nav-link"><span class="title">南丁格尔图(玫瑰图)</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">散点图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">基础散点图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">常用组件</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">地理坐标系(Geo)</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG 底图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">跨平台方案</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/server" class="nav-link"><span class="title">服务端渲染</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/wechat-app" class="nav-link"><span class="title">微信小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/baidu-app" class="nav-link"><span class="title">百度智能小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">数据处理</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/data/dynamic-data" class="nav-link"><span class="title">动态的异步数据</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">标签</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/label/rich-text" class="nav-link"><span class="title">富文本标签</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">动画</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/animation/transition" class="nav-link"><span class="title">数据过渡动画</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">交互</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/drag" class="nav-link"><span class="title">拖拽的实现</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">智能指针吸附</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">最佳实践</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/aria" class="nav-link"><span class="title">无障碍访问</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/security" class="nav-link"><span class="title">安全指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">编辑本文档</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/meta/edit-guide" class="nav-link"><span class="title">文档编辑指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="%E5%9C%86%E7%8E%AF%E5%9B%BE" tabindex="-1">圆环图</h1> <p>圆环图同样可以用来表示数据占总体的比例,相比于饼图,它中间空余的部分可以用来显示一些额外的文字等信息,因而也是一种常用的图表类型。</p> <h2 id="%E5%9F%BA%E7%A1%80%E5%9C%86%E7%8E%AF%E5%9B%BE" tabindex="-1">基础圆环图</h2> <p>在 ECharts 中,饼图的半径除了上一小节提到的,可以是一个数值或者字符串之外,还可以是一个包含两个元素的数组,每个元素可以为数值或字符串。当它是一个数组时,它的前一项表示内半径,后一项表示外半径,这样就形成了一个圆环图。</p> <p>从这个角度上来说,可以认为饼图是一个内半径为 0 的圆环图,也就是说,饼图是圆环图的特例。</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  title: {
+    text: '圆环图的例子',
+    left: 'center',
+    top: 'center'
+  },
+  series: [
+    {
+      type: 'pie',
+      data: [
+        {
+          value: 335,
+          name: 'A'
+        },
+        {
+          value: 234,
+          name: 'B'
+        },
+        {
+          value: 1548,
+          name: 'C'
+        }
+      ],
+      radius: ['40%', '70%']
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">title</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'圆环图的例子'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">left</span><span class="token operator">:</span> <span class="token string">'center'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">top</span><span class="token operator">:</span> <span class="token string">'center'</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'pie'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">335</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'A'</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">234</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'B'</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">1548</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'C'</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">radius</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'40%'</span><span class="token punctuation">,</span> <span class="token string">'70%'</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>如果半径是数组,其中的两项也可以一项是数值,另一项是百分比形式的字符串。但是这样可能导致在某些分辨率下,内半径小于外半径。ECharts 会自动使用小的一项作为内半径,但是仍应小心这样可能会导致的非预期效果。</p> <h2 id="%E5%9C%A8%E5%9C%86%E7%8E%AF%E5%9B%BE%E4%B8%AD%E9%97%B4%E6%98%BE%E7%A4%BA%E9%AB%98%E4%BA%AE%E6%89%87%E5%BD%A2%E5%AF%B9%E5%BA%94%E7%9A%84%E6%96%87%E5%AD%97" tabindex="-1">在圆环图中间显示高亮扇形对应的文字</h2> <p>上面的例子展现了在圆环图中间显示固定文字的例子,下面我们要介绍,如何在圆环图中间显示鼠标高亮的扇形对应的文字。实现这一效果的思路是,利用系列的 <code>label</code>(默认用扇形颜色显示数据的 <code>name</code>),显示在圆环图中间。在默认情况下不显示系列的 <code>label</code>,在高亮时显示。具体的代码如下:</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  legend: {
+    orient: 'vertical',
+    x: 'left',
+    data: ['A', 'B', 'C', 'D', 'E']
+  },
+  series: [
+    {
+      type: 'pie',
+      radius: ['50%', '70%'],
+      avoidLabelOverlap: false,
+      label: {
+        show: false,
+        position: 'center'
+      },
+      labelLine: {
+        show: false
+      },
+      emphasis: {
+        label: {
+          show: true,
+          fontSize: '30',
+          fontWeight: 'bold'
+        }
+      },
+      data: [
+        { value: 335, name: 'A' },
+        { value: 310, name: 'B' },
+        { value: 234, name: 'C' },
+        { value: 135, name: 'D' },
+        { value: 1548, name: 'E' }
+      ]
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">legend</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">orient</span><span class="token operator">:</span> <span class="token string">'vertical'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token string">'left'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'A'</span><span class="token punctuation">,</span> <span class="token string">'B'</span><span class="token punctuation">,</span> <span class="token string">'C'</span><span class="token punctuation">,</span> <span class="token string">'D'</span><span class="token punctuation">,</span> <span class="token string">'E'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'pie'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">radius</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'50%'</span><span class="token punctuation">,</span> <span class="token string">'70%'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">avoidLabelOverlap</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">position</span><span class="token operator">:</span> <span class="token string">'center'</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">labelLine</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">false</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">emphasis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+          <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">fontSize</span><span class="token operator">:</span> <span class="token string">'30'</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">fontWeight</span><span class="token operator">:</span> <span class="token string">'bold'</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">{</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">335</span><span class="token punctuation">,</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'A'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">310</span><span class="token punctuation">,</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'B'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">234</span><span class="token punctuation">,</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'C'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">135</span><span class="token punctuation">,</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'D'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span> <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">1548</span><span class="token punctuation">,</span> <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'E'</span> <span class="token punctuation">}</span>
+      <span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>其中,<code>avoidLabelOverlap</code> 是用来控制是否由 ECharts 调整标签位置以实现防止标签重叠。它的默认值是 <code>true</code>,而在这里,我们不希望标签位置调整到不是中间的位置,因此我们需要将其设为 <code>false</code>。</p> <p>这样,圆环图中间会显示高亮数据的 <code>name</code> 值。</p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">本文贡献者</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/zh/how-to/chart-types/pie/doughnut.md" title="编辑本文" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">在 GitHub 上编辑本页</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a><a href="https://github.com/guda-art" target="_blank" class="post-contributor"><!----> <span>guda-art</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,i,e,r,d,l,a,g,n,o,C,I,c,s,A,h,p,m,b,B,E,w,u,f,v,G,y,W,Z,H,S,x,D,F,J,U,L,z,V,T,P,R,O,M,k,K,Y,N,Q,X,_,j,$,q,tt,it,et,rt,dt,lt,at,gt,nt){return{layout:"default",data:[{html:'<h1 id="%E5%9C%86%E7%8E%AF%E5%9B%BE" tabindex="-1">圆环图</h1>\n<p>圆环图同样可以用来表示数据占总体的比例,相比于饼图,它中间空余的部分可以用来显示一些额外的文字等信息,因而也是一种常用的图表类型。</p>\n<h2 id="%E5%9F%BA%E7%A1%80%E5%9C%86%E7%8E%AF%E5%9B%BE" tabindex="-1">基础圆环图</h2>\n<p>在 ECharts 中,饼图的半径除了上一小节提到的,可以是一个数值或者字符串之外,还可以是一个包含两个元素的数组,每个元素可以为数值或字符串。当它是一个数组时,它的前一项表示内半径,后一项表示外半径,这样就形成了一个圆环图。</p>\n<p>从这个角度上来说,可以认为饼图是一个内半径为 0 的圆环图,也就是说,饼图是圆环图的特例。</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHRpdGxlOiB7CiAgICB0ZXh0OiAn5ZyG546v5Zu-55qE5L6L5a2QJywKICAgIGxlZnQ6ICdjZW50ZXInLAogICAgdG9wOiAnY2VudGVyJwogIH0sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIHR5cGU6ICdwaWUnLAogICAgICBkYXRhOiBbCiAgICAgICAgewogICAgICAgICAgdmFsdWU6IDMzNSwKICAgICAgICAgIG5hbWU6ICdBJwogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgdmFsdWU6IDIzNCwKICAgICAgICAgIG5hbWU6ICdCJwogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgdmFsdWU6IDE1NDgsCiAgICAgICAgICBuYW1lOiAnQycKICAgICAgICB9CiAgICAgIF0sCiAgICAgIHJhZGl1czogWyc0MCUnLCAnNzAlJ10KICAgIH0KICBdCn07\'" v-bind="{}" />\n<p>如果半径是数组,其中的两项也可以一项是数值,另一项是百分比形式的字符串。但是这样可能导致在某些分辨率下,内半径小于外半径。ECharts 会自动使用小的一项作为内半径,但是仍应小心这样可能会导致的非预期效果。</p>\n<h2 id="%E5%9C%A8%E5%9C%86%E7%8E%AF%E5%9B%BE%E4%B8%AD%E9%97%B4%E6%98%BE%E7%A4%BA%E9%AB%98%E4%BA%AE%E6%89%87%E5%BD%A2%E5%AF%B9%E5%BA%94%E7%9A%84%E6%96%87%E5%AD%97" tabindex="-1">在圆环图中间显示高亮扇形对应的文字</h2>\n<p>上面的例子展现了在圆环图中间显示固定文字的例子,下面我们要介绍,如何在圆环图中间显示鼠标高亮的扇形对应的文字。实现这一效果的思路是,利用系列的 <code>label</code>(默认用扇形颜色显示数据的 <code>name</code>),显示在圆环图中间。在默认情况下不显示系列的 <code>label</code>,在高亮时显示。具体的代码如下:</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIGxlZ2VuZDogewogICAgb3JpZW50OiAndmVydGljYWwnLAogICAgeDogJ2xlZnQnLAogICAgZGF0YTogWydBJywgJ0InLCAnQycsICdEJywgJ0UnXQogIH0sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIHR5cGU6ICdwaWUnLAogICAgICByYWRpdXM6IFsnNTAlJywgJzcwJSddLAogICAgICBhdm9pZExhYmVsT3ZlcmxhcDogZmFsc2UsCiAgICAgIGxhYmVsOiB7CiAgICAgICAgc2hvdzogZmFsc2UsCiAgICAgICAgcG9zaXRpb246ICdjZW50ZXInCiAgICAgIH0sCiAgICAgIGxhYmVsTGluZTogewogICAgICAgIHNob3c6IGZhbHNlCiAgICAgIH0sCiAgICAgIGVtcGhhc2lzOiB7CiAgICAgICAgbGFiZWw6IHsKICAgICAgICAgIHNob3c6IHRydWUsCiAgICAgICAgICBmb250U2l6ZTogJzMwJywKICAgICAgICAgIGZvbnRXZWlnaHQ6ICdib2xkJwogICAgICAgIH0KICAgICAgfSwKICAgICAgZGF0YTogWwogICAgICAgIHsgdmFsdWU6IDMzNSwgbmFtZTogJ0EnIH0sCiAgICAgICAgeyB2YWx1ZTogMzEwLCBuYW1lOiAnQicgfSwKICAgICAgICB7IHZhbHVlOiAyMzQsIG5hbWU6ICdDJyB9LAogICAgICAgIHsgdmFsdWU6IDEzNSwgbmFtZTogJ0QnIH0sCiAgICAgICAgeyB2YWx1ZTogMTU0OCwgbmFtZTogJ0UnIH0KICAgICAgXQogICAgfQogIF0KfTs\'" v-bind="{}" />\n<p>其中,<code>avoidLabelOverlap</code> 是用来控制是否由 ECharts 调整标签位置以实现防止标签重叠。它的默认值是 <code>true</code>,而在这里,我们不希望标签位置调整到不是中间的位置,因此我们需要将其设为 <code>false</code>。</p>\n<p>这样,圆环图中间会显示高亮数据的 <code>name</code> 值。</p>\n',postPath:"zh/how-to/chart-types/pie/doughnut",title:"圆环图 - 饼图 - 常用图表类型 - 应用篇"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:r},{title:"入门篇",dir:d,children:[{title:"获取 ECharts",dir:l},{title:"在项目中引入 ECharts",dir:a},{title:"资源列表",dir:g,draft:t},{title:"寻求帮助",dir:n},{title:"版本特性",dir:o,children:[{title:"ECharts 6 特性介绍",dir:C},{title:"v5 升级 v6 指南",dir:I},{title:"5.0",dir:c},{title:"v4 升级 v5 指南",dir:s},{title:5.2,dir:A},{title:5.3,dir:h},{title:5.4,dir:p},{title:5.5,dir:m},{title:5.6,dir:b}]}]},{title:"概念篇",dir:B,children:[{title:"图表容器及大小",dir:E},{title:"配置项",dir:w,draft:t},{title:"系列",dir:u,draft:t},{title:"样式",dir:f},{title:"数据集",dir:v},{title:"数据转换",dir:G},{title:"坐标系",dir:y,draft:t},{title:"坐标轴",dir:W},{title:"视觉映射",dir:e},{title:"图例",dir:Z},{title:"事件与行为",dir:H}]},{title:"应用篇",dir:S,children:[{title:"常用图表类型",dir:x,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:D},{title:"堆叠柱状图",dir:F},{title:"动态排序柱状图",dir:J},{title:"极坐标系柱状图",dir:U,draft:t},{title:"阶梯瀑布图",dir:L},{title:"视觉映射的柱状图",dir:e,draft:t}]},{title:"折线图",dir:z,children:[{title:"基础折线图",dir:V},{title:"堆叠折线图",dir:T},{title:"区域面积图",dir:P},{title:"平滑曲线图",dir:R},{title:"阶梯线图",dir:O}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:M},{title:"圆环图",dir:k},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:K,children:[{title:"基础散点图",dir:Y}]}]},{title:"常用组件",dir:N,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:Q}]}]},{title:"移动端优化",dir:i,draft:t},{title:"跨平台方案",dir:X,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:_},{title:"数据下钻",dir:j,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:$}]},{title:"动画",dir:q,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:it,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:et,draft:t},{title:"智能指针吸附",dir:rt}]}]},{title:"最佳实践",dir:dt,children:[{title:"移动端优化",dir:i,draft:t},{title:lt,dir:at},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:gt}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:nt}]}],en:[{title:"Get Started",dir:r},{title:"Basics",dir:d,children:[{title:"Download ECharts",dir:l},{title:"Import ECharts",dir:a},{title:"Resources",dir:g,draft:t},{title:"Get Help",dir:n},{title:"What's New",dir:o,children:[{title:"ECharts 6 Features",dir:C},{title:"Migration from v5 to v6",dir:I},{title:"5.0",dir:c},{title:"Migration from v4 to v5",dir:s},{title:5.2,dir:A},{title:5.3,dir:h},{title:5.4,dir:p},{title:5.5,dir:m},{title:5.6,dir:b}]}]},{title:"Concepts",dir:B,children:[{title:"Chart Container",dir:E},{title:"Chart Option",dir:w,draft:t},{title:"Series",dir:u,draft:t},{title:"Style",dir:f},{title:"Dataset",dir:v},{title:"Data Transform",dir:G},{title:"Coordinate",dir:y,draft:t},{title:"Axis",dir:W},{title:"Visual Mapping",dir:e},{title:"Legend",dir:Z},{title:"Event and Action",dir:H}]},{title:"How To Guides",dir:S,children:[{title:"Common Charts",dir:x,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:D},{title:"Stacked Bar",dir:F},{title:"Bar Racing",dir:J},{title:"Bar Polar",dir:U,draft:t},{title:"Waterfall",dir:L}]},{title:"Line",dir:z,children:[{title:"Basic Line",dir:V},{title:"Stacked Line",dir:T},{title:"Area Chart",dir:P},{title:"Smoothed Line",dir:R},{title:"Step Line",dir:O}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:M},{title:"Ring Style",dir:k},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:K,children:[{title:"Basic Scatter",dir:Y}]}]},{title:"Common Components",dir:N,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:Q}]}]},{title:"Mobile",dir:i,draft:t},{title:"Cross Platform",dir:X,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:_},{title:"Drilldown",dir:j,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:$}]},{title:"Animation",dir:q,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:it,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:et,draft:t},{title:"Intelligent Pointer Snapping",dir:rt}]}]},{title:"Best Practices",dir:dt,children:[{title:"Mobile Optimization",dir:i,draft:t},{title:lt,dir:at},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:gt}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:nt}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/zh/how-to/chart-types/pie/doughnut",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/zh/how-to/chart-types/pie/rose/index.html b/docs/zh/how-to/chart-types/pie/rose/index.html
new file mode 100644
index 0000000..2515696
--- /dev/null
+++ b/docs/zh/how-to/chart-types/pie/rose/index.html
@@ -0,0 +1,71 @@
+<!doctype html>
+<html data-n-head-ssr lang="zh-CN" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh-CN%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>南丁格尔图(玫瑰图) - 饼图 - 常用图表类型 - 应用篇 - 使用手册 - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="zh"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/zh/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/zh/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/zh/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/zh/index.html" class="navbar-brand"><img src="https://echarts.apache.org/zh/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/zh/index.html">首页</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">文档<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/feature.html">特性</a></li><li><a href="https://echarts.apache.org/handbook/zh/get-started/">使用手册</a></li><li><a href="https://echarts.apache.org/zh/api.html">API</a></li><li><a href="https://echarts.apache.org/zh/option.html">配置项手册</a></li><li><a href="https://echarts.apache.org/zh/changelog.html">版本记录</a></li><li><a href="https://echarts.apache.org/zh/faq.html">常见问题</a></li><li><a href="https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide">v6 升级指南</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">下载<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/download.html">下载</a></li><li><a href="https://echarts.apache.org/zh/download-theme.html">主题下载</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">自定义系列下载<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/download-extension.html">扩展下载</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/zh/index.html">示例</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">资源<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/spreadsheet.html">表格工具</a></li><li><a href="https://echarts.apache.org/zh/theme-builder.html">主题构建工具</a></li><li><a href="https://echarts.apache.org/zh/cheat-sheet.html">术语速查手册</a></li><li><a href="https://echarts.apache.org/zh/resources.html">更多资源</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">社区<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/events.html">活动</a></li><li><a href="https://echarts.apache.org/zh/committers.html">贡献者列表</a></li><li><a href="https://echarts.apache.org/zh/maillist.html">邮件列表</a></li><li><a href="https://echarts.apache.org/zh/contributing.html">如何贡献</a></li><li><a href="https://echarts.apache.org/zh/dependencies.html">依赖项</a></li><li><a href="https://echarts.apache.org/zh/coding-standard.html">代码规范</a></li><li><a href="https://github.com/apache/echarts" target="_blank">源码(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/security.html">安全</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">版权<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">活动<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">捐赠<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">鸣谢<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("en")'>EN</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/zh/get-started" class="nav-link"><span class="title">快速上手</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">入门篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/basics/download" class="nav-link"><span class="title">获取 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/import" class="nav-link"><span class="title">在项目中引入 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/basics/help" class="nav-link"><span class="title">寻求帮助</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">版本特性</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 特性介绍</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">v5 升级 v6 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">v4 升级 v5 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">概念篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/concepts/chart-size" class="nav-link"><span class="title">图表容器及大小</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/style" class="nav-link"><span class="title">样式</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/dataset" class="nav-link"><span class="title">数据集</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/data-transform" class="nav-link"><span class="title">数据转换</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/axis" class="nav-link"><span class="title">坐标轴</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/visual-map" class="nav-link"><span class="title">视觉映射</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/legend" class="nav-link"><span class="title">图例</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/event" class="nav-link"><span class="title">事件与行为</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">应用篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">常用图表类型</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a class="nav-link"><span class="title">柱状图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">基础柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">堆叠柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">动态排序柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">阶梯瀑布图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">折线图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">基础折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">堆叠折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/area-line" class="nav-link"><span class="title">区域面积图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">平滑曲线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/step-line" class="nav-link"><span class="title">阶梯线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">饼图</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level3"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">基础饼图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">圆环图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/rose" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">南丁格尔图(玫瑰图)</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">散点图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">基础散点图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">常用组件</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">地理坐标系(Geo)</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG 底图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">跨平台方案</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/server" class="nav-link"><span class="title">服务端渲染</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/wechat-app" class="nav-link"><span class="title">微信小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/baidu-app" class="nav-link"><span class="title">百度智能小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">数据处理</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/data/dynamic-data" class="nav-link"><span class="title">动态的异步数据</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">标签</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/label/rich-text" class="nav-link"><span class="title">富文本标签</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">动画</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/animation/transition" class="nav-link"><span class="title">数据过渡动画</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">交互</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/drag" class="nav-link"><span class="title">拖拽的实现</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">智能指针吸附</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">最佳实践</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/aria" class="nav-link"><span class="title">无障碍访问</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/security" class="nav-link"><span class="title">安全指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">编辑本文档</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/meta/edit-guide" class="nav-link"><span class="title">文档编辑指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="%E5%8D%97%E4%B8%81%E6%A0%BC%E5%B0%94%E5%9B%BE%EF%BC%88%E7%8E%AB%E7%91%B0%E5%9B%BE%EF%BC%89" tabindex="-1">南丁格尔图(玫瑰图)</h1> <p>南丁格尔图又称玫瑰图,通常用弧度相同但半径不同的扇形表示各个类目。</p> <p>ECharts 可以通过将饼图的 <a href="https://echarts.apache.org/option.html#series-pie.roseType"><code>series.roseType</code></a> 值设为 <code>'area'</code> 实现南丁格尔图,其他配置项和饼图是相同的。</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  series: [
+    {
+      type: 'pie',
+      data: [
+        {
+          value: 100,
+          name: 'A'
+        },
+        {
+          value: 200,
+          name: 'B'
+        },
+        {
+          value: 300,
+          name: 'C'
+        },
+        {
+          value: 400,
+          name: 'D'
+        },
+        {
+          value: 500,
+          name: 'E'
+        }
+      ],
+      roseType: 'area'
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'pie'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">100</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'A'</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">200</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'B'</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">300</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'C'</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">400</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'D'</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">500</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'E'</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">roseType</span><span class="token operator">:</span> <span class="token string">'area'</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">本文贡献者</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/zh/how-to/chart-types/pie/rose.md" title="编辑本文" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">在 GitHub 上编辑本页</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,i,e,r,d,l,a,n,o,s,c,h,g,C,A,I,p,m,B,f,u,b,v,E,S,H,w,y,P,D,O,K,V,x,G,L,M,k,R,W,T,Y,z,Z,_,F,X,J,N,Q,U,$,j,q,tt,it,et,rt,dt,lt,at,nt,ot){return{layout:"default",data:[{html:'<h1 id="%E5%8D%97%E4%B8%81%E6%A0%BC%E5%B0%94%E5%9B%BE%EF%BC%88%E7%8E%AB%E7%91%B0%E5%9B%BE%EF%BC%89" tabindex="-1">南丁格尔图(玫瑰图)</h1>\n<p>南丁格尔图又称玫瑰图,通常用弧度相同但半径不同的扇形表示各个类目。</p>\n<p>ECharts 可以通过将饼图的 <a href="https://echarts.apache.org/option.html#series-pie.roseType"><code>series.roseType</code></a> 值设为 <code>\'area\'</code> 实现南丁格尔图,其他配置项和饼图是相同的。</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHNlcmllczogWwogICAgewogICAgICB0eXBlOiAncGllJywKICAgICAgZGF0YTogWwogICAgICAgIHsKICAgICAgICAgIHZhbHVlOiAxMDAsCiAgICAgICAgICBuYW1lOiAnQScKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgIHZhbHVlOiAyMDAsCiAgICAgICAgICBuYW1lOiAnQicKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgIHZhbHVlOiAzMDAsCiAgICAgICAgICBuYW1lOiAnQycKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgIHZhbHVlOiA0MDAsCiAgICAgICAgICBuYW1lOiAnRCcKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgIHZhbHVlOiA1MDAsCiAgICAgICAgICBuYW1lOiAnRScKICAgICAgICB9CiAgICAgIF0sCiAgICAgIHJvc2VUeXBlOiAnYXJlYScKICAgIH0KICBdCn07\'" v-bind="{}" />\n',postPath:"zh/how-to/chart-types/pie/rose",title:"南丁格尔图(玫瑰图) - 饼图 - 常用图表类型 - 应用篇"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:r},{title:"入门篇",dir:d,children:[{title:"获取 ECharts",dir:l},{title:"在项目中引入 ECharts",dir:a},{title:"资源列表",dir:n,draft:t},{title:"寻求帮助",dir:o},{title:"版本特性",dir:s,children:[{title:"ECharts 6 特性介绍",dir:c},{title:"v5 升级 v6 指南",dir:h},{title:"5.0",dir:g},{title:"v4 升级 v5 指南",dir:C},{title:5.2,dir:A},{title:5.3,dir:I},{title:5.4,dir:p},{title:5.5,dir:m},{title:5.6,dir:B}]}]},{title:"概念篇",dir:f,children:[{title:"图表容器及大小",dir:u},{title:"配置项",dir:b,draft:t},{title:"系列",dir:v,draft:t},{title:"样式",dir:E},{title:"数据集",dir:S},{title:"数据转换",dir:H},{title:"坐标系",dir:w,draft:t},{title:"坐标轴",dir:y},{title:"视觉映射",dir:e},{title:"图例",dir:P},{title:"事件与行为",dir:D}]},{title:"应用篇",dir:O,children:[{title:"常用图表类型",dir:K,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:V},{title:"堆叠柱状图",dir:x},{title:"动态排序柱状图",dir:G},{title:"极坐标系柱状图",dir:L,draft:t},{title:"阶梯瀑布图",dir:M},{title:"视觉映射的柱状图",dir:e,draft:t}]},{title:"折线图",dir:k,children:[{title:"基础折线图",dir:R},{title:"堆叠折线图",dir:W},{title:"区域面积图",dir:T},{title:"平滑曲线图",dir:Y},{title:"阶梯线图",dir:z}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:Z},{title:"圆环图",dir:_},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:F,children:[{title:"基础散点图",dir:X}]}]},{title:"常用组件",dir:J,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:N}]}]},{title:"移动端优化",dir:i,draft:t},{title:"跨平台方案",dir:Q,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:U},{title:"数据下钻",dir:$,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:j}]},{title:"动画",dir:q,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:it,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:et,draft:t},{title:"智能指针吸附",dir:rt}]}]},{title:"最佳实践",dir:dt,children:[{title:"移动端优化",dir:i,draft:t},{title:lt,dir:at},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:nt}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:ot}]}],en:[{title:"Get Started",dir:r},{title:"Basics",dir:d,children:[{title:"Download ECharts",dir:l},{title:"Import ECharts",dir:a},{title:"Resources",dir:n,draft:t},{title:"Get Help",dir:o},{title:"What's New",dir:s,children:[{title:"ECharts 6 Features",dir:c},{title:"Migration from v5 to v6",dir:h},{title:"5.0",dir:g},{title:"Migration from v4 to v5",dir:C},{title:5.2,dir:A},{title:5.3,dir:I},{title:5.4,dir:p},{title:5.5,dir:m},{title:5.6,dir:B}]}]},{title:"Concepts",dir:f,children:[{title:"Chart Container",dir:u},{title:"Chart Option",dir:b,draft:t},{title:"Series",dir:v,draft:t},{title:"Style",dir:E},{title:"Dataset",dir:S},{title:"Data Transform",dir:H},{title:"Coordinate",dir:w,draft:t},{title:"Axis",dir:y},{title:"Visual Mapping",dir:e},{title:"Legend",dir:P},{title:"Event and Action",dir:D}]},{title:"How To Guides",dir:O,children:[{title:"Common Charts",dir:K,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:V},{title:"Stacked Bar",dir:x},{title:"Bar Racing",dir:G},{title:"Bar Polar",dir:L,draft:t},{title:"Waterfall",dir:M}]},{title:"Line",dir:k,children:[{title:"Basic Line",dir:R},{title:"Stacked Line",dir:W},{title:"Area Chart",dir:T},{title:"Smoothed Line",dir:Y},{title:"Step Line",dir:z}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:Z},{title:"Ring Style",dir:_},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:F,children:[{title:"Basic Scatter",dir:X}]}]},{title:"Common Components",dir:J,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:N}]}]},{title:"Mobile",dir:i,draft:t},{title:"Cross Platform",dir:Q,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:U},{title:"Drilldown",dir:$,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:j}]},{title:"Animation",dir:q,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:it,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:et,draft:t},{title:"Intelligent Pointer Snapping",dir:rt}]}]},{title:"Best Practices",dir:dt,children:[{title:"Mobile Optimization",dir:i,draft:t},{title:lt,dir:at},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:nt}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:ot}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/zh/how-to/chart-types/pie/rose",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/zh/how-to/chart-types/scatter/basic-scatter/index.html b/docs/zh/how-to/chart-types/scatter/basic-scatter/index.html
new file mode 100644
index 0000000..6889168
--- /dev/null
+++ b/docs/zh/how-to/chart-types/scatter/basic-scatter/index.html
@@ -0,0 +1,124 @@
+<!doctype html>
+<html data-n-head-ssr lang="zh-CN" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh-CN%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>基础散点图 - 散点图 - 常用图表类型 - 应用篇 - 使用手册 - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="zh"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/zh/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/zh/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/zh/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/zh/index.html" class="navbar-brand"><img src="https://echarts.apache.org/zh/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/zh/index.html">首页</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">文档<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/feature.html">特性</a></li><li><a href="https://echarts.apache.org/handbook/zh/get-started/">使用手册</a></li><li><a href="https://echarts.apache.org/zh/api.html">API</a></li><li><a href="https://echarts.apache.org/zh/option.html">配置项手册</a></li><li><a href="https://echarts.apache.org/zh/changelog.html">版本记录</a></li><li><a href="https://echarts.apache.org/zh/faq.html">常见问题</a></li><li><a href="https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide">v6 升级指南</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">下载<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/download.html">下载</a></li><li><a href="https://echarts.apache.org/zh/download-theme.html">主题下载</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">自定义系列下载<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/download-extension.html">扩展下载</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/zh/index.html">示例</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">资源<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/spreadsheet.html">表格工具</a></li><li><a href="https://echarts.apache.org/zh/theme-builder.html">主题构建工具</a></li><li><a href="https://echarts.apache.org/zh/cheat-sheet.html">术语速查手册</a></li><li><a href="https://echarts.apache.org/zh/resources.html">更多资源</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">社区<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/events.html">活动</a></li><li><a href="https://echarts.apache.org/zh/committers.html">贡献者列表</a></li><li><a href="https://echarts.apache.org/zh/maillist.html">邮件列表</a></li><li><a href="https://echarts.apache.org/zh/contributing.html">如何贡献</a></li><li><a href="https://echarts.apache.org/zh/dependencies.html">依赖项</a></li><li><a href="https://echarts.apache.org/zh/coding-standard.html">代码规范</a></li><li><a href="https://github.com/apache/echarts" target="_blank">源码(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/security.html">安全</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">版权<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">活动<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">捐赠<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">鸣谢<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("en")'>EN</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/zh/get-started" class="nav-link"><span class="title">快速上手</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">入门篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/basics/download" class="nav-link"><span class="title">获取 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/import" class="nav-link"><span class="title">在项目中引入 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/basics/help" class="nav-link"><span class="title">寻求帮助</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">版本特性</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 特性介绍</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">v5 升级 v6 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">v4 升级 v5 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">概念篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/concepts/chart-size" class="nav-link"><span class="title">图表容器及大小</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/style" class="nav-link"><span class="title">样式</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/dataset" class="nav-link"><span class="title">数据集</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/data-transform" class="nav-link"><span class="title">数据转换</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/axis" class="nav-link"><span class="title">坐标轴</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/visual-map" class="nav-link"><span class="title">视觉映射</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/legend" class="nav-link"><span class="title">图例</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/event" class="nav-link"><span class="title">事件与行为</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">应用篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">常用图表类型</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a class="nav-link"><span class="title">柱状图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">基础柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">堆叠柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">动态排序柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">阶梯瀑布图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">折线图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">基础折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">堆叠折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/area-line" class="nav-link"><span class="title">区域面积图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">平滑曲线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/step-line" class="nav-link"><span class="title">阶梯线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">饼图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">基础饼图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">圆环图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/rose" class="nav-link"><span class="title">南丁格尔图(玫瑰图)</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">散点图</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level3"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/scatter/basic-scatter" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">基础散点图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">常用组件</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">地理坐标系(Geo)</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG 底图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">跨平台方案</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/server" class="nav-link"><span class="title">服务端渲染</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/wechat-app" class="nav-link"><span class="title">微信小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/baidu-app" class="nav-link"><span class="title">百度智能小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">数据处理</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/data/dynamic-data" class="nav-link"><span class="title">动态的异步数据</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">标签</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/label/rich-text" class="nav-link"><span class="title">富文本标签</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">动画</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/animation/transition" class="nav-link"><span class="title">数据过渡动画</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">交互</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/drag" class="nav-link"><span class="title">拖拽的实现</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">智能指针吸附</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">最佳实践</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/aria" class="nav-link"><span class="title">无障碍访问</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/security" class="nav-link"><span class="title">安全指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">编辑本文档</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/meta/edit-guide" class="nav-link"><span class="title">文档编辑指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="%E5%9F%BA%E7%A1%80%E6%95%A3%E7%82%B9%E5%9B%BE" tabindex="-1">基础散点图</h1> <p>散点图,也是一种常见的图表类型。散点图由许多“点”组成,有时,这些点用来表示数据在坐标系中的位置(比如在笛卡尔坐标系下,表示数据在 x 轴和 y 轴上的坐标;在地图坐标系下,表示数据在地图上的某个位置等);有时,这些点的大小、颜色等属性也可以映射到数据值,用以表现高维数据。</p> <h2 id="%E6%9C%80%E7%AE%80%E5%8D%95%E7%9A%84%E6%95%A3%E7%82%B9%E5%9B%BE" tabindex="-1">最简单的散点图</h2> <p>下面是一个横坐标为类目轴、纵坐标为数值轴的最简单的散点图配置:</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    data: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']
+  },
+  yAxis: {},
+  series: [
+    {
+      type: 'scatter',
+      data: [220, 182, 191, 234, 290, 330, 310]
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'Sun'</span><span class="token punctuation">,</span> <span class="token string">'Mon'</span><span class="token punctuation">,</span> <span class="token string">'Tue'</span><span class="token punctuation">,</span> <span class="token string">'Wed'</span><span class="token punctuation">,</span> <span class="token string">'Thu'</span><span class="token punctuation">,</span> <span class="token string">'Fri'</span><span class="token punctuation">,</span> <span class="token string">'Sat'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'scatter'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">220</span><span class="token punctuation">,</span> <span class="token number">182</span><span class="token punctuation">,</span> <span class="token number">191</span><span class="token punctuation">,</span> <span class="token number">234</span><span class="token punctuation">,</span> <span class="token number">290</span><span class="token punctuation">,</span> <span class="token number">330</span><span class="token punctuation">,</span> <span class="token number">310</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <h2 id="%E7%AC%9B%E5%8D%A1%E5%B0%94%E5%9D%90%E6%A0%87%E7%B3%BB%E4%B8%8B%E7%9A%84%E6%95%A3%E7%82%B9%E5%9B%BE" tabindex="-1">笛卡尔坐标系下的散点图</h2> <p>在上文的例子中,散点图的横坐标都是离散的类目轴,而纵坐标都是连续的数值轴。而对于散点图而言,另一种常见的场景是,两个坐标轴均为连续的数值轴,也就是笛卡尔坐标系。这时的系列形式略有不同,数据的横坐标和纵坐标一同写在 <code>data</code> 中,而非坐标轴中。</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {},
+  yAxis: {},
+  series: [
+    {
+      type: 'scatter',
+      data: [
+        [10, 5],
+        [0, 8],
+        [6, 10],
+        [2, 12],
+        [8, 9]
+      ]
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'scatter'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">[</span><span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">8</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token number">6</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">12</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">[</span><span class="token number">8</span><span class="token punctuation">,</span> <span class="token number">9</span><span class="token punctuation">]</span>
+      <span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <h2 id="%E6%95%A3%E7%82%B9%E5%9B%BE%E6%A0%B7%E5%BC%8F%E8%AE%BE%E7%BD%AE" tabindex="-1">散点图样式设置</h2> <h3 id="%E5%9B%BE%E5%BD%A2%E7%9A%84%E5%BD%A2%E7%8A%B6" tabindex="-1">图形的形状</h3> <p>图形(symbol)指的是散点图中数据“点”的形状。有三类图形可选,一种是 ECharts 内置形状,第二种是图片,第三种是 SVG 的路径。</p> <p>ECharts 内置形状包括:圆形、矩形、圆角矩形、三角形、菱形、大头针形、箭头形,分别对应<code>'circle'</code>、<code>'rect'</code>、<code>'roundRect'</code>、<code>'triangle'</code>、<code>'diamond'</code>、<code>'pin'</code>、<code>'arrow'</code>。使用内置形状时,只要将 <code>symbol</code> 属性指定为形状名称对应的字符串即可。</p> <p>如果想要将图形指定为任意的图片,以 <code>'image://'</code> 开头,后面跟图片的绝对或相对地址。形如:<code>'image://http://example.com/xxx.png'</code> 或 <code>'image://./xxx.png'</code>。</p> <p>除此之外,还支持 SVG 的路径作为矢量图形,将 <code>symbol</code> 设置为以 <code>'path://'</code> 开头的 SVG 路径即可。使用矢量图形的好处是,图片不会因为缩放而产生锯齿或模糊,并且通常而言比图片形式的文件大小更小。路径的查看方法为,打开一个 <code>SVG</code> 文件,找到形如 <code>&lt;path d="M… L…">&lt;/path></code> 的路径,将 <code>d</code> 的值添加在 <code>'path://'</code> 后即可。</p> <p>下面,我们展示一个将图形设置为矢量爱心形状的方式。</p> <p>首先,我们需要一个爱心的 SVG 文件,可以使用矢量编辑软件绘制,或者从网上下载到相关资源。其内容如下:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-xml line-numbers"><code><span class="token prolog">&lt;?xml version="1.0" encoding="iso-8859-1"?></span>
+<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>svg</span> <span class="token attr-name">version</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>1.1<span class="token punctuation">"</span></span> <span class="token attr-name">xmlns</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>http://www.w3.org/2000/svg<span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">xmlns:</span>xlink</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>http://www.w3.org/1999/xlink<span class="token punctuation">"</span></span> <span class="token attr-name">x</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>0px<span class="token punctuation">"</span></span> <span class="token attr-name">y</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>0px<span class="token punctuation">"</span></span> <span class="token attr-name">viewBox</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>0 0 51.997 51.997<span class="token punctuation">"</span></span> <span class="token attr-name">style</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>enable-background:new 0 0 51.997 51.997;<span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">xml:</span>space</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>preserve<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
+    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>path</span> <span class="token attr-name">d</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>M51.911,16.242C51.152,7.888,45.239,1.827,37.839,1.827c-4.93,0-9.444,2.653-11.984,6.905 c-2.517-4.307-6.846-6.906-11.697-6.906c-7.399,0-13.313,6.061-14.071,14.415c-0.06,0.369-0.306,2.311,0.442,5.478 c1.078,4.568,3.568,8.723,7.199,12.013l18.115,16.439l18.426-16.438c3.631-3.291,6.121-7.445,7.199-12.014 C52.216,18.553,51.97,16.611,51.911,16.242z<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span>
+<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>svg</span><span class="token punctuation">></span></span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>在 ECharts 的 <code>symbol</code> 配置项中,我们使用 <code>d</code> 的值作为路径。</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    data: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']
+  },
+  yAxis: {},
+  series: [
+    {
+      type: 'scatter',
+      data: [220, 182, 191, 234, 290, 330, 310],
+      symbolSize: 20,
+      symbol:
+        'path://M51.911,16.242C51.152,7.888,45.239,1.827,37.839,1.827c-4.93,0-9.444,2.653-11.984,6.905 c-2.517-4.307-6.846-6.906-11.697-6.906c-7.399,0-13.313,6.061-14.071,14.415c-0.06,0.369-0.306,2.311,0.442,5.478 c1.078,4.568,3.568,8.723,7.199,12.013l18.115,16.439l18.426-16.438c3.631-3.291,6.121-7.445,7.199-12.014 C52.216,18.553,51.97,16.611,51.911,16.242z'
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'Sun'</span><span class="token punctuation">,</span> <span class="token string">'Mon'</span><span class="token punctuation">,</span> <span class="token string">'Tue'</span><span class="token punctuation">,</span> <span class="token string">'Wed'</span><span class="token punctuation">,</span> <span class="token string">'Thu'</span><span class="token punctuation">,</span> <span class="token string">'Fri'</span><span class="token punctuation">,</span> <span class="token string">'Sat'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'scatter'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">220</span><span class="token punctuation">,</span> <span class="token number">182</span><span class="token punctuation">,</span> <span class="token number">191</span><span class="token punctuation">,</span> <span class="token number">234</span><span class="token punctuation">,</span> <span class="token number">290</span><span class="token punctuation">,</span> <span class="token number">330</span><span class="token punctuation">,</span> <span class="token number">310</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">symbolSize</span><span class="token operator">:</span> <span class="token number">20</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">symbol</span><span class="token operator">:</span>
+        <span class="token string">'path://M51.911,16.242C51.152,7.888,45.239,1.827,37.839,1.827c-4.93,0-9.444,2.653-11.984,6.905 c-2.517-4.307-6.846-6.906-11.697-6.906c-7.399,0-13.313,6.061-14.071,14.415c-0.06,0.369-0.306,2.311,0.442,5.478 c1.078,4.568,3.568,8.723,7.199,12.013l18.115,16.439l18.426-16.438c3.631-3.291,6.121-7.445,7.199-12.014 C52.216,18.553,51.97,16.611,51.911,16.242z'</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>这样,就能得到爱心形状的图形作为点的形状了。</p> <h3 id="%E5%9B%BE%E5%BD%A2%E7%9A%84%E5%A4%A7%E5%B0%8F" tabindex="-1">图形的大小</h3> <p>图形大小可以使用 <a href="https://echarts.apache.org/option.html#series-scatter.symbolSize"><code>series.symbolSize</code></a> 控制。它既可以是一个表示图形大小的像素值,也可以是一个包含两个 number 元素的数组,分别表示图形的宽和高。</p> <p>除此之外,它还可以是一个回调函数,其参数格式为:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code><span class="token punctuation">(</span>value<span class="token operator">:</span> <span class="token builtin">Array</span> <span class="token operator">|</span> <span class="token builtin">number</span><span class="token punctuation">,</span> params<span class="token operator">:</span> Object<span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token builtin">number</span> <span class="token operator">|</span> <span class="token builtin">Array</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>第一个参数为数据值,第二个参数是数据项的其他参数。</p> <p>在下面的例子中,我们将散点图点的大小设置为与其数据值成正比。</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    data: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']
+  },
+  yAxis: {},
+  series: [
+    {
+      type: 'scatter',
+      data: [220, 182, 191, 234, 290, 330, 310],
+      symbolSize: function(value) {
+        return value / 10;
+      }
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'Sun'</span><span class="token punctuation">,</span> <span class="token string">'Mon'</span><span class="token punctuation">,</span> <span class="token string">'Tue'</span><span class="token punctuation">,</span> <span class="token string">'Wed'</span><span class="token punctuation">,</span> <span class="token string">'Thu'</span><span class="token punctuation">,</span> <span class="token string">'Fri'</span><span class="token punctuation">,</span> <span class="token string">'Sat'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'scatter'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">220</span><span class="token punctuation">,</span> <span class="token number">182</span><span class="token punctuation">,</span> <span class="token number">191</span><span class="token punctuation">,</span> <span class="token number">234</span><span class="token punctuation">,</span> <span class="token number">290</span><span class="token punctuation">,</span> <span class="token number">330</span><span class="token punctuation">,</span> <span class="token number">310</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token function-variable function">symbolSize</span><span class="token operator">:</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">value</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+        <span class="token keyword">return</span> value <span class="token operator">/</span> <span class="token number">10</span><span class="token punctuation">;</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">本文贡献者</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/zh/how-to/chart-types/scatter/basic-scatter.md" title="编辑本文" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">在 GitHub 上编辑本页</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(i,t,e,d,r,l,a,c,n,o,s,g,h,C,I,A,M,p,w,E,L,B,N,b,u,y,m,T,j,x,z,S,D,O,f,v,G,k,V,J,H,Q,W,Y,F,P,Z,U,R,K,X,_,q,$,ii,ti,ei,di,ri,li,ai,ci,ni){return{layout:"default",data:[{html:'<h1 id="%E5%9F%BA%E7%A1%80%E6%95%A3%E7%82%B9%E5%9B%BE" tabindex="-1">基础散点图</h1>\n<p>散点图,也是一种常见的图表类型。散点图由许多“点”组成,有时,这些点用来表示数据在坐标系中的位置(比如在笛卡尔坐标系下,表示数据在 x 轴和 y 轴上的坐标;在地图坐标系下,表示数据在地图上的某个位置等);有时,这些点的大小、颜色等属性也可以映射到数据值,用以表现高维数据。</p>\n<h2 id="%E6%9C%80%E7%AE%80%E5%8D%95%E7%9A%84%E6%95%A3%E7%82%B9%E5%9B%BE" tabindex="-1">最简单的散点图</h2>\n<p>下面是一个横坐标为类目轴、纵坐标为数值轴的最简单的散点图配置:</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBkYXRhOiBbJ1N1bicsICdNb24nLCAnVHVlJywgJ1dlZCcsICdUaHUnLCAnRnJpJywgJ1NhdCddCiAgfSwKICB5QXhpczoge30sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIHR5cGU6ICdzY2F0dGVyJywKICAgICAgZGF0YTogWzIyMCwgMTgyLCAxOTEsIDIzNCwgMjkwLCAzMzAsIDMxMF0KICAgIH0KICBdCn07\'" v-bind="{}" />\n<h2 id="%E7%AC%9B%E5%8D%A1%E5%B0%94%E5%9D%90%E6%A0%87%E7%B3%BB%E4%B8%8B%E7%9A%84%E6%95%A3%E7%82%B9%E5%9B%BE" tabindex="-1">笛卡尔坐标系下的散点图</h2>\n<p>在上文的例子中,散点图的横坐标都是离散的类目轴,而纵坐标都是连续的数值轴。而对于散点图而言,另一种常见的场景是,两个坐标轴均为连续的数值轴,也就是笛卡尔坐标系。这时的系列形式略有不同,数据的横坐标和纵坐标一同写在 <code>data</code> 中,而非坐标轴中。</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7fSwKICB5QXhpczoge30sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIHR5cGU6ICdzY2F0dGVyJywKICAgICAgZGF0YTogWwogICAgICAgIFsxMCwgNV0sCiAgICAgICAgWzAsIDhdLAogICAgICAgIFs2LCAxMF0sCiAgICAgICAgWzIsIDEyXSwKICAgICAgICBbOCwgOV0KICAgICAgXQogICAgfQogIF0KfTs\'" v-bind="{}" />\n<h2 id="%E6%95%A3%E7%82%B9%E5%9B%BE%E6%A0%B7%E5%BC%8F%E8%AE%BE%E7%BD%AE" tabindex="-1">散点图样式设置</h2>\n<h3 id="%E5%9B%BE%E5%BD%A2%E7%9A%84%E5%BD%A2%E7%8A%B6" tabindex="-1">图形的形状</h3>\n<p>图形(symbol)指的是散点图中数据“点”的形状。有三类图形可选,一种是 ECharts 内置形状,第二种是图片,第三种是 SVG 的路径。</p>\n<p>ECharts 内置形状包括:圆形、矩形、圆角矩形、三角形、菱形、大头针形、箭头形,分别对应<code>\'circle\'</code>、<code>\'rect\'</code>、<code>\'roundRect\'</code>、<code>\'triangle\'</code>、<code>\'diamond\'</code>、<code>\'pin\'</code>、<code>\'arrow\'</code>。使用内置形状时,只要将 <code>symbol</code> 属性指定为形状名称对应的字符串即可。</p>\n<p>如果想要将图形指定为任意的图片,以 <code>\'image://\'</code> 开头,后面跟图片的绝对或相对地址。形如:<code>\'image://http://example.com/xxx.png\'</code> 或 <code>\'image://./xxx.png\'</code>。</p>\n<p>除此之外,还支持 SVG 的路径作为矢量图形,将 <code>symbol</code> 设置为以 <code>\'path://\'</code> 开头的 SVG 路径即可。使用矢量图形的好处是,图片不会因为缩放而产生锯齿或模糊,并且通常而言比图片形式的文件大小更小。路径的查看方法为,打开一个 <code>SVG</code> 文件,找到形如 <code>&lt;path d=&quot;M… L…&quot;&gt;&lt;/path&gt;</code> 的路径,将 <code>d</code> 的值添加在 <code>\'path://\'</code> 后即可。</p>\n<p>下面,我们展示一个将图形设置为矢量爱心形状的方式。</p>\n<p>首先,我们需要一个爱心的 SVG 文件,可以使用矢量编辑软件绘制,或者从网上下载到相关资源。其内容如下:</p>\n<md-code-block lang="xml" code="\'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI_Pgo8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHZpZXdCb3g9IjAgMCA1MS45OTcgNTEuOTk3IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MS45OTcgNTEuOTk3OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI-CiAgICA8cGF0aCBkPSJNNTEuOTExLDE2LjI0MkM1MS4xNTIsNy44ODgsNDUuMjM5LDEuODI3LDM3LjgzOSwxLjgyN2MtNC45MywwLTkuNDQ0LDIuNjUzLTExLjk4NCw2LjkwNSBjLTIuNTE3LTQuMzA3LTYuODQ2LTYuOTA2LTExLjY5Ny02LjkwNmMtNy4zOTksMC0xMy4zMTMsNi4wNjEtMTQuMDcxLDE0LjQxNWMtMC4wNiwwLjM2OS0wLjMwNiwyLjMxMSwwLjQ0Miw1LjQ3OCBjMS4wNzgsNC41NjgsMy41NjgsOC43MjMsNy4xOTksMTIuMDEzbDE4LjExNSwxNi40MzlsMTguNDI2LTE2LjQzOGMzLjYzMS0zLjI5MSw2LjEyMS03LjQ0NSw3LjE5OS0xMi4wMTQgQzUyLjIxNiwxOC41NTMsNTEuOTcsMTYuNjExLDUxLjkxMSwxNi4yNDJ6Ii8-Cjwvc3ZnPg\'" line-highlights="\'\'" />\n<p>在 ECharts 的 <code>symbol</code> 配置项中,我们使用 <code>d</code> 的值作为路径。</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBkYXRhOiBbJ1N1bicsICdNb24nLCAnVHVlJywgJ1dlZCcsICdUaHUnLCAnRnJpJywgJ1NhdCddCiAgfSwKICB5QXhpczoge30sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIHR5cGU6ICdzY2F0dGVyJywKICAgICAgZGF0YTogWzIyMCwgMTgyLCAxOTEsIDIzNCwgMjkwLCAzMzAsIDMxMF0sCiAgICAgIHN5bWJvbFNpemU6IDIwLAogICAgICBzeW1ib2w6CiAgICAgICAgJ3BhdGg6Ly9NNTEuOTExLDE2LjI0MkM1MS4xNTIsNy44ODgsNDUuMjM5LDEuODI3LDM3LjgzOSwxLjgyN2MtNC45MywwLTkuNDQ0LDIuNjUzLTExLjk4NCw2LjkwNSBjLTIuNTE3LTQuMzA3LTYuODQ2LTYuOTA2LTExLjY5Ny02LjkwNmMtNy4zOTksMC0xMy4zMTMsNi4wNjEtMTQuMDcxLDE0LjQxNWMtMC4wNiwwLjM2OS0wLjMwNiwyLjMxMSwwLjQ0Miw1LjQ3OCBjMS4wNzgsNC41NjgsMy41NjgsOC43MjMsNy4xOTksMTIuMDEzbDE4LjExNSwxNi40MzlsMTguNDI2LTE2LjQzOGMzLjYzMS0zLjI5MSw2LjEyMS03LjQ0NSw3LjE5OS0xMi4wMTQgQzUyLjIxNiwxOC41NTMsNTEuOTcsMTYuNjExLDUxLjkxMSwxNi4yNDJ6JwogICAgfQogIF0KfTs\'" v-bind="{}" />\n<p>这样,就能得到爱心形状的图形作为点的形状了。</p>\n<h3 id="%E5%9B%BE%E5%BD%A2%E7%9A%84%E5%A4%A7%E5%B0%8F" tabindex="-1">图形的大小</h3>\n<p>图形大小可以使用 <a href="https://echarts.apache.org/option.html#series-scatter.symbolSize"><code>series.symbolSize</code></a> 控制。它既可以是一个表示图形大小的像素值,也可以是一个包含两个 number 元素的数组,分别表示图形的宽和高。</p>\n<p>除此之外,它还可以是一个回调函数,其参数格式为:</p>\n<md-code-block lang="ts" code="\'KHZhbHVlOiBBcnJheSB8IG51bWJlciwgcGFyYW1zOiBPYmplY3QpID0-IG51bWJlciB8IEFycmF5Ow\'" line-highlights="\'\'" />\n<p>第一个参数为数据值,第二个参数是数据项的其他参数。</p>\n<p>在下面的例子中,我们将散点图点的大小设置为与其数据值成正比。</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBkYXRhOiBbJ1N1bicsICdNb24nLCAnVHVlJywgJ1dlZCcsICdUaHUnLCAnRnJpJywgJ1NhdCddCiAgfSwKICB5QXhpczoge30sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIHR5cGU6ICdzY2F0dGVyJywKICAgICAgZGF0YTogWzIyMCwgMTgyLCAxOTEsIDIzNCwgMjkwLCAzMzAsIDMxMF0sCiAgICAgIHN5bWJvbFNpemU6IGZ1bmN0aW9uKHZhbHVlKSB7CiAgICAgICAgcmV0dXJuIHZhbHVlIC8gMTA7CiAgICAgIH0KICAgIH0KICBdCn07\'" v-bind="{}" />\n',postPath:"zh/how-to/chart-types/scatter/basic-scatter",title:"基础散点图 - 散点图 - 常用图表类型 - 应用篇"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:d},{title:"入门篇",dir:r,children:[{title:"获取 ECharts",dir:l},{title:"在项目中引入 ECharts",dir:a},{title:"资源列表",dir:c,draft:i},{title:"寻求帮助",dir:n},{title:"版本特性",dir:o,children:[{title:"ECharts 6 特性介绍",dir:s},{title:"v5 升级 v6 指南",dir:g},{title:"5.0",dir:h},{title:"v4 升级 v5 指南",dir:C},{title:5.2,dir:I},{title:5.3,dir:A},{title:5.4,dir:M},{title:5.5,dir:p},{title:5.6,dir:w}]}]},{title:"概念篇",dir:E,children:[{title:"图表容器及大小",dir:L},{title:"配置项",dir:B,draft:i},{title:"系列",dir:N,draft:i},{title:"样式",dir:b},{title:"数据集",dir:u},{title:"数据转换",dir:y},{title:"坐标系",dir:m,draft:i},{title:"坐标轴",dir:T},{title:"视觉映射",dir:e},{title:"图例",dir:j},{title:"事件与行为",dir:x}]},{title:"应用篇",dir:z,children:[{title:"常用图表类型",dir:S,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:D},{title:"堆叠柱状图",dir:O},{title:"动态排序柱状图",dir:f},{title:"极坐标系柱状图",dir:v,draft:i},{title:"阶梯瀑布图",dir:G},{title:"视觉映射的柱状图",dir:e,draft:i}]},{title:"折线图",dir:k,children:[{title:"基础折线图",dir:V},{title:"堆叠折线图",dir:J},{title:"区域面积图",dir:H},{title:"平滑曲线图",dir:Q},{title:"阶梯线图",dir:W}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:Y},{title:"圆环图",dir:F},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:P,children:[{title:"基础散点图",dir:Z}]}]},{title:"常用组件",dir:U,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:R}]}]},{title:"移动端优化",dir:t,draft:i},{title:"跨平台方案",dir:K,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:X},{title:"数据下钻",dir:_,draft:i}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:q}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:ii}]},{title:"交互",dir:ti,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:ei,draft:i},{title:"智能指针吸附",dir:di}]}]},{title:"最佳实践",dir:ri,children:[{title:"移动端优化",dir:t,draft:i},{title:li,dir:ai},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:ci}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:ni}]}],en:[{title:"Get Started",dir:d},{title:"Basics",dir:r,children:[{title:"Download ECharts",dir:l},{title:"Import ECharts",dir:a},{title:"Resources",dir:c,draft:i},{title:"Get Help",dir:n},{title:"What's New",dir:o,children:[{title:"ECharts 6 Features",dir:s},{title:"Migration from v5 to v6",dir:g},{title:"5.0",dir:h},{title:"Migration from v4 to v5",dir:C},{title:5.2,dir:I},{title:5.3,dir:A},{title:5.4,dir:M},{title:5.5,dir:p},{title:5.6,dir:w}]}]},{title:"Concepts",dir:E,children:[{title:"Chart Container",dir:L},{title:"Chart Option",dir:B,draft:i},{title:"Series",dir:N,draft:i},{title:"Style",dir:b},{title:"Dataset",dir:u},{title:"Data Transform",dir:y},{title:"Coordinate",dir:m,draft:i},{title:"Axis",dir:T},{title:"Visual Mapping",dir:e},{title:"Legend",dir:j},{title:"Event and Action",dir:x}]},{title:"How To Guides",dir:z,children:[{title:"Common Charts",dir:S,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:D},{title:"Stacked Bar",dir:O},{title:"Bar Racing",dir:f},{title:"Bar Polar",dir:v,draft:i},{title:"Waterfall",dir:G}]},{title:"Line",dir:k,children:[{title:"Basic Line",dir:V},{title:"Stacked Line",dir:J},{title:"Area Chart",dir:H},{title:"Smoothed Line",dir:Q},{title:"Step Line",dir:W}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:Y},{title:"Ring Style",dir:F},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:P,children:[{title:"Basic Scatter",dir:Z}]}]},{title:"Common Components",dir:U,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:R}]}]},{title:"Mobile",dir:t,draft:i},{title:"Cross Platform",dir:K,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:X},{title:"Drilldown",dir:_,draft:i}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:q}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:ii}]},{title:"Interaction",dir:ti,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:ei,draft:i},{title:"Intelligent Pointer Snapping",dir:di}]}]},{title:"Best Practices",dir:ri,children:[{title:"Mobile Optimization",dir:t,draft:i},{title:li,dir:ai},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:ci}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:ni}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:i,routePath:"/zh/how-to/chart-types/scatter/basic-scatter",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/zh/how-to/component-types/geo/svg-base-map/index.html b/docs/zh/how-to/component-types/geo/svg-base-map/index.html
new file mode 100644
index 0000000..0085b9b
--- /dev/null
+++ b/docs/zh/how-to/component-types/geo/svg-base-map/index.html
@@ -0,0 +1,175 @@
+<!doctype html>
+<html data-n-head-ssr lang="zh-CN" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh-CN%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>SVG 底图 - 地理坐标系(Geo) - 常用组件 - 应用篇 - 使用手册 - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="zh"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/zh/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/zh/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/zh/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/zh/index.html" class="navbar-brand"><img src="https://echarts.apache.org/zh/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/zh/index.html">首页</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">文档<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/feature.html">特性</a></li><li><a href="https://echarts.apache.org/handbook/zh/get-started/">使用手册</a></li><li><a href="https://echarts.apache.org/zh/api.html">API</a></li><li><a href="https://echarts.apache.org/zh/option.html">配置项手册</a></li><li><a href="https://echarts.apache.org/zh/changelog.html">版本记录</a></li><li><a href="https://echarts.apache.org/zh/faq.html">常见问题</a></li><li><a href="https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide">v6 升级指南</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">下载<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/download.html">下载</a></li><li><a href="https://echarts.apache.org/zh/download-theme.html">主题下载</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">自定义系列下载<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/download-extension.html">扩展下载</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/zh/index.html">示例</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">资源<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/spreadsheet.html">表格工具</a></li><li><a href="https://echarts.apache.org/zh/theme-builder.html">主题构建工具</a></li><li><a href="https://echarts.apache.org/zh/cheat-sheet.html">术语速查手册</a></li><li><a href="https://echarts.apache.org/zh/resources.html">更多资源</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">社区<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/events.html">活动</a></li><li><a href="https://echarts.apache.org/zh/committers.html">贡献者列表</a></li><li><a href="https://echarts.apache.org/zh/maillist.html">邮件列表</a></li><li><a href="https://echarts.apache.org/zh/contributing.html">如何贡献</a></li><li><a href="https://echarts.apache.org/zh/dependencies.html">依赖项</a></li><li><a href="https://echarts.apache.org/zh/coding-standard.html">代码规范</a></li><li><a href="https://github.com/apache/echarts" target="_blank">源码(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/security.html">安全</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">版权<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">活动<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">捐赠<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">鸣谢<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("en")'>EN</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/zh/get-started" class="nav-link"><span class="title">快速上手</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">入门篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/basics/download" class="nav-link"><span class="title">获取 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/import" class="nav-link"><span class="title">在项目中引入 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/basics/help" class="nav-link"><span class="title">寻求帮助</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">版本特性</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 特性介绍</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">v5 升级 v6 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">v4 升级 v5 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">概念篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/concepts/chart-size" class="nav-link"><span class="title">图表容器及大小</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/style" class="nav-link"><span class="title">样式</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/dataset" class="nav-link"><span class="title">数据集</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/data-transform" class="nav-link"><span class="title">数据转换</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/axis" class="nav-link"><span class="title">坐标轴</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/visual-map" class="nav-link"><span class="title">视觉映射</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/legend" class="nav-link"><span class="title">图例</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/event" class="nav-link"><span class="title">事件与行为</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">应用篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">常用图表类型</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">柱状图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">基础柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">堆叠柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">动态排序柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">阶梯瀑布图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">折线图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">基础折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">堆叠折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/area-line" class="nav-link"><span class="title">区域面积图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">平滑曲线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/step-line" class="nav-link"><span class="title">阶梯线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">饼图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">基础饼图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">圆环图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/rose" class="nav-link"><span class="title">南丁格尔图(玫瑰图)</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">散点图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">基础散点图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">常用组件</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a class="nav-link"><span class="title">地理坐标系(Geo)</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level3"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/component-types/geo/svg-base-map" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">SVG 底图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">跨平台方案</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/server" class="nav-link"><span class="title">服务端渲染</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/wechat-app" class="nav-link"><span class="title">微信小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/baidu-app" class="nav-link"><span class="title">百度智能小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">数据处理</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/data/dynamic-data" class="nav-link"><span class="title">动态的异步数据</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">标签</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/label/rich-text" class="nav-link"><span class="title">富文本标签</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">动画</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/animation/transition" class="nav-link"><span class="title">数据过渡动画</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">交互</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/drag" class="nav-link"><span class="title">拖拽的实现</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">智能指针吸附</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">最佳实践</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/aria" class="nav-link"><span class="title">无障碍访问</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/security" class="nav-link"><span class="title">安全指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">编辑本文档</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/meta/edit-guide" class="nav-link"><span class="title">文档编辑指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="svg-%E5%BA%95%E5%9B%BE" tabindex="-1">SVG 底图</h1> <p>从 <code>v5.1.0</code> 开始,ECharts 支持在 <a href="https://echarts.apache.org/option.html#geo">地理坐标系(geo)</a> 和 <a href="https://echarts.apache.org/option.html#series-map">地图系列(map series)</a> 中使用 SVG 作为底图。之前只支持 <a href="https://echarts.apache.org/api.html#echarts.registerMap">GeoJSON</a> 格式的底图。</p> <p>有了这个功能,ECharts 能在任一种渲染模式(<code>canvas</code> 渲染模式和 <code>svg</code> 渲染模式)中绘制 SVG 底图,并且能够只用简单的 ECharts 配置项(option)就带来 <a href="https://echarts.apache.org/option.html#geo.roam">放大</a>、<a href="https://echarts.apache.org/option.html#geo.roam">平移</a>、<a href="https://echarts.apache.org/option.html#geo.select">点选(select)</a>、<a href="https://echarts.apache.org/option.html#geo.roam">高亮强调(emphasis)</a>、<a href="https://echarts.apache.org/option.html#geo.emphasis.focus">聚焦-淡出(focus-blur)</a>、<a href="https://echarts.apache.org/option.html#geo.label">标签(label)</a>、<a href="https://echarts.apache.org/option.html#series-map.labelLayout">标签布局(labelLayout)</a>、<a href="https://echarts.apache.org/option.html#geo.tooltip">提示框(tooltip)</a> 等特性。ECharts 中的所有在 <a href="https://echarts.apache.org/option.html#geo">地理坐标系(geo)</a> 中可用系列(如 <a href="https://echarts.apache.org/option.html#series-scatter">散点图(scatter)</a>、<a href="https://echarts.apache.org/option.html#series-effectScatter">特效散点图(effectScatter)</a>,<a href="https://echarts.apache.org/option.html#series-lines">路径图(lines)</a>,<a href="https://echarts.apache.org/option.html#series-custom">自定义系列(custom)</a>)也能显示在 SVG 底图上。</p> <p>这些是使用 SVG 底图的例子:</p> <p><a href="https://echarts.apache.org/examples/zh/editor.html?c=geo-beef-cuts">庖丁解牛</a> |
+<a href="https://echarts.apache.org/examples/zh/editor.html?c=geo-organ">内脏数据</a> |
+<a href="https://echarts.apache.org/examples/zh/editor.html?c=geo-seatmap-flight">航班选座</a> |
+<a href="https://echarts.apache.org/examples/zh/editor.html?c=geo-svg-map">地图</a> |
+<a href="https://echarts.apache.org/examples/zh/editor.html?c=geo-svg-scatter-simple">散点图</a> |
+<a href="https://echarts.apache.org/examples/zh/editor.html?c=geo-svg-lines">路径图</a> |
+<a href="https://echarts.apache.org/examples/zh/editor.html?c=geo-svg-traffic">交通</a></p> <h2 id="basic-usage" tabindex="-1">基本用法</h2> <p>SVG 底图的用法与 <a href="https://echarts.apache.org/api.html#echarts.registerMap">GeoJSON</a> 底图的用法相同。</p> <p>如果在 <a href="https://echarts.apache.org/option.html#geo">地理坐标系(geo)</a> 中使用:
+</p><div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code>$<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span><span class="token string">'map/organ.svg'</span><span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span>svg<span class="token punctuation">)</span> <span class="token punctuation">{</span>
+    <span class="token comment">// 首先向 echarts 注册 SVG 字符串或解析过的 SVG DOM</span>
+    echarts<span class="token punctuation">.</span><span class="token function">registerMap</span><span class="token punctuation">(</span><span class="token string">'organ_diagram'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>svg<span class="token operator">:</span> svg<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+    <span class="token keyword">var</span> chart <span class="token operator">=</span> echarts<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span>document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span><span class="token string">'main'</span><span class="token punctuation">)</span><span class="token punctuation">)</span>。
+    chart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+        geo<span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">{</span>
+            <span class="token comment">// 引用注册过的底图。</span>
+            map<span class="token operator">:</span> <span class="token string">'organ_diagram'</span><span class="token punctuation">,</span>
+            <span class="token operator">...</span>
+        <span class="token punctuation">}</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div><p></p> <p>如果在 <a href="https://echarts.apache.org/option.html#series-map">地图系列(map series)</a> 中使用:
+</p><div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code>$<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span><span class="token string">'map/beef_cuts.svg'</span><span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span>svg<span class="token punctuation">)</span> <span class="token punctuation">{</span>
+    <span class="token comment">// 首先向 echarts 注册 SVG 字符串或解析过的 SVG DOM</span>
+    echarts<span class="token punctuation">.</span><span class="token function">registerMap</span><span class="token punctuation">(</span><span class="token string">'beef_cuts_diagram'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>svg<span class="token operator">:</span> svg<span class="token punctuation">}</span><span class="token punctuation">)</span>。
+
+    <span class="token keyword">var</span> chart <span class="token operator">=</span> echarts<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span>document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span><span class="token string">'main'</span><span class="token punctuation">)</span><span class="token punctuation">)</span>。
+    chart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+        series<span class="token operator">:</span> <span class="token punctuation">{</span>
+            type<span class="token operator">:</span> <span class="token string">'map'</span><span class="token punctuation">,</span>
+            <span class="token comment">// 引用注册过的底图。</span>
+            map<span class="token operator">:</span> <span class="token string">'beef_cuts_diagram'</span><span class="token punctuation">,</span>
+            <span class="token operator">...</span>
+        <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div><p></p> <h2 id="zoom-and-pan" tabindex="-1">缩放和平移</h2> <p><a href="https://echarts.apache.org/option.html#geo">地理坐标系(geo)</a> </p><div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+    geo<span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token comment">// 启用缩放和平移。</span>
+        roam<span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+        <span class="token operator">...</span>
+    <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <a href="https://echarts.apache.org/option.html#series-map">地图系列(map series)</a> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+    series<span class="token operator">:</span> <span class="token punctuation">{</span>
+        type<span class="token operator">:</span> <span class="token string">'map'</span><span class="token punctuation">,</span>
+        <span class="token comment">// 启用缩放和平移。</span>
+        roam<span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+        <span class="token operator">...</span>
+    <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div><p></p> <p>参见例子 <a href="https://echarts.apache.org/option.html#geo.roam">roam</a>、<a href="https://echarts.apache.org/examples/zh/editor.html?c=geo-svg-map">SVG 地图</a>。</p> <h2 id="named-element" tabindex="-1">具名元素</h2> <p>如果要控制 SVG 中的某些元素,或者让某些元素能交互,我们首先要在 SVG 中标记这些元素:在这些元素上添加 <code>name</code> 属性(下文称此类添加过 <code>name</code> 属性的元素为:“具名元素”)。许多功能(如 <a href="https://echarts.apache.org/option.html#geo.select">select</a>、<a href="https://echarts.apache.org/option.html#geo.emphasis">emphasis</a>、<a href="https://echarts.apache.org/option.html#geo.emphasis.focus">focus-blur</a>、<a href="https://echarts.apache.org/option.html#geo.label">label</a>、<a href="https://echarts.apache.org/option.html#series-map.labelLayout">labelLayout</a> 和 <a href="https://echarts.apache.org/option.html#geo.tooltip">tooltip</a> 这类交互相关的功能)都依赖于对元素的命名。</p> <p>如下例,我们只在左边的 SVG <code>path</code> 上添加名称属性 <code>name="named_rect"</code>:
+</p><div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-xml line-numbers"><code><span class="token prolog">&lt;?xml version="1.0" encoding="utf-8"?></span>
+<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>svg</span> <span class="token attr-name">xmlns</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>http://www.w3.org/2000/svg<span class="token punctuation">"</span></span> <span class="token attr-name">version</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>1.2<span class="token punctuation">"</span></span> <span class="token attr-name">fill-rule</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>evenodd<span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">xml:</span>space</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>preserve<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
+    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>path</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>named_rect<span class="token punctuation">"</span></span> <span class="token attr-name">d</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>M 0,0 L 0,100 100,100 100,0 Z<span class="token punctuation">"</span></span> <span class="token attr-name">fill</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>#765<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>
+    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>path</span> <span class="token attr-name">d</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>M 150,0 L 150,100 250,100 250,0 Z<span class="token punctuation">"</span></span> <span class="token attr-name">fill</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>#567<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span>
+<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>svg</span><span class="token punctuation">></span></span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div>
+这样,鼠标 hover 时能高亮左边的矩形,但是右边的不行。<p></p> <p><iframe width="100%" height="200" src=""></iframe></p> <p>我们还可以在 <a href="https://echarts.apache.org/option.html#geo.regions">geo.regions</a> 中为具名元素指定一些专属配置项:
+</p><div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+    geo<span class="token operator">:</span> <span class="token punctuation">{</span>
+        map<span class="token operator">:</span> <span class="token string">'some_svg'</span><span class="token punctuation">,</span>
+        regions<span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">{</span>
+            name<span class="token operator">:</span> <span class="token string">'element_name_1'</span><span class="token punctuation">,</span>
+            itemStyle<span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token operator">...</span> <span class="token punctuation">}</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
+            name<span class="token operator">:</span> <span class="token string">'element_name_2'</span><span class="token punctuation">,</span>
+            itemStyle<span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token operator">...</span> <span class="token punctuation">}</span>
+        <span class="token punctuation">}</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div><p></p> <p>注意:</p> <ul><li>只有这些 SVG 元素可以被命名:
+<code>rect</code>、<code>circle</code>、<code>line</code>、<code>ellipse</code>、<code>polygon</code>、<code>polyline</code>、<code>path</code>、<code>text</code>、<code>tspan</code>、<code>g</code>。</li> <li>支持多个元素以相同的名称命名,这样它们能被同时高亮、选中。</li></ul> <h2 id="style-customization" tabindex="-1">自定义样式</h2> <p>虽然 SVG 元素的样式(如颜色、字体、线宽等等)都能直接在 SVG 文件中定义,但 ECharts 也支持在 <code>option</code> 中为具名元素定制样式,这能提供不少便利。</p> <p>可以在 <a href="https://echarts.apache.org/option.html#geo.itemStyle">geo.itemStyle</a> 或 <a href="https://echarts.apache.org/option.html#series-map.itemStyle">series-map.itemStyle</a> 中设置样式(也包括 <code>emphasis.itemStyle</code>、<code>select.itemStyle</code>、<code>blur.itemStyle</code>、<code>regions[i].itemStyle</code>、<code>regions[i].emphasis.itemStyle</code>、<code>regions[i].select.itemStyle</code>、<code>regions[i].blur.itemStyle</code>)。也能在这里删除一些具名元素的默认样式(例如,设置 <code>emphasis.itemStyle.color: null</code> 后,鼠标 hover 时填充色就不会改变)。</p> <p>此外,使用 <a href="https://echarts.apache.org/option.html#series-map">series-map</a> 时,也可以用 <a href="https://echarts.apache.org/option.html#visualMap">visualMap 组件</a> 为具名元素赋予样式。参见例子 <a href="https://echarts.apache.org/examples/zh/editor.html?c=geo-beef-cuts">庖丁解牛</a>。</p> <p>注意:
+只有这些具名元素可以在 <code>itemStyle</code> 中设置样式:
+<code>rect</code>、<code>circle</code>、<code>line</code>、<code>ellipse</code>、<code>polygon</code>、<code>polyline</code>、<code>path</code>。</p> <h2 id="select" tabindex="-1">元素的“选中”能力(select)</h2> <p>如果想使具名元素能被“选中”,把 <a href="https://echarts.apache.org/option.html#geo.selectedMode">geo.selectedMode</a> 或 <a href="https://echarts.apache.org/option.html#series-map.selectedMode">series-map.selectedMode</a> 设置为 <code>'single'</code> 或者 <code>'multiple'</code> 即可。元素被选中时的样式可以在 <a href="https://echarts.apache.org/option.html#geo.select">geo.select</a> 或 <a href="https://echarts.apache.org/option.html#series-map.select">series-map.select</a> 中设定。</p> <p>可以通过 <a href="https://echarts.apache.org/api.html#event.geoselectchanged">geoselectchanged</a> 事件获得所有被选中者的名称,例如:
+</p><div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code>myChart<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'geoselectchanged'</span><span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span>params<span class="token punctuation">)</span> <span class="token punctuation">{</span>
+    <span class="token keyword">var</span> selectedNames <span class="token operator">=</span> params<span class="token punctuation">.</span>allSelected<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">.</span>name<span class="token punctuation">;</span>
+    <span class="token builtin">console</span><span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">'selected'</span><span class="token punctuation">,</span> selectedNames<span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div><p></p> <p>参见例子 <a href="https://echarts.apache.org/examples/zh/editor.html?c=geo-seatmap-flight">航班选座</a>。</p> <h2 id="emphasis-and-focus-blur" tabindex="-1">元素的“高亮强调”(emphasis)和“聚焦-淡出”(focus-blur)</h2> <p>具名元素可以自动在鼠标 hover 时有“高亮强调”(emphasis)的能力。</p> <p>此外,可以把 <a href="https://echarts.apache.org/option.html#geo.emphasis.focus">geo.emphasis.focus</a> 设置为 <code>'self'</code> 来启用 “聚焦-淡出”(focus-blur)功能。也就是,当鼠标 hover 在一个具名元素上时,所有其他元素都会被淡出。</p> <p>参见例子 <a href="https://echarts.apache.org/examples/zh/editor.html?c=geo-organ">Organ Visualization</a>。</p> <h2 id="tooltip" tabindex="-1">提示框(tooltip)</h2> <p>可以在具名元素上启用或禁用提示框(tooltip)功能。
+</p><div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+    <span class="token comment">// 在 option 根部声明 tooltip 以整体开启 tooltip 功能。</span>
+    tooltip<span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+    geo<span class="token operator">:</span> <span class="token punctuation">{</span>
+        map<span class="token operator">:</span> <span class="token string">'some_svg'</span><span class="token punctuation">,</span>
+        tooltip<span class="token operator">:</span> <span class="token punctuation">{</span>
+            <span class="token comment">// 用 `show` 来启用/禁用 geo 上的 tooltip。</span>
+            show<span class="token operator">:</span> <span class="token boolean">true</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        regions<span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">{</span>
+            name<span class="token operator">:</span> <span class="token string">'some_name1'</span><span class="token punctuation">,</span>
+            <span class="token comment">// 如果需要的话,可以对特定具名元素指定 tooltip 参数。</span>
+            tooltip<span class="token operator">:</span> <span class="token punctuation">{</span>
+                formatter<span class="token operator">:</span> <span class="token string">'一些特殊的提示 1'</span>
+            <span class="token punctuation">}</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
+            name<span class="token operator">:</span> <span class="token string">'some_name2'</span><span class="token punctuation">,</span>
+            tooltip<span class="token operator">:</span> <span class="token punctuation">{</span>
+                formatter<span class="token operator">:</span> <span class="token string">'一些特殊的提示 2'</span>
+            <span class="token punctuation">}</span>
+        <span class="token punctuation">}</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div><p></p> <p>如果想单独禁用 geo 上的 tooltip,只需:
+</p><div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+    tooltip<span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+    geo<span class="token operator">:</span> <span class="token punctuation">{</span>
+        map<span class="token operator">:</span> <span class="token string">'some_svg'</span><span class="token punctuation">,</span>
+        tooltip<span class="token operator">:</span> <span class="token punctuation">{</span>
+            show<span class="token operator">:</span> <span class="token boolean">false</span>
+        <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div><p></p> <p>参见例子 <a href="https://echarts.apache.org/examples/zh/editor.html?c=geo-svg-map">SVG 地图</a>。</p> <h2 id="label" tabindex="-1">标签(label)</h2> <p>虽然可以直接在 SVG 中定义 <code>&lt;text></code>/<code>&lt;tspan></code> 来显示文本标签,但 ECharts 也支持用 <a href="https://echarts.apache.org/option.html#geo.label">geo.label</a> 或 <a href="https://echarts.apache.org/option.html#series-map.label">series-map.label</a> 来设置底图上的标签。</p> <p>标签功能默认在鼠标 hover 时是启用的。如果想禁用标签,只需:
+</p><div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+    geo<span class="token operator">:</span> <span class="token punctuation">{</span>
+        map<span class="token operator">:</span> <span class="token string">'some_svg'</span><span class="token punctuation">,</span>
+        emphasis<span class="token operator">:</span> <span class="token punctuation">{</span>
+            label<span class="token operator">:</span> <span class="token punctuation">{</span>
+                show<span class="token operator">:</span> <span class="token boolean">false</span>
+            <span class="token punctuation">}</span>
+        <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div><p></p> <p>当想要多个元素共享一个标签时,我们有两种选择:</p> <ul><li>将这些元素包裹在一个具名的 <code>&lt;g></code> 中(如 <code>&lt;g="name_a"></code>)中,这样只会显示一个标签,并且基于 <code>&lt;g></code> 的 <code>boundingRect</code> 定位。</li> <li>给这些元素起相同的名字(如 <code>&lt;path name="name_b"/>&lt;path name="name_b"/></code>),这样每个元素都会显示一个标签,并且会根据每个元素自身显示和定位。</li></ul> <p>例如(将鼠标 hover 到元素上能显示标签):
+<iframe width="100%" height="300" src=""></iframe></p> <p>注意:只有这些具名元素可以设置 <code>label</code>:
+<code>rect</code>、<code>circle</code>、<code>line</code>、<code>ellipse</code>、<code>polygon</code>、<code>polyline</code>、<code>path</code>、<code>g</code>。</p> <p>标签的用法也参见示例 <a href="https://echarts.apache.org/examples/zh/editor.html?c=geo-organ">Organ Visualization</a>。</p> <h2 id="events" tabindex="-1">事件</h2> <p>可以用如下方式监听具名元素的鼠标事件或者触摸事件:
+</p><div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code><span class="token comment">// 'name1' 是一个 SVG 元素的名字。</span>
+myChart<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'click'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> geoIndex<span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span> name<span class="token operator">:</span> <span class="token string">'name1'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span>params<span class="token punctuation">)</span> <span class="token punctuation">{</span>
+    <span class="token builtin">console</span><span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>params<span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div><p></p> <h2 id="layout-of-svg-base-map" tabindex="-1">SVG 底图的布局</h2> <p>在默认情况下,ECharts 会将 SVG 底图放置在画布的中心。如果需要调整的话,一般只调整 <a href="https://echarts.apache.org/option.html#geo.layoutCenter">layoutCenter</a>/<a href="https://echarts.apache.org/option.html#geo.layoutSize">layoutSize</a>,偶尔也可能要调整 <code>&lt;svg viewBox="..."></code>/<a href="https://echarts.apache.org/option.html#geo.boundingCoords">geo.boundingCoords</a>(它们两个的区别是:是否产生剪裁)。在大多数情况下,用这些已经足够了。</p> <p>如果要做一些精确的位置定制,那么还得了解下面这些概念。</p> <p><a href="https://echarts.apache.org/option.html#geo">地理坐标系(geo)</a> 和 <a href="https://echarts.apache.org/option.html#series-map">地图系列(map series)</a> 的布局规则和选项都是一样的。所以下面我们只讲 <a href="https://echarts.apache.org/option.html#geo">地理坐标系(geo)</a>。</p> <p><iframe width="100%" height="600" src=""></iframe></p> <p>上面的例子只有一个 ECharts 画布,其中三个 SVG 展示在六个 <a href="https://echarts.apache.org/option.html#geo">地理坐标系(geo)</a> 中。同一列中的两个 <a href="https://echarts.apache.org/option.html#geo">地理坐标系(geo)</a> 使用相同的 SVG。</p> <p>首先,形状的外观是由 SVG 文件本身决定的。也就是说,在上例中,由 <code>&lt;circle></code> 和 <code>viewBox</code> 属性决定(<code>viewBox</code> 会切割圆形)。可以注意,每一列的形状轮廓都一样(不管它们的位置、大小是否不同和是否被拉伸),因为它们使用的是同一个 SVG。</p> <p>其次,用户可以用下面任一组选项,指定 <a href="https://echarts.apache.org/option.html#geo">地理坐标系(geo)</a> 的视口(<code>view port</code>)的位置和大小(它们的单位都是 echarts 画布的像素,或者百分比值):</p> <ul><li><a href="https://echarts.apache.org/option.html#geo.layoutCenter">layoutCenter</a>、<a href="https://echarts.apache.org/option.html#geo.layoutSize">layoutSize</a>(最常用)。</li> <li><a href="https://echarts.apache.org/option.html#geo.top">top</a>、<a href="https://echarts.apache.org/option.html#geo.right">right</a>、<a href="https://echarts.apache.org/option.html#geo.bottom">bottom</a>、<a href="https://echarts.apache.org/option.html#geo.left">left</a>(在上例中使用的是这组)。</li></ul> <p>在上例中,六个 <code>geo view port</code> 用六个黑色方块表示。</p> <p>第三,确定 SVG 的 <code>bounding rect</code>。<code>bounding rect</code> 由以下方法决定(它们的单位都是 SVG 内部元素的度量单位):</p> <ol><li>如果设定了 <a href="https://echarts.apache.org/option.html#geo.boundingCoords">geo.boundingCoords</a>,则用它作 <code>bounding rect</code>。</li> <li>否则,如果设定了 <code>&lt;svg width="..." height="..."></code>,则用 <code>[0, 0, width, height]</code> 作为 <code>bounding rect</code>。(如果只设定了 <code>width</code> 或 <code>height</code>,则只使用 <code>[0, width]</code> 或 <code>[0, height]</code>)。</li> <li>否则,如果设定了 <code>&lt;svg viewBox="..."></code>,则用 <code>viewBox</code> 作 <code>bounding rect</code>。</li> <li>否则,由整个 SVG 所有元素 <code>bounding rect</code> 的并集得到最终 <code>bounding rect</code>。</li> <li>如果设定了 <a href="https://echarts.apache.org/option.html#geo.center">geo.center</a> 或 <a href="https://echarts.apache.org/option.html#geo.zoom">geo.zoom</a>,则把上述 <code>1~4</code> 得到的 <code>bounding rect</code> 进行相应的 <code>transform</code>。</li></ol> <p><code>bounding rect</code> 确定后,会放置到相应的 <code>geo view port</code> 里:</p> <ul><li>如果用的是 <a href="https://echarts.apache.org/option.html#geo.layoutCenter">layoutCenter</a>、<a href="https://echarts.apache.org/option.html#geo.layoutSize">layoutSize</a>,<code>bounding rect</code> 会置于 <code>geo view port</code> 的中心,并尽量填满 <code>geo view port</code>(保持长宽比)。</li> <li>如果用的是 <a href="https://echarts.apache.org/option.html#geo.top">top</a>、<a href="https://echarts.apache.org/option.html#geo.right">right</a>、<a href="https://echarts.apache.org/option.html#geo.bottom">bottom</a>、<a href="https://echarts.apache.org/option.html#geo.left">left</a>,<code>bounding rect</code> 会被拉伸,完全填充 <code>geo view port</code>。</li></ul> <h2 id="place-series-on-svg-base-map" tabindex="-1">在 SVG 底图上绘制系列</h2> <p><a href="https://echarts.apache.org/option.html#series-scatter">scatter</a>、<a href="https://echarts.apache.org/option.html#series-effectScatter">effectScatter</a>、<a href="https://echarts.apache.org/option.html#series-lines">lines</a>、<a href="https://echarts.apache.org/option.html#series-custom">custom</a> 这些在 <a href="https://echarts.apache.org/option.html#geo">地理坐标系(geo)</a> 中可用的系列都可以在 SVG 底图上定位和显示。</p> <p>在这种用法中,<code>series.data</code> 的值的单位即为是 SVG 内部元素的度量单位。比如说:
+</p><div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+    geo<span class="token operator">:</span> <span class="token punctuation">{</span>
+        map<span class="token operator">:</span> <span class="token string">'some_svg'</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    series<span class="token operator">:</span> <span class="token punctuation">{</span>
+        type<span class="token operator">:</span> <span class="token string">'effectScatter'</span><span class="token punctuation">,</span>
+        coordinateSystem<span class="token operator">:</span> <span class="token string">'geo'</span><span class="token punctuation">,</span>
+        geoIndex<span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+        data<span class="token operator">:</span> <span class="token punctuation">[</span>
+            <span class="token comment">// SVG local coords.</span>
+            <span class="token punctuation">[</span><span class="token number">488.2358421078053</span><span class="token punctuation">,</span> <span class="token number">459.70913833075736</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+            <span class="token punctuation">[</span><span class="token number">770.3415644319939</span><span class="token punctuation">,</span> <span class="token number">757.9672194986475</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+            <span class="token punctuation">[</span><span class="token number">1180.0329284196291</span><span class="token punctuation">,</span> <span class="token number">743.6141808346214</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+        <span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div><p></p> <p>另外,有种简便方法可以获得 SVG 的坐标。
+</p><div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code>myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+    geo<span class="token operator">:</span> <span class="token punctuation">{</span>
+        map<span class="token operator">:</span> <span class="token string">'some_svg'</span>
+    <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+myChart<span class="token punctuation">.</span><span class="token function">getZr</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'click'</span><span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span>params<span class="token punctuation">)</span> <span class="token punctuation">{</span>
+    <span class="token keyword">var</span> pixelPoint <span class="token operator">=</span> <span class="token punctuation">[</span>params<span class="token punctuation">.</span>offsetX<span class="token punctuation">,</span> params<span class="token punctuation">.</span>offsetY<span class="token punctuation">]</span><span class="token punctuation">;</span>
+    <span class="token keyword">var</span> dataPoint <span class="token operator">=</span> myChart<span class="token punctuation">.</span><span class="token function">convertFromPixel</span><span class="token punctuation">(</span><span class="token punctuation">{</span> geoIndex<span class="token operator">:</span> <span class="token number">0</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> pixelPoint<span class="token punctuation">)</span><span class="token punctuation">;</span>
+    <span class="token comment">// 在 SVG 上点击时,坐标会被打印。</span>
+    <span class="token comment">// 这些坐标可以在 `series.data` 里使用。</span>
+    <span class="token builtin">console</span><span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>dataPoint<span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div><p></p> <p>参见示例 <a href="https://echarts.apache.org/examples/zh/editor.html?c=geo-svg-scatter-simple">SVG Scatter</a>、<a href="https://echarts.apache.org/examples/zh/editor.html?c=geo-svg-lines">SVG Lines</a>、<a href="https://echarts.apache.org/examples/zh/editor.html?c=geo-traffic">SVG Traffic</a>。</p> <h2 id="unsupported-svg-features" tabindex="-1">暂不支持的 SVG 功能</h2> <p>实现一个完整的 SVG 解析器有点困难。虽然已经支持了常用的 SVG 功能,但至少下面列出的这些还没支持:</p> <ul><li>翻转(flip)和倾斜(skew)(将在 <code>v5.1.2</code> 支持):
+<ul><li>不支持 <code>transform: skew(...)</code>(包括包含 skew 的 <code>transform: matrix(...)</code>)。</li> <li>不支持当 <code>transform: scale(x, y)</code> 中 <code>x</code>/<code>y</code> 正负不同且有 <code>rotate</code>(例如,<code>scale: (1, -1), rotate(90)</code>)。</li></ul></li> <li>不支持 <code>&lt;style></code> 标签。
+<ul><li>但内联样式是支持的(例如支持 <code>&lt;path style="color:red" /></code>)。</li></ul></li> <li>单位:
+<ul><li>只支持 <code>px</code>。不支持其他单位如 <code>width="231.65mm"</code>。</li> <li>不支持百分比值,如不支持 <code>&lt;svg width="30%" height="40%"></code>。</li></ul></li> <li><code>&lt;defs></code> 标签:
+<ul><li>只支持 <code>&lt;linearGradient></code>、<code>&lt;radialGradient></code>。</li> <li>还不支持在 <code>&lt;defs></code> 中定义其他元素(如 <code>&lt;pattern></code>、<code>&lt;path></code>、...)。</li></ul></li> <li><code>&lt;linearGradient></code>、<code>&lt;radialGradient></code>:
+<ul><li>不支持 <code>fx</code>、<code>fy</code>。</li> <li>不支持 <code>gradientTransform</code>。</li></ul></li> <li><code>fill:url(..)</code>, <code>stroke:utl(..)</code>:
+<ul><li>只支持 <code>url(#someId)</code>。</li> <li>不支持其他 URL 模式,例如不支持:
+<ul><li><code>url(https://example.com/images/myImg.jpg)</code>。</li> <li><code>url(data:image/png;base64,iRxVB0...)</code>。</li> <li><code>url(myFont.woff)</code>。</li></ul></li></ul></li> <li><code>&lt;switch></code> 标签:
+<ul><li><code>&lt;switch></code> 标签内的所有内容都会显示。不支持“切换”功能。</li></ul></li> <li><code>&lt;text></code>。
+<ul><li>不支持 <code>textPath</code>。</li> <li>不支持 <a href="https://www.w3.org/TR/SVG/text.html#TermAddressableCharacter">Addressable character</a>,也就是说:</li></ul> <pre><code class="language-xml">&lt;!-- 不支持: -->
+&lt;tspan x="0 4.94 9.89">abc&lt;/tspan>。
+&lt;!-- 支持: -->
+&lt;tspan x="0">A&lt;/tspan>
+&lt;tspan x="4.94">b&lt;/tspan>
+&lt;tspan x="9.89">C&lt;/tspan>
+</code></pre></li></ul></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">本文贡献者</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/zh/how-to/component-types/geo/svg-base-map.md" title="编辑本文" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">在 GitHub 上编辑本页</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/100pah" target="_blank" class="post-contributor has-avatar"><img alt="100pah" src="https://echarts.apache.org/en/images/people/宿爽.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>100pah</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(e,t,o,a,i,l,r,c,g,h,d,s,n,p,C,m,I,A,b,u,f,v,y,G,Z,S,w,V,B,W,x,z,k,L,M,K,O,D,H,N,R,Y,T,X,F,J,q,j,E,P,Q,U,_,$,ee,te,oe,ae,ie,le,re,ce,ge){return{layout:"default",data:[{html:'<h1 id="svg-%E5%BA%95%E5%9B%BE" tabindex="-1">SVG 底图</h1>\n<p>从 <code>v5.1.0</code> 开始,ECharts 支持在 <a href="https://echarts.apache.org/option.html#geo">地理坐标系(geo)</a> 和 <a href="https://echarts.apache.org/option.html#series-map">地图系列(map series)</a> 中使用 SVG 作为底图。之前只支持 <a href="https://echarts.apache.org/api.html#echarts.registerMap">GeoJSON</a> 格式的底图。</p>\n<p>有了这个功能,ECharts 能在任一种渲染模式(<code>canvas</code> 渲染模式和 <code>svg</code> 渲染模式)中绘制 SVG 底图,并且能够只用简单的 ECharts 配置项(option)就带来 <a href="https://echarts.apache.org/option.html#geo.roam">放大</a>、<a href="https://echarts.apache.org/option.html#geo.roam">平移</a>、<a href="https://echarts.apache.org/option.html#geo.select">点选(select)</a>、<a href="https://echarts.apache.org/option.html#geo.roam">高亮强调(emphasis)</a>、<a href="https://echarts.apache.org/option.html#geo.emphasis.focus">聚焦-淡出(focus-blur)</a>、<a href="https://echarts.apache.org/option.html#geo.label">标签(label)</a>、<a href="https://echarts.apache.org/option.html#series-map.labelLayout">标签布局(labelLayout)</a>、<a href="https://echarts.apache.org/option.html#geo.tooltip">提示框(tooltip)</a> 等特性。ECharts 中的所有在 <a href="https://echarts.apache.org/option.html#geo">地理坐标系(geo)</a> 中可用系列(如 <a href="https://echarts.apache.org/option.html#series-scatter">散点图(scatter)</a>、<a href="https://echarts.apache.org/option.html#series-effectScatter">特效散点图(effectScatter)</a>,<a href="https://echarts.apache.org/option.html#series-lines">路径图(lines)</a>,<a href="https://echarts.apache.org/option.html#series-custom">自定义系列(custom)</a>)也能显示在 SVG 底图上。</p>\n<p>这些是使用 SVG 底图的例子:</p>\n<p><a href="https://echarts.apache.org/examples/zh/editor.html?c=geo-beef-cuts">庖丁解牛</a> |\n<a href="https://echarts.apache.org/examples/zh/editor.html?c=geo-organ">内脏数据</a> |\n<a href="https://echarts.apache.org/examples/zh/editor.html?c=geo-seatmap-flight">航班选座</a> |\n<a href="https://echarts.apache.org/examples/zh/editor.html?c=geo-svg-map">地图</a> |\n<a href="https://echarts.apache.org/examples/zh/editor.html?c=geo-svg-scatter-simple">散点图</a> |\n<a href="https://echarts.apache.org/examples/zh/editor.html?c=geo-svg-lines">路径图</a> |\n<a href="https://echarts.apache.org/examples/zh/editor.html?c=geo-svg-traffic">交通</a></p>\n<h2 id="basic-usage" tabindex="-1">基本用法</h2>\n<p>SVG 底图的用法与 <a href="https://echarts.apache.org/api.html#echarts.registerMap">GeoJSON</a> 底图的用法相同。</p>\n<p>如果在 <a href="https://echarts.apache.org/option.html#geo">地理坐标系(geo)</a> 中使用:\n<md-code-block lang="ts" code="\'JC5nZXQoJ21hcC9vcmdhbi5zdmcnLCBmdW5jdGlvbiAoc3ZnKSB7CiAgICAvLyDpppblhYjlkJEgZWNoYXJ0cyDms6jlhowgU1ZHIOWtl-espuS4suaIluino-aekOi_h-eahCBTVkcgRE9NCiAgICBlY2hhcnRzLnJlZ2lzdGVyTWFwKCdvcmdhbl9kaWFncmFtJywge3N2Zzogc3ZnfSk7CgogICAgdmFyIGNoYXJ0ID0gZWNoYXJ0cy5pbml0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYWluJykp44CCCiAgICBjaGFydC5zZXRPcHRpb24oewogICAgICAgIGdlbzogW3sKICAgICAgICAgICAgLy8g5byV55So5rOo5YaM6L-H55qE5bqV5Zu-44CCCiAgICAgICAgICAgIG1hcDogJ29yZ2FuX2RpYWdyYW0nLAogICAgICAgICAgICAuLi4KICAgICAgICB9XQogICAgfSk7Cn0pOw\'" line-highlights="\'\'" /></p>\n<p>如果在 <a href="https://echarts.apache.org/option.html#series-map">地图系列(map series)</a> 中使用:\n<md-code-block lang="ts" code="\'JC5nZXQoJ21hcC9iZWVmX2N1dHMuc3ZnJywgZnVuY3Rpb24gKHN2ZykgewogICAgLy8g6aaW5YWI5ZCRIGVjaGFydHMg5rOo5YaMIFNWRyDlrZfnrKbkuLLmiJbop6PmnpDov4fnmoQgU1ZHIERPTQogICAgZWNoYXJ0cy5yZWdpc3Rlck1hcCgnYmVlZl9jdXRzX2RpYWdyYW0nLCB7c3ZnOiBzdmd9KeOAggoKICAgIHZhciBjaGFydCA9IGVjaGFydHMuaW5pdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFpbicpKeOAggogICAgY2hhcnQuc2V0T3B0aW9uKHsKICAgICAgICBzZXJpZXM6IHsKICAgICAgICAgICAgdHlwZTogJ21hcCcsCiAgICAgICAgICAgIC8vIOW8leeUqOazqOWGjOi_h-eahOW6leWbvuOAggogICAgICAgICAgICBtYXA6ICdiZWVmX2N1dHNfZGlhZ3JhbScsCiAgICAgICAgICAgIC4uLgogICAgICAgIH0KICAgIH0pOwp9KTs\'" line-highlights="\'\'" /></p>\n<h2 id="zoom-and-pan" tabindex="-1">缩放和平移</h2>\n<p><a href="https://echarts.apache.org/option.html#geo">地理坐标系(geo)</a>\n<md-code-block lang="ts" code="\'b3B0aW9uID0gewogICAgZ2VvOiB7CiAgICAgICAgLy8g5ZCv55So57yp5pS-5ZKM5bmz56e744CCCiAgICAgICAgcm9hbTogdHJ1ZSwKICAgICAgICAuLi4KICAgIH0KfTs\'" line-highlights="\'\'" />\n<a href="https://echarts.apache.org/option.html#series-map">地图系列(map series)</a>\n<md-code-block lang="ts" code="\'b3B0aW9uID0gewogICAgc2VyaWVzOiB7CiAgICAgICAgdHlwZTogJ21hcCcsCiAgICAgICAgLy8g5ZCv55So57yp5pS-5ZKM5bmz56e744CCCiAgICAgICAgcm9hbTogdHJ1ZSwKICAgICAgICAuLi4KICAgIH0KfTs\'" line-highlights="\'\'" /></p>\n<p>参见例子 <a href="https://echarts.apache.org/option.html#geo.roam">roam</a>、<a href="https://echarts.apache.org/examples/zh/editor.html?c=geo-svg-map">SVG 地图</a>。</p>\n<h2 id="named-element" tabindex="-1">具名元素</h2>\n<p>如果要控制 SVG 中的某些元素,或者让某些元素能交互,我们首先要在 SVG 中标记这些元素:在这些元素上添加 <code>name</code> 属性(下文称此类添加过 <code>name</code> 属性的元素为:“具名元素”)。许多功能(如 <a href="https://echarts.apache.org/option.html#geo.select">select</a>、<a href="https://echarts.apache.org/option.html#geo.emphasis">emphasis</a>、<a href="https://echarts.apache.org/option.html#geo.emphasis.focus">focus-blur</a>、<a href="https://echarts.apache.org/option.html#geo.label">label</a>、<a href="https://echarts.apache.org/option.html#series-map.labelLayout">labelLayout</a> 和 <a href="https://echarts.apache.org/option.html#geo.tooltip">tooltip</a> 这类交互相关的功能)都依赖于对元素的命名。</p>\n<p>如下例,我们只在左边的 SVG <code>path</code> 上添加名称属性 <code>name=&quot;named_rect&quot;</code>:\n<md-code-block lang="xml" code="\'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMiIgZmlsbC1ydWxlPSJldmVub2RkIiB4bWw6c3BhY2U9InByZXNlcnZlIj4KICAgIDxwYXRoIG5hbWU9Im5hbWVkX3JlY3QiIGQ9Ik0gMCwwIEwgMCwxMDAgMTAwLDEwMCAxMDAsMCBaIiBmaWxsPSIjNzY1IiAvPgogICAgPHBhdGggZD0iTSAxNTAsMCBMIDE1MCwxMDAgMjUwLDEwMCAyNTAsMCBaIiBmaWxsPSIjNTY3IiAvPgo8L3N2Zz4\'" line-highlights="\'\'" />\n这样,鼠标 hover 时能高亮左边的矩形,但是右边的不行。</p>\n<p><md-example src="doc-example/geo-svg-named-basic" width="100%" height="200"></md-example></p>\n<p>我们还可以在 <a href="https://echarts.apache.org/option.html#geo.regions">geo.regions</a> 中为具名元素指定一些专属配置项:\n<md-code-block lang="ts" code="\'b3B0aW9uID0gewogICAgZ2VvOiB7CiAgICAgICAgbWFwOiAnc29tZV9zdmcnLAogICAgICAgIHJlZ2lvbnM6IFt7CiAgICAgICAgICAgIG5hbWU6ICdlbGVtZW50X25hbWVfMScsCiAgICAgICAgICAgIGl0ZW1TdHlsZTogeyAuLi4gfQogICAgICAgIH0sIHsKICAgICAgICAgICAgbmFtZTogJ2VsZW1lbnRfbmFtZV8yJywKICAgICAgICAgICAgaXRlbVN0eWxlOiB7IC4uLiB9CiAgICAgICAgfV0KICAgIH0KfTs\'" line-highlights="\'\'" /></p>\n<p>注意:</p>\n<ul>\n<li>只有这些 SVG 元素可以被命名:\n<code>rect</code>、<code>circle</code>、<code>line</code>、<code>ellipse</code>、<code>polygon</code>、<code>polyline</code>、<code>path</code>、<code>text</code>、<code>tspan</code>、<code>g</code>。</li>\n<li>支持多个元素以相同的名称命名,这样它们能被同时高亮、选中。</li>\n</ul>\n<h2 id="style-customization" tabindex="-1">自定义样式</h2>\n<p>虽然 SVG 元素的样式(如颜色、字体、线宽等等)都能直接在 SVG 文件中定义,但 ECharts 也支持在 <code>option</code> 中为具名元素定制样式,这能提供不少便利。</p>\n<p>可以在 <a href="https://echarts.apache.org/option.html#geo.itemStyle">geo.itemStyle</a> 或 <a href="https://echarts.apache.org/option.html#series-map.itemStyle">series-map.itemStyle</a> 中设置样式(也包括 <code>emphasis.itemStyle</code>、<code>select.itemStyle</code>、<code>blur.itemStyle</code>、<code>regions[i].itemStyle</code>、<code>regions[i].emphasis.itemStyle</code>、<code>regions[i].select.itemStyle</code>、<code>regions[i].blur.itemStyle</code>)。也能在这里删除一些具名元素的默认样式(例如,设置 <code>emphasis.itemStyle.color: null</code> 后,鼠标 hover 时填充色就不会改变)。</p>\n<p>此外,使用 <a href="https://echarts.apache.org/option.html#series-map">series-map</a> 时,也可以用 <a href="https://echarts.apache.org/option.html#visualMap">visualMap 组件</a> 为具名元素赋予样式。参见例子 <a href="https://echarts.apache.org/examples/zh/editor.html?c=geo-beef-cuts">庖丁解牛</a>。</p>\n<p>注意:\n只有这些具名元素可以在 <code>itemStyle</code> 中设置样式:\n<code>rect</code>、<code>circle</code>、<code>line</code>、<code>ellipse</code>、<code>polygon</code>、<code>polyline</code>、<code>path</code>。</p>\n<h2 id="select" tabindex="-1">元素的“选中”能力(select)</h2>\n<p>如果想使具名元素能被“选中”,把 <a href="https://echarts.apache.org/option.html#geo.selectedMode">geo.selectedMode</a> 或 <a href="https://echarts.apache.org/option.html#series-map.selectedMode">series-map.selectedMode</a> 设置为 <code>\'single\'</code> 或者 <code>\'multiple\'</code> 即可。元素被选中时的样式可以在 <a href="https://echarts.apache.org/option.html#geo.select">geo.select</a> 或 <a href="https://echarts.apache.org/option.html#series-map.select">series-map.select</a> 中设定。</p>\n<p>可以通过 <a href="https://echarts.apache.org/api.html#event.geoselectchanged">geoselectchanged</a> 事件获得所有被选中者的名称,例如:\n<md-code-block lang="ts" code="\'bXlDaGFydC5vbignZ2Vvc2VsZWN0Y2hhbmdlZCcsIGZ1bmN0aW9uIChwYXJhbXMpIHsKICAgIHZhciBzZWxlY3RlZE5hbWVzID0gcGFyYW1zLmFsbFNlbGVjdGVkWzBdLm5hbWU7CiAgICBjb25zb2xlLmxvZygnc2VsZWN0ZWQnLCBzZWxlY3RlZE5hbWVzKTsKfSk7\'" line-highlights="\'\'" /></p>\n<p>参见例子 <a href="https://echarts.apache.org/examples/zh/editor.html?c=geo-seatmap-flight">航班选座</a>。</p>\n<h2 id="emphasis-and-focus-blur" tabindex="-1">元素的“高亮强调”(emphasis)和“聚焦-淡出”(focus-blur)</h2>\n<p>具名元素可以自动在鼠标 hover 时有“高亮强调”(emphasis)的能力。</p>\n<p>此外,可以把 <a href="https://echarts.apache.org/option.html#geo.emphasis.focus">geo.emphasis.focus</a> 设置为 <code>\'self\'</code> 来启用 “聚焦-淡出”(focus-blur)功能。也就是,当鼠标 hover 在一个具名元素上时,所有其他元素都会被淡出。</p>\n<p>参见例子 <a href="https://echarts.apache.org/examples/zh/editor.html?c=geo-organ">Organ Visualization</a>。</p>\n<h2 id="tooltip" tabindex="-1">提示框(tooltip)</h2>\n<p>可以在具名元素上启用或禁用提示框(tooltip)功能。\n<md-code-block lang="ts" code="\'b3B0aW9uID0gewogICAgLy8g5ZyoIG9wdGlvbiDmoLnpg6jlo7DmmI4gdG9vbHRpcCDku6XmlbTkvZPlvIDlkK8gdG9vbHRpcCDlip_og73jgIIKICAgIHRvb2x0aXA6IHt9LAogICAgZ2VvOiB7CiAgICAgICAgbWFwOiAnc29tZV9zdmcnLAogICAgICAgIHRvb2x0aXA6IHsKICAgICAgICAgICAgLy8g55SoIGBzaG93YCDmnaXlkK_nlKgv56aB55SoIGdlbyDkuIrnmoQgdG9vbHRpcOOAggogICAgICAgICAgICBzaG93OiB0cnVlCiAgICAgICAgfSwKICAgICAgICByZWdpb25zOiBbewogICAgICAgICAgICBuYW1lOiAnc29tZV9uYW1lMScsCiAgICAgICAgICAgIC8vIOWmguaenOmcgOimgeeahOivne-8jOWPr-S7peWvueeJueWumuWFt-WQjeWFg-e0oOaMh-WumiB0b29sdGlwIOWPguaVsOOAggogICAgICAgICAgICB0b29sdGlwOiB7CiAgICAgICAgICAgICAgICBmb3JtYXR0ZXI6ICfkuIDkupvnibnmrornmoTmj5DnpLogMScKICAgICAgICAgICAgfQogICAgICAgIH0sIHsKICAgICAgICAgICAgbmFtZTogJ3NvbWVfbmFtZTInLAogICAgICAgICAgICB0b29sdGlwOiB7CiAgICAgICAgICAgICAgICBmb3JtYXR0ZXI6ICfkuIDkupvnibnmrornmoTmj5DnpLogMicKICAgICAgICAgICAgfQogICAgICAgIH1dCiAgICB9Cn07\'" line-highlights="\'\'" /></p>\n<p>如果想单独禁用 geo 上的 tooltip,只需:\n<md-code-block lang="ts" code="\'b3B0aW9uID0gewogICAgdG9vbHRpcDoge30sCiAgICBnZW86IHsKICAgICAgICBtYXA6ICdzb21lX3N2ZycsCiAgICAgICAgdG9vbHRpcDogewogICAgICAgICAgICBzaG93OiBmYWxzZQogICAgICAgIH0KICAgIH0KfTs\'" line-highlights="\'\'" /></p>\n<p>参见例子 <a href="https://echarts.apache.org/examples/zh/editor.html?c=geo-svg-map">SVG 地图</a>。</p>\n<h2 id="label" tabindex="-1">标签(label)</h2>\n<p>虽然可以直接在 SVG 中定义 <code>&lt;text&gt;</code>/<code>&lt;tspan&gt;</code> 来显示文本标签,但 ECharts 也支持用 <a href="https://echarts.apache.org/option.html#geo.label">geo.label</a> 或 <a href="https://echarts.apache.org/option.html#series-map.label">series-map.label</a> 来设置底图上的标签。</p>\n<p>标签功能默认在鼠标 hover 时是启用的。如果想禁用标签,只需:\n<md-code-block lang="ts" code="\'b3B0aW9uID0gewogICAgZ2VvOiB7CiAgICAgICAgbWFwOiAnc29tZV9zdmcnLAogICAgICAgIGVtcGhhc2lzOiB7CiAgICAgICAgICAgIGxhYmVsOiB7CiAgICAgICAgICAgICAgICBzaG93OiBmYWxzZQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9Ow\'" line-highlights="\'\'" /></p>\n<p>当想要多个元素共享一个标签时,我们有两种选择:</p>\n<ul>\n<li>将这些元素包裹在一个具名的 <code>&lt;g&gt;</code> 中(如 <code>&lt;g=&quot;name_a&quot;&gt;</code>)中,这样只会显示一个标签,并且基于 <code>&lt;g&gt;</code> 的 <code>boundingRect</code> 定位。</li>\n<li>给这些元素起相同的名字(如 <code>&lt;path name=&quot;name_b&quot;/&gt;&lt;path name=&quot;name_b&quot;/&gt;</code>),这样每个元素都会显示一个标签,并且会根据每个元素自身显示和定位。</li>\n</ul>\n<p>例如(将鼠标 hover 到元素上能显示标签):\n<md-example src="doc-example/geo-svg-label-basic" width="100%" height="300"></md-example></p>\n<p>注意:只有这些具名元素可以设置 <code>label</code>:\n<code>rect</code>、<code>circle</code>、<code>line</code>、<code>ellipse</code>、<code>polygon</code>、<code>polyline</code>、<code>path</code>、<code>g</code>。</p>\n<p>标签的用法也参见示例 <a href="https://echarts.apache.org/examples/zh/editor.html?c=geo-organ">Organ Visualization</a>。</p>\n<h2 id="events" tabindex="-1">事件</h2>\n<p>可以用如下方式监听具名元素的鼠标事件或者触摸事件:\n<md-code-block lang="ts" code="\'Ly8gJ25hbWUxJyDmmK_kuIDkuKogU1ZHIOWFg-e0oOeahOWQjeWtl-OAggpteUNoYXJ0Lm9uKCdjbGljaycsIHsgZ2VvSW5kZXg6IDAsIG5hbWU6ICduYW1lMScgfSwgZnVuY3Rpb24gKHBhcmFtcykgewogICAgY29uc29sZS5sb2cocGFyYW1zKTsKfSk7\'" line-highlights="\'\'" /></p>\n<h2 id="layout-of-svg-base-map" tabindex="-1">SVG 底图的布局</h2>\n<p>在默认情况下,ECharts 会将 SVG 底图放置在画布的中心。如果需要调整的话,一般只调整 <a href="https://echarts.apache.org/option.html#geo.layoutCenter">layoutCenter</a>/<a href="https://echarts.apache.org/option.html#geo.layoutSize">layoutSize</a>,偶尔也可能要调整 <code>&lt;svg viewBox=&quot;...&quot;&gt;</code>/<a href="https://echarts.apache.org/option.html#geo.boundingCoords">geo.boundingCoords</a>(它们两个的区别是:是否产生剪裁)。在大多数情况下,用这些已经足够了。</p>\n<p>如果要做一些精确的位置定制,那么还得了解下面这些概念。</p>\n<p><a href="https://echarts.apache.org/option.html#geo">地理坐标系(geo)</a> 和 <a href="https://echarts.apache.org/option.html#series-map">地图系列(map series)</a> 的布局规则和选项都是一样的。所以下面我们只讲 <a href="https://echarts.apache.org/option.html#geo">地理坐标系(geo)</a>。</p>\n<p><md-example src="doc-example/geo-svg-layout-basic" width="100%" height="600"></md-example></p>\n<p>上面的例子只有一个 ECharts 画布,其中三个 SVG 展示在六个 <a href="https://echarts.apache.org/option.html#geo">地理坐标系(geo)</a> 中。同一列中的两个 <a href="https://echarts.apache.org/option.html#geo">地理坐标系(geo)</a> 使用相同的 SVG。</p>\n<p>首先,形状的外观是由 SVG 文件本身决定的。也就是说,在上例中,由 <code>&lt;circle&gt;</code> 和 <code>viewBox</code> 属性决定(<code>viewBox</code> 会切割圆形)。可以注意,每一列的形状轮廓都一样(不管它们的位置、大小是否不同和是否被拉伸),因为它们使用的是同一个 SVG。</p>\n<p>其次,用户可以用下面任一组选项,指定 <a href="https://echarts.apache.org/option.html#geo">地理坐标系(geo)</a> 的视口(<code>view port</code>)的位置和大小(它们的单位都是 echarts 画布的像素,或者百分比值):</p>\n<ul>\n<li><a href="https://echarts.apache.org/option.html#geo.layoutCenter">layoutCenter</a>、<a href="https://echarts.apache.org/option.html#geo.layoutSize">layoutSize</a>(最常用)。</li>\n<li><a href="https://echarts.apache.org/option.html#geo.top">top</a>、<a href="https://echarts.apache.org/option.html#geo.right">right</a>、<a href="https://echarts.apache.org/option.html#geo.bottom">bottom</a>、<a href="https://echarts.apache.org/option.html#geo.left">left</a>(在上例中使用的是这组)。</li>\n</ul>\n<p>在上例中,六个 <code>geo view port</code> 用六个黑色方块表示。</p>\n<p>第三,确定 SVG 的 <code>bounding rect</code>。<code>bounding rect</code> 由以下方法决定(它们的单位都是 SVG 内部元素的度量单位):</p>\n<ol>\n<li>如果设定了 <a href="https://echarts.apache.org/option.html#geo.boundingCoords">geo.boundingCoords</a>,则用它作 <code>bounding rect</code>。</li>\n<li>否则,如果设定了 <code>&lt;svg width=&quot;...&quot; height=&quot;...&quot;&gt;</code>,则用 <code>[0, 0, width, height]</code> 作为 <code>bounding rect</code>。(如果只设定了 <code>width</code> 或 <code>height</code>,则只使用 <code>[0, width]</code> 或 <code>[0, height]</code>)。</li>\n<li>否则,如果设定了 <code>&lt;svg viewBox=&quot;...&quot;&gt;</code>,则用 <code>viewBox</code> 作 <code>bounding rect</code>。</li>\n<li>否则,由整个 SVG 所有元素 <code>bounding rect</code> 的并集得到最终 <code>bounding rect</code>。</li>\n<li>如果设定了 <a href="https://echarts.apache.org/option.html#geo.center">geo.center</a> 或 <a href="https://echarts.apache.org/option.html#geo.zoom">geo.zoom</a>,则把上述 <code>1~4</code> 得到的 <code>bounding rect</code> 进行相应的 <code>transform</code>。</li>\n</ol>\n<p><code>bounding rect</code> 确定后,会放置到相应的 <code>geo view port</code> 里:</p>\n<ul>\n<li>如果用的是 <a href="https://echarts.apache.org/option.html#geo.layoutCenter">layoutCenter</a>、<a href="https://echarts.apache.org/option.html#geo.layoutSize">layoutSize</a>,<code>bounding rect</code> 会置于 <code>geo view port</code> 的中心,并尽量填满 <code>geo view port</code>(保持长宽比)。</li>\n<li>如果用的是 <a href="https://echarts.apache.org/option.html#geo.top">top</a>、<a href="https://echarts.apache.org/option.html#geo.right">right</a>、<a href="https://echarts.apache.org/option.html#geo.bottom">bottom</a>、<a href="https://echarts.apache.org/option.html#geo.left">left</a>,<code>bounding rect</code> 会被拉伸,完全填充 <code>geo view port</code>。</li>\n</ul>\n<h2 id="place-series-on-svg-base-map" tabindex="-1">在 SVG 底图上绘制系列</h2>\n<p><a href="https://echarts.apache.org/option.html#series-scatter">scatter</a>、<a href="https://echarts.apache.org/option.html#series-effectScatter">effectScatter</a>、<a href="https://echarts.apache.org/option.html#series-lines">lines</a>、<a href="https://echarts.apache.org/option.html#series-custom">custom</a> 这些在 <a href="https://echarts.apache.org/option.html#geo">地理坐标系(geo)</a> 中可用的系列都可以在 SVG 底图上定位和显示。</p>\n<p>在这种用法中,<code>series.data</code> 的值的单位即为是 SVG 内部元素的度量单位。比如说:\n<md-code-block lang="ts" code="\'b3B0aW9uID0gewogICAgZ2VvOiB7CiAgICAgICAgbWFwOiAnc29tZV9zdmcnCiAgICB9LAogICAgc2VyaWVzOiB7CiAgICAgICAgdHlwZTogJ2VmZmVjdFNjYXR0ZXInLAogICAgICAgIGNvb3JkaW5hdGVTeXN0ZW06ICdnZW8nLAogICAgICAgIGdlb0luZGV4OiAwLAogICAgICAgIGRhdGE6IFsKICAgICAgICAgICAgLy8gU1ZHIGxvY2FsIGNvb3Jkcy4KICAgICAgICAgICAgWzQ4OC4yMzU4NDIxMDc4MDUzLCA0NTkuNzA5MTM4MzMwNzU3MzZdLAogICAgICAgICAgICBbNzcwLjM0MTU2NDQzMTk5MzksIDc1Ny45NjcyMTk0OTg2NDc1XSwKICAgICAgICAgICAgWzExODAuMDMyOTI4NDE5NjI5MSwgNzQzLjYxNDE4MDgzNDYyMTRdLAogICAgICAgIF0KICAgIH0KfTs\'" line-highlights="\'\'" /></p>\n<p>另外,有种简便方法可以获得 SVG 的坐标。\n<md-code-block lang="ts" code="\'bXlDaGFydC5zZXRPcHRpb24oewogICAgZ2VvOiB7CiAgICAgICAgbWFwOiAnc29tZV9zdmcnCiAgICB9Cn0pOwpteUNoYXJ0LmdldFpyKCkub24oJ2NsaWNrJywgZnVuY3Rpb24gKHBhcmFtcykgewogICAgdmFyIHBpeGVsUG9pbnQgPSBbcGFyYW1zLm9mZnNldFgsIHBhcmFtcy5vZmZzZXRZXTsKICAgIHZhciBkYXRhUG9pbnQgPSBteUNoYXJ0LmNvbnZlcnRGcm9tUGl4ZWwoeyBnZW9JbmRleDogMCB9LCBwaXhlbFBvaW50KTsKICAgIC8vIOWcqCBTVkcg5LiK54K55Ye75pe277yM5Z2Q5qCH5Lya6KKr5omT5Y2w44CCCiAgICAvLyDov5nkupvlnZDmoIflj6_ku6XlnKggYHNlcmllcy5kYXRhYCDph4zkvb_nlKjjgIIKICAgIGNvbnNvbGUubG9nKGRhdGFQb2ludCk7Cn0pOw\'" line-highlights="\'\'" /></p>\n<p>参见示例 <a href="https://echarts.apache.org/examples/zh/editor.html?c=geo-svg-scatter-simple">SVG Scatter</a>、<a href="https://echarts.apache.org/examples/zh/editor.html?c=geo-svg-lines">SVG Lines</a>、<a href="https://echarts.apache.org/examples/zh/editor.html?c=geo-traffic">SVG Traffic</a>。</p>\n<h2 id="unsupported-svg-features" tabindex="-1">暂不支持的 SVG 功能</h2>\n<p>实现一个完整的 SVG 解析器有点困难。虽然已经支持了常用的 SVG 功能,但至少下面列出的这些还没支持:</p>\n<ul>\n<li>翻转(flip)和倾斜(skew)(将在 <code>v5.1.2</code> 支持):\n<ul>\n<li>不支持 <code>transform: skew(...)</code>(包括包含 skew 的 <code>transform: matrix(...)</code>)。</li>\n<li>不支持当 <code>transform: scale(x, y)</code> 中 <code>x</code>/<code>y</code> 正负不同且有 <code>rotate</code>(例如,<code>scale: (1, -1), rotate(90)</code>)。</li>\n</ul>\n</li>\n<li>不支持 <code>&lt;style&gt;</code> 标签。\n<ul>\n<li>但内联样式是支持的(例如支持 <code>&lt;path style=&quot;color:red&quot; /&gt;</code>)。</li>\n</ul>\n</li>\n<li>单位:\n<ul>\n<li>只支持 <code>px</code>。不支持其他单位如 <code>width=&quot;231.65mm&quot;</code>。</li>\n<li>不支持百分比值,如不支持 <code>&lt;svg width=&quot;30%&quot; height=&quot;40%&quot;&gt;</code>。</li>\n</ul>\n</li>\n<li><code>&lt;defs&gt;</code> 标签:\n<ul>\n<li>只支持 <code>&lt;linearGradient&gt;</code>、<code>&lt;radialGradient&gt;</code>。</li>\n<li>还不支持在 <code>&lt;defs&gt;</code> 中定义其他元素(如 <code>&lt;pattern&gt;</code>、<code>&lt;path&gt;</code>、...)。</li>\n</ul>\n</li>\n<li><code>&lt;linearGradient&gt;</code>、<code>&lt;radialGradient&gt;</code>:\n<ul>\n<li>不支持 <code>fx</code>、<code>fy</code>。</li>\n<li>不支持 <code>gradientTransform</code>。</li>\n</ul>\n</li>\n<li><code>fill:url(..)</code>, <code>stroke:utl(..)</code>:\n<ul>\n<li>只支持 <code>url(#someId)</code>。</li>\n<li>不支持其他 URL 模式,例如不支持:\n<ul>\n<li><code>url(https://example.com/images/myImg.jpg)</code>。</li>\n<li><code>url(data:image/png;base64,iRxVB0...)</code>。</li>\n<li><code>url(myFont.woff)</code>。</li>\n</ul>\n</li>\n</ul>\n</li>\n<li><code>&lt;switch&gt;</code> 标签:\n<ul>\n<li><code>&lt;switch&gt;</code> 标签内的所有内容都会显示。不支持“切换”功能。</li>\n</ul>\n</li>\n<li><code>&lt;text&gt;</code>。\n<ul>\n<li>不支持 <code>textPath</code>。</li>\n<li>不支持 <a href="https://www.w3.org/TR/SVG/text.html#TermAddressableCharacter">Addressable character</a>,也就是说:</li>\n</ul>\n<pre><code class="language-xml">&lt;!-- 不支持: --&gt;\n&lt;tspan x=&quot;0 4.94 9.89&quot;&gt;abc&lt;/tspan&gt;。\n&lt;!-- 支持: --&gt;\n&lt;tspan x=&quot;0&quot;&gt;A&lt;/tspan&gt;\n&lt;tspan x=&quot;4.94&quot;&gt;b&lt;/tspan&gt;\n&lt;tspan x=&quot;9.89&quot;&gt;C&lt;/tspan&gt;\n</code></pre>\n</li>\n</ul>\n',postPath:"zh/how-to/component-types/geo/svg-base-map",title:"SVG 底图 - 地理坐标系(Geo) - 常用组件 - 应用篇"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:a},{title:"入门篇",dir:i,children:[{title:"获取 ECharts",dir:l},{title:"在项目中引入 ECharts",dir:r},{title:"资源列表",dir:c,draft:e},{title:"寻求帮助",dir:g},{title:"版本特性",dir:h,children:[{title:"ECharts 6 特性介绍",dir:d},{title:"v5 升级 v6 指南",dir:s},{title:"5.0",dir:n},{title:"v4 升级 v5 指南",dir:p},{title:5.2,dir:C},{title:5.3,dir:m},{title:5.4,dir:I},{title:5.5,dir:A},{title:5.6,dir:b}]}]},{title:"概念篇",dir:u,children:[{title:"图表容器及大小",dir:f},{title:"配置项",dir:v,draft:e},{title:"系列",dir:y,draft:e},{title:"样式",dir:G},{title:"数据集",dir:Z},{title:"数据转换",dir:S},{title:"坐标系",dir:w,draft:e},{title:"坐标轴",dir:V},{title:"视觉映射",dir:o},{title:"图例",dir:B},{title:"事件与行为",dir:W}]},{title:"应用篇",dir:x,children:[{title:"常用图表类型",dir:z,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:k},{title:"堆叠柱状图",dir:L},{title:"动态排序柱状图",dir:M},{title:"极坐标系柱状图",dir:K,draft:e},{title:"阶梯瀑布图",dir:O},{title:"视觉映射的柱状图",dir:o,draft:e}]},{title:"折线图",dir:D,children:[{title:"基础折线图",dir:H},{title:"堆叠折线图",dir:N},{title:"区域面积图",dir:R},{title:"平滑曲线图",dir:Y},{title:"阶梯线图",dir:T}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:X},{title:"圆环图",dir:F},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:J,children:[{title:"基础散点图",dir:q}]}]},{title:"常用组件",dir:j,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:E}]}]},{title:"移动端优化",dir:t,draft:e},{title:"跨平台方案",dir:P,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:Q},{title:"数据下钻",dir:U,draft:e}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:_}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:ee}]},{title:"交互",dir:te,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:oe,draft:e},{title:"智能指针吸附",dir:ae}]}]},{title:"最佳实践",dir:ie,children:[{title:"移动端优化",dir:t,draft:e},{title:le,dir:re},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:ce}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:ge}]}],en:[{title:"Get Started",dir:a},{title:"Basics",dir:i,children:[{title:"Download ECharts",dir:l},{title:"Import ECharts",dir:r},{title:"Resources",dir:c,draft:e},{title:"Get Help",dir:g},{title:"What's New",dir:h,children:[{title:"ECharts 6 Features",dir:d},{title:"Migration from v5 to v6",dir:s},{title:"5.0",dir:n},{title:"Migration from v4 to v5",dir:p},{title:5.2,dir:C},{title:5.3,dir:m},{title:5.4,dir:I},{title:5.5,dir:A},{title:5.6,dir:b}]}]},{title:"Concepts",dir:u,children:[{title:"Chart Container",dir:f},{title:"Chart Option",dir:v,draft:e},{title:"Series",dir:y,draft:e},{title:"Style",dir:G},{title:"Dataset",dir:Z},{title:"Data Transform",dir:S},{title:"Coordinate",dir:w,draft:e},{title:"Axis",dir:V},{title:"Visual Mapping",dir:o},{title:"Legend",dir:B},{title:"Event and Action",dir:W}]},{title:"How To Guides",dir:x,children:[{title:"Common Charts",dir:z,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:k},{title:"Stacked Bar",dir:L},{title:"Bar Racing",dir:M},{title:"Bar Polar",dir:K,draft:e},{title:"Waterfall",dir:O}]},{title:"Line",dir:D,children:[{title:"Basic Line",dir:H},{title:"Stacked Line",dir:N},{title:"Area Chart",dir:R},{title:"Smoothed Line",dir:Y},{title:"Step Line",dir:T}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:X},{title:"Ring Style",dir:F},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:J,children:[{title:"Basic Scatter",dir:q}]}]},{title:"Common Components",dir:j,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:E}]}]},{title:"Mobile",dir:t,draft:e},{title:"Cross Platform",dir:P,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:Q},{title:"Drilldown",dir:U,draft:e}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:_}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:ee}]},{title:"Interaction",dir:te,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:oe,draft:e},{title:"Intelligent Pointer Snapping",dir:ae}]}]},{title:"Best Practices",dir:ie,children:[{title:"Mobile Optimization",dir:t,draft:e},{title:le,dir:re},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:ce}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:ge}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:e,routePath:"/zh/how-to/component-types/geo/svg-base-map",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/zh/how-to/cross-platform/baidu-app/index.html b/docs/zh/how-to/cross-platform/baidu-app/index.html
new file mode 100644
index 0000000..1e768e3
--- /dev/null
+++ b/docs/zh/how-to/cross-platform/baidu-app/index.html
@@ -0,0 +1,13 @@
+<!doctype html>
+<html data-n-head-ssr lang="zh-CN" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh-CN%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>百度智能小程序 - 跨平台方案 - 应用篇 - 使用手册 - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="zh"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/zh/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/zh/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/zh/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/zh/index.html" class="navbar-brand"><img src="https://echarts.apache.org/zh/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/zh/index.html">首页</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">文档<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/feature.html">特性</a></li><li><a href="https://echarts.apache.org/handbook/zh/get-started/">使用手册</a></li><li><a href="https://echarts.apache.org/zh/api.html">API</a></li><li><a href="https://echarts.apache.org/zh/option.html">配置项手册</a></li><li><a href="https://echarts.apache.org/zh/changelog.html">版本记录</a></li><li><a href="https://echarts.apache.org/zh/faq.html">常见问题</a></li><li><a href="https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide">v6 升级指南</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">下载<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/download.html">下载</a></li><li><a href="https://echarts.apache.org/zh/download-theme.html">主题下载</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">自定义系列下载<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/download-extension.html">扩展下载</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/zh/index.html">示例</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">资源<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/spreadsheet.html">表格工具</a></li><li><a href="https://echarts.apache.org/zh/theme-builder.html">主题构建工具</a></li><li><a href="https://echarts.apache.org/zh/cheat-sheet.html">术语速查手册</a></li><li><a href="https://echarts.apache.org/zh/resources.html">更多资源</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">社区<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/events.html">活动</a></li><li><a href="https://echarts.apache.org/zh/committers.html">贡献者列表</a></li><li><a href="https://echarts.apache.org/zh/maillist.html">邮件列表</a></li><li><a href="https://echarts.apache.org/zh/contributing.html">如何贡献</a></li><li><a href="https://echarts.apache.org/zh/dependencies.html">依赖项</a></li><li><a href="https://echarts.apache.org/zh/coding-standard.html">代码规范</a></li><li><a href="https://github.com/apache/echarts" target="_blank">源码(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/security.html">安全</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">版权<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">活动<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">捐赠<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">鸣谢<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("en")'>EN</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/zh/get-started" class="nav-link"><span class="title">快速上手</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">入门篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/basics/download" class="nav-link"><span class="title">获取 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/import" class="nav-link"><span class="title">在项目中引入 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/basics/help" class="nav-link"><span class="title">寻求帮助</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">版本特性</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 特性介绍</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">v5 升级 v6 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">v4 升级 v5 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">概念篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/concepts/chart-size" class="nav-link"><span class="title">图表容器及大小</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/style" class="nav-link"><span class="title">样式</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/dataset" class="nav-link"><span class="title">数据集</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/data-transform" class="nav-link"><span class="title">数据转换</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/axis" class="nav-link"><span class="title">坐标轴</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/visual-map" class="nav-link"><span class="title">视觉映射</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/legend" class="nav-link"><span class="title">图例</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/event" class="nav-link"><span class="title">事件与行为</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">应用篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">常用图表类型</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">柱状图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">基础柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">堆叠柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">动态排序柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">阶梯瀑布图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">折线图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">基础折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">堆叠折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/area-line" class="nav-link"><span class="title">区域面积图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">平滑曲线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/step-line" class="nav-link"><span class="title">阶梯线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">饼图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">基础饼图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">圆环图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/rose" class="nav-link"><span class="title">南丁格尔图(玫瑰图)</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">散点图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">基础散点图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">常用组件</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">地理坐标系(Geo)</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG 底图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">跨平台方案</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/server" class="nav-link"><span class="title">服务端渲染</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/wechat-app" class="nav-link"><span class="title">微信小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/baidu-app" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">百度智能小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">数据处理</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/data/dynamic-data" class="nav-link"><span class="title">动态的异步数据</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">标签</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/label/rich-text" class="nav-link"><span class="title">富文本标签</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">动画</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/animation/transition" class="nav-link"><span class="title">数据过渡动画</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">交互</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/drag" class="nav-link"><span class="title">拖拽的实现</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">智能指针吸附</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">最佳实践</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/aria" class="nav-link"><span class="title">无障碍访问</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/security" class="nav-link"><span class="title">安全指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">编辑本文档</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/meta/edit-guide" class="nav-link"><span class="title">文档编辑指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="%E5%9C%A8%E7%99%BE%E5%BA%A6%E6%99%BA%E8%83%BD%E5%B0%8F%E7%A8%8B%E5%BA%8F%E4%B8%AD%E4%BD%BF%E7%94%A8-echarts" tabindex="-1">在百度智能小程序中使用 ECharts</h1> <p><a href="http://smartprogram.baidu.com/docs/develop/framework/echarts/">ECharts 图表</a> 以小程序动态库的形式提供了在百度智能小程序中使用 ECharts 的方式。</p> <p><a href="https://github.com/baidu-smart-app/baidu-smart-app-echarts-demo">baidu-smart-app-echarts-demo</a> 项目是使用该动态库的一个示例工程,可以作为参考,一般情况下不需要引入自己的项目。</p> <p>如有使用上的问题,可以在 <a href="https://github.com/baidu-smart-app/baidu-smart-app-echarts-demo/issues">baidu-smart-app-echarts-demo/issues</a> 中咨询。</p> <h2 id="%E4%BD%BF%E7%94%A8%E6%96%B9%E5%BC%8F" tabindex="-1">使用方式</h2> <p>参见百度智能小程序文档 <a href="http://smartprogram.baidu.com/docs/develop/framework/echarts/">ECharts 图表</a>。</p> <h2 id="%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9" tabindex="-1">注意事项</h2> <p>百度智能小程序上的 ECharts 以动态库的形式开放,因此开发者的使用方式与<a href="./zh/how-to/cross-platform/wechat-app">在微信小程序中使用 ECharts</a> 不太相同。尤其需要注意的是,前者需要在指定动态库名称的时候确定 ECharts 的版本号,而不能自行更换或使用自定义构建。这一点是由底层框架的技术实现决定的。具体来说,在指定百度智能小程序动态库名称的时候,需要通过 <code>provider</code> 指定动态库名称,具体参见<a href="http://smartprogram.baidu.com/docs/develop/framework/echarts/">文档</a>的「在项目中引用动态库」章节。</p> <p>请务必查看<a href="http://smartprogram.baidu.com/docs/develop/framework/echarts/">文档</a>的「兼容性说明」以了解各功能的实现方式。</p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">本文贡献者</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/zh/how-to/cross-platform/baidu-app.md" title="编辑本文" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">在 GitHub 上编辑本页</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/Ovilia" target="_blank" class="post-contributor has-avatar"><img alt="Ovilia" src="https://echarts.apache.org/en/images/people/羡辙.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>Ovilia</span></a><a href="https://github.com/vincentbernat" target="_blank" class="post-contributor"><!----> <span>vincentbernat</span></a><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,i,e,r,d,a,l,o,s,h,n,c,p,m,f,u,b,g,E,v,B,C,w,S,A,P,k,x,D,y,G,R,L,F,M,V,z,_,T,H,I,N,O,U,W,$,X,j,q,J,K,Q,Y,Z,tt,it,et,rt,dt,at,lt,ot,st){return{layout:"default",data:[{html:'<h1 id="%E5%9C%A8%E7%99%BE%E5%BA%A6%E6%99%BA%E8%83%BD%E5%B0%8F%E7%A8%8B%E5%BA%8F%E4%B8%AD%E4%BD%BF%E7%94%A8-echarts" tabindex="-1">在百度智能小程序中使用 ECharts</h1>\n<p><a href="http://smartprogram.baidu.com/docs/develop/framework/echarts/">ECharts 图表</a> 以小程序动态库的形式提供了在百度智能小程序中使用 ECharts 的方式。</p>\n<p><a href="https://github.com/baidu-smart-app/baidu-smart-app-echarts-demo">baidu-smart-app-echarts-demo</a> 项目是使用该动态库的一个示例工程,可以作为参考,一般情况下不需要引入自己的项目。</p>\n<p>如有使用上的问题,可以在 <a href="https://github.com/baidu-smart-app/baidu-smart-app-echarts-demo/issues">baidu-smart-app-echarts-demo/issues</a> 中咨询。</p>\n<h2 id="%E4%BD%BF%E7%94%A8%E6%96%B9%E5%BC%8F" tabindex="-1">使用方式</h2>\n<p>参见百度智能小程序文档 <a href="http://smartprogram.baidu.com/docs/develop/framework/echarts/">ECharts 图表</a>。</p>\n<h2 id="%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9" tabindex="-1">注意事项</h2>\n<p>百度智能小程序上的 ECharts 以动态库的形式开放,因此开发者的使用方式与<a href="./zh/how-to/cross-platform/wechat-app">在微信小程序中使用 ECharts</a> 不太相同。尤其需要注意的是,前者需要在指定动态库名称的时候确定 ECharts 的版本号,而不能自行更换或使用自定义构建。这一点是由底层框架的技术实现决定的。具体来说,在指定百度智能小程序动态库名称的时候,需要通过 <code>provider</code> 指定动态库名称,具体参见<a href="http://smartprogram.baidu.com/docs/develop/framework/echarts/">文档</a>的「在项目中引用动态库」章节。</p>\n<p>请务必查看<a href="http://smartprogram.baidu.com/docs/develop/framework/echarts/">文档</a>的「兼容性说明」以了解各功能的实现方式。</p>\n',postPath:"zh/how-to/cross-platform/baidu-app",title:"百度智能小程序 - 跨平台方案 - 应用篇"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:r},{title:"入门篇",dir:d,children:[{title:"获取 ECharts",dir:a},{title:"在项目中引入 ECharts",dir:l},{title:"资源列表",dir:o,draft:t},{title:"寻求帮助",dir:s},{title:"版本特性",dir:h,children:[{title:"ECharts 6 特性介绍",dir:n},{title:"v5 升级 v6 指南",dir:c},{title:"5.0",dir:p},{title:"v4 升级 v5 指南",dir:m},{title:5.2,dir:f},{title:5.3,dir:u},{title:5.4,dir:b},{title:5.5,dir:g},{title:5.6,dir:E}]}]},{title:"概念篇",dir:v,children:[{title:"图表容器及大小",dir:B},{title:"配置项",dir:C,draft:t},{title:"系列",dir:w,draft:t},{title:"样式",dir:S},{title:"数据集",dir:A},{title:"数据转换",dir:P},{title:"坐标系",dir:k,draft:t},{title:"坐标轴",dir:x},{title:"视觉映射",dir:e},{title:"图例",dir:D},{title:"事件与行为",dir:y}]},{title:"应用篇",dir:G,children:[{title:"常用图表类型",dir:R,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:L},{title:"堆叠柱状图",dir:F},{title:"动态排序柱状图",dir:M},{title:"极坐标系柱状图",dir:V,draft:t},{title:"阶梯瀑布图",dir:z},{title:"视觉映射的柱状图",dir:e,draft:t}]},{title:"折线图",dir:_,children:[{title:"基础折线图",dir:T},{title:"堆叠折线图",dir:H},{title:"区域面积图",dir:I},{title:"平滑曲线图",dir:N},{title:"阶梯线图",dir:O}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:U},{title:"圆环图",dir:W},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:$,children:[{title:"基础散点图",dir:X}]}]},{title:"常用组件",dir:j,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:q}]}]},{title:"移动端优化",dir:i,draft:t},{title:"跨平台方案",dir:J,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:K},{title:"数据下钻",dir:Q,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:Y}]},{title:"动画",dir:Z,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:it,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:et,draft:t},{title:"智能指针吸附",dir:rt}]}]},{title:"最佳实践",dir:dt,children:[{title:"移动端优化",dir:i,draft:t},{title:at,dir:lt},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:ot}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:st}]}],en:[{title:"Get Started",dir:r},{title:"Basics",dir:d,children:[{title:"Download ECharts",dir:a},{title:"Import ECharts",dir:l},{title:"Resources",dir:o,draft:t},{title:"Get Help",dir:s},{title:"What's New",dir:h,children:[{title:"ECharts 6 Features",dir:n},{title:"Migration from v5 to v6",dir:c},{title:"5.0",dir:p},{title:"Migration from v4 to v5",dir:m},{title:5.2,dir:f},{title:5.3,dir:u},{title:5.4,dir:b},{title:5.5,dir:g},{title:5.6,dir:E}]}]},{title:"Concepts",dir:v,children:[{title:"Chart Container",dir:B},{title:"Chart Option",dir:C,draft:t},{title:"Series",dir:w,draft:t},{title:"Style",dir:S},{title:"Dataset",dir:A},{title:"Data Transform",dir:P},{title:"Coordinate",dir:k,draft:t},{title:"Axis",dir:x},{title:"Visual Mapping",dir:e},{title:"Legend",dir:D},{title:"Event and Action",dir:y}]},{title:"How To Guides",dir:G,children:[{title:"Common Charts",dir:R,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:L},{title:"Stacked Bar",dir:F},{title:"Bar Racing",dir:M},{title:"Bar Polar",dir:V,draft:t},{title:"Waterfall",dir:z}]},{title:"Line",dir:_,children:[{title:"Basic Line",dir:T},{title:"Stacked Line",dir:H},{title:"Area Chart",dir:I},{title:"Smoothed Line",dir:N},{title:"Step Line",dir:O}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:U},{title:"Ring Style",dir:W},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:$,children:[{title:"Basic Scatter",dir:X}]}]},{title:"Common Components",dir:j,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:q}]}]},{title:"Mobile",dir:i,draft:t},{title:"Cross Platform",dir:J,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:K},{title:"Drilldown",dir:Q,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:Y}]},{title:"Animation",dir:Z,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:it,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:et,draft:t},{title:"Intelligent Pointer Snapping",dir:rt}]}]},{title:"Best Practices",dir:dt,children:[{title:"Mobile Optimization",dir:i,draft:t},{title:at,dir:lt},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:ot}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:st}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/zh/how-to/cross-platform/baidu-app",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/zh/how-to/cross-platform/server/index.html b/docs/zh/how-to/cross-platform/server/index.html
new file mode 100644
index 0000000..65b3220
--- /dev/null
+++ b/docs/zh/how-to/cross-platform/server/index.html
@@ -0,0 +1,134 @@
+<!doctype html>
+<html data-n-head-ssr lang="zh-CN" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh-CN%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>服务端渲染 - 跨平台方案 - 应用篇 - 使用手册 - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="zh"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/zh/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/zh/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/zh/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/zh/index.html" class="navbar-brand"><img src="https://echarts.apache.org/zh/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/zh/index.html">首页</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">文档<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/feature.html">特性</a></li><li><a href="https://echarts.apache.org/handbook/zh/get-started/">使用手册</a></li><li><a href="https://echarts.apache.org/zh/api.html">API</a></li><li><a href="https://echarts.apache.org/zh/option.html">配置项手册</a></li><li><a href="https://echarts.apache.org/zh/changelog.html">版本记录</a></li><li><a href="https://echarts.apache.org/zh/faq.html">常见问题</a></li><li><a href="https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide">v6 升级指南</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">下载<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/download.html">下载</a></li><li><a href="https://echarts.apache.org/zh/download-theme.html">主题下载</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">自定义系列下载<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/download-extension.html">扩展下载</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/zh/index.html">示例</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">资源<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/spreadsheet.html">表格工具</a></li><li><a href="https://echarts.apache.org/zh/theme-builder.html">主题构建工具</a></li><li><a href="https://echarts.apache.org/zh/cheat-sheet.html">术语速查手册</a></li><li><a href="https://echarts.apache.org/zh/resources.html">更多资源</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">社区<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/events.html">活动</a></li><li><a href="https://echarts.apache.org/zh/committers.html">贡献者列表</a></li><li><a href="https://echarts.apache.org/zh/maillist.html">邮件列表</a></li><li><a href="https://echarts.apache.org/zh/contributing.html">如何贡献</a></li><li><a href="https://echarts.apache.org/zh/dependencies.html">依赖项</a></li><li><a href="https://echarts.apache.org/zh/coding-standard.html">代码规范</a></li><li><a href="https://github.com/apache/echarts" target="_blank">源码(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/security.html">安全</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">版权<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">活动<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">捐赠<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">鸣谢<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("en")'>EN</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/zh/get-started" class="nav-link"><span class="title">快速上手</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">入门篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/basics/download" class="nav-link"><span class="title">获取 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/import" class="nav-link"><span class="title">在项目中引入 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/basics/help" class="nav-link"><span class="title">寻求帮助</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">版本特性</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 特性介绍</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">v5 升级 v6 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">v4 升级 v5 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">概念篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/concepts/chart-size" class="nav-link"><span class="title">图表容器及大小</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/style" class="nav-link"><span class="title">样式</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/dataset" class="nav-link"><span class="title">数据集</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/data-transform" class="nav-link"><span class="title">数据转换</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/axis" class="nav-link"><span class="title">坐标轴</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/visual-map" class="nav-link"><span class="title">视觉映射</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/legend" class="nav-link"><span class="title">图例</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/event" class="nav-link"><span class="title">事件与行为</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">应用篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">常用图表类型</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">柱状图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">基础柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">堆叠柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">动态排序柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">阶梯瀑布图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">折线图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">基础折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">堆叠折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/area-line" class="nav-link"><span class="title">区域面积图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">平滑曲线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/step-line" class="nav-link"><span class="title">阶梯线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">饼图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">基础饼图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">圆环图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/rose" class="nav-link"><span class="title">南丁格尔图(玫瑰图)</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">散点图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">基础散点图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">常用组件</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">地理坐标系(Geo)</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG 底图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">跨平台方案</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/server" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">服务端渲染</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/wechat-app" class="nav-link"><span class="title">微信小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/baidu-app" class="nav-link"><span class="title">百度智能小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">数据处理</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/data/dynamic-data" class="nav-link"><span class="title">动态的异步数据</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">标签</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/label/rich-text" class="nav-link"><span class="title">富文本标签</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">动画</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/animation/transition" class="nav-link"><span class="title">数据过渡动画</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">交互</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/drag" class="nav-link"><span class="title">拖拽的实现</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">智能指针吸附</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">最佳实践</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/aria" class="nav-link"><span class="title">无障碍访问</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/security" class="nav-link"><span class="title">安全指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">编辑本文档</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/meta/edit-guide" class="nav-link"><span class="title">文档编辑指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="%E6%9C%8D%E5%8A%A1%E7%AB%AF%E6%B8%B2%E6%9F%93-echarts-%E5%9B%BE%E8%A1%A8" tabindex="-1">服务端渲染 ECharts 图表</h1> <p>通常情况下,Apache ECharts<sup>TM</sup> 会在浏览器中动态的渲染图表,并且根据用户的交互来更新渲染。但是在下面这些比较特殊的场景,我们也需要在服务端中渲染图表并且输出到浏览器中:</p> <ul><li>需要缩短前端的渲染时间,保证第一时间显示图表</li> <li>需要在 Markdown, PDF 等不支持动态运行脚本的环境中嵌入图表</li></ul> <p>在这些场景下,ECharts 也提供了两种服务端渲染(server-side rendering,SSR)的方案:SVG 渲染或 Canvas 渲染。</p> <table><thead><tr><th>渲染方案</th> <th>渲染结果的形式</th> <th>优点</th></tr></thead> <tbody><tr><td>服务端 SVG 渲染</td> <td>SVG 字符串</td> <td>比 Canvas 图片体积更小;<br>矢量 SVG 图片不会模糊;<br>支持初始动画</td></tr> <tr><td>服务端 Canvas 渲染</td> <td>图片</td> <td>图片形式适用场景更广泛,对不支持 SVG 的场景可选择</td></tr></tbody></table> <p>通常情况下,应优先考虑使用服务端 SVG 渲染方案,如果 SVG 不适用,也可以考虑 Canvas 渲染方案。</p> <p>使用服务端渲染也有一定的局限性,尤其是和交互相关的一些操作无法支持。因此,如果有交互需求,可参考下文的“服务端渲染 Hydration”。</p> <h2 id="%E6%9C%8D%E5%8A%A1%E7%AB%AF%E6%B8%B2%E6%9F%93" tabindex="-1">服务端渲染</h2> <h3 id="%E6%9C%8D%E5%8A%A1%E7%AB%AF-svg-%E6%B8%B2%E6%9F%93" tabindex="-1">服务端 SVG 渲染</h3> <blockquote><p>版本更新:</p> <ul><li>5.3.0 版本:使用零依赖的服务端 SVG 字符串渲染方案,并支持图表的初始动画</li> <li>5.5.0 版本:新增客户端轻量运行时,客户端无需加载完整 ECharts 即可实现部分交互</li></ul></blockquote> <p>5.3.0 里新引入了零依赖的服务端 SVG 字符串渲染方案:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code><span class="token comment">// 服务端代码</span>
+<span class="token keyword">const</span> echarts <span class="token operator">=</span> <span class="token keyword">require</span><span class="token punctuation">(</span><span class="token string">'echarts'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+<span class="token comment">// 在 SSR 模式下第一个参数不需要再传入 DOM 对象</span>
+<span class="token keyword">let</span> chart <span class="token operator">=</span> echarts<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span><span class="token keyword">null</span><span class="token punctuation">,</span> <span class="token keyword">null</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
+  renderer<span class="token operator">:</span> <span class="token string">'svg'</span><span class="token punctuation">,</span> <span class="token comment">// 必须使用 SVG 模式</span>
+  ssr<span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span> <span class="token comment">// 开启 SSR</span>
+  width<span class="token operator">:</span> <span class="token number">400</span><span class="token punctuation">,</span> <span class="token comment">// 需要指明高和宽</span>
+  height<span class="token operator">:</span> <span class="token number">300</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+<span class="token comment">// 像正常使用一样 setOption</span>
+chart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+  <span class="token comment">//...</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+<span class="token comment">// 输出字符串</span>
+<span class="token keyword">const</span> svgStr <span class="token operator">=</span> chart<span class="token punctuation">.</span><span class="token function">renderToSVGString</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+<span class="token comment">// 如果不再需要图表,调用 dispose 以释放内存</span>
+chart<span class="token punctuation">.</span><span class="token function">dispose</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+chart <span class="token operator">=</span> <span class="token keyword">null</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>整体使用的代码结构跟在浏览器中使用一样,首先是<code>init</code>初始化一个图表实例,然后通过<code>setOption</code>设置图表的配置项。但是<code>init</code>传入的参数会跟在跟浏览器中使用有所不同:</p> <ul><li>首先因为在服务端会采用字符串拼接的方式来渲染得到 SVG,我们并不需要容器来展示渲染的内容,所以我们可以在<code>init</code>的时候第一个<code>container</code>参数传入<code>null</code>或者<code>undefined</code>。</li> <li>然后我们在<code>init</code>的第三个参数中,我们需要通过显示指定<code>ssr: true</code>来告诉 ECharts 我们需要开启服务端渲染的模式,该模式下 ECharts 会关闭动画循环的模块以及事件交互的模块。</li> <li>在服务端渲染中我们也必须要通过<code>width</code>和<code>height</code>显示的指定图表的高和宽,因此如果你的图表是需要根据容器大小自适应的话,可能需要思考一下服务端渲染是否适合你的场景了。一种可能的解决方案是,首屏获取到图表容器大小后,请求服务端渲染图表,然后在客户端渲染图表;当用户交互改变容器大小时,重新请求服务端渲染。</li></ul> <p>在浏览器中我们在<code>setOption</code>完之后 ECharts 就会自动进行渲染将结果绘制到页面中,后续也会在每一帧判断是否有动画需要进行重绘。Node.js 中我们在设置了<code>ssr: true</code>后则没有这个过程。取而代之我们使用了<code>renderToSVGString</code>,将当前的图表渲染到 SVG 字符串,进一步得再通过 HTTP Response 返回给前端或者缓存到本地。</p> <p>HTTP Response 返回给前端(这里以 Express.js 为例):</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code>res<span class="token punctuation">.</span><span class="token function">writeHead</span><span class="token punctuation">(</span><span class="token number">200</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
+  <span class="token string-property property">'Content-Type'</span><span class="token operator">:</span> <span class="token string">'application/xml'</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+res<span class="token punctuation">.</span><span class="token function">write</span><span class="token punctuation">(</span>svgStr<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// svgStr 是上面 chart.renderToSVGString() 得到的字符串</span>
+res<span class="token punctuation">.</span><span class="token function">end</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>或者保存到本地:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code>fs<span class="token punctuation">.</span><span class="token function">writeFile</span><span class="token punctuation">(</span><span class="token string">'bar.svg'</span><span class="token punctuation">,</span> svgStr<span class="token punctuation">,</span> <span class="token string">'utf-8'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h4 id="%E6%9C%8D%E5%8A%A1%E7%AB%AF%E6%B8%B2%E6%9F%93%E4%B8%AD%E7%9A%84%E5%8A%A8%E7%94%BB%E6%95%88%E6%9E%9C" tabindex="-1">服务端渲染中的动画效果</h4> <p>上面的例子中可以看到,就算是服务端渲染 ECharts 也可以提供动画效果,这个动画效果是通过在输出的 SVG 字符串中嵌入 CSS 动画实现的。并不需要额外的 JavaScript 再去控制动画。</p> <p>但是,也因为 CSS 动画的局限性,我们没法在服务端渲染中实现一些更灵活的动画功能,诸如柱状图排序动画,标签动画,路径图的特效动画等。部分系列诸如饼图的动画效果也为服务端渲染做了特殊的优化。</p> <p>如果你不希望有这个动画效果,可以在<code>setOption</code>的时候通过<code>animation: false</code>关闭动画。</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+  animation<span class="token operator">:</span> <span class="token boolean">false</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h3 id="%E6%9C%8D%E5%8A%A1%E7%AB%AF-canvas-%E6%B8%B2%E6%9F%93" tabindex="-1">服务端 Canvas 渲染</h3> <p>如果你希望输出的是一张图片而非 SVG 字符串,或者你还在使用更老的版本,我们会推荐使用 <a href="https://github.com/Automattic/node-canvas">node-canvas</a> 来实现 ECharts 的服务渲染,<a href="https://github.com/Automattic/node-canvas">node-canvas</a> 是在 Node.js 上的一套 Canvas 实现,它提供了跟浏览器中 Canvas 几乎一致的接口。</p> <p>下面是一个简单的例子</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code><span class="token keyword">var</span> echarts <span class="token operator">=</span> <span class="token keyword">require</span><span class="token punctuation">(</span><span class="token string">'echarts'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token keyword">const</span> <span class="token punctuation">{</span> createCanvas <span class="token punctuation">}</span> <span class="token operator">=</span> <span class="token keyword">require</span><span class="token punctuation">(</span><span class="token string">'canvas'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+<span class="token comment">// 在 5.3.0 之前的版本中,你必须要通过该接口注册 canvas 实例创建方法。</span>
+<span class="token comment">// 从 5.3.0 开始就不需要了</span>
+echarts<span class="token punctuation">.</span><span class="token function">setCanvasCreator</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
+  <span class="token keyword">return</span> <span class="token function">createCanvas</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+<span class="token keyword">const</span> canvas <span class="token operator">=</span> <span class="token function">createCanvas</span><span class="token punctuation">(</span><span class="token number">800</span><span class="token punctuation">,</span> <span class="token number">600</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token comment">// ECharts 可以直接使用 node-canvas 创建的 Canvas 实例作为容器</span>
+<span class="token keyword">let</span> chart <span class="token operator">=</span> echarts<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span>canvas<span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+<span class="token comment">// 像正常使用一样 setOption</span>
+chart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+  <span class="token comment">//...</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+<span class="token keyword">const</span> buffer <span class="token operator">=</span> canvas<span class="token punctuation">.</span><span class="token function">toBuffer</span><span class="token punctuation">(</span><span class="token string">'image/png'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+<span class="token comment">// 如果不再需要图表,调用 dispose 以释放内存</span>
+chart<span class="token punctuation">.</span><span class="token function">dispose</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+chart <span class="token operator">=</span> <span class="token keyword">null</span><span class="token punctuation">;</span>
+
+<span class="token comment">// 通过 Response 输出 PNG 图片</span>
+res<span class="token punctuation">.</span><span class="token function">writeHead</span><span class="token punctuation">(</span><span class="token number">200</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
+  <span class="token string-property property">'Content-Type'</span><span class="token operator">:</span> <span class="token string">'image/png'</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+res<span class="token punctuation">.</span><span class="token function">write</span><span class="token punctuation">(</span>buffer<span class="token punctuation">)</span><span class="token punctuation">;</span>
+res<span class="token punctuation">.</span><span class="token function">end</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h4 id="%E5%9B%BE%E7%89%87%E7%9A%84%E5%8A%A0%E8%BD%BD" tabindex="-1">图片的加载</h4> <p><a href="https://github.com/Automattic/node-canvas">node-canvas</a> 提供了图片加载的<code>Image</code>实现,如果你在图表中使用了到了图片,我们可以使用<code>5.3.0</code>新增的<code>setPlatformAPI</code>接口来适配。</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code>echarts<span class="token punctuation">.</span><span class="token function">setPlatformAPI</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+  <span class="token comment">// 同老版本的 setCanvasCreator</span>
+  <span class="token function">createCanvas</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+    <span class="token keyword">return</span> <span class="token function">createCanvas</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token function">loadImage</span><span class="token punctuation">(</span>src<span class="token punctuation">,</span> onload<span class="token punctuation">,</span> onerror<span class="token punctuation">)</span> <span class="token punctuation">{</span>
+    <span class="token keyword">const</span> img <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Image</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+    <span class="token comment">// 必须要绑定 this context.</span>
+    img<span class="token punctuation">.</span>onload <span class="token operator">=</span> <span class="token function">onload</span><span class="token punctuation">.</span><span class="token function">bind</span><span class="token punctuation">(</span>img<span class="token punctuation">)</span><span class="token punctuation">;</span>
+    img<span class="token punctuation">.</span>onerror <span class="token operator">=</span> <span class="token function">onerror</span><span class="token punctuation">.</span><span class="token function">bind</span><span class="token punctuation">(</span>img<span class="token punctuation">)</span><span class="token punctuation">;</span>
+    img<span class="token punctuation">.</span>src <span class="token operator">=</span> src<span class="token punctuation">;</span>
+    <span class="token keyword">return</span> img<span class="token punctuation">;</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>如果你的图片是需要远程获取的,我们建议你通过 http 请求先预取该图片得到<code>base64</code>之后再作为图片的 URL 传入,这样可以保证在 Response 输出的时候图片是加载完成的。</p> <h2 id="%E5%AE%A2%E6%88%B7%E7%AB%AF%E4%BA%8C%E6%AC%A1%E6%B8%B2%E6%9F%93" tabindex="-1">客户端二次渲染</h2> <h3 id="%E5%AE%A2%E6%88%B7%E7%AB%AF%E6%87%92%E5%8A%A0%E8%BD%BD%E5%AE%8C%E6%95%B4-echarts" tabindex="-1">客户端懒加载完整 ECharts</h3> <p>最新版本的 ECharts 服务端 SVG 渲染除了完成图表的渲染外,支持的功能包括:</p> <ul><li>图表初始动画(例如:柱状图初始化时的柱子上升动画)</li> <li>高亮样式(例如:鼠标移动到柱状图柱子上时的高亮效果)</li></ul> <p>但仅使用服务端渲染无法支持的功能包括:</p> <ul><li>动态改变数据</li> <li>点击图例切换系列是否显示</li> <li>移动鼠标显示提示框</li> <li>其他交互相关的功能</li></ul> <p>如果有相关需求,可以考虑先使用服务端渲染快速输出首屏图表,然后等待 <code>echarts.js</code> 加载完后,重新在客户端渲染同样的图表(称为 Hydration),这样就可以实现正常的交互效果和动态改变数据了。需要注意的是,在客户端渲染的时候,应开启 <code>tooltip: { show: true }</code> 之类的交互组件,并且用 <code>animation: 0</code> 关闭初始动画(初始动画应由服务端渲染结果的 SVG 动画完成)。</p> <p>从用户体验的角度,几乎感受不到二次渲染的过程,整个切换效果是非常无缝衔接的。你也可以像上面的例子中一样,在加载 <code>echarts.js</code> 的过程中使用 <a href="https://www.npmjs.com/package/pace-js">pace-js</a> 之类的库实现显示加载进度条的效果,来解决 ECharts 尚未完全加载完之前没有交互反馈的问题。</p> <p>使用服务端渲染 SVG 加上客户端 ECharts 懒加载的方式,其优点是,能够在首屏快速展示图表,而懒加载完成后可以实现所有 ECharts 的功能和交互;而缺点是,懒加载完整的 ECharts 需要一定时间,在加载完成前无法实现除高亮之外的用户交互(在这种情况下,开发者可以通过显示“加载中”来解决无交互反馈带来的困惑)。这个方案也是目前比较推荐的对首屏加载时间敏感,对功能交互完整性要求高的方案。</p> <h3 id="%E5%AE%A2%E6%88%B7%E7%AB%AF%E8%BD%BB%E9%87%8F%E8%BF%90%E8%A1%8C%E6%97%B6" tabindex="-1">客户端轻量运行时</h3> <p>方案一给出了实现完整交互的方案,但是有些场景下,我们并不需要很复杂的交互,只是希望在服务端渲染的基础上,能够在客户端进行一些简单的交互,例如:点击图例切换系列是否显示。这种情况下,我们能否不在客户端加载至少需要几百 KB 的 ECharts 代码呢?</p> <p>从 v5.5.0 版本起,如果图表只需要以下效果和交互,可以通过服务端 SVG 渲染 + 客户端轻量运行时来实现:</p> <ul><li>图表初始动画(实现原理:服务端渲染的 SVG 带有 CSS 动画)</li> <li>高亮样式(实现原理:服务端渲染的 SVG 带有 CSS 动画)</li> <li>动态改变数据(实现原理:轻量运行时请求服务器进行二次渲染)</li> <li>点击图例切换系列是否显示(实现原理:轻量运行时请求服务器进行二次渲染)</li></ul> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-html line-numbers"><code><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>chart-container<span class="token punctuation">"</span></span> <span class="token special-attr"><span class="token attr-name">style</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token value css language-css"><span class="token property">width</span><span class="token punctuation">:</span>800px<span class="token punctuation">;</span><span class="token property">height</span><span class="token punctuation">:</span>600px</span><span class="token punctuation">"</span></span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">></span></span>
+
+<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://cdn.jsdelivr.net/npm/echarts/ssr/client/dist/index.min.js<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">></span></span>
+<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span><span class="token punctuation">></span></span>
+const ssrClient = window['echarts-ssr-client'];
+
+const isSeriesShown = {
+  a: true,
+  b: true
+};
+
+function updateChart(svgStr) {
+  const container = document.getElementById('chart-container');
+  container.innerHTML = svgStr;
+
+  // 使用轻量运行时赋予图表交互能力
+  ssrClient.hydrate(container, {
+    on: {
+      click: (params) => {
+        if (params.ssrType === 'legend') {
+          // 点击图例元素,请求服务器进行二次渲染
+          isSeriesShown[params.seriesName] = !isSeriesShown[params.seriesName];
+          fetch('...?series=' + JSON.stringify(isSeriesShown))
+            .then(res => res.text())
+            .then(svgStr => {
+              updateChart(svgStr);
+            });
+        }
+      }
+    }
+  });
+}
+
+// 通过 AJAX 请求获取服务端渲染的 SVG 字符串
+fetch('...')
+  .then(res => res.text())
+  .then(svgStr => {
+    updateChart(svgStr);
+  });
+<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">></span></span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>服务器端根据客户端传来的每个系列是否显示的信息(<code>isSeriesShown</code>)进行二次渲染,返回新的 SVG 字符串。服务端代码<a href="#%E6%9C%8D%E5%8A%A1%E7%AB%AF-svg-%E6%B8%B2%E6%9F%93">同上文</a>,不再赘述。</p> <blockquote><p>关于状态记录:上述这种开发方式和纯客户端渲染的相比,开发者需要记录并维护一些额外的信息(例如这个例子中每个系列是否显示)。这是不可避免的,因为 HTTP 请求本身是无状态的,如果要实现有状态,要么像上面的例子这样由客户端记录状态并传递,要么服务器保留状态(例如通过 session,但需要耗费更多的服务器内存以及更复杂的销毁逻辑所以并不推荐)。</p></blockquote> <p>使用服务端 SVG 渲染加上客户端轻量运行时的方式,其优点是,客户端不再需要加载几百 KB 的 ECharts 代码,只需要加载一个不到 4KB 的轻量运行时代码;并且从用户体验的角度牺牲很少(支持初始动画、鼠标高亮)。而缺点是,需要一定的开发成本来维护额外的状态信息,并且无法支持实时性要求高的交互(例如移动鼠标显示提示框)。总体来说,<strong>推荐在对代码体积有非常严格要求的环境使用</strong>。</p> <h2 id="%E4%BD%BF%E7%94%A8%E8%BD%BB%E9%87%8F%E8%BF%90%E8%A1%8C%E6%97%B6" tabindex="-1">使用轻量运行时</h2> <p>客户端轻量运行时通过将服务端渲染的 SVG 图表进行理解,从而赋予图表一定的交互能力。</p> <p>可以通过以下方式引入客户端轻量运行时:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-html line-numbers"><code><span class="token comment">&lt;!-- 方法一:使用 CDN --></span>
+<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://cdn.jsdelivr.net/npm/echarts/ssr/client/dist/index.min.js<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">></span></span>
+<span class="token comment">&lt;!-- 方法二:使用 NPM --></span>
+<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>node_modules/echarts/ssr/client/dist/index.js<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">></span></span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h3 id="api" tabindex="-1">API</h3> <p>在全局变量 <code>window['echarts-ssr-client']</code> 中提供了以下 API:</p> <h4 id="hydrate(dom--htmlelement%2C-options--ecssrclientoptions)" tabindex="-1">hydrate(dom: HTMLElement, options: ECSSRClientOptions)</h4> <ul><li><code>dom</code>:图表容器,其内部的内容在调用本方法前应已设为服务端渲染的 SVG 图表</li> <li><code>options</code>:配置项</li></ul> <h5 id="ecssrclientoptions" tabindex="-1">ECSSRClientOptions</h5> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code>on<span class="token operator">?</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+  mouseover<span class="token operator">?</span><span class="token operator">:</span> <span class="token punctuation">(</span>params<span class="token operator">:</span> ECSSRClientEventParams<span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token keyword">void</span><span class="token punctuation">,</span>
+  mouseout<span class="token operator">?</span><span class="token operator">:</span> <span class="token punctuation">(</span>params<span class="token operator">:</span> ECSSRClientEventParams<span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token keyword">void</span><span class="token punctuation">,</span>
+  click<span class="token operator">?</span><span class="token operator">:</span> <span class="token punctuation">(</span>params<span class="token operator">:</span> ECSSRClientEventParams<span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token keyword">void</span>
+<span class="token punctuation">}</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>和<a href="https://echarts.apache.org/api.html#events.%E9%BC%A0%E6%A0%87%E4%BA%8B%E4%BB%B6">图表鼠标事件</a>一样,这里的时间都是针对图表数据对象的(例如:柱状图的柱子、折线图的数据点等),而不是针对图表容器的。</p> <h5 id="ecssrclienteventparams" tabindex="-1">ECSSRClientEventParams</h5> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-ts line-numbers"><code><span class="token punctuation">{</span>
+  type<span class="token operator">:</span> <span class="token string">'mouseover'</span> <span class="token operator">|</span> <span class="token string">'mouseout'</span> <span class="token operator">|</span> <span class="token string">'click'</span><span class="token punctuation">;</span>
+  ssrType<span class="token operator">:</span> <span class="token string">'legend'</span> <span class="token operator">|</span> <span class="token string">'chart'</span><span class="token punctuation">;</span>
+  seriesIndex<span class="token operator">?</span><span class="token operator">:</span> <span class="token builtin">number</span><span class="token punctuation">;</span>
+  dataIndex<span class="token operator">?</span><span class="token operator">:</span> <span class="token builtin">number</span><span class="token punctuation">;</span>
+  event<span class="token operator">:</span> Event<span class="token punctuation">;</span>
+<span class="token punctuation">}</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <ul><li><code>type</code>:事件类型</li> <li><code>ssrType</code>:事件对象类型,<code>legend</code> 表示图例数据,<code>chart</code> 表示图表数据对象</li> <li><code>seriesIndex</code>:系列索引</li> <li><code>dataIndex</code>:数据索引</li> <li><code>event</code>:原生事件对象</li></ul> <h3 id="%E7%A4%BA%E4%BE%8B" tabindex="-1">示例</h3> <p>参见上文「客户端轻量运行时」章节。</p> <h2 id="%E5%B0%8F%E7%BB%93" tabindex="-1">小结</h2> <p>上面,我们介绍了几种不同的渲染方案,包括:</p> <ul><li>客户端渲染</li> <li>服务端 SVG 渲染</li> <li>服务端 Canvas 渲染</li> <li>客户端轻量运行时渲染</li></ul> <p>这四种渲染方式可以结合使用,我们再来总结一下它们各自适用的场景:</p> <table><thead><tr><th>渲染方案</th> <th>加载体积</th> <th>功能及交互损失</th> <th>相对开发工作量</th> <th>推荐场景</th></tr></thead> <tbody><tr><td>客户端渲染</td> <td>最大</td> <td>无</td> <td>最小</td> <td>首屏加载时间不敏感,对功能交互完整性要求高</td></tr> <tr><td>客户端渲染(<a href="zh/basics/import#%E6%8C%89%E9%9C%80%E5%BC%95%E5%85%A5-echarts-%E5%9B%BE%E8%A1%A8%E5%92%8C%E7%BB%84%E4%BB%B6">按需引用</a>部分包)</td> <td>大</td> <td>大:没有引入的包就无法使用对应功能</td> <td>小</td> <td>首屏加载时间不敏感,对代码体积没有严格要求但是希望尽可能小,仅使用 ECharts 的一小部分功能,没有服务器资源</td></tr> <tr><td>一次性服务端 SVG 渲染</td> <td>小</td> <td>大:无法动态改变数据、不支持图例切换系列是否显示、不支持提示框等实时性要求高的交互</td> <td>中</td> <td>首屏加载时间敏感,对功能交互完整性要求低</td></tr> <tr><td>一次性服务端 Canvas 渲染</td> <td>大</td> <td>最大:同上且不支持初始动画、图片体积更大、放大会模糊</td> <td>中</td> <td>首屏加载时间敏感,对功能交互完整性要求低,平台限制无法使用 SVG</td></tr> <tr><td>服务端 SVG 渲染加客户端懒加载 ECharts</td> <td>小,然后大</td> <td>中:懒加载完成前无法交互</td> <td>中</td> <td>首屏加载时间敏感,对功能交互完整性要求高,最好图表不会在加载后立刻需要交互</td></tr> <tr><td>服务端 SVG 渲染加客户端轻量运行时</td> <td>小</td> <td>中:无法实现实时性要求高的交互</td> <td>大(需要维护图表状态、定义客户端服务端接口协议)</td> <td>首屏加载时间敏感,对功能交互完整性要求低,对代码体积有非常严格要求,交互实时性要求不严格</td></tr> <tr><td>服务端 SVG 渲染加客户端懒加载 ECharts,懒加载完成前使用轻量运行时</td> <td>小,然后大</td> <td>小:在懒加载完成前无法进行复杂交互</td> <td>最大</td> <td>首屏加载时间敏感,对功能交互完整性要求高,有充分的开发时间</td></tr></tbody></table> <p>当然,还存在一些其他的组合可能性,但最常用的就是以上几种,相信如果你了解了这些渲染方案的特点,就可以根据自己的场景选择合适的方案了。</p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">本文贡献者</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/zh/how-to/cross-platform/server.md" title="编辑本文" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">在 GitHub 上编辑本页</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/Ovilia" target="_blank" class="post-contributor has-avatar"><img alt="Ovilia" src="https://echarts.apache.org/en/images/people/羡辙.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>Ovilia</span></a><a href="https://github.com/plainheart" target="_blank" class="post-contributor has-avatar"><img alt="plainheart" src="https://echarts.apache.org/en/images/people/plainheart.jpg" loading="lazy" decoding="async" fetchpriority="low"> <span>plainheart</span></a><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,i,e,d,n,l,a,r,o,c,h,s,g,p,C,m,I,b,A,u,E,v,B,y,G,S,Z,V,W,L,K,Y,F,R,w,H,N,z,X,k,j,D,O,J,P,f,x,M,T,U,Q,q,_,$,tt,it,et,dt,nt,lt,at,rt,ot){return{layout:"default",data:[{html:'<h1 id="%E6%9C%8D%E5%8A%A1%E7%AB%AF%E6%B8%B2%E6%9F%93-echarts-%E5%9B%BE%E8%A1%A8" tabindex="-1">服务端渲染 ECharts 图表</h1>\n<p>通常情况下,Apache ECharts<sup>TM</sup> 会在浏览器中动态的渲染图表,并且根据用户的交互来更新渲染。但是在下面这些比较特殊的场景,我们也需要在服务端中渲染图表并且输出到浏览器中:</p>\n<ul>\n<li>需要缩短前端的渲染时间,保证第一时间显示图表</li>\n<li>需要在 Markdown, PDF 等不支持动态运行脚本的环境中嵌入图表</li>\n</ul>\n<p>在这些场景下,ECharts 也提供了两种服务端渲染(server-side rendering,SSR)的方案:SVG 渲染或 Canvas 渲染。</p>\n<table>\n<thead>\n<tr>\n<th>渲染方案</th>\n<th>渲染结果的形式</th>\n<th>优点</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>服务端 SVG 渲染</td>\n<td>SVG 字符串</td>\n<td>比 Canvas 图片体积更小;<br>矢量 SVG 图片不会模糊;<br>支持初始动画</td>\n</tr>\n<tr>\n<td>服务端 Canvas 渲染</td>\n<td>图片</td>\n<td>图片形式适用场景更广泛,对不支持 SVG 的场景可选择</td>\n</tr>\n</tbody>\n</table>\n<p>通常情况下,应优先考虑使用服务端 SVG 渲染方案,如果 SVG 不适用,也可以考虑 Canvas 渲染方案。</p>\n<p>使用服务端渲染也有一定的局限性,尤其是和交互相关的一些操作无法支持。因此,如果有交互需求,可参考下文的“服务端渲染 Hydration”。</p>\n<h2 id="%E6%9C%8D%E5%8A%A1%E7%AB%AF%E6%B8%B2%E6%9F%93" tabindex="-1">服务端渲染</h2>\n<h3 id="%E6%9C%8D%E5%8A%A1%E7%AB%AF-svg-%E6%B8%B2%E6%9F%93" tabindex="-1">服务端 SVG 渲染</h3>\n<blockquote>\n<p>版本更新:</p>\n<ul>\n<li>5.3.0 版本:使用零依赖的服务端 SVG 字符串渲染方案,并支持图表的初始动画</li>\n<li>5.5.0 版本:新增客户端轻量运行时,客户端无需加载完整 ECharts 即可实现部分交互</li>\n</ul>\n</blockquote>\n<p>5.3.0 里新引入了零依赖的服务端 SVG 字符串渲染方案:</p>\n<md-code-block lang="ts" code="\'Ly8g5pyN5Yqh56uv5Luj56CBCmNvbnN0IGVjaGFydHMgPSByZXF1aXJlKCdlY2hhcnRzJyk7CgovLyDlnKggU1NSIOaooeW8j-S4i-esrOS4gOS4quWPguaVsOS4jemcgOimgeWGjeS8oOWFpSBET00g5a-56LGhCmxldCBjaGFydCA9IGVjaGFydHMuaW5pdChudWxsLCBudWxsLCB7CiAgcmVuZGVyZXI6ICdzdmcnLCAvLyDlv4Xpobvkvb_nlKggU1ZHIOaooeW8jwogIHNzcjogdHJ1ZSwgLy8g5byA5ZCvIFNTUgogIHdpZHRoOiA0MDAsIC8vIOmcgOimgeaMh-aYjumrmOWSjOWuvQogIGhlaWdodDogMzAwCn0pOwoKLy8g5YOP5q2j5bi45L2_55So5LiA5qC3IHNldE9wdGlvbgpjaGFydC5zZXRPcHRpb24oewogIC8vLi4uCn0pOwoKLy8g6L6T5Ye65a2X56ym5LiyCmNvbnN0IHN2Z1N0ciA9IGNoYXJ0LnJlbmRlclRvU1ZHU3RyaW5nKCk7CgovLyDlpoLmnpzkuI3lho3pnIDopoHlm77ooajvvIzosIPnlKggZGlzcG9zZSDku6Xph4rmlL7lhoXlrZgKY2hhcnQuZGlzcG9zZSgpOwpjaGFydCA9IG51bGw7\'" line-highlights="\'\'" />\n<p>整体使用的代码结构跟在浏览器中使用一样,首先是<code>init</code>初始化一个图表实例,然后通过<code>setOption</code>设置图表的配置项。但是<code>init</code>传入的参数会跟在跟浏览器中使用有所不同:</p>\n<ul>\n<li>首先因为在服务端会采用字符串拼接的方式来渲染得到 SVG,我们并不需要容器来展示渲染的内容,所以我们可以在<code>init</code>的时候第一个<code>container</code>参数传入<code>null</code>或者<code>undefined</code>。</li>\n<li>然后我们在<code>init</code>的第三个参数中,我们需要通过显示指定<code>ssr: true</code>来告诉 ECharts 我们需要开启服务端渲染的模式,该模式下 ECharts 会关闭动画循环的模块以及事件交互的模块。</li>\n<li>在服务端渲染中我们也必须要通过<code>width</code>和<code>height</code>显示的指定图表的高和宽,因此如果你的图表是需要根据容器大小自适应的话,可能需要思考一下服务端渲染是否适合你的场景了。一种可能的解决方案是,首屏获取到图表容器大小后,请求服务端渲染图表,然后在客户端渲染图表;当用户交互改变容器大小时,重新请求服务端渲染。</li>\n</ul>\n<p>在浏览器中我们在<code>setOption</code>完之后 ECharts 就会自动进行渲染将结果绘制到页面中,后续也会在每一帧判断是否有动画需要进行重绘。Node.js 中我们在设置了<code>ssr: true</code>后则没有这个过程。取而代之我们使用了<code>renderToSVGString</code>,将当前的图表渲染到 SVG 字符串,进一步得再通过 HTTP Response 返回给前端或者缓存到本地。</p>\n<p>HTTP Response 返回给前端(这里以 Express.js 为例):</p>\n<md-code-block lang="ts" code="\'cmVzLndyaXRlSGVhZCgyMDAsIHsKICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3htbCcKfSk7CnJlcy53cml0ZShzdmdTdHIpOyAvLyBzdmdTdHIg5piv5LiK6Z2iIGNoYXJ0LnJlbmRlclRvU1ZHU3RyaW5nKCkg5b6X5Yiw55qE5a2X56ym5LiyCnJlcy5lbmQoKTs\'" line-highlights="\'\'" />\n<p>或者保存到本地:</p>\n<md-code-block lang="ts" code="\'ZnMud3JpdGVGaWxlKCdiYXIuc3ZnJywgc3ZnU3RyLCAndXRmLTgnKTs\'" line-highlights="\'\'" />\n<h4 id="%E6%9C%8D%E5%8A%A1%E7%AB%AF%E6%B8%B2%E6%9F%93%E4%B8%AD%E7%9A%84%E5%8A%A8%E7%94%BB%E6%95%88%E6%9E%9C" tabindex="-1">服务端渲染中的动画效果</h4>\n<p>上面的例子中可以看到,就算是服务端渲染 ECharts 也可以提供动画效果,这个动画效果是通过在输出的 SVG 字符串中嵌入 CSS 动画实现的。并不需要额外的 JavaScript 再去控制动画。</p>\n<p>但是,也因为 CSS 动画的局限性,我们没法在服务端渲染中实现一些更灵活的动画功能,诸如柱状图排序动画,标签动画,路径图的特效动画等。部分系列诸如饼图的动画效果也为服务端渲染做了特殊的优化。</p>\n<p>如果你不希望有这个动画效果,可以在<code>setOption</code>的时候通过<code>animation: false</code>关闭动画。</p>\n<md-code-block lang="ts" code="\'c2V0T3B0aW9uKHsKICBhbmltYXRpb246IGZhbHNlCn0pOw\'" line-highlights="\'\'" />\n<h3 id="%E6%9C%8D%E5%8A%A1%E7%AB%AF-canvas-%E6%B8%B2%E6%9F%93" tabindex="-1">服务端 Canvas 渲染</h3>\n<p>如果你希望输出的是一张图片而非 SVG 字符串,或者你还在使用更老的版本,我们会推荐使用 <a href="https://github.com/Automattic/node-canvas">node-canvas</a> 来实现 ECharts 的服务渲染,<a href="https://github.com/Automattic/node-canvas">node-canvas</a> 是在 Node.js 上的一套 Canvas 实现,它提供了跟浏览器中 Canvas 几乎一致的接口。</p>\n<p>下面是一个简单的例子</p>\n<md-code-block lang="ts" code="\'dmFyIGVjaGFydHMgPSByZXF1aXJlKCdlY2hhcnRzJyk7CmNvbnN0IHsgY3JlYXRlQ2FudmFzIH0gPSByZXF1aXJlKCdjYW52YXMnKTsKCi8vIOWcqCA1LjMuMCDkuYvliY3nmoTniYjmnKzkuK3vvIzkvaDlv4XpobvopoHpgJrov4for6XmjqXlj6Pms6jlhowgY2FudmFzIOWunuS-i-WIm-W7uuaWueazleOAggovLyDku44gNS4zLjAg5byA5aeL5bCx5LiN6ZyA6KaB5LqGCmVjaGFydHMuc2V0Q2FudmFzQ3JlYXRvcigoKSA9PiB7CiAgcmV0dXJuIGNyZWF0ZUNhbnZhcygpOwp9KTsKCmNvbnN0IGNhbnZhcyA9IGNyZWF0ZUNhbnZhcyg4MDAsIDYwMCk7Ci8vIEVDaGFydHMg5Y-v5Lul55u05o6l5L2_55SoIG5vZGUtY2FudmFzIOWIm-W7uueahCBDYW52YXMg5a6e5L6L5L2c5Li65a655ZmoCmxldCBjaGFydCA9IGVjaGFydHMuaW5pdChjYW52YXMpOwoKLy8g5YOP5q2j5bi45L2_55So5LiA5qC3IHNldE9wdGlvbgpjaGFydC5zZXRPcHRpb24oewogIC8vLi4uCn0pOwoKY29uc3QgYnVmZmVyID0gY2FudmFzLnRvQnVmZmVyKCdpbWFnZS9wbmcnKTsKCi8vIOWmguaenOS4jeWGjemcgOimgeWbvuihqO-8jOiwg-eUqCBkaXNwb3NlIOS7pemHiuaUvuWGheWtmApjaGFydC5kaXNwb3NlKCk7CmNoYXJ0ID0gbnVsbDsKCi8vIOmAmui_hyBSZXNwb25zZSDovpPlh7ogUE5HIOWbvueJhwpyZXMud3JpdGVIZWFkKDIwMCwgewogICdDb250ZW50LVR5cGUnOiAnaW1hZ2UvcG5nJwp9KTsKcmVzLndyaXRlKGJ1ZmZlcik7CnJlcy5lbmQoKTs\'" line-highlights="\'\'" />\n<h4 id="%E5%9B%BE%E7%89%87%E7%9A%84%E5%8A%A0%E8%BD%BD" tabindex="-1">图片的加载</h4>\n<p><a href="https://github.com/Automattic/node-canvas">node-canvas</a> 提供了图片加载的<code>Image</code>实现,如果你在图表中使用了到了图片,我们可以使用<code>5.3.0</code>新增的<code>setPlatformAPI</code>接口来适配。</p>\n<md-code-block lang="ts" code="\'ZWNoYXJ0cy5zZXRQbGF0Zm9ybUFQSSh7CiAgLy8g5ZCM6ICB54mI5pys55qEIHNldENhbnZhc0NyZWF0b3IKICBjcmVhdGVDYW52YXMoKSB7CiAgICByZXR1cm4gY3JlYXRlQ2FudmFzKCk7CiAgfSwKICBsb2FkSW1hZ2Uoc3JjLCBvbmxvYWQsIG9uZXJyb3IpIHsKICAgIGNvbnN0IGltZyA9IG5ldyBJbWFnZSgpOwogICAgLy8g5b-F6aG76KaB57uR5a6aIHRoaXMgY29udGV4dC4KICAgIGltZy5vbmxvYWQgPSBvbmxvYWQuYmluZChpbWcpOwogICAgaW1nLm9uZXJyb3IgPSBvbmVycm9yLmJpbmQoaW1nKTsKICAgIGltZy5zcmMgPSBzcmM7CiAgICByZXR1cm4gaW1nOwogIH0KfSk7\'" line-highlights="\'\'" />\n<p>如果你的图片是需要远程获取的,我们建议你通过 http 请求先预取该图片得到<code>base64</code>之后再作为图片的 URL 传入,这样可以保证在 Response 输出的时候图片是加载完成的。</p>\n<h2 id="%E5%AE%A2%E6%88%B7%E7%AB%AF%E4%BA%8C%E6%AC%A1%E6%B8%B2%E6%9F%93" tabindex="-1">客户端二次渲染</h2>\n<h3 id="%E5%AE%A2%E6%88%B7%E7%AB%AF%E6%87%92%E5%8A%A0%E8%BD%BD%E5%AE%8C%E6%95%B4-echarts" tabindex="-1">客户端懒加载完整 ECharts</h3>\n<p>最新版本的 ECharts 服务端 SVG 渲染除了完成图表的渲染外,支持的功能包括:</p>\n<ul>\n<li>图表初始动画(例如:柱状图初始化时的柱子上升动画)</li>\n<li>高亮样式(例如:鼠标移动到柱状图柱子上时的高亮效果)</li>\n</ul>\n<p>但仅使用服务端渲染无法支持的功能包括:</p>\n<ul>\n<li>动态改变数据</li>\n<li>点击图例切换系列是否显示</li>\n<li>移动鼠标显示提示框</li>\n<li>其他交互相关的功能</li>\n</ul>\n<p>如果有相关需求,可以考虑先使用服务端渲染快速输出首屏图表,然后等待 <code>echarts.js</code> 加载完后,重新在客户端渲染同样的图表(称为 Hydration),这样就可以实现正常的交互效果和动态改变数据了。需要注意的是,在客户端渲染的时候,应开启 <code>tooltip: { show: true }</code> 之类的交互组件,并且用 <code>animation: 0</code> 关闭初始动画(初始动画应由服务端渲染结果的 SVG 动画完成)。</p>\n<p>从用户体验的角度,几乎感受不到二次渲染的过程,整个切换效果是非常无缝衔接的。你也可以像上面的例子中一样,在加载 <code>echarts.js</code> 的过程中使用 <a href="https://www.npmjs.com/package/pace-js">pace-js</a> 之类的库实现显示加载进度条的效果,来解决 ECharts 尚未完全加载完之前没有交互反馈的问题。</p>\n<p>使用服务端渲染 SVG 加上客户端 ECharts 懒加载的方式,其优点是,能够在首屏快速展示图表,而懒加载完成后可以实现所有 ECharts 的功能和交互;而缺点是,懒加载完整的 ECharts 需要一定时间,在加载完成前无法实现除高亮之外的用户交互(在这种情况下,开发者可以通过显示“加载中”来解决无交互反馈带来的困惑)。这个方案也是目前比较推荐的对首屏加载时间敏感,对功能交互完整性要求高的方案。</p>\n<h3 id="%E5%AE%A2%E6%88%B7%E7%AB%AF%E8%BD%BB%E9%87%8F%E8%BF%90%E8%A1%8C%E6%97%B6" tabindex="-1">客户端轻量运行时</h3>\n<p>方案一给出了实现完整交互的方案,但是有些场景下,我们并不需要很复杂的交互,只是希望在服务端渲染的基础上,能够在客户端进行一些简单的交互,例如:点击图例切换系列是否显示。这种情况下,我们能否不在客户端加载至少需要几百 KB 的 ECharts 代码呢?</p>\n<p>从 v5.5.0 版本起,如果图表只需要以下效果和交互,可以通过服务端 SVG 渲染 + 客户端轻量运行时来实现:</p>\n<ul>\n<li>图表初始动画(实现原理:服务端渲染的 SVG 带有 CSS 动画)</li>\n<li>高亮样式(实现原理:服务端渲染的 SVG 带有 CSS 动画)</li>\n<li>动态改变数据(实现原理:轻量运行时请求服务器进行二次渲染)</li>\n<li>点击图例切换系列是否显示(实现原理:轻量运行时请求服务器进行二次渲染)</li>\n</ul>\n<md-code-block lang="html" code="\'PGRpdiBpZD0iY2hhcnQtY29udGFpbmVyIiBzdHlsZT0id2lkdGg6ODAwcHg7aGVpZ2h0OjYwMHB4Ij48L2Rpdj4KCjxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2VjaGFydHMvc3NyL2NsaWVudC9kaXN0L2luZGV4Lm1pbi5qcyI-PC9zY3JpcHQ-CjxzY3JpcHQ-CmNvbnN0IHNzckNsaWVudCA9IHdpbmRvd1snZWNoYXJ0cy1zc3ItY2xpZW50J107Cgpjb25zdCBpc1Nlcmllc1Nob3duID0gewogIGE6IHRydWUsCiAgYjogdHJ1ZQp9OwoKZnVuY3Rpb24gdXBkYXRlQ2hhcnQoc3ZnU3RyKSB7CiAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoYXJ0LWNvbnRhaW5lcicpOwogIGNvbnRhaW5lci5pbm5lckhUTUwgPSBzdmdTdHI7CgogIC8vIOS9v-eUqOi9u-mHj-i_kOihjOaXtui1i-S6iOWbvuihqOS6pOS6kuiDveWKmwogIHNzckNsaWVudC5oeWRyYXRlKGNvbnRhaW5lciwgewogICAgb246IHsKICAgICAgY2xpY2s6IChwYXJhbXMpID0-IHsKICAgICAgICBpZiAocGFyYW1zLnNzclR5cGUgPT09ICdsZWdlbmQnKSB7CiAgICAgICAgICAvLyDngrnlh7vlm77kvovlhYPntKDvvIzor7fmsYLmnI3liqHlmajov5vooYzkuozmrKHmuLLmn5MKICAgICAgICAgIGlzU2VyaWVzU2hvd25bcGFyYW1zLnNlcmllc05hbWVdID0gIWlzU2VyaWVzU2hvd25bcGFyYW1zLnNlcmllc05hbWVdOwogICAgICAgICAgZmV0Y2goJy4uLj9zZXJpZXM9JyArIEpTT04uc3RyaW5naWZ5KGlzU2VyaWVzU2hvd24pKQogICAgICAgICAgICAudGhlbihyZXMgPT4gcmVzLnRleHQoKSkKICAgICAgICAgICAgLnRoZW4oc3ZnU3RyID0-IHsKICAgICAgICAgICAgICB1cGRhdGVDaGFydChzdmdTdHIpOwogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9KTsKfQoKLy8g6YCa6L-HIEFKQVgg6K-35rGC6I635Y-W5pyN5Yqh56uv5riy5p-T55qEIFNWRyDlrZfnrKbkuLIKZmV0Y2goJy4uLicpCiAgLnRoZW4ocmVzID0-IHJlcy50ZXh0KCkpCiAgLnRoZW4oc3ZnU3RyID0-IHsKICAgIHVwZGF0ZUNoYXJ0KHN2Z1N0cik7CiAgfSk7Cjwvc2NyaXB0Pg\'" line-highlights="\'\'" />\n<p>服务器端根据客户端传来的每个系列是否显示的信息(<code>isSeriesShown</code>)进行二次渲染,返回新的 SVG 字符串。服务端代码<a href="#%E6%9C%8D%E5%8A%A1%E7%AB%AF-svg-%E6%B8%B2%E6%9F%93">同上文</a>,不再赘述。</p>\n<blockquote>\n<p>关于状态记录:上述这种开发方式和纯客户端渲染的相比,开发者需要记录并维护一些额外的信息(例如这个例子中每个系列是否显示)。这是不可避免的,因为 HTTP 请求本身是无状态的,如果要实现有状态,要么像上面的例子这样由客户端记录状态并传递,要么服务器保留状态(例如通过 session,但需要耗费更多的服务器内存以及更复杂的销毁逻辑所以并不推荐)。</p>\n</blockquote>\n<p>使用服务端 SVG 渲染加上客户端轻量运行时的方式,其优点是,客户端不再需要加载几百 KB 的 ECharts 代码,只需要加载一个不到 4KB 的轻量运行时代码;并且从用户体验的角度牺牲很少(支持初始动画、鼠标高亮)。而缺点是,需要一定的开发成本来维护额外的状态信息,并且无法支持实时性要求高的交互(例如移动鼠标显示提示框)。总体来说,<strong>推荐在对代码体积有非常严格要求的环境使用</strong>。</p>\n<h2 id="%E4%BD%BF%E7%94%A8%E8%BD%BB%E9%87%8F%E8%BF%90%E8%A1%8C%E6%97%B6" tabindex="-1">使用轻量运行时</h2>\n<p>客户端轻量运行时通过将服务端渲染的 SVG 图表进行理解,从而赋予图表一定的交互能力。</p>\n<p>可以通过以下方式引入客户端轻量运行时:</p>\n<md-code-block lang="html" code="\'PCEtLSDmlrnms5XkuIDvvJrkvb_nlKggQ0ROIC0tPgo8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9lY2hhcnRzL3Nzci9jbGllbnQvZGlzdC9pbmRleC5taW4uanMiPjwvc2NyaXB0Pgo8IS0tIOaWueazleS6jO-8muS9v-eUqCBOUE0gLS0-CjxzY3JpcHQgc3JjPSJub2RlX21vZHVsZXMvZWNoYXJ0cy9zc3IvY2xpZW50L2Rpc3QvaW5kZXguanMiPjwvc2NyaXB0Pg\'" line-highlights="\'\'" />\n<h3 id="api" tabindex="-1">API</h3>\n<p>在全局变量 <code>window[\'echarts-ssr-client\']</code> 中提供了以下 API:</p>\n<h4 id="hydrate(dom--htmlelement%2C-options--ecssrclientoptions)" tabindex="-1">hydrate(dom: HTMLElement, options: ECSSRClientOptions)</h4>\n<ul>\n<li><code>dom</code>:图表容器,其内部的内容在调用本方法前应已设为服务端渲染的 SVG 图表</li>\n<li><code>options</code>:配置项</li>\n</ul>\n<h5 id="ecssrclientoptions" tabindex="-1">ECSSRClientOptions</h5>\n<md-code-block lang="ts" code="\'b24_OiB7CiAgbW91c2VvdmVyPzogKHBhcmFtczogRUNTU1JDbGllbnRFdmVudFBhcmFtcykgPT4gdm9pZCwKICBtb3VzZW91dD86IChwYXJhbXM6IEVDU1NSQ2xpZW50RXZlbnRQYXJhbXMpID0-IHZvaWQsCiAgY2xpY2s_OiAocGFyYW1zOiBFQ1NTUkNsaWVudEV2ZW50UGFyYW1zKSA9PiB2b2lkCn0\'" line-highlights="\'\'" />\n<p>和<a href="https://echarts.apache.org/api.html#events.%E9%BC%A0%E6%A0%87%E4%BA%8B%E4%BB%B6">图表鼠标事件</a>一样,这里的时间都是针对图表数据对象的(例如:柱状图的柱子、折线图的数据点等),而不是针对图表容器的。</p>\n<h5 id="ecssrclienteventparams" tabindex="-1">ECSSRClientEventParams</h5>\n<md-code-block lang="ts" code="\'ewogIHR5cGU6ICdtb3VzZW92ZXInIHwgJ21vdXNlb3V0JyB8ICdjbGljayc7CiAgc3NyVHlwZTogJ2xlZ2VuZCcgfCAnY2hhcnQnOwogIHNlcmllc0luZGV4PzogbnVtYmVyOwogIGRhdGFJbmRleD86IG51bWJlcjsKICBldmVudDogRXZlbnQ7Cn0\'" line-highlights="\'\'" />\n<ul>\n<li><code>type</code>:事件类型</li>\n<li><code>ssrType</code>:事件对象类型,<code>legend</code> 表示图例数据,<code>chart</code> 表示图表数据对象</li>\n<li><code>seriesIndex</code>:系列索引</li>\n<li><code>dataIndex</code>:数据索引</li>\n<li><code>event</code>:原生事件对象</li>\n</ul>\n<h3 id="%E7%A4%BA%E4%BE%8B" tabindex="-1">示例</h3>\n<p>参见上文「客户端轻量运行时」章节。</p>\n<h2 id="%E5%B0%8F%E7%BB%93" tabindex="-1">小结</h2>\n<p>上面,我们介绍了几种不同的渲染方案,包括:</p>\n<ul>\n<li>客户端渲染</li>\n<li>服务端 SVG 渲染</li>\n<li>服务端 Canvas 渲染</li>\n<li>客户端轻量运行时渲染</li>\n</ul>\n<p>这四种渲染方式可以结合使用,我们再来总结一下它们各自适用的场景:</p>\n<table>\n<thead>\n<tr>\n<th>渲染方案</th>\n<th>加载体积</th>\n<th>功能及交互损失</th>\n<th>相对开发工作量</th>\n<th>推荐场景</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>客户端渲染</td>\n<td>最大</td>\n<td>无</td>\n<td>最小</td>\n<td>首屏加载时间不敏感,对功能交互完整性要求高</td>\n</tr>\n<tr>\n<td>客户端渲染(<a href="zh/basics/import#%E6%8C%89%E9%9C%80%E5%BC%95%E5%85%A5-echarts-%E5%9B%BE%E8%A1%A8%E5%92%8C%E7%BB%84%E4%BB%B6">按需引用</a>部分包)</td>\n<td>大</td>\n<td>大:没有引入的包就无法使用对应功能</td>\n<td>小</td>\n<td>首屏加载时间不敏感,对代码体积没有严格要求但是希望尽可能小,仅使用 ECharts 的一小部分功能,没有服务器资源</td>\n</tr>\n<tr>\n<td>一次性服务端 SVG 渲染</td>\n<td>小</td>\n<td>大:无法动态改变数据、不支持图例切换系列是否显示、不支持提示框等实时性要求高的交互</td>\n<td>中</td>\n<td>首屏加载时间敏感,对功能交互完整性要求低</td>\n</tr>\n<tr>\n<td>一次性服务端 Canvas 渲染</td>\n<td>大</td>\n<td>最大:同上且不支持初始动画、图片体积更大、放大会模糊</td>\n<td>中</td>\n<td>首屏加载时间敏感,对功能交互完整性要求低,平台限制无法使用 SVG</td>\n</tr>\n<tr>\n<td>服务端 SVG 渲染加客户端懒加载 ECharts</td>\n<td>小,然后大</td>\n<td>中:懒加载完成前无法交互</td>\n<td>中</td>\n<td>首屏加载时间敏感,对功能交互完整性要求高,最好图表不会在加载后立刻需要交互</td>\n</tr>\n<tr>\n<td>服务端 SVG 渲染加客户端轻量运行时</td>\n<td>小</td>\n<td>中:无法实现实时性要求高的交互</td>\n<td>大(需要维护图表状态、定义客户端服务端接口协议)</td>\n<td>首屏加载时间敏感,对功能交互完整性要求低,对代码体积有非常严格要求,交互实时性要求不严格</td>\n</tr>\n<tr>\n<td>服务端 SVG 渲染加客户端懒加载 ECharts,懒加载完成前使用轻量运行时</td>\n<td>小,然后大</td>\n<td>小:在懒加载完成前无法进行复杂交互</td>\n<td>最大</td>\n<td>首屏加载时间敏感,对功能交互完整性要求高,有充分的开发时间</td>\n</tr>\n</tbody>\n</table>\n<p>当然,还存在一些其他的组合可能性,但最常用的就是以上几种,相信如果你了解了这些渲染方案的特点,就可以根据自己的场景选择合适的方案了。</p>\n',postPath:"zh/how-to/cross-platform/server",title:"服务端渲染 - 跨平台方案 - 应用篇"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:d},{title:"入门篇",dir:n,children:[{title:"获取 ECharts",dir:l},{title:"在项目中引入 ECharts",dir:a},{title:"资源列表",dir:r,draft:t},{title:"寻求帮助",dir:o},{title:"版本特性",dir:c,children:[{title:"ECharts 6 特性介绍",dir:h},{title:"v5 升级 v6 指南",dir:s},{title:"5.0",dir:g},{title:"v4 升级 v5 指南",dir:p},{title:5.2,dir:C},{title:5.3,dir:m},{title:5.4,dir:I},{title:5.5,dir:b},{title:5.6,dir:A}]}]},{title:"概念篇",dir:u,children:[{title:"图表容器及大小",dir:E},{title:"配置项",dir:v,draft:t},{title:"系列",dir:B,draft:t},{title:"样式",dir:y},{title:"数据集",dir:G},{title:"数据转换",dir:S},{title:"坐标系",dir:Z,draft:t},{title:"坐标轴",dir:V},{title:"视觉映射",dir:e},{title:"图例",dir:W},{title:"事件与行为",dir:L}]},{title:"应用篇",dir:K,children:[{title:"常用图表类型",dir:Y,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:F},{title:"堆叠柱状图",dir:R},{title:"动态排序柱状图",dir:w},{title:"极坐标系柱状图",dir:H,draft:t},{title:"阶梯瀑布图",dir:N},{title:"视觉映射的柱状图",dir:e,draft:t}]},{title:"折线图",dir:z,children:[{title:"基础折线图",dir:X},{title:"堆叠折线图",dir:k},{title:"区域面积图",dir:j},{title:"平滑曲线图",dir:D},{title:"阶梯线图",dir:O}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:J},{title:"圆环图",dir:P},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:f,children:[{title:"基础散点图",dir:x}]}]},{title:"常用组件",dir:M,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:T}]}]},{title:"移动端优化",dir:i,draft:t},{title:"跨平台方案",dir:U,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:Q},{title:"数据下钻",dir:q,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:_}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:it,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:et,draft:t},{title:"智能指针吸附",dir:dt}]}]},{title:"最佳实践",dir:nt,children:[{title:"移动端优化",dir:i,draft:t},{title:lt,dir:at},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:rt}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:ot}]}],en:[{title:"Get Started",dir:d},{title:"Basics",dir:n,children:[{title:"Download ECharts",dir:l},{title:"Import ECharts",dir:a},{title:"Resources",dir:r,draft:t},{title:"Get Help",dir:o},{title:"What's New",dir:c,children:[{title:"ECharts 6 Features",dir:h},{title:"Migration from v5 to v6",dir:s},{title:"5.0",dir:g},{title:"Migration from v4 to v5",dir:p},{title:5.2,dir:C},{title:5.3,dir:m},{title:5.4,dir:I},{title:5.5,dir:b},{title:5.6,dir:A}]}]},{title:"Concepts",dir:u,children:[{title:"Chart Container",dir:E},{title:"Chart Option",dir:v,draft:t},{title:"Series",dir:B,draft:t},{title:"Style",dir:y},{title:"Dataset",dir:G},{title:"Data Transform",dir:S},{title:"Coordinate",dir:Z,draft:t},{title:"Axis",dir:V},{title:"Visual Mapping",dir:e},{title:"Legend",dir:W},{title:"Event and Action",dir:L}]},{title:"How To Guides",dir:K,children:[{title:"Common Charts",dir:Y,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:F},{title:"Stacked Bar",dir:R},{title:"Bar Racing",dir:w},{title:"Bar Polar",dir:H,draft:t},{title:"Waterfall",dir:N}]},{title:"Line",dir:z,children:[{title:"Basic Line",dir:X},{title:"Stacked Line",dir:k},{title:"Area Chart",dir:j},{title:"Smoothed Line",dir:D},{title:"Step Line",dir:O}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:J},{title:"Ring Style",dir:P},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:f,children:[{title:"Basic Scatter",dir:x}]}]},{title:"Common Components",dir:M,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:T}]}]},{title:"Mobile",dir:i,draft:t},{title:"Cross Platform",dir:U,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:Q},{title:"Drilldown",dir:q,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:_}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:it,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:et,draft:t},{title:"Intelligent Pointer Snapping",dir:dt}]}]},{title:"Best Practices",dir:nt,children:[{title:"Mobile Optimization",dir:i,draft:t},{title:lt,dir:at},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:rt}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:ot}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/zh/how-to/cross-platform/server",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/zh/how-to/cross-platform/wechat-app/index.html b/docs/zh/how-to/cross-platform/wechat-app/index.html
new file mode 100644
index 0000000..5854c55
--- /dev/null
+++ b/docs/zh/how-to/cross-platform/wechat-app/index.html
@@ -0,0 +1,13 @@
+<!doctype html>
+<html data-n-head-ssr lang="zh-CN" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh-CN%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>微信小程序 - 跨平台方案 - 应用篇 - 使用手册 - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="zh"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/zh/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/zh/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/zh/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/zh/index.html" class="navbar-brand"><img src="https://echarts.apache.org/zh/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/zh/index.html">首页</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">文档<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/feature.html">特性</a></li><li><a href="https://echarts.apache.org/handbook/zh/get-started/">使用手册</a></li><li><a href="https://echarts.apache.org/zh/api.html">API</a></li><li><a href="https://echarts.apache.org/zh/option.html">配置项手册</a></li><li><a href="https://echarts.apache.org/zh/changelog.html">版本记录</a></li><li><a href="https://echarts.apache.org/zh/faq.html">常见问题</a></li><li><a href="https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide">v6 升级指南</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">下载<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/download.html">下载</a></li><li><a href="https://echarts.apache.org/zh/download-theme.html">主题下载</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">自定义系列下载<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/download-extension.html">扩展下载</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/zh/index.html">示例</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">资源<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/spreadsheet.html">表格工具</a></li><li><a href="https://echarts.apache.org/zh/theme-builder.html">主题构建工具</a></li><li><a href="https://echarts.apache.org/zh/cheat-sheet.html">术语速查手册</a></li><li><a href="https://echarts.apache.org/zh/resources.html">更多资源</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">社区<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/events.html">活动</a></li><li><a href="https://echarts.apache.org/zh/committers.html">贡献者列表</a></li><li><a href="https://echarts.apache.org/zh/maillist.html">邮件列表</a></li><li><a href="https://echarts.apache.org/zh/contributing.html">如何贡献</a></li><li><a href="https://echarts.apache.org/zh/dependencies.html">依赖项</a></li><li><a href="https://echarts.apache.org/zh/coding-standard.html">代码规范</a></li><li><a href="https://github.com/apache/echarts" target="_blank">源码(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/security.html">安全</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">版权<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">活动<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">捐赠<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">鸣谢<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("en")'>EN</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/zh/get-started" class="nav-link"><span class="title">快速上手</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">入门篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/basics/download" class="nav-link"><span class="title">获取 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/import" class="nav-link"><span class="title">在项目中引入 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/basics/help" class="nav-link"><span class="title">寻求帮助</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">版本特性</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 特性介绍</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">v5 升级 v6 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">v4 升级 v5 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">概念篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/concepts/chart-size" class="nav-link"><span class="title">图表容器及大小</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/style" class="nav-link"><span class="title">样式</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/dataset" class="nav-link"><span class="title">数据集</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/data-transform" class="nav-link"><span class="title">数据转换</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/axis" class="nav-link"><span class="title">坐标轴</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/visual-map" class="nav-link"><span class="title">视觉映射</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/legend" class="nav-link"><span class="title">图例</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/event" class="nav-link"><span class="title">事件与行为</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">应用篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">常用图表类型</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">柱状图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">基础柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">堆叠柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">动态排序柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">阶梯瀑布图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">折线图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">基础折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">堆叠折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/area-line" class="nav-link"><span class="title">区域面积图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">平滑曲线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/step-line" class="nav-link"><span class="title">阶梯线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">饼图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">基础饼图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">圆环图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/rose" class="nav-link"><span class="title">南丁格尔图(玫瑰图)</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">散点图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">基础散点图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">常用组件</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">地理坐标系(Geo)</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG 底图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">跨平台方案</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/server" class="nav-link"><span class="title">服务端渲染</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/wechat-app" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">微信小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/baidu-app" class="nav-link"><span class="title">百度智能小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">数据处理</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/data/dynamic-data" class="nav-link"><span class="title">动态的异步数据</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">标签</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/label/rich-text" class="nav-link"><span class="title">富文本标签</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">动画</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/animation/transition" class="nav-link"><span class="title">数据过渡动画</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">交互</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/drag" class="nav-link"><span class="title">拖拽的实现</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">智能指针吸附</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">最佳实践</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/aria" class="nav-link"><span class="title">无障碍访问</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/security" class="nav-link"><span class="title">安全指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">编辑本文档</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/meta/edit-guide" class="nav-link"><span class="title">文档编辑指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="%E5%9C%A8%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F%E4%B8%AD%E4%BD%BF%E7%94%A8-echarts" tabindex="-1">在微信小程序中使用 ECharts</h1> <p><a href="https://github.com/ecomfe/echarts-for-weixin">echarts-for-weixin</a> 项目提供了一个小程序组件,用这种方式可以方便地使用 ECharts。</p> <h2 id="%E4%BD%BF%E7%94%A8%E6%96%B9%E5%BC%8F" tabindex="-1">使用方式</h2> <ol><li>下载该项目</li> <li>如有必要,将 <code>ec-canvas</code> 目录下的 <code>echarts.js</code> 替换为最新版的 ECharts。如果希望减小包体积大小,可以使用<a href="https://echarts.apache.org//builder.html">自定义构建</a>生成并替换 <code>echarts.js</code></li> <li><code>pages</code> 目录下是使用的示例文件,可以作为参考,或者删除不需要的页面。</li></ol> <p>更详细的说明请参见 <a href="https://github.com/ecomfe/echarts-for-weixin">echarts-for-weixin</a> 项目。</p> <h2 id="%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9" tabindex="-1">注意事项</h2> <p>最新版的 ECharts 微信小程序支持微信 Canvas 2d,当用户的基础库版本 >= 2.9.0 且没有设置 <code>force-use-old-canvas="true"</code> 的情况下,使用新的 Canvas 2d(默认)。</p> <p>使用新的 Canvas 2d 可以提升渲染性能,解决非同层渲染问题,强烈建议开启。</p> <p>更详细的说明请参见 <a href="https://github.com/ecomfe/echarts-for-weixin#canvas-2d-%E7%89%88%E6%9C%AC%E8%A6%81%E6%B1%82">Canvas 2d 版本要求</a>。</p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">本文贡献者</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/zh/how-to/cross-platform/wechat-app.md" title="编辑本文" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">在 GitHub 上编辑本页</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,i,e,r,d,a,l,n,o,c,h,s,p,f,m,g,u,E,b,v,B,C,w,A,S,x,P,D,k,y,G,R,F,L,M,V,_,z,T,H,I,j,q,N,O,U,W,$,X,J,K,Q,Y,Z,tt,it,et,rt,dt,at,lt,nt,ot){return{layout:"default",data:[{html:'<h1 id="%E5%9C%A8%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F%E4%B8%AD%E4%BD%BF%E7%94%A8-echarts" tabindex="-1">在微信小程序中使用 ECharts</h1>\n<p><a href="https://github.com/ecomfe/echarts-for-weixin">echarts-for-weixin</a> 项目提供了一个小程序组件,用这种方式可以方便地使用 ECharts。</p>\n<h2 id="%E4%BD%BF%E7%94%A8%E6%96%B9%E5%BC%8F" tabindex="-1">使用方式</h2>\n<ol>\n<li>下载该项目</li>\n<li>如有必要,将 <code>ec-canvas</code> 目录下的 <code>echarts.js</code> 替换为最新版的 ECharts。如果希望减小包体积大小,可以使用<a href="https://echarts.apache.org//builder.html">自定义构建</a>生成并替换 <code>echarts.js</code></li>\n<li><code>pages</code> 目录下是使用的示例文件,可以作为参考,或者删除不需要的页面。</li>\n</ol>\n<p>更详细的说明请参见 <a href="https://github.com/ecomfe/echarts-for-weixin">echarts-for-weixin</a> 项目。</p>\n<h2 id="%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9" tabindex="-1">注意事项</h2>\n<p>最新版的 ECharts 微信小程序支持微信 Canvas 2d,当用户的基础库版本 &gt;= 2.9.0 且没有设置 <code>force-use-old-canvas=&quot;true&quot;</code> 的情况下,使用新的 Canvas 2d(默认)。</p>\n<p>使用新的 Canvas 2d 可以提升渲染性能,解决非同层渲染问题,强烈建议开启。</p>\n<p>更详细的说明请参见 <a href="https://github.com/ecomfe/echarts-for-weixin#canvas-2d-%E7%89%88%E6%9C%AC%E8%A6%81%E6%B1%82">Canvas 2d 版本要求</a>。</p>\n',postPath:"zh/how-to/cross-platform/wechat-app",title:"微信小程序 - 跨平台方案 - 应用篇"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:r},{title:"入门篇",dir:d,children:[{title:"获取 ECharts",dir:a},{title:"在项目中引入 ECharts",dir:l},{title:"资源列表",dir:n,draft:t},{title:"寻求帮助",dir:o},{title:"版本特性",dir:c,children:[{title:"ECharts 6 特性介绍",dir:h},{title:"v5 升级 v6 指南",dir:s},{title:"5.0",dir:p},{title:"v4 升级 v5 指南",dir:f},{title:5.2,dir:m},{title:5.3,dir:g},{title:5.4,dir:u},{title:5.5,dir:E},{title:5.6,dir:b}]}]},{title:"概念篇",dir:v,children:[{title:"图表容器及大小",dir:B},{title:"配置项",dir:C,draft:t},{title:"系列",dir:w,draft:t},{title:"样式",dir:A},{title:"数据集",dir:S},{title:"数据转换",dir:x},{title:"坐标系",dir:P,draft:t},{title:"坐标轴",dir:D},{title:"视觉映射",dir:e},{title:"图例",dir:k},{title:"事件与行为",dir:y}]},{title:"应用篇",dir:G,children:[{title:"常用图表类型",dir:R,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:F},{title:"堆叠柱状图",dir:L},{title:"动态排序柱状图",dir:M},{title:"极坐标系柱状图",dir:V,draft:t},{title:"阶梯瀑布图",dir:_},{title:"视觉映射的柱状图",dir:e,draft:t}]},{title:"折线图",dir:z,children:[{title:"基础折线图",dir:T},{title:"堆叠折线图",dir:H},{title:"区域面积图",dir:I},{title:"平滑曲线图",dir:j},{title:"阶梯线图",dir:q}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:N},{title:"圆环图",dir:O},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:U,children:[{title:"基础散点图",dir:W}]}]},{title:"常用组件",dir:$,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:X}]}]},{title:"移动端优化",dir:i,draft:t},{title:"跨平台方案",dir:J,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:K},{title:"数据下钻",dir:Q,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:Y}]},{title:"动画",dir:Z,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:it,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:et,draft:t},{title:"智能指针吸附",dir:rt}]}]},{title:"最佳实践",dir:dt,children:[{title:"移动端优化",dir:i,draft:t},{title:at,dir:lt},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:nt}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:ot}]}],en:[{title:"Get Started",dir:r},{title:"Basics",dir:d,children:[{title:"Download ECharts",dir:a},{title:"Import ECharts",dir:l},{title:"Resources",dir:n,draft:t},{title:"Get Help",dir:o},{title:"What's New",dir:c,children:[{title:"ECharts 6 Features",dir:h},{title:"Migration from v5 to v6",dir:s},{title:"5.0",dir:p},{title:"Migration from v4 to v5",dir:f},{title:5.2,dir:m},{title:5.3,dir:g},{title:5.4,dir:u},{title:5.5,dir:E},{title:5.6,dir:b}]}]},{title:"Concepts",dir:v,children:[{title:"Chart Container",dir:B},{title:"Chart Option",dir:C,draft:t},{title:"Series",dir:w,draft:t},{title:"Style",dir:A},{title:"Dataset",dir:S},{title:"Data Transform",dir:x},{title:"Coordinate",dir:P,draft:t},{title:"Axis",dir:D},{title:"Visual Mapping",dir:e},{title:"Legend",dir:k},{title:"Event and Action",dir:y}]},{title:"How To Guides",dir:G,children:[{title:"Common Charts",dir:R,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:F},{title:"Stacked Bar",dir:L},{title:"Bar Racing",dir:M},{title:"Bar Polar",dir:V,draft:t},{title:"Waterfall",dir:_}]},{title:"Line",dir:z,children:[{title:"Basic Line",dir:T},{title:"Stacked Line",dir:H},{title:"Area Chart",dir:I},{title:"Smoothed Line",dir:j},{title:"Step Line",dir:q}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:N},{title:"Ring Style",dir:O},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:U,children:[{title:"Basic Scatter",dir:W}]}]},{title:"Common Components",dir:$,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:X}]}]},{title:"Mobile",dir:i,draft:t},{title:"Cross Platform",dir:J,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:K},{title:"Drilldown",dir:Q,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:Y}]},{title:"Animation",dir:Z,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:it,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:et,draft:t},{title:"Intelligent Pointer Snapping",dir:rt}]}]},{title:"Best Practices",dir:dt,children:[{title:"Mobile Optimization",dir:i,draft:t},{title:at,dir:lt},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:nt}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:ot}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/zh/how-to/cross-platform/wechat-app",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/zh/how-to/data/dynamic-data/index.html b/docs/zh/how-to/data/dynamic-data/index.html
new file mode 100644
index 0000000..5348427
--- /dev/null
+++ b/docs/zh/how-to/data/dynamic-data/index.html
@@ -0,0 +1,81 @@
+<!doctype html>
+<html data-n-head-ssr lang="zh-CN" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh-CN%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>动态的异步数据 - 数据处理 - 应用篇 - 使用手册 - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="zh"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/zh/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/zh/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/zh/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/zh/index.html" class="navbar-brand"><img src="https://echarts.apache.org/zh/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/zh/index.html">首页</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">文档<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/feature.html">特性</a></li><li><a href="https://echarts.apache.org/handbook/zh/get-started/">使用手册</a></li><li><a href="https://echarts.apache.org/zh/api.html">API</a></li><li><a href="https://echarts.apache.org/zh/option.html">配置项手册</a></li><li><a href="https://echarts.apache.org/zh/changelog.html">版本记录</a></li><li><a href="https://echarts.apache.org/zh/faq.html">常见问题</a></li><li><a href="https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide">v6 升级指南</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">下载<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/download.html">下载</a></li><li><a href="https://echarts.apache.org/zh/download-theme.html">主题下载</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">自定义系列下载<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/download-extension.html">扩展下载</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/zh/index.html">示例</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">资源<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/spreadsheet.html">表格工具</a></li><li><a href="https://echarts.apache.org/zh/theme-builder.html">主题构建工具</a></li><li><a href="https://echarts.apache.org/zh/cheat-sheet.html">术语速查手册</a></li><li><a href="https://echarts.apache.org/zh/resources.html">更多资源</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">社区<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/events.html">活动</a></li><li><a href="https://echarts.apache.org/zh/committers.html">贡献者列表</a></li><li><a href="https://echarts.apache.org/zh/maillist.html">邮件列表</a></li><li><a href="https://echarts.apache.org/zh/contributing.html">如何贡献</a></li><li><a href="https://echarts.apache.org/zh/dependencies.html">依赖项</a></li><li><a href="https://echarts.apache.org/zh/coding-standard.html">代码规范</a></li><li><a href="https://github.com/apache/echarts" target="_blank">源码(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/security.html">安全</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">版权<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">活动<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">捐赠<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">鸣谢<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("en")'>EN</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/zh/get-started" class="nav-link"><span class="title">快速上手</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">入门篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/basics/download" class="nav-link"><span class="title">获取 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/import" class="nav-link"><span class="title">在项目中引入 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/basics/help" class="nav-link"><span class="title">寻求帮助</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">版本特性</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 特性介绍</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">v5 升级 v6 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">v4 升级 v5 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">概念篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/concepts/chart-size" class="nav-link"><span class="title">图表容器及大小</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/style" class="nav-link"><span class="title">样式</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/dataset" class="nav-link"><span class="title">数据集</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/data-transform" class="nav-link"><span class="title">数据转换</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/axis" class="nav-link"><span class="title">坐标轴</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/visual-map" class="nav-link"><span class="title">视觉映射</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/legend" class="nav-link"><span class="title">图例</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/event" class="nav-link"><span class="title">事件与行为</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">应用篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">常用图表类型</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">柱状图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">基础柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">堆叠柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">动态排序柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">阶梯瀑布图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">折线图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">基础折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">堆叠折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/area-line" class="nav-link"><span class="title">区域面积图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">平滑曲线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/step-line" class="nav-link"><span class="title">阶梯线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">饼图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">基础饼图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">圆环图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/rose" class="nav-link"><span class="title">南丁格尔图(玫瑰图)</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">散点图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">基础散点图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">常用组件</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">地理坐标系(Geo)</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG 底图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">跨平台方案</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/server" class="nav-link"><span class="title">服务端渲染</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/wechat-app" class="nav-link"><span class="title">微信小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/baidu-app" class="nav-link"><span class="title">百度智能小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">数据处理</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/data/dynamic-data" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">动态的异步数据</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">标签</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/label/rich-text" class="nav-link"><span class="title">富文本标签</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">动画</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/animation/transition" class="nav-link"><span class="title">数据过渡动画</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">交互</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/drag" class="nav-link"><span class="title">拖拽的实现</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">智能指针吸附</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">最佳实践</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/aria" class="nav-link"><span class="title">无障碍访问</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/security" class="nav-link"><span class="title">安全指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">编辑本文档</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/meta/edit-guide" class="nav-link"><span class="title">文档编辑指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="%E5%BC%82%E6%AD%A5%E6%95%B0%E6%8D%AE%E7%9A%84%E5%8A%A0%E8%BD%BD%E4%B8%8E%E5%8A%A8%E6%80%81%E6%9B%B4%E6%96%B0" tabindex="-1">异步数据的加载与动态更新</h1> <h2 id="%E5%BC%82%E6%AD%A5%E5%8A%A0%E8%BD%BD" tabindex="-1">异步加载</h2> <p><a href="zh/get-started">入门示例</a>中的数据是在初始化后<code>setOption</code>中直接填入的,但是很多时候可能数据需要异步加载后再填入。<code>ECharts</code> 中实现异步数据的更新非常简单,在图表初始化后不管任何时候只要通过 jQuery 等工具异步获取数据后通过 <code>setOption</code> 填入数据和配置项就行。</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">var</span> myChart <span class="token operator">=</span> echarts<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span>document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span><span class="token string">'main'</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+$<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span><span class="token string">'data.json'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">done</span><span class="token punctuation">(</span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">data</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  <span class="token comment">// data 的结构:</span>
+  <span class="token comment">// {</span>
+  <span class="token comment">//     categories: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"],</span>
+  <span class="token comment">//     values: [5, 20, 36, 10, 10, 20]</span>
+  <span class="token comment">// }</span>
+  myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+    <span class="token literal-property property">title</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'异步数据加载示例'</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">tooltip</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">legend</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> data<span class="token punctuation">.</span>categories
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token punctuation">{</span>
+        <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'销量'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">data</span><span class="token operator">:</span> data<span class="token punctuation">.</span>values
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>或者先设置完其它的样式,显示一个空的直角坐标轴,然后获取数据后填入数据。</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">var</span> myChart <span class="token operator">=</span> echarts<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span>document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span><span class="token string">'main'</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token comment">// 显示标题,图例和空的坐标轴</span>
+myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+  <span class="token literal-property property">title</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'异步数据加载示例'</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">tooltip</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">legend</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'销量'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'销量'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+<span class="token comment">// 异步加载数据</span>
+$<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span><span class="token string">'data.json'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">done</span><span class="token punctuation">(</span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">data</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  <span class="token comment">// 填入数据</span>
+  myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+    <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> data<span class="token punctuation">.</span>categories
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token punctuation">{</span>
+        <span class="token comment">// 根据名字对应到相应的系列</span>
+        <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'销量'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">data</span><span class="token operator">:</span> data<span class="token punctuation">.</span>data
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>如下:</p> <p><iframe width="100%" height="350" src=""></iframe></p> <p>ECharts 中在更新数据的时候需要通过<code>name</code>属性对应到相应的系列,上面示例中如果<code>name</code>不存在也可以根据系列的顺序正常更新,但是更多时候推荐更新数据的时候加上系列的<code>name</code>数据。</p> <h2 id="loading-%E5%8A%A8%E7%94%BB" tabindex="-1">loading 动画</h2> <p>如果数据加载时间较长,一个空的坐标轴放在画布上也会让用户觉得是不是产生 bug 了,因此需要一个 loading 的动画来提示用户数据正在加载。</p> <p>ECharts 默认有提供了一个简单的加载动画。只需要调用 <a href="https://echarts.apache.org//api.html#echartsInstance.showLoading">showLoading</a> 方法显示。数据加载完成后再调用 <a href="https://echarts.apache.org//api.html#echartsInstance.hideLoading">hideLoading</a> 方法隐藏加载动画。</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>myChart<span class="token punctuation">.</span><span class="token function">showLoading</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+$<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span><span class="token string">'data.json'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">done</span><span class="token punctuation">(</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">data</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+    myChart<span class="token punctuation">.</span><span class="token function">hideLoading</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+    myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token operator">...</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>效果如下:</p> <p><iframe width="100%" height="350" src=""></iframe></p> <h2 id="%E6%95%B0%E6%8D%AE%E7%9A%84%E5%8A%A8%E6%80%81%E6%9B%B4%E6%96%B0" tabindex="-1">数据的动态更新</h2> <p>ECharts 由数据驱动,数据的改变驱动图表展现的改变,因此动态数据的实现也变得异常简单。</p> <p>所有数据的更新都通过 <a href="https://echarts.apache.org//api.html#echartsInstance.setOption">setOption</a>实现,你只需要定时获取数据,<a href="https://echarts.apache.org//api.html#echartsInstance.setOption">setOption</a> 填入数据,而不用考虑数据到底产生了哪些变化,ECharts 会找到两组数据之间的差异然后通过合适的动画去表现数据的变化。</p> <p>具体可以看下面示例:</p> <p><iframe width="100%" height="350" src=""></iframe></p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">本文贡献者</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/zh/how-to/data/dynamic-data.md" title="编辑本文" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">在 GitHub 上编辑本页</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/ZonaHex" target="_blank" class="post-contributor"><!----> <span>ZonaHex</span></a><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a><a href="https://github.com/jishen027" target="_blank" class="post-contributor"><!----> <span>jishen027</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,i,e,r,d,a,l,n,o,h,c,s,g,p,C,I,A,m,u,b,B,f,E,G,v,y,S,L,w,k,O,W,Z,R,Y,X,D,x,H,K,P,F,Q,V,j,z,T,J,M,q,N,U,_,$,tt,it,et,rt,dt,at,lt,nt,ot){return{layout:"default",data:[{html:'<h1 id="%E5%BC%82%E6%AD%A5%E6%95%B0%E6%8D%AE%E7%9A%84%E5%8A%A0%E8%BD%BD%E4%B8%8E%E5%8A%A8%E6%80%81%E6%9B%B4%E6%96%B0" tabindex="-1">异步数据的加载与动态更新</h1>\n<h2 id="%E5%BC%82%E6%AD%A5%E5%8A%A0%E8%BD%BD" tabindex="-1">异步加载</h2>\n<p><a href="zh/get-started">入门示例</a>中的数据是在初始化后<code>setOption</code>中直接填入的,但是很多时候可能数据需要异步加载后再填入。<code>ECharts</code> 中实现异步数据的更新非常简单,在图表初始化后不管任何时候只要通过 jQuery 等工具异步获取数据后通过 <code>setOption</code> 填入数据和配置项就行。</p>\n<md-code-block lang="js" code="\'dmFyIG15Q2hhcnQgPSBlY2hhcnRzLmluaXQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21haW4nKSk7CgokLmdldCgnZGF0YS5qc29uJykuZG9uZShmdW5jdGlvbihkYXRhKSB7CiAgLy8gZGF0YSDnmoTnu5PmnoQ6CiAgLy8gewogIC8vICAgICBjYXRlZ29yaWVzOiBbIuihrOihqyIsIue-iuavm-ihqyIsIumbque6uuihqyIsIuijpOWtkCIsIumrmOi3n-meiyIsIuiinOWtkCJdLAogIC8vICAgICB2YWx1ZXM6IFs1LCAyMCwgMzYsIDEwLCAxMCwgMjBdCiAgLy8gfQogIG15Q2hhcnQuc2V0T3B0aW9uKHsKICAgIHRpdGxlOiB7CiAgICAgIHRleHQ6ICflvILmraXmlbDmja7liqDovb3npLrkvosnCiAgICB9LAogICAgdG9vbHRpcDoge30sCiAgICBsZWdlbmQ6IHt9LAogICAgeEF4aXM6IHsKICAgICAgZGF0YTogZGF0YS5jYXRlZ29yaWVzCiAgICB9LAogICAgeUF4aXM6IHt9LAogICAgc2VyaWVzOiBbCiAgICAgIHsKICAgICAgICBuYW1lOiAn6ZSA6YePJywKICAgICAgICB0eXBlOiAnYmFyJywKICAgICAgICBkYXRhOiBkYXRhLnZhbHVlcwogICAgICB9CiAgICBdCiAgfSk7Cn0pOw\'" line-highlights="\'\'" />\n<p>或者先设置完其它的样式,显示一个空的直角坐标轴,然后获取数据后填入数据。</p>\n<md-code-block lang="js" code="\'dmFyIG15Q2hhcnQgPSBlY2hhcnRzLmluaXQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21haW4nKSk7Ci8vIOaYvuekuuagh-mimO-8jOWbvuS-i-WSjOepuueahOWdkOagh-i9tApteUNoYXJ0LnNldE9wdGlvbih7CiAgdGl0bGU6IHsKICAgIHRleHQ6ICflvILmraXmlbDmja7liqDovb3npLrkvosnCiAgfSwKICB0b29sdGlwOiB7fSwKICBsZWdlbmQ6IHsKICAgIGRhdGE6IFsn6ZSA6YePJ10KICB9LAogIHhBeGlzOiB7CiAgICBkYXRhOiBbXQogIH0sCiAgeUF4aXM6IHt9LAogIHNlcmllczogWwogICAgewogICAgICBuYW1lOiAn6ZSA6YePJywKICAgICAgdHlwZTogJ2JhcicsCiAgICAgIGRhdGE6IFtdCiAgICB9CiAgXQp9KTsKCi8vIOW8guatpeWKoOi9veaVsOaNrgokLmdldCgnZGF0YS5qc29uJykuZG9uZShmdW5jdGlvbihkYXRhKSB7CiAgLy8g5aGr5YWl5pWw5o2uCiAgbXlDaGFydC5zZXRPcHRpb24oewogICAgeEF4aXM6IHsKICAgICAgZGF0YTogZGF0YS5jYXRlZ29yaWVzCiAgICB9LAogICAgc2VyaWVzOiBbCiAgICAgIHsKICAgICAgICAvLyDmoLnmja7lkI3lrZflr7nlupTliLDnm7jlupTnmoTns7vliJcKICAgICAgICBuYW1lOiAn6ZSA6YePJywKICAgICAgICBkYXRhOiBkYXRhLmRhdGEKICAgICAgfQogICAgXQogIH0pOwp9KTs\'" line-highlights="\'\'" />\n<p>如下:</p>\n<p><md-example src="doc-example/tutorial-async"></md-example></p>\n<p>ECharts 中在更新数据的时候需要通过<code>name</code>属性对应到相应的系列,上面示例中如果<code>name</code>不存在也可以根据系列的顺序正常更新,但是更多时候推荐更新数据的时候加上系列的<code>name</code>数据。</p>\n<h2 id="loading-%E5%8A%A8%E7%94%BB" tabindex="-1">loading 动画</h2>\n<p>如果数据加载时间较长,一个空的坐标轴放在画布上也会让用户觉得是不是产生 bug 了,因此需要一个 loading 的动画来提示用户数据正在加载。</p>\n<p>ECharts 默认有提供了一个简单的加载动画。只需要调用 <a href="https://echarts.apache.org//api.html#echartsInstance.showLoading">showLoading</a> 方法显示。数据加载完成后再调用 <a href="https://echarts.apache.org//api.html#echartsInstance.hideLoading">hideLoading</a> 方法隐藏加载动画。</p>\n<md-code-block lang="js" code="\'bXlDaGFydC5zaG93TG9hZGluZygpOwokLmdldCgnZGF0YS5qc29uJykuZG9uZShmdW5jdGlvbiAoZGF0YSkgewogICAgbXlDaGFydC5oaWRlTG9hZGluZygpOwogICAgbXlDaGFydC5zZXRPcHRpb24oLi4uKTsKfSk7\'" line-highlights="\'\'" />\n<p>效果如下:</p>\n<p><md-example src="doc-example/tutorial-loading"></md-example></p>\n<h2 id="%E6%95%B0%E6%8D%AE%E7%9A%84%E5%8A%A8%E6%80%81%E6%9B%B4%E6%96%B0" tabindex="-1">数据的动态更新</h2>\n<p>ECharts 由数据驱动,数据的改变驱动图表展现的改变,因此动态数据的实现也变得异常简单。</p>\n<p>所有数据的更新都通过 <a href="https://echarts.apache.org//api.html#echartsInstance.setOption">setOption</a>实现,你只需要定时获取数据,<a href="https://echarts.apache.org//api.html#echartsInstance.setOption">setOption</a> 填入数据,而不用考虑数据到底产生了哪些变化,ECharts 会找到两组数据之间的差异然后通过合适的动画去表现数据的变化。</p>\n<p>具体可以看下面示例:</p>\n<p><md-example src="doc-example/tutorial-dynamic-data"></md-example></p>\n',postPath:"zh/how-to/data/dynamic-data",title:"动态的异步数据 - 数据处理 - 应用篇"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:r},{title:"入门篇",dir:d,children:[{title:"获取 ECharts",dir:a},{title:"在项目中引入 ECharts",dir:l},{title:"资源列表",dir:n,draft:t},{title:"寻求帮助",dir:o},{title:"版本特性",dir:h,children:[{title:"ECharts 6 特性介绍",dir:c},{title:"v5 升级 v6 指南",dir:s},{title:"5.0",dir:g},{title:"v4 升级 v5 指南",dir:p},{title:5.2,dir:C},{title:5.3,dir:I},{title:5.4,dir:A},{title:5.5,dir:m},{title:5.6,dir:u}]}]},{title:"概念篇",dir:b,children:[{title:"图表容器及大小",dir:B},{title:"配置项",dir:f,draft:t},{title:"系列",dir:E,draft:t},{title:"样式",dir:G},{title:"数据集",dir:v},{title:"数据转换",dir:y},{title:"坐标系",dir:S,draft:t},{title:"坐标轴",dir:L},{title:"视觉映射",dir:e},{title:"图例",dir:w},{title:"事件与行为",dir:k}]},{title:"应用篇",dir:O,children:[{title:"常用图表类型",dir:W,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:Z},{title:"堆叠柱状图",dir:R},{title:"动态排序柱状图",dir:Y},{title:"极坐标系柱状图",dir:X,draft:t},{title:"阶梯瀑布图",dir:D},{title:"视觉映射的柱状图",dir:e,draft:t}]},{title:"折线图",dir:x,children:[{title:"基础折线图",dir:H},{title:"堆叠折线图",dir:K},{title:"区域面积图",dir:P},{title:"平滑曲线图",dir:F},{title:"阶梯线图",dir:Q}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:V},{title:"圆环图",dir:j},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:z,children:[{title:"基础散点图",dir:T}]}]},{title:"常用组件",dir:J,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:M}]}]},{title:"移动端优化",dir:i,draft:t},{title:"跨平台方案",dir:q,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:N},{title:"数据下钻",dir:U,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:_}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:it,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:et,draft:t},{title:"智能指针吸附",dir:rt}]}]},{title:"最佳实践",dir:dt,children:[{title:"移动端优化",dir:i,draft:t},{title:at,dir:lt},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:nt}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:ot}]}],en:[{title:"Get Started",dir:r},{title:"Basics",dir:d,children:[{title:"Download ECharts",dir:a},{title:"Import ECharts",dir:l},{title:"Resources",dir:n,draft:t},{title:"Get Help",dir:o},{title:"What's New",dir:h,children:[{title:"ECharts 6 Features",dir:c},{title:"Migration from v5 to v6",dir:s},{title:"5.0",dir:g},{title:"Migration from v4 to v5",dir:p},{title:5.2,dir:C},{title:5.3,dir:I},{title:5.4,dir:A},{title:5.5,dir:m},{title:5.6,dir:u}]}]},{title:"Concepts",dir:b,children:[{title:"Chart Container",dir:B},{title:"Chart Option",dir:f,draft:t},{title:"Series",dir:E,draft:t},{title:"Style",dir:G},{title:"Dataset",dir:v},{title:"Data Transform",dir:y},{title:"Coordinate",dir:S,draft:t},{title:"Axis",dir:L},{title:"Visual Mapping",dir:e},{title:"Legend",dir:w},{title:"Event and Action",dir:k}]},{title:"How To Guides",dir:O,children:[{title:"Common Charts",dir:W,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:Z},{title:"Stacked Bar",dir:R},{title:"Bar Racing",dir:Y},{title:"Bar Polar",dir:X,draft:t},{title:"Waterfall",dir:D}]},{title:"Line",dir:x,children:[{title:"Basic Line",dir:H},{title:"Stacked Line",dir:K},{title:"Area Chart",dir:P},{title:"Smoothed Line",dir:F},{title:"Step Line",dir:Q}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:V},{title:"Ring Style",dir:j},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:z,children:[{title:"Basic Scatter",dir:T}]}]},{title:"Common Components",dir:J,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:M}]}]},{title:"Mobile",dir:i,draft:t},{title:"Cross Platform",dir:q,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:N},{title:"Drilldown",dir:U,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:_}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:it,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:et,draft:t},{title:"Intelligent Pointer Snapping",dir:rt}]}]},{title:"Best Practices",dir:dt,children:[{title:"Mobile Optimization",dir:i,draft:t},{title:at,dir:lt},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:nt}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:ot}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/zh/how-to/data/dynamic-data",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/zh/how-to/interaction/coarse-pointer/index.html b/docs/zh/how-to/interaction/coarse-pointer/index.html
new file mode 100644
index 0000000..cd5499a
--- /dev/null
+++ b/docs/zh/how-to/interaction/coarse-pointer/index.html
@@ -0,0 +1,13 @@
+<!doctype html>
+<html data-n-head-ssr lang="zh-CN" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh-CN%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>智能指针吸附 - 交互 - 应用篇 - 使用手册 - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="zh"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/zh/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/zh/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/zh/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/zh/index.html" class="navbar-brand"><img src="https://echarts.apache.org/zh/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/zh/index.html">首页</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">文档<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/feature.html">特性</a></li><li><a href="https://echarts.apache.org/handbook/zh/get-started/">使用手册</a></li><li><a href="https://echarts.apache.org/zh/api.html">API</a></li><li><a href="https://echarts.apache.org/zh/option.html">配置项手册</a></li><li><a href="https://echarts.apache.org/zh/changelog.html">版本记录</a></li><li><a href="https://echarts.apache.org/zh/faq.html">常见问题</a></li><li><a href="https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide">v6 升级指南</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">下载<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/download.html">下载</a></li><li><a href="https://echarts.apache.org/zh/download-theme.html">主题下载</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">自定义系列下载<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/download-extension.html">扩展下载</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/zh/index.html">示例</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">资源<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/spreadsheet.html">表格工具</a></li><li><a href="https://echarts.apache.org/zh/theme-builder.html">主题构建工具</a></li><li><a href="https://echarts.apache.org/zh/cheat-sheet.html">术语速查手册</a></li><li><a href="https://echarts.apache.org/zh/resources.html">更多资源</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">社区<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/events.html">活动</a></li><li><a href="https://echarts.apache.org/zh/committers.html">贡献者列表</a></li><li><a href="https://echarts.apache.org/zh/maillist.html">邮件列表</a></li><li><a href="https://echarts.apache.org/zh/contributing.html">如何贡献</a></li><li><a href="https://echarts.apache.org/zh/dependencies.html">依赖项</a></li><li><a href="https://echarts.apache.org/zh/coding-standard.html">代码规范</a></li><li><a href="https://github.com/apache/echarts" target="_blank">源码(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/security.html">安全</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">版权<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">活动<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">捐赠<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">鸣谢<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("en")'>EN</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/zh/get-started" class="nav-link"><span class="title">快速上手</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">入门篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/basics/download" class="nav-link"><span class="title">获取 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/import" class="nav-link"><span class="title">在项目中引入 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/basics/help" class="nav-link"><span class="title">寻求帮助</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">版本特性</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 特性介绍</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">v5 升级 v6 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">v4 升级 v5 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">概念篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/concepts/chart-size" class="nav-link"><span class="title">图表容器及大小</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/style" class="nav-link"><span class="title">样式</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/dataset" class="nav-link"><span class="title">数据集</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/data-transform" class="nav-link"><span class="title">数据转换</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/axis" class="nav-link"><span class="title">坐标轴</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/visual-map" class="nav-link"><span class="title">视觉映射</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/legend" class="nav-link"><span class="title">图例</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/event" class="nav-link"><span class="title">事件与行为</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">应用篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">常用图表类型</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">柱状图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">基础柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">堆叠柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">动态排序柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">阶梯瀑布图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">折线图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">基础折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">堆叠折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/area-line" class="nav-link"><span class="title">区域面积图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">平滑曲线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/step-line" class="nav-link"><span class="title">阶梯线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">饼图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">基础饼图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">圆环图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/rose" class="nav-link"><span class="title">南丁格尔图(玫瑰图)</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">散点图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">基础散点图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">常用组件</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">地理坐标系(Geo)</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG 底图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">跨平台方案</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/server" class="nav-link"><span class="title">服务端渲染</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/wechat-app" class="nav-link"><span class="title">微信小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/baidu-app" class="nav-link"><span class="title">百度智能小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">数据处理</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/data/dynamic-data" class="nav-link"><span class="title">动态的异步数据</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">标签</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/label/rich-text" class="nav-link"><span class="title">富文本标签</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">动画</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/animation/transition" class="nav-link"><span class="title">数据过渡动画</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">交互</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/drag" class="nav-link"><span class="title">拖拽的实现</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/coarse-pointer" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">智能指针吸附</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">最佳实践</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/aria" class="nav-link"><span class="title">无障碍访问</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/security" class="nav-link"><span class="title">安全指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">编辑本文档</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/meta/edit-guide" class="nav-link"><span class="title">文档编辑指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="%E6%99%BA%E8%83%BD%E6%8C%87%E9%92%88%E5%90%B8%E9%99%84" tabindex="-1">智能指针吸附</h1> <p>在图表中,部分可交互元素可能比较小,有时候用户不易准确地进行点击等操作,移动端尤其如此。因此,在 Apache ECharts<sup>TM</sup> 5.4.0 中,我们引入了“智能指针吸附”的概念。</p> <p>从该版本起,在默认情况下,ECharts 对移动端的图表开启指针吸附,对非移动端的图表关闭。</p> <blockquote><p>如果需要对所有平台都开启,则可以通过在 <a href="https://echarts.apache.org/api.html#echarts.init">init</a> 的时候将 <code>opt.useCoarsePointer</code> 设置为 <code>true</code> 来实现;设为 <code>false</code> 则对所有平台都关闭。</p></blockquote> <h2 id="%E5%90%B8%E9%99%84%E5%8E%9F%E7%90%86" tabindex="-1">吸附原理</h2> <p>在鼠标或触摸事件发生时,ECharts 会根据鼠标或触摸的位置,判断是否和某个可交互元素相交。如果是,则认为该元素是交互对象(与优化前的逻辑一致);如果不是,则在一定范围内找到最接近鼠标或触摸位置的一个元素。</p> <blockquote><p>默认的范围是 44px(参见 <a href="https://www.w3.org/WAI/WCAG21/Understanding/target-size.html">W3C 标准</a>),开发者可在 <a href="https://echarts.apache.org/api.html#echarts.init">init</a> 的时候,通过 <code>opt.pointerSize</code> 设置该值。</p></blockquote> <p>更具体地说,ECharts 会在鼠标或触摸位置的周围,依次循环不同角度和不同半径(在 <code>opt.pointerSize</code> 范围内),直到找到一个元素与其相交。如果找到了,则认为该元素是交互对象。</p> <p><img width="100%" height="100%" src="images/how-to/coarse-pointer-zh.gif" style="max-width:441px"></p> <p>也就是说,如果有元素在鼠标或触摸位置的 <code>opt.pointerSize</code> 半径范围内,则最靠近的可交互元素会被认为是交互对象。</p> <h2 id="%E6%80%A7%E8%83%BD%E5%88%86%E6%9E%90" tabindex="-1">性能分析</h2> <p>在实际算法实现的时候,我们首先将鼠标或触摸位置与所有可交互元素的 AABB 包围盒判断相交性,从而快速剔除了大部分不相交的元素。然后,我们再对剩余的元素进行精确的路径相交判断。因此,从用户体验角度,不会带来可感知的性能损耗。</p> <p>对于大规模数据的图表系列(也就是开启了 <code>large: true</code> 的柱状图、散点图等),不会开启吸附功能。</p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">本文贡献者</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/zh/how-to/interaction/coarse-pointer.md" title="编辑本文" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">在 GitHub 上编辑本页</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/Ovilia" target="_blank" class="post-contributor has-avatar"><img alt="Ovilia" src="https://echarts.apache.org/en/images/people/羡辙.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>Ovilia</span></a><a href="https://github.com/plainheart" target="_blank" class="post-contributor has-avatar"><img alt="plainheart" src="https://echarts.apache.org/en/images/people/plainheart.jpg" loading="lazy" decoding="async" fetchpriority="low"> <span>plainheart</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,i,e,r,d,l,a,n,o,c,h,s,p,g,m,f,u,b,E,v,C,w,S,B,P,x,k,A,y,D,G,z,R,L,M,V,T,_,W,q,I,H,U,F,N,O,$,X,j,J,K,Q,Y,Z,tt,it,et,rt,dt,lt,at,nt,ot){return{layout:"default",data:[{html:'<h1 id="%E6%99%BA%E8%83%BD%E6%8C%87%E9%92%88%E5%90%B8%E9%99%84" tabindex="-1">智能指针吸附</h1>\n<p>在图表中,部分可交互元素可能比较小,有时候用户不易准确地进行点击等操作,移动端尤其如此。因此,在 Apache ECharts<sup>TM</sup> 5.4.0 中,我们引入了“智能指针吸附”的概念。</p>\n<p>从该版本起,在默认情况下,ECharts 对移动端的图表开启指针吸附,对非移动端的图表关闭。</p>\n<blockquote>\n<p>如果需要对所有平台都开启,则可以通过在 <a href="https://echarts.apache.org/api.html#echarts.init">init</a> 的时候将 <code>opt.useCoarsePointer</code> 设置为 <code>true</code> 来实现;设为 <code>false</code> 则对所有平台都关闭。</p>\n</blockquote>\n<h2 id="%E5%90%B8%E9%99%84%E5%8E%9F%E7%90%86" tabindex="-1">吸附原理</h2>\n<p>在鼠标或触摸事件发生时,ECharts 会根据鼠标或触摸的位置,判断是否和某个可交互元素相交。如果是,则认为该元素是交互对象(与优化前的逻辑一致);如果不是,则在一定范围内找到最接近鼠标或触摸位置的一个元素。</p>\n<blockquote>\n<p>默认的范围是 44px(参见 <a href="https://www.w3.org/WAI/WCAG21/Understanding/target-size.html">W3C 标准</a>),开发者可在 <a href="https://echarts.apache.org/api.html#echarts.init">init</a> 的时候,通过 <code>opt.pointerSize</code> 设置该值。</p>\n</blockquote>\n<p>更具体地说,ECharts 会在鼠标或触摸位置的周围,依次循环不同角度和不同半径(在 <code>opt.pointerSize</code> 范围内),直到找到一个元素与其相交。如果找到了,则认为该元素是交互对象。</p>\n<p><img width="100%" height="100%" style="max-width: 441px"\nsrc="images/how-to/coarse-pointer-zh.gif">\n</img></p>\n<p>也就是说,如果有元素在鼠标或触摸位置的 <code>opt.pointerSize</code> 半径范围内,则最靠近的可交互元素会被认为是交互对象。</p>\n<h2 id="%E6%80%A7%E8%83%BD%E5%88%86%E6%9E%90" tabindex="-1">性能分析</h2>\n<p>在实际算法实现的时候,我们首先将鼠标或触摸位置与所有可交互元素的 AABB 包围盒判断相交性,从而快速剔除了大部分不相交的元素。然后,我们再对剩余的元素进行精确的路径相交判断。因此,从用户体验角度,不会带来可感知的性能损耗。</p>\n<p>对于大规模数据的图表系列(也就是开启了 <code>large: true</code> 的柱状图、散点图等),不会开启吸附功能。</p>\n',postPath:"zh/how-to/interaction/coarse-pointer",title:"智能指针吸附 - 交互 - 应用篇"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:r},{title:"入门篇",dir:d,children:[{title:"获取 ECharts",dir:l},{title:"在项目中引入 ECharts",dir:a},{title:"资源列表",dir:n,draft:t},{title:"寻求帮助",dir:o},{title:"版本特性",dir:c,children:[{title:"ECharts 6 特性介绍",dir:h},{title:"v5 升级 v6 指南",dir:s},{title:"5.0",dir:p},{title:"v4 升级 v5 指南",dir:g},{title:5.2,dir:m},{title:5.3,dir:f},{title:5.4,dir:u},{title:5.5,dir:b},{title:5.6,dir:E}]}]},{title:"概念篇",dir:v,children:[{title:"图表容器及大小",dir:C},{title:"配置项",dir:w,draft:t},{title:"系列",dir:S,draft:t},{title:"样式",dir:B},{title:"数据集",dir:P},{title:"数据转换",dir:x},{title:"坐标系",dir:k,draft:t},{title:"坐标轴",dir:A},{title:"视觉映射",dir:e},{title:"图例",dir:y},{title:"事件与行为",dir:D}]},{title:"应用篇",dir:G,children:[{title:"常用图表类型",dir:z,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:R},{title:"堆叠柱状图",dir:L},{title:"动态排序柱状图",dir:M},{title:"极坐标系柱状图",dir:V,draft:t},{title:"阶梯瀑布图",dir:T},{title:"视觉映射的柱状图",dir:e,draft:t}]},{title:"折线图",dir:_,children:[{title:"基础折线图",dir:W},{title:"堆叠折线图",dir:q},{title:"区域面积图",dir:I},{title:"平滑曲线图",dir:H},{title:"阶梯线图",dir:U}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:F},{title:"圆环图",dir:N},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:O,children:[{title:"基础散点图",dir:$}]}]},{title:"常用组件",dir:X,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:j}]}]},{title:"移动端优化",dir:i,draft:t},{title:"跨平台方案",dir:J,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:K},{title:"数据下钻",dir:Q,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:Y}]},{title:"动画",dir:Z,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:it,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:et,draft:t},{title:"智能指针吸附",dir:rt}]}]},{title:"最佳实践",dir:dt,children:[{title:"移动端优化",dir:i,draft:t},{title:lt,dir:at},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:nt}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:ot}]}],en:[{title:"Get Started",dir:r},{title:"Basics",dir:d,children:[{title:"Download ECharts",dir:l},{title:"Import ECharts",dir:a},{title:"Resources",dir:n,draft:t},{title:"Get Help",dir:o},{title:"What's New",dir:c,children:[{title:"ECharts 6 Features",dir:h},{title:"Migration from v5 to v6",dir:s},{title:"5.0",dir:p},{title:"Migration from v4 to v5",dir:g},{title:5.2,dir:m},{title:5.3,dir:f},{title:5.4,dir:u},{title:5.5,dir:b},{title:5.6,dir:E}]}]},{title:"Concepts",dir:v,children:[{title:"Chart Container",dir:C},{title:"Chart Option",dir:w,draft:t},{title:"Series",dir:S,draft:t},{title:"Style",dir:B},{title:"Dataset",dir:P},{title:"Data Transform",dir:x},{title:"Coordinate",dir:k,draft:t},{title:"Axis",dir:A},{title:"Visual Mapping",dir:e},{title:"Legend",dir:y},{title:"Event and Action",dir:D}]},{title:"How To Guides",dir:G,children:[{title:"Common Charts",dir:z,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:R},{title:"Stacked Bar",dir:L},{title:"Bar Racing",dir:M},{title:"Bar Polar",dir:V,draft:t},{title:"Waterfall",dir:T}]},{title:"Line",dir:_,children:[{title:"Basic Line",dir:W},{title:"Stacked Line",dir:q},{title:"Area Chart",dir:I},{title:"Smoothed Line",dir:H},{title:"Step Line",dir:U}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:F},{title:"Ring Style",dir:N},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:O,children:[{title:"Basic Scatter",dir:$}]}]},{title:"Common Components",dir:X,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:j}]}]},{title:"Mobile",dir:i,draft:t},{title:"Cross Platform",dir:J,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:K},{title:"Drilldown",dir:Q,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:Y}]},{title:"Animation",dir:Z,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:it,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:et,draft:t},{title:"Intelligent Pointer Snapping",dir:rt}]}]},{title:"Best Practices",dir:dt,children:[{title:"Mobile Optimization",dir:i,draft:t},{title:lt,dir:at},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:nt}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:ot}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/zh/how-to/interaction/coarse-pointer",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/zh/how-to/interaction/drag/index.html b/docs/zh/how-to/interaction/drag/index.html
new file mode 100644
index 0000000..47f56dd
--- /dev/null
+++ b/docs/zh/how-to/interaction/drag/index.html
@@ -0,0 +1,208 @@
+<!doctype html>
+<html data-n-head-ssr lang="zh-CN" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh-CN%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>拖拽的实现 - 交互 - 应用篇 - 使用手册 - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="zh"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/zh/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/zh/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/zh/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/zh/index.html" class="navbar-brand"><img src="https://echarts.apache.org/zh/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/zh/index.html">首页</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">文档<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/feature.html">特性</a></li><li><a href="https://echarts.apache.org/handbook/zh/get-started/">使用手册</a></li><li><a href="https://echarts.apache.org/zh/api.html">API</a></li><li><a href="https://echarts.apache.org/zh/option.html">配置项手册</a></li><li><a href="https://echarts.apache.org/zh/changelog.html">版本记录</a></li><li><a href="https://echarts.apache.org/zh/faq.html">常见问题</a></li><li><a href="https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide">v6 升级指南</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">下载<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/download.html">下载</a></li><li><a href="https://echarts.apache.org/zh/download-theme.html">主题下载</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">自定义系列下载<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/download-extension.html">扩展下载</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/zh/index.html">示例</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">资源<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/spreadsheet.html">表格工具</a></li><li><a href="https://echarts.apache.org/zh/theme-builder.html">主题构建工具</a></li><li><a href="https://echarts.apache.org/zh/cheat-sheet.html">术语速查手册</a></li><li><a href="https://echarts.apache.org/zh/resources.html">更多资源</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">社区<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/events.html">活动</a></li><li><a href="https://echarts.apache.org/zh/committers.html">贡献者列表</a></li><li><a href="https://echarts.apache.org/zh/maillist.html">邮件列表</a></li><li><a href="https://echarts.apache.org/zh/contributing.html">如何贡献</a></li><li><a href="https://echarts.apache.org/zh/dependencies.html">依赖项</a></li><li><a href="https://echarts.apache.org/zh/coding-standard.html">代码规范</a></li><li><a href="https://github.com/apache/echarts" target="_blank">源码(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/security.html">安全</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">版权<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">活动<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">捐赠<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">鸣谢<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("en")'>EN</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/zh/get-started" class="nav-link"><span class="title">快速上手</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">入门篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/basics/download" class="nav-link"><span class="title">获取 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/import" class="nav-link"><span class="title">在项目中引入 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/basics/help" class="nav-link"><span class="title">寻求帮助</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">版本特性</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 特性介绍</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">v5 升级 v6 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">v4 升级 v5 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">概念篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/concepts/chart-size" class="nav-link"><span class="title">图表容器及大小</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/style" class="nav-link"><span class="title">样式</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/dataset" class="nav-link"><span class="title">数据集</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/data-transform" class="nav-link"><span class="title">数据转换</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/axis" class="nav-link"><span class="title">坐标轴</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/visual-map" class="nav-link"><span class="title">视觉映射</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/legend" class="nav-link"><span class="title">图例</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/event" class="nav-link"><span class="title">事件与行为</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">应用篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">常用图表类型</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">柱状图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">基础柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">堆叠柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">动态排序柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">阶梯瀑布图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">折线图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">基础折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">堆叠折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/area-line" class="nav-link"><span class="title">区域面积图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">平滑曲线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/step-line" class="nav-link"><span class="title">阶梯线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">饼图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">基础饼图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">圆环图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/rose" class="nav-link"><span class="title">南丁格尔图(玫瑰图)</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">散点图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">基础散点图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">常用组件</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">地理坐标系(Geo)</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG 底图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">跨平台方案</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/server" class="nav-link"><span class="title">服务端渲染</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/wechat-app" class="nav-link"><span class="title">微信小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/baidu-app" class="nav-link"><span class="title">百度智能小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">数据处理</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/data/dynamic-data" class="nav-link"><span class="title">动态的异步数据</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">标签</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/label/rich-text" class="nav-link"><span class="title">富文本标签</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">动画</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/animation/transition" class="nav-link"><span class="title">数据过渡动画</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">交互</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/drag" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">拖拽的实现</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">智能指针吸附</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">最佳实践</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/aria" class="nav-link"><span class="title">无障碍访问</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/security" class="nav-link"><span class="title">安全指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">编辑本文档</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/meta/edit-guide" class="nav-link"><span class="title">文档编辑指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="%E6%8B%96%E6%8B%BD%E7%9A%84%E5%AE%9E%E7%8E%B0" tabindex="-1">拖拽的实现</h1> <p>本篇通过介绍一个实现拖拽的小例子来介绍如何在 Apache ECharts<sup>TM</sup> 中实现复杂的交互。</p> <p><iframe width="100%" height="400" src=""></iframe></p> <p>这个例子主要做到了这样一件事,用鼠标可以拖拽曲线的点,从而改变曲线的形状。例子很简单,但是有了这个基础我们还可以做更多的事情,比如在图中进行可视化得编辑。所以我们从这个简单的例子开始。</p> <p>echarts 本身没有提供封装好的“拖拽改变图表”这样比较业务定制的功能。但是这个功能开发者可以通过 API 扩展实现。</p> <h2 id="%E5%AE%9E%E7%8E%B0%E5%9F%BA%E6%9C%AC%E7%9A%84%E6%8B%96%E6%8B%BD%E5%8A%9F%E8%83%BD" tabindex="-1">实现基本的拖拽功能</h2> <p>在这个例子中,基础的图表是一个 <a href="https://echarts.apache.org/option.html#series-line">折线图 (series-line)</a>。参见如下配置:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">var</span> symbolSize <span class="token operator">=</span> <span class="token number">20</span><span class="token punctuation">;</span>
+
+<span class="token comment">// 这个 data 变量在这里单独声明,在后面也会用到。</span>
+<span class="token keyword">var</span> data <span class="token operator">=</span> <span class="token punctuation">[</span>
+  <span class="token punctuation">[</span><span class="token number">15</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token punctuation">[</span><span class="token operator">-</span><span class="token number">50</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token punctuation">[</span><span class="token operator">-</span><span class="token number">56.5</span><span class="token punctuation">,</span> <span class="token number">20</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token punctuation">[</span><span class="token operator">-</span><span class="token number">46.5</span><span class="token punctuation">,</span> <span class="token number">30</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token punctuation">[</span><span class="token operator">-</span><span class="token number">22.1</span><span class="token punctuation">,</span> <span class="token number">40</span><span class="token punctuation">]</span>
+<span class="token punctuation">]</span><span class="token punctuation">;</span>
+
+myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">min</span><span class="token operator">:</span> <span class="token operator">-</span><span class="token number">100</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">max</span><span class="token operator">:</span> <span class="token number">80</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'value'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">axisLine</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">onZero</span><span class="token operator">:</span> <span class="token boolean">false</span> <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">min</span><span class="token operator">:</span> <span class="token operator">-</span><span class="token number">30</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">max</span><span class="token operator">:</span> <span class="token number">60</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'value'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">axisLine</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">onZero</span><span class="token operator">:</span> <span class="token boolean">false</span> <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">id</span><span class="token operator">:</span> <span class="token string">'a'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">smooth</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">symbolSize</span><span class="token operator">:</span> symbolSize<span class="token punctuation">,</span> <span class="token comment">// 为了方便拖拽,把 symbolSize 尺寸设大了。</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> data
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>既然折线中原生的点没有拖拽功能,我们就为它加上拖拽功能:用 <a href="https://echarts.apache.org/option.html#graphic">graphic</a> 组件,在每个点上面,覆盖一个隐藏的可拖拽的圆点。</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+  <span class="token comment">// 声明一个 graphic component,里面有若干个 type 为 'circle' 的 graphic elements。</span>
+  <span class="token comment">// 这里使用了 echarts.util.map 这个帮助方法,其行为和 Array.prototype.map 一样,但是兼容 es5 以下的环境。</span>
+  <span class="token comment">// 用 map 方法遍历 data 的每项,为每项生成一个圆点。</span>
+  <span class="token literal-property property">graphic</span><span class="token operator">:</span> echarts<span class="token punctuation">.</span>util<span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span>data<span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">dataItem<span class="token punctuation">,</span> dataIndex</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+    <span class="token keyword">return</span> <span class="token punctuation">{</span>
+      <span class="token comment">// 'circle' 表示这个 graphic element 的类型是圆点。</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'circle'</span><span class="token punctuation">,</span>
+
+      <span class="token literal-property property">shape</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token comment">// 圆点的半径。</span>
+        <span class="token literal-property property">r</span><span class="token operator">:</span> symbolSize <span class="token operator">/</span> <span class="token number">2</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token comment">// 用 transform 的方式对圆点进行定位。position: [x, y] 表示将圆点平移到 [x, y] 位置。</span>
+      <span class="token comment">// 这里使用了 convertToPixel 这个 API 来得到每个圆点的位置,下面介绍。</span>
+      <span class="token literal-property property">position</span><span class="token operator">:</span> myChart<span class="token punctuation">.</span><span class="token function">convertToPixel</span><span class="token punctuation">(</span><span class="token string">'grid'</span><span class="token punctuation">,</span> dataItem<span class="token punctuation">)</span><span class="token punctuation">,</span>
+
+      <span class="token comment">// 这个属性让圆点不可见(但是不影响他响应鼠标事件)。</span>
+      <span class="token literal-property property">invisible</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+      <span class="token comment">// 这个属性让圆点可以被拖拽。</span>
+      <span class="token literal-property property">draggable</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+      <span class="token comment">// 把 z 值设得比较大,表示这个圆点在最上方,能覆盖住已有的折线图的圆点。</span>
+      <span class="token literal-property property">z</span><span class="token operator">:</span> <span class="token number">100</span><span class="token punctuation">,</span>
+      <span class="token comment">// 此圆点的拖拽的响应事件,在拖拽过程中会不断被触发。下面介绍详情。</span>
+      <span class="token comment">// 这里使用了 echarts.util.curry 这个帮助方法,意思是生成一个与 onPointDragging</span>
+      <span class="token comment">// 功能一样的新的函数,只不过第一个参数永远为此时传入的 dataIndex 的值。</span>
+      <span class="token literal-property property">ondrag</span><span class="token operator">:</span> echarts<span class="token punctuation">.</span>util<span class="token punctuation">.</span><span class="token function">curry</span><span class="token punctuation">(</span>onPointDragging<span class="token punctuation">,</span> dataIndex<span class="token punctuation">)</span>
+    <span class="token punctuation">}</span><span class="token punctuation">;</span>
+  <span class="token punctuation">}</span><span class="token punctuation">)</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>上面的代码中,使用 <a href="https://echarts.apache.org/api.html#echartsInstance.convertToPixel">convertToPixel</a> 这个 API,进行了从 data 到“像素坐标”的转换,从而得到了每个圆点应该在的位置,从而能绘制这些圆点。<code>myChart.convertToPixel('grid', dataItem)</code> 这句话中,第一个参数 <code>'grid'</code> 表示 <code>dataItem</code> 在 <a href="https://echarts.apache.org/option.html#grid">grid</a> 这个组件中(即直角坐标系)中进行转换。所谓“像素坐标”,就是以 echarts 容器 dom element 的左上角为零点的以像素为单位的坐标系中的坐标。</p> <p>注意这件事需要在第一次 setOption 后再进行,也就是说,须在坐标系(<a href="https://echarts.apache.org/option.html#grid">grid</a>)初始化后才能调用 <code>myChart.convertToPixel('grid', dataItem)</code>。</p> <p>有了这段代码后,就有了诸个能拖拽的点。接下来要为每个点,加上拖拽响应的事件:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token comment">// 拖拽某个圆点的过程中会不断调用此函数。</span>
+<span class="token comment">// 此函数中会根据拖拽后的新位置,改变 data 中的值,并用新的 data 值,重绘折线图,从而使折线图同步于被拖拽的隐藏圆点。</span>
+<span class="token keyword">function</span> <span class="token function">onPointDragging</span><span class="token punctuation">(</span><span class="token parameter">dataIndex</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  <span class="token comment">// 这里的 data 就是本文最初的代码块中声明的 data,在这里会被更新。</span>
+  <span class="token comment">// 这里的 this 就是被拖拽的圆点。this.position 就是圆点当前的位置。</span>
+  data<span class="token punctuation">[</span>dataIndex<span class="token punctuation">]</span> <span class="token operator">=</span> myChart<span class="token punctuation">.</span><span class="token function">convertFromPixel</span><span class="token punctuation">(</span><span class="token string">'grid'</span><span class="token punctuation">,</span> <span class="token keyword">this</span><span class="token punctuation">.</span>position<span class="token punctuation">)</span><span class="token punctuation">;</span>
+  <span class="token comment">// 用更新后的 data,重绘折线图。</span>
+  myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+    <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token punctuation">{</span>
+        <span class="token literal-property property">id</span><span class="token operator">:</span> <span class="token string">'a'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">data</span><span class="token operator">:</span> data
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>上面的代码中,使用了 <a href="https://echarts.apache.org//api.html#echartsInstance.convertFromPixel">convertFromPixel</a> 这个 API。它是 <a href="https://echarts.apache.org//api.html#echartsInstance.convertToPixel">convertToPixel</a> 的逆向过程。<code>myChart.convertFromPixel('grid', this.position)</code> 表示把当前像素坐标转换成 <a href="https://echarts.apache.org/option.html#grid">grid</a> 组件中直角坐标系的 dataItem 值。</p> <p>最后,为了使 dom 尺寸改变时,图中的元素能自适应得变化,加上这些代码:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>window<span class="token punctuation">.</span><span class="token function">addEventListener</span><span class="token punctuation">(</span><span class="token string">'resize'</span><span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  <span class="token comment">// 对每个拖拽圆点重新计算位置,并用 setOption 更新。</span>
+  myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+    <span class="token literal-property property">graphic</span><span class="token operator">:</span> echarts<span class="token punctuation">.</span>util<span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span>data<span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">item<span class="token punctuation">,</span> dataIndex</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+      <span class="token keyword">return</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">position</span><span class="token operator">:</span> myChart<span class="token punctuation">.</span><span class="token function">convertToPixel</span><span class="token punctuation">(</span><span class="token string">'grid'</span><span class="token punctuation">,</span> item<span class="token punctuation">)</span>
+      <span class="token punctuation">}</span><span class="token punctuation">;</span>
+    <span class="token punctuation">}</span><span class="token punctuation">)</span>
+  <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h2 id="%E6%B7%BB%E5%8A%A0-tooltip-%E7%BB%84%E4%BB%B6" tabindex="-1">添加 tooltip 组件</h2> <p>到此,拖拽的基本功能就完成了。但是想要更进一步得实时看到拖拽过程中,被拖拽的点的 data 值的变化状况,我们可以使用 <a href="https://echarts.apache.org/option.html#tooltip">tooltip</a> 组件来实时显示这个值。但是,tooltip 有其默认的“显示”“隐藏”触发规则,在我们拖拽的场景中并不适用,所以我们还要手动定制 tooltip 的“显示”“隐藏”行为。</p> <p>在上述代码中分别添加如下定义:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+  <span class="token comment">// ...,</span>
+  <span class="token literal-property property">tooltip</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token comment">// 表示不使用默认的“显示”“隐藏”触发规则。</span>
+    <span class="token literal-property property">triggerOn</span><span class="token operator">:</span> <span class="token string">'none'</span><span class="token punctuation">,</span>
+    <span class="token function-variable function">formatter</span><span class="token operator">:</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">params</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+      <span class="token keyword">return</span> <span class="token punctuation">(</span>
+        <span class="token string">'X: '</span> <span class="token operator">+</span>
+        params<span class="token punctuation">.</span>data<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">toFixed</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">)</span> <span class="token operator">+</span>
+        <span class="token string">'&lt;br>Y: '</span> <span class="token operator">+</span>
+        params<span class="token punctuation">.</span>data<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">toFixed</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">)</span>
+      <span class="token punctuation">)</span><span class="token punctuation">;</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+  <span class="token literal-property property">graphic</span><span class="token operator">:</span> data<span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">item<span class="token punctuation">,</span> dataIndex</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+    <span class="token keyword">return</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'circle'</span><span class="token punctuation">,</span>
+      <span class="token comment">// ...,</span>
+      <span class="token comment">// 在 mouseover 的时候显示,在 mouseout 的时候隐藏。</span>
+      <span class="token literal-property property">onmousemove</span><span class="token operator">:</span> echarts<span class="token punctuation">.</span>util<span class="token punctuation">.</span><span class="token function">curry</span><span class="token punctuation">(</span>showTooltip<span class="token punctuation">,</span> dataIndex<span class="token punctuation">)</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">onmouseout</span><span class="token operator">:</span> echarts<span class="token punctuation">.</span>util<span class="token punctuation">.</span><span class="token function">curry</span><span class="token punctuation">(</span>hideTooltip<span class="token punctuation">,</span> dataIndex<span class="token punctuation">)</span>
+    <span class="token punctuation">}</span><span class="token punctuation">;</span>
+  <span class="token punctuation">}</span><span class="token punctuation">)</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+
+<span class="token keyword">function</span> <span class="token function">showTooltip</span><span class="token punctuation">(</span><span class="token parameter">dataIndex</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  myChart<span class="token punctuation">.</span><span class="token function">dispatchAction</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'showTip'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">seriesIndex</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">dataIndex</span><span class="token operator">:</span> dataIndex
+  <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span>
+
+<span class="token keyword">function</span> <span class="token function">hideTooltip</span><span class="token punctuation">(</span><span class="token parameter">dataIndex</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  myChart<span class="token punctuation">.</span><span class="token function">dispatchAction</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'hideTip'</span>
+  <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>这里使用了 <a href="api.html#echartsInstance.dispatchAction">dispatchAction</a> 来显示隐藏 tooltip。用到了 <a href="api.html#action.tooltip.showTip">showTip</a>、<a href="api.html#action.tooltip.hideTip">hideTip</a>。</p> <h2 id="%E5%85%A8%E9%83%A8%E4%BB%A3%E7%A0%81" tabindex="-1">全部代码</h2> <p>总结一下,全部的代码如下:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code><span class="token keyword">import</span> echarts <span class="token keyword">from</span> <span class="token string">'echarts'</span><span class="token punctuation">;</span>
+
+<span class="token keyword">var</span> symbolSize <span class="token operator">=</span> <span class="token number">20</span><span class="token punctuation">;</span>
+<span class="token keyword">var</span> data <span class="token operator">=</span> <span class="token punctuation">[</span>
+  <span class="token punctuation">[</span><span class="token number">15</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token punctuation">[</span><span class="token operator">-</span><span class="token number">50</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token punctuation">[</span><span class="token operator">-</span><span class="token number">56.5</span><span class="token punctuation">,</span> <span class="token number">20</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token punctuation">[</span><span class="token operator">-</span><span class="token number">46.5</span><span class="token punctuation">,</span> <span class="token number">30</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token punctuation">[</span><span class="token operator">-</span><span class="token number">22.1</span><span class="token punctuation">,</span> <span class="token number">40</span><span class="token punctuation">]</span>
+<span class="token punctuation">]</span><span class="token punctuation">;</span>
+<span class="token keyword">var</span> myChart <span class="token operator">=</span> echarts<span class="token punctuation">.</span><span class="token function">init</span><span class="token punctuation">(</span>document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span><span class="token string">'main'</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+  <span class="token literal-property property">tooltip</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">triggerOn</span><span class="token operator">:</span> <span class="token string">'none'</span><span class="token punctuation">,</span>
+    <span class="token function-variable function">formatter</span><span class="token operator">:</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">params</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+      <span class="token keyword">return</span> <span class="token punctuation">(</span>
+        <span class="token string">'X: '</span> <span class="token operator">+</span>
+        params<span class="token punctuation">.</span>data<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">toFixed</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">)</span> <span class="token operator">+</span>
+        <span class="token string">'&lt;br />Y: '</span> <span class="token operator">+</span>
+        params<span class="token punctuation">.</span>data<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">toFixed</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">)</span>
+      <span class="token punctuation">)</span><span class="token punctuation">;</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">min</span><span class="token operator">:</span> <span class="token operator">-</span><span class="token number">100</span><span class="token punctuation">,</span> <span class="token literal-property property">max</span><span class="token operator">:</span> <span class="token number">80</span><span class="token punctuation">,</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'value'</span><span class="token punctuation">,</span> <span class="token literal-property property">axisLine</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">onZero</span><span class="token operator">:</span> <span class="token boolean">false</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">min</span><span class="token operator">:</span> <span class="token operator">-</span><span class="token number">30</span><span class="token punctuation">,</span> <span class="token literal-property property">max</span><span class="token operator">:</span> <span class="token number">60</span><span class="token punctuation">,</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'value'</span><span class="token punctuation">,</span> <span class="token literal-property property">axisLine</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">onZero</span><span class="token operator">:</span> <span class="token boolean">false</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span> <span class="token literal-property property">id</span><span class="token operator">:</span> <span class="token string">'a'</span><span class="token punctuation">,</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span><span class="token punctuation">,</span> <span class="token literal-property property">smooth</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span> <span class="token literal-property property">symbolSize</span><span class="token operator">:</span> symbolSize<span class="token punctuation">,</span> <span class="token literal-property property">data</span><span class="token operator">:</span> data <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+  <span class="token literal-property property">graphic</span><span class="token operator">:</span> echarts<span class="token punctuation">.</span>util<span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span>data<span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">item<span class="token punctuation">,</span> dataIndex</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+    <span class="token keyword">return</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'circle'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">position</span><span class="token operator">:</span> myChart<span class="token punctuation">.</span><span class="token function">convertToPixel</span><span class="token punctuation">(</span><span class="token string">'grid'</span><span class="token punctuation">,</span> item<span class="token punctuation">)</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">shape</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">r</span><span class="token operator">:</span> symbolSize <span class="token operator">/</span> <span class="token number">2</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">invisible</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">draggable</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">ondrag</span><span class="token operator">:</span> echarts<span class="token punctuation">.</span>util<span class="token punctuation">.</span><span class="token function">curry</span><span class="token punctuation">(</span>onPointDragging<span class="token punctuation">,</span> dataIndex<span class="token punctuation">)</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">onmousemove</span><span class="token operator">:</span> echarts<span class="token punctuation">.</span>util<span class="token punctuation">.</span><span class="token function">curry</span><span class="token punctuation">(</span>showTooltip<span class="token punctuation">,</span> dataIndex<span class="token punctuation">)</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">onmouseout</span><span class="token operator">:</span> echarts<span class="token punctuation">.</span>util<span class="token punctuation">.</span><span class="token function">curry</span><span class="token punctuation">(</span>hideTooltip<span class="token punctuation">,</span> dataIndex<span class="token punctuation">)</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">z</span><span class="token operator">:</span> <span class="token number">100</span>
+    <span class="token punctuation">}</span><span class="token punctuation">;</span>
+  <span class="token punctuation">}</span><span class="token punctuation">)</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+window<span class="token punctuation">.</span><span class="token function">addEventListener</span><span class="token punctuation">(</span><span class="token string">'resize'</span><span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+    <span class="token literal-property property">graphic</span><span class="token operator">:</span> echarts<span class="token punctuation">.</span>util<span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span>data<span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">item<span class="token punctuation">,</span> dataIndex</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+      <span class="token keyword">return</span> <span class="token punctuation">{</span> <span class="token literal-property property">position</span><span class="token operator">:</span> myChart<span class="token punctuation">.</span><span class="token function">convertToPixel</span><span class="token punctuation">(</span><span class="token string">'grid'</span><span class="token punctuation">,</span> item<span class="token punctuation">)</span> <span class="token punctuation">}</span><span class="token punctuation">;</span>
+    <span class="token punctuation">}</span><span class="token punctuation">)</span>
+  <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token keyword">function</span> <span class="token function">showTooltip</span><span class="token punctuation">(</span><span class="token parameter">dataIndex</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  myChart<span class="token punctuation">.</span><span class="token function">dispatchAction</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+    <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'showTip'</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">seriesIndex</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">dataIndex</span><span class="token operator">:</span> dataIndex
+  <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span>
+<span class="token keyword">function</span> <span class="token function">hideTooltip</span><span class="token punctuation">(</span><span class="token parameter">dataIndex</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  myChart<span class="token punctuation">.</span><span class="token function">dispatchAction</span><span class="token punctuation">(</span><span class="token punctuation">{</span> <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'hideTip'</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span>
+<span class="token keyword">function</span> <span class="token function">onPointDragging</span><span class="token punctuation">(</span><span class="token parameter">dataIndex<span class="token punctuation">,</span> dx<span class="token punctuation">,</span> dy</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
+  data<span class="token punctuation">[</span>dataIndex<span class="token punctuation">]</span> <span class="token operator">=</span> myChart<span class="token punctuation">.</span><span class="token function">convertFromPixel</span><span class="token punctuation">(</span><span class="token string">'grid'</span><span class="token punctuation">,</span> <span class="token keyword">this</span><span class="token punctuation">.</span>position<span class="token punctuation">)</span><span class="token punctuation">;</span>
+  myChart<span class="token punctuation">.</span><span class="token function">setOption</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
+    <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+      <span class="token punctuation">{</span>
+        <span class="token literal-property property">id</span><span class="token operator">:</span> <span class="token string">'a'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">data</span><span class="token operator">:</span> data
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
+<span class="token punctuation">}</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>有了这些基础,就可以定制更多的功能了。可以加 <a href="https://echarts.apache.org/option.html#dataZoom">dataZoom</a> 组件,可以制作一个直角坐标系上的绘图板等等。可以发挥想象力。</p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">本文贡献者</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/zh/how-to/interaction/drag.md" title="编辑本文" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">在 GitHub 上编辑本页</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/Ovilia" target="_blank" class="post-contributor has-avatar"><img alt="Ovilia" src="https://echarts.apache.org/en/images/people/羡辙.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>Ovilia</span></a><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(i,t,e,l,a,d,g,r,o,I,C,h,n,c,p,s,A,G,b,m,u,Z,L,B,W,v,K,X,y,w,R,O,S,Y,H,F,j,J,V,k,D,E,U,f,N,T,z,q,M,P,x,Q,_,$,ii,ti,ei,li,ai,di,gi,ri,oi){return{layout:"default",data:[{html:'<h1 id="%E6%8B%96%E6%8B%BD%E7%9A%84%E5%AE%9E%E7%8E%B0" tabindex="-1">拖拽的实现</h1>\n<p>本篇通过介绍一个实现拖拽的小例子来介绍如何在 Apache ECharts<sup>TM</sup> 中实现复杂的交互。</p>\n<p><md-example src="line-draggable" height="400"></md-example></p>\n<p>这个例子主要做到了这样一件事,用鼠标可以拖拽曲线的点,从而改变曲线的形状。例子很简单,但是有了这个基础我们还可以做更多的事情,比如在图中进行可视化得编辑。所以我们从这个简单的例子开始。</p>\n<p>echarts 本身没有提供封装好的“拖拽改变图表”这样比较业务定制的功能。但是这个功能开发者可以通过 API 扩展实现。</p>\n<h2 id="%E5%AE%9E%E7%8E%B0%E5%9F%BA%E6%9C%AC%E7%9A%84%E6%8B%96%E6%8B%BD%E5%8A%9F%E8%83%BD" tabindex="-1">实现基本的拖拽功能</h2>\n<p>在这个例子中,基础的图表是一个 <a href="https://echarts.apache.org/option.html#series-line">折线图 (series-line)</a>。参见如下配置:</p>\n<md-code-block lang="js" code="\'dmFyIHN5bWJvbFNpemUgPSAyMDsKCi8vIOi_meS4qiBkYXRhIOWPmOmHj-WcqOi_memHjOWNleeLrOWjsOaYju-8jOWcqOWQjumdouS5n-S8mueUqOWIsOOAggp2YXIgZGF0YSA9IFsKICBbMTUsIDBdLAogIFstNTAsIDEwXSwKICBbLTU2LjUsIDIwXSwKICBbLTQ2LjUsIDMwXSwKICBbLTIyLjEsIDQwXQpdOwoKbXlDaGFydC5zZXRPcHRpb24oewogIHhBeGlzOiB7CiAgICBtaW46IC0xMDAsCiAgICBtYXg6IDgwLAogICAgdHlwZTogJ3ZhbHVlJywKICAgIGF4aXNMaW5lOiB7IG9uWmVybzogZmFsc2UgfQogIH0sCiAgeUF4aXM6IHsKICAgIG1pbjogLTMwLAogICAgbWF4OiA2MCwKICAgIHR5cGU6ICd2YWx1ZScsCiAgICBheGlzTGluZTogeyBvblplcm86IGZhbHNlIH0KICB9LAogIHNlcmllczogWwogICAgewogICAgICBpZDogJ2EnLAogICAgICB0eXBlOiAnbGluZScsCiAgICAgIHNtb290aDogdHJ1ZSwKICAgICAgc3ltYm9sU2l6ZTogc3ltYm9sU2l6ZSwgLy8g5Li65LqG5pa55L6_5ouW5ou977yM5oqKIHN5bWJvbFNpemUg5bC65a-46K6-5aSn5LqG44CCCiAgICAgIGRhdGE6IGRhdGEKICAgIH0KICBdCn0pOw\'" line-highlights="\'\'" />\n<p>既然折线中原生的点没有拖拽功能,我们就为它加上拖拽功能:用 <a href="https://echarts.apache.org/option.html#graphic">graphic</a> 组件,在每个点上面,覆盖一个隐藏的可拖拽的圆点。</p>\n<md-code-block lang="js" code="\'bXlDaGFydC5zZXRPcHRpb24oewogIC8vIOWjsOaYjuS4gOS4qiBncmFwaGljIGNvbXBvbmVudO-8jOmHjOmdouacieiLpeW5suS4qiB0eXBlIOS4uiAnY2lyY2xlJyDnmoQgZ3JhcGhpYyBlbGVtZW50c-OAggogIC8vIOi_memHjOS9v-eUqOS6hiBlY2hhcnRzLnV0aWwubWFwIOi_meS4quW4ruWKqeaWueazle-8jOWFtuihjOS4uuWSjCBBcnJheS5wcm90b3R5cGUubWFwIOS4gOagt--8jOS9huaYr-WFvOWuuSBlczUg5Lul5LiL55qE546v5aKD44CCCiAgLy8g55SoIG1hcCDmlrnms5XpgY3ljoYgZGF0YSDnmoTmr4_pobnvvIzkuLrmr4_pobnnlJ_miJDkuIDkuKrlnIbngrnjgIIKICBncmFwaGljOiBlY2hhcnRzLnV0aWwubWFwKGRhdGEsIGZ1bmN0aW9uKGRhdGFJdGVtLCBkYXRhSW5kZXgpIHsKICAgIHJldHVybiB7CiAgICAgIC8vICdjaXJjbGUnIOihqOekuui_meS4qiBncmFwaGljIGVsZW1lbnQg55qE57G75Z6L5piv5ZyG54K544CCCiAgICAgIHR5cGU6ICdjaXJjbGUnLAoKICAgICAgc2hhcGU6IHsKICAgICAgICAvLyDlnIbngrnnmoTljYrlvoTjgIIKICAgICAgICByOiBzeW1ib2xTaXplIC8gMgogICAgICB9LAogICAgICAvLyDnlKggdHJhbnNmb3JtIOeahOaWueW8j-WvueWchueCuei_m-ihjOWumuS9jeOAgnBvc2l0aW9uOiBbeCwgeV0g6KGo56S65bCG5ZyG54K55bmz56e75YiwIFt4LCB5XSDkvY3nva7jgIIKICAgICAgLy8g6L-Z6YeM5L2_55So5LqGIGNvbnZlcnRUb1BpeGVsIOi_meS4qiBBUEkg5p2l5b6X5Yiw5q-P5Liq5ZyG54K555qE5L2N572u77yM5LiL6Z2i5LuL57uN44CCCiAgICAgIHBvc2l0aW9uOiBteUNoYXJ0LmNvbnZlcnRUb1BpeGVsKCdncmlkJywgZGF0YUl0ZW0pLAoKICAgICAgLy8g6L-Z5Liq5bGe5oCn6K6p5ZyG54K55LiN5Y-v6KeB77yI5L2G5piv5LiN5b2x5ZON5LuW5ZON5bqU6byg5qCH5LqL5Lu277yJ44CCCiAgICAgIGludmlzaWJsZTogdHJ1ZSwKICAgICAgLy8g6L-Z5Liq5bGe5oCn6K6p5ZyG54K55Y-v5Lul6KKr5ouW5ou944CCCiAgICAgIGRyYWdnYWJsZTogdHJ1ZSwKICAgICAgLy8g5oqKIHog5YC86K6-5b6X5q-U6L6D5aSn77yM6KGo56S66L-Z5Liq5ZyG54K55Zyo5pyA5LiK5pa577yM6IO96KaG55uW5L2P5bey5pyJ55qE5oqY57q_5Zu-55qE5ZyG54K544CCCiAgICAgIHo6IDEwMCwKICAgICAgLy8g5q2k5ZyG54K555qE5ouW5ou955qE5ZON5bqU5LqL5Lu277yM5Zyo5ouW5ou96L-H56iL5Lit5Lya5LiN5pat6KKr6Kem5Y-R44CC5LiL6Z2i5LuL57uN6K-m5oOF44CCCiAgICAgIC8vIOi_memHjOS9v-eUqOS6hiBlY2hhcnRzLnV0aWwuY3Vycnkg6L-Z5Liq5biu5Yqp5pa55rOV77yM5oSP5oCd5piv55Sf5oiQ5LiA5Liq5LiOIG9uUG9pbnREcmFnZ2luZwogICAgICAvLyDlip_og73kuIDmoLfnmoTmlrDnmoTlh73mlbDvvIzlj6rkuI3ov4fnrKzkuIDkuKrlj4LmlbDmsLjov5zkuLrmraTml7bkvKDlhaXnmoQgZGF0YUluZGV4IOeahOWAvOOAggogICAgICBvbmRyYWc6IGVjaGFydHMudXRpbC5jdXJyeShvblBvaW50RHJhZ2dpbmcsIGRhdGFJbmRleCkKICAgIH07CiAgfSkKfSk7\'" line-highlights="\'\'" />\n<p>上面的代码中,使用 <a href="https://echarts.apache.org/api.html#echartsInstance.convertToPixel">convertToPixel</a> 这个 API,进行了从 data 到“像素坐标”的转换,从而得到了每个圆点应该在的位置,从而能绘制这些圆点。<code>myChart.convertToPixel(\'grid\', dataItem)</code> 这句话中,第一个参数 <code>\'grid\'</code> 表示 <code>dataItem</code> 在 <a href="https://echarts.apache.org/option.html#grid">grid</a> 这个组件中(即直角坐标系)中进行转换。所谓“像素坐标”,就是以 echarts 容器 dom element 的左上角为零点的以像素为单位的坐标系中的坐标。</p>\n<p>注意这件事需要在第一次 setOption 后再进行,也就是说,须在坐标系(<a href="https://echarts.apache.org/option.html#grid">grid</a>)初始化后才能调用 <code>myChart.convertToPixel(\'grid\', dataItem)</code>。</p>\n<p>有了这段代码后,就有了诸个能拖拽的点。接下来要为每个点,加上拖拽响应的事件:</p>\n<md-code-block lang="js" code="\'Ly8g5ouW5ou95p-Q5Liq5ZyG54K555qE6L-H56iL5Lit5Lya5LiN5pat6LCD55So5q2k5Ye95pWw44CCCi8vIOatpOWHveaVsOS4reS8muagueaNruaLluaLveWQjueahOaWsOS9jee9ru-8jOaUueWPmCBkYXRhIOS4reeahOWAvO-8jOW5tueUqOaWsOeahCBkYXRhIOWAvO-8jOmHjee7mOaKmOe6v-Wbvu-8jOS7juiAjOS9v-aKmOe6v-WbvuWQjOatpeS6juiiq-aLluaLveeahOmakOiXj-WchueCueOAggpmdW5jdGlvbiBvblBvaW50RHJhZ2dpbmcoZGF0YUluZGV4KSB7CiAgLy8g6L-Z6YeM55qEIGRhdGEg5bCx5piv5pys5paH5pyA5Yid55qE5Luj56CB5Z2X5Lit5aOw5piO55qEIGRhdGHvvIzlnKjov5nph4zkvJrooqvmm7TmlrDjgIIKICAvLyDov5nph4znmoQgdGhpcyDlsLHmmK_ooqvmi5bmi73nmoTlnIbngrnjgIJ0aGlzLnBvc2l0aW9uIOWwseaYr-WchueCueW9k-WJjeeahOS9jee9ruOAggogIGRhdGFbZGF0YUluZGV4XSA9IG15Q2hhcnQuY29udmVydEZyb21QaXhlbCgnZ3JpZCcsIHRoaXMucG9zaXRpb24pOwogIC8vIOeUqOabtOaWsOWQjueahCBkYXRh77yM6YeN57uY5oqY57q_5Zu-44CCCiAgbXlDaGFydC5zZXRPcHRpb24oewogICAgc2VyaWVzOiBbCiAgICAgIHsKICAgICAgICBpZDogJ2EnLAogICAgICAgIGRhdGE6IGRhdGEKICAgICAgfQogICAgXQogIH0pOwp9\'" line-highlights="\'\'" />\n<p>上面的代码中,使用了 <a href="https://echarts.apache.org//api.html#echartsInstance.convertFromPixel">convertFromPixel</a> 这个 API。它是 <a href="https://echarts.apache.org//api.html#echartsInstance.convertToPixel">convertToPixel</a> 的逆向过程。<code>myChart.convertFromPixel(\'grid\', this.position)</code> 表示把当前像素坐标转换成 <a href="https://echarts.apache.org/option.html#grid">grid</a> 组件中直角坐标系的 dataItem 值。</p>\n<p>最后,为了使 dom 尺寸改变时,图中的元素能自适应得变化,加上这些代码:</p>\n<md-code-block lang="js" code="\'d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGZ1bmN0aW9uKCkgewogIC8vIOWvueavj-S4quaLluaLveWchueCuemHjeaWsOiuoeeul-S9jee9ru-8jOW5tueUqCBzZXRPcHRpb24g5pu05paw44CCCiAgbXlDaGFydC5zZXRPcHRpb24oewogICAgZ3JhcGhpYzogZWNoYXJ0cy51dGlsLm1hcChkYXRhLCBmdW5jdGlvbihpdGVtLCBkYXRhSW5kZXgpIHsKICAgICAgcmV0dXJuIHsKICAgICAgICBwb3NpdGlvbjogbXlDaGFydC5jb252ZXJ0VG9QaXhlbCgnZ3JpZCcsIGl0ZW0pCiAgICAgIH07CiAgICB9KQogIH0pOwp9KTs\'" line-highlights="\'\'" />\n<h2 id="%E6%B7%BB%E5%8A%A0-tooltip-%E7%BB%84%E4%BB%B6" tabindex="-1">添加 tooltip 组件</h2>\n<p>到此,拖拽的基本功能就完成了。但是想要更进一步得实时看到拖拽过程中,被拖拽的点的 data 值的变化状况,我们可以使用 <a href="https://echarts.apache.org/option.html#tooltip">tooltip</a> 组件来实时显示这个值。但是,tooltip 有其默认的“显示”“隐藏”触发规则,在我们拖拽的场景中并不适用,所以我们还要手动定制 tooltip 的“显示”“隐藏”行为。</p>\n<p>在上述代码中分别添加如下定义:</p>\n<md-code-block lang="js" code="\'bXlDaGFydC5zZXRPcHRpb24oewogIC8vIC4uLiwKICB0b29sdGlwOiB7CiAgICAvLyDooajnpLrkuI3kvb_nlKjpu5jorqTnmoTigJzmmL7npLrigJ3igJzpmpDol4_igJ3op6blj5Hop4TliJnjgIIKICAgIHRyaWdnZXJPbjogJ25vbmUnLAogICAgZm9ybWF0dGVyOiBmdW5jdGlvbihwYXJhbXMpIHsKICAgICAgcmV0dXJuICgKICAgICAgICAnWDogJyArCiAgICAgICAgcGFyYW1zLmRhdGFbMF0udG9GaXhlZCgyKSArCiAgICAgICAgJzxicj5ZOiAnICsKICAgICAgICBwYXJhbXMuZGF0YVsxXS50b0ZpeGVkKDIpCiAgICAgICk7CiAgICB9CiAgfQp9KTs\'" line-highlights="\'\'" />\n<md-code-block lang="js" code="\'bXlDaGFydC5zZXRPcHRpb24oewogIGdyYXBoaWM6IGRhdGEubWFwKGZ1bmN0aW9uKGl0ZW0sIGRhdGFJbmRleCkgewogICAgcmV0dXJuIHsKICAgICAgdHlwZTogJ2NpcmNsZScsCiAgICAgIC8vIC4uLiwKICAgICAgLy8g5ZyoIG1vdXNlb3ZlciDnmoTml7blgJnmmL7npLrvvIzlnKggbW91c2VvdXQg55qE5pe25YCZ6ZqQ6JeP44CCCiAgICAgIG9ubW91c2Vtb3ZlOiBlY2hhcnRzLnV0aWwuY3Vycnkoc2hvd1Rvb2x0aXAsIGRhdGFJbmRleCksCiAgICAgIG9ubW91c2VvdXQ6IGVjaGFydHMudXRpbC5jdXJyeShoaWRlVG9vbHRpcCwgZGF0YUluZGV4KQogICAgfTsKICB9KQp9KTsKCmZ1bmN0aW9uIHNob3dUb29sdGlwKGRhdGFJbmRleCkgewogIG15Q2hhcnQuZGlzcGF0Y2hBY3Rpb24oewogICAgdHlwZTogJ3Nob3dUaXAnLAogICAgc2VyaWVzSW5kZXg6IDAsCiAgICBkYXRhSW5kZXg6IGRhdGFJbmRleAogIH0pOwp9CgpmdW5jdGlvbiBoaWRlVG9vbHRpcChkYXRhSW5kZXgpIHsKICBteUNoYXJ0LmRpc3BhdGNoQWN0aW9uKHsKICAgIHR5cGU6ICdoaWRlVGlwJwogIH0pOwp9\'" line-highlights="\'\'" />\n<p>这里使用了 <a href="api.html#echartsInstance.dispatchAction">dispatchAction</a> 来显示隐藏 tooltip。用到了 <a href="api.html#action.tooltip.showTip">showTip</a>、<a href="api.html#action.tooltip.hideTip">hideTip</a>。</p>\n<h2 id="%E5%85%A8%E9%83%A8%E4%BB%A3%E7%A0%81" tabindex="-1">全部代码</h2>\n<p>总结一下,全部的代码如下:</p>\n<md-code-block lang="js" code="\'aW1wb3J0IGVjaGFydHMgZnJvbSAnZWNoYXJ0cyc7Cgp2YXIgc3ltYm9sU2l6ZSA9IDIwOwp2YXIgZGF0YSA9IFsKICBbMTUsIDBdLAogIFstNTAsIDEwXSwKICBbLTU2LjUsIDIwXSwKICBbLTQ2LjUsIDMwXSwKICBbLTIyLjEsIDQwXQpdOwp2YXIgbXlDaGFydCA9IGVjaGFydHMuaW5pdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFpbicpKTsKbXlDaGFydC5zZXRPcHRpb24oewogIHRvb2x0aXA6IHsKICAgIHRyaWdnZXJPbjogJ25vbmUnLAogICAgZm9ybWF0dGVyOiBmdW5jdGlvbihwYXJhbXMpIHsKICAgICAgcmV0dXJuICgKICAgICAgICAnWDogJyArCiAgICAgICAgcGFyYW1zLmRhdGFbMF0udG9GaXhlZCgyKSArCiAgICAgICAgJzxiciAvPlk6ICcgKwogICAgICAgIHBhcmFtcy5kYXRhWzFdLnRvRml4ZWQoMikKICAgICAgKTsKICAgIH0KICB9LAogIHhBeGlzOiB7IG1pbjogLTEwMCwgbWF4OiA4MCwgdHlwZTogJ3ZhbHVlJywgYXhpc0xpbmU6IHsgb25aZXJvOiBmYWxzZSB9IH0sCiAgeUF4aXM6IHsgbWluOiAtMzAsIG1heDogNjAsIHR5cGU6ICd2YWx1ZScsIGF4aXNMaW5lOiB7IG9uWmVybzogZmFsc2UgfSB9LAogIHNlcmllczogWwogICAgeyBpZDogJ2EnLCB0eXBlOiAnbGluZScsIHNtb290aDogdHJ1ZSwgc3ltYm9sU2l6ZTogc3ltYm9sU2l6ZSwgZGF0YTogZGF0YSB9CiAgXQp9KTsKbXlDaGFydC5zZXRPcHRpb24oewogIGdyYXBoaWM6IGVjaGFydHMudXRpbC5tYXAoZGF0YSwgZnVuY3Rpb24oaXRlbSwgZGF0YUluZGV4KSB7CiAgICByZXR1cm4gewogICAgICB0eXBlOiAnY2lyY2xlJywKICAgICAgcG9zaXRpb246IG15Q2hhcnQuY29udmVydFRvUGl4ZWwoJ2dyaWQnLCBpdGVtKSwKICAgICAgc2hhcGU6IHsgcjogc3ltYm9sU2l6ZSAvIDIgfSwKICAgICAgaW52aXNpYmxlOiB0cnVlLAogICAgICBkcmFnZ2FibGU6IHRydWUsCiAgICAgIG9uZHJhZzogZWNoYXJ0cy51dGlsLmN1cnJ5KG9uUG9pbnREcmFnZ2luZywgZGF0YUluZGV4KSwKICAgICAgb25tb3VzZW1vdmU6IGVjaGFydHMudXRpbC5jdXJyeShzaG93VG9vbHRpcCwgZGF0YUluZGV4KSwKICAgICAgb25tb3VzZW91dDogZWNoYXJ0cy51dGlsLmN1cnJ5KGhpZGVUb29sdGlwLCBkYXRhSW5kZXgpLAogICAgICB6OiAxMDAKICAgIH07CiAgfSkKfSk7CndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBmdW5jdGlvbigpIHsKICBteUNoYXJ0LnNldE9wdGlvbih7CiAgICBncmFwaGljOiBlY2hhcnRzLnV0aWwubWFwKGRhdGEsIGZ1bmN0aW9uKGl0ZW0sIGRhdGFJbmRleCkgewogICAgICByZXR1cm4geyBwb3NpdGlvbjogbXlDaGFydC5jb252ZXJ0VG9QaXhlbCgnZ3JpZCcsIGl0ZW0pIH07CiAgICB9KQogIH0pOwp9KTsKZnVuY3Rpb24gc2hvd1Rvb2x0aXAoZGF0YUluZGV4KSB7CiAgbXlDaGFydC5kaXNwYXRjaEFjdGlvbih7CiAgICB0eXBlOiAnc2hvd1RpcCcsCiAgICBzZXJpZXNJbmRleDogMCwKICAgIGRhdGFJbmRleDogZGF0YUluZGV4CiAgfSk7Cn0KZnVuY3Rpb24gaGlkZVRvb2x0aXAoZGF0YUluZGV4KSB7CiAgbXlDaGFydC5kaXNwYXRjaEFjdGlvbih7IHR5cGU6ICdoaWRlVGlwJyB9KTsKfQpmdW5jdGlvbiBvblBvaW50RHJhZ2dpbmcoZGF0YUluZGV4LCBkeCwgZHkpIHsKICBkYXRhW2RhdGFJbmRleF0gPSBteUNoYXJ0LmNvbnZlcnRGcm9tUGl4ZWwoJ2dyaWQnLCB0aGlzLnBvc2l0aW9uKTsKICBteUNoYXJ0LnNldE9wdGlvbih7CiAgICBzZXJpZXM6IFsKICAgICAgewogICAgICAgIGlkOiAnYScsCiAgICAgICAgZGF0YTogZGF0YQogICAgICB9CiAgICBdCiAgfSk7Cn0\'" line-highlights="\'\'" />\n<p>有了这些基础,就可以定制更多的功能了。可以加 <a href="https://echarts.apache.org/option.html#dataZoom">dataZoom</a> 组件,可以制作一个直角坐标系上的绘图板等等。可以发挥想象力。</p>\n',postPath:"zh/how-to/interaction/drag",title:"拖拽的实现 - 交互 - 应用篇"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:l},{title:"入门篇",dir:a,children:[{title:"获取 ECharts",dir:d},{title:"在项目中引入 ECharts",dir:g},{title:"资源列表",dir:r,draft:i},{title:"寻求帮助",dir:o},{title:"版本特性",dir:I,children:[{title:"ECharts 6 特性介绍",dir:C},{title:"v5 升级 v6 指南",dir:h},{title:"5.0",dir:n},{title:"v4 升级 v5 指南",dir:c},{title:5.2,dir:p},{title:5.3,dir:s},{title:5.4,dir:A},{title:5.5,dir:G},{title:5.6,dir:b}]}]},{title:"概念篇",dir:m,children:[{title:"图表容器及大小",dir:u},{title:"配置项",dir:Z,draft:i},{title:"系列",dir:L,draft:i},{title:"样式",dir:B},{title:"数据集",dir:W},{title:"数据转换",dir:v},{title:"坐标系",dir:K,draft:i},{title:"坐标轴",dir:X},{title:"视觉映射",dir:e},{title:"图例",dir:y},{title:"事件与行为",dir:w}]},{title:"应用篇",dir:R,children:[{title:"常用图表类型",dir:O,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:S},{title:"堆叠柱状图",dir:Y},{title:"动态排序柱状图",dir:H},{title:"极坐标系柱状图",dir:F,draft:i},{title:"阶梯瀑布图",dir:j},{title:"视觉映射的柱状图",dir:e,draft:i}]},{title:"折线图",dir:J,children:[{title:"基础折线图",dir:V},{title:"堆叠折线图",dir:k},{title:"区域面积图",dir:D},{title:"平滑曲线图",dir:E},{title:"阶梯线图",dir:U}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:f},{title:"圆环图",dir:N},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:T,children:[{title:"基础散点图",dir:z}]}]},{title:"常用组件",dir:q,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:M}]}]},{title:"移动端优化",dir:t,draft:i},{title:"跨平台方案",dir:P,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:x},{title:"数据下钻",dir:Q,draft:i}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:_}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:ii}]},{title:"交互",dir:ti,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:ei,draft:i},{title:"智能指针吸附",dir:li}]}]},{title:"最佳实践",dir:ai,children:[{title:"移动端优化",dir:t,draft:i},{title:di,dir:gi},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:ri}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:oi}]}],en:[{title:"Get Started",dir:l},{title:"Basics",dir:a,children:[{title:"Download ECharts",dir:d},{title:"Import ECharts",dir:g},{title:"Resources",dir:r,draft:i},{title:"Get Help",dir:o},{title:"What's New",dir:I,children:[{title:"ECharts 6 Features",dir:C},{title:"Migration from v5 to v6",dir:h},{title:"5.0",dir:n},{title:"Migration from v4 to v5",dir:c},{title:5.2,dir:p},{title:5.3,dir:s},{title:5.4,dir:A},{title:5.5,dir:G},{title:5.6,dir:b}]}]},{title:"Concepts",dir:m,children:[{title:"Chart Container",dir:u},{title:"Chart Option",dir:Z,draft:i},{title:"Series",dir:L,draft:i},{title:"Style",dir:B},{title:"Dataset",dir:W},{title:"Data Transform",dir:v},{title:"Coordinate",dir:K,draft:i},{title:"Axis",dir:X},{title:"Visual Mapping",dir:e},{title:"Legend",dir:y},{title:"Event and Action",dir:w}]},{title:"How To Guides",dir:R,children:[{title:"Common Charts",dir:O,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:S},{title:"Stacked Bar",dir:Y},{title:"Bar Racing",dir:H},{title:"Bar Polar",dir:F,draft:i},{title:"Waterfall",dir:j}]},{title:"Line",dir:J,children:[{title:"Basic Line",dir:V},{title:"Stacked Line",dir:k},{title:"Area Chart",dir:D},{title:"Smoothed Line",dir:E},{title:"Step Line",dir:U}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:f},{title:"Ring Style",dir:N},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:T,children:[{title:"Basic Scatter",dir:z}]}]},{title:"Common Components",dir:q,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:M}]}]},{title:"Mobile",dir:t,draft:i},{title:"Cross Platform",dir:P,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:x},{title:"Drilldown",dir:Q,draft:i}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:_}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:ii}]},{title:"Interaction",dir:ti,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:ei,draft:i},{title:"Intelligent Pointer Snapping",dir:li}]}]},{title:"Best Practices",dir:ai,children:[{title:"Mobile Optimization",dir:t,draft:i},{title:di,dir:gi},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:ri}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:oi}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:i,routePath:"/zh/how-to/interaction/drag",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/zh/how-to/label/rich-text/index.html b/docs/zh/how-to/label/rich-text/index.html
new file mode 100644
index 0000000..1a0a2ee
--- /dev/null
+++ b/docs/zh/how-to/label/rich-text/index.html
@@ -0,0 +1,662 @@
+<!doctype html>
+<html data-n-head-ssr lang="zh-CN" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh-CN%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>富文本标签 - 标签 - 应用篇 - 使用手册 - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="zh"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/zh/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/zh/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/zh/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/zh/index.html" class="navbar-brand"><img src="https://echarts.apache.org/zh/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/zh/index.html">首页</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">文档<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/feature.html">特性</a></li><li><a href="https://echarts.apache.org/handbook/zh/get-started/">使用手册</a></li><li><a href="https://echarts.apache.org/zh/api.html">API</a></li><li><a href="https://echarts.apache.org/zh/option.html">配置项手册</a></li><li><a href="https://echarts.apache.org/zh/changelog.html">版本记录</a></li><li><a href="https://echarts.apache.org/zh/faq.html">常见问题</a></li><li><a href="https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide">v6 升级指南</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">下载<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/download.html">下载</a></li><li><a href="https://echarts.apache.org/zh/download-theme.html">主题下载</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">自定义系列下载<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/download-extension.html">扩展下载</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/zh/index.html">示例</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">资源<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/spreadsheet.html">表格工具</a></li><li><a href="https://echarts.apache.org/zh/theme-builder.html">主题构建工具</a></li><li><a href="https://echarts.apache.org/zh/cheat-sheet.html">术语速查手册</a></li><li><a href="https://echarts.apache.org/zh/resources.html">更多资源</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">社区<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/events.html">活动</a></li><li><a href="https://echarts.apache.org/zh/committers.html">贡献者列表</a></li><li><a href="https://echarts.apache.org/zh/maillist.html">邮件列表</a></li><li><a href="https://echarts.apache.org/zh/contributing.html">如何贡献</a></li><li><a href="https://echarts.apache.org/zh/dependencies.html">依赖项</a></li><li><a href="https://echarts.apache.org/zh/coding-standard.html">代码规范</a></li><li><a href="https://github.com/apache/echarts" target="_blank">源码(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/security.html">安全</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">版权<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">活动<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">捐赠<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">鸣谢<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("en")'>EN</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/zh/get-started" class="nav-link"><span class="title">快速上手</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">入门篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/basics/download" class="nav-link"><span class="title">获取 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/import" class="nav-link"><span class="title">在项目中引入 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/basics/help" class="nav-link"><span class="title">寻求帮助</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">版本特性</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 特性介绍</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">v5 升级 v6 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">v4 升级 v5 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">概念篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/concepts/chart-size" class="nav-link"><span class="title">图表容器及大小</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/style" class="nav-link"><span class="title">样式</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/dataset" class="nav-link"><span class="title">数据集</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/data-transform" class="nav-link"><span class="title">数据转换</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/axis" class="nav-link"><span class="title">坐标轴</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/visual-map" class="nav-link"><span class="title">视觉映射</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/legend" class="nav-link"><span class="title">图例</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/event" class="nav-link"><span class="title">事件与行为</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">应用篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">常用图表类型</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">柱状图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">基础柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">堆叠柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">动态排序柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">阶梯瀑布图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">折线图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">基础折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">堆叠折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/area-line" class="nav-link"><span class="title">区域面积图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">平滑曲线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/step-line" class="nav-link"><span class="title">阶梯线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">饼图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">基础饼图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">圆环图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/rose" class="nav-link"><span class="title">南丁格尔图(玫瑰图)</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">散点图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">基础散点图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">常用组件</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">地理坐标系(Geo)</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG 底图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">跨平台方案</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/server" class="nav-link"><span class="title">服务端渲染</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/wechat-app" class="nav-link"><span class="title">微信小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/baidu-app" class="nav-link"><span class="title">百度智能小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">数据处理</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/data/dynamic-data" class="nav-link"><span class="title">动态的异步数据</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">标签</span> <span class="glyphicon glyphicon-menu-up"></span></a> <ul class="nav bd-sidenav level2"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/label/rich-text" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">富文本标签</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">动画</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/animation/transition" class="nav-link"><span class="title">数据过渡动画</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">交互</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/drag" class="nav-link"><span class="title">拖拽的实现</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">智能指针吸附</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">最佳实践</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/aria" class="nav-link"><span class="title">无障碍访问</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/security" class="nav-link"><span class="title">安全指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">编辑本文档</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/meta/edit-guide" class="nav-link"><span class="title">文档编辑指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="%E5%AF%8C%E6%96%87%E6%9C%AC%E6%A0%87%E7%AD%BE" tabindex="-1">富文本标签</h1> <p>Apache ECharts<sup>TM</sup> 中的文本标签从 v3.7 开始支持富文本模式,能够:</p> <ul><li>定制文本块整体的样式(如背景、边框、阴影等)、位置、旋转等。</li> <li>对文本块中个别片段定义样式(如颜色、字体、高宽、背景、阴影等)、对齐方式等。</li> <li>在文本中使用图片做小图标或者背景。</li> <li>特定组合以上的规则,可以做出简单表格、分割线等效果。</li></ul> <p>开始下面的介绍之前,先说明一下下面会使用的两个名词的含义:</p> <ul><li>文本块(Text Block):文本标签块整体。</li> <li>文本片段(Text fragment):文本标签块中的部分文本。</li></ul> <p>如下图示例:</p> <p><iframe width="450" height="300" src=""></iframe></p> <h2 id="%E6%96%87%E6%9C%AC%E6%A0%B7%E5%BC%8F%E7%9B%B8%E5%85%B3%E7%9A%84%E9%85%8D%E7%BD%AE%E9%A1%B9" tabindex="-1">文本样式相关的配置项</h2> <p>echarts 提供了丰富的文本标签配置项,包括:</p> <ul><li>字体基本样式设置:<code>fontStyle</code>、<code>fontWeight</code>、<code>fontSize</code>、<code>fontFamily</code>。</li> <li>文字颜色:<code>color</code>。</li> <li>文字描边:<code>textBorderColor</code>、<code>textBorderWidth</code>。</li> <li>文字阴影:<code>textShadowColor</code>、<code>textShadowBlur</code>、<code>textShadowOffsetX</code>、<code>textShadowOffsetY</code>。</li> <li>文本块或文本片段大小:<code>lineHeight</code>、<code>width</code>、<code>height</code>、<code>padding</code>。</li> <li>文本块或文本片段的对齐:<code>align</code>、<code>verticalAlign</code>。</li> <li>文本块或文本片段的边框、背景(颜色或图片):<code>backgroundColor</code>、<code>borderColor</code>、<code>borderWidth</code>、<code>borderRadius</code>。</li> <li>文本块或文本片段的阴影:<code>shadowColor</code>、<code>shadowBlur</code>、<code>shadowOffsetX</code>、<code>shadowOffsetY</code>。</li> <li>文本块的位置和旋转:<code>position</code>、<code>distance</code>、<code>rotate</code>。</li></ul> <p>可以在各处的 <code>rich</code> 属性中定义文本片段样式。例如 <a href="option.html#series-bar.label.rich">series-bar.label.rich</a></p> <p>例如:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>labelOption <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token comment">// 在文本中,可以对部分文本采用 rich 中定义样式。</span>
+  <span class="token comment">// 这里需要在文本中使用标记符号:</span>
+  <span class="token comment">// `{styleName|text content text content}` 标记样式名。</span>
+  <span class="token comment">// 注意,换行仍是使用 '\n'。</span>
+  <span class="token literal-property property">formatter</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token string">'{a|这段文本采用样式a}'</span><span class="token punctuation">,</span>
+    <span class="token string">'{b|这段文本采用样式b}这段用默认样式{x|这段用样式x}'</span>
+  <span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">join</span><span class="token punctuation">(</span><span class="token string">'\n'</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
+
+  <span class="token comment">// 这里是文本块的样式设置:</span>
+  <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'#333'</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">fontSize</span><span class="token operator">:</span> <span class="token number">5</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">fontFamily</span><span class="token operator">:</span> <span class="token string">'Arial'</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">borderWidth</span><span class="token operator">:</span> <span class="token number">3</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">backgroundColor</span><span class="token operator">:</span> <span class="token string">'#984455'</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">padding</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">lineHeight</span><span class="token operator">:</span> <span class="token number">20</span><span class="token punctuation">,</span>
+
+  <span class="token comment">// rich 里是文本片段的样式设置:</span>
+  <span class="token literal-property property">rich</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">a</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'red'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">lineHeight</span><span class="token operator">:</span> <span class="token number">10</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">b</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">backgroundColor</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">image</span><span class="token operator">:</span> <span class="token string">'xxx/xxx.jpg'</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">height</span><span class="token operator">:</span> <span class="token number">40</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">fontSize</span><span class="token operator">:</span> <span class="token number">18</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">fontFamily</span><span class="token operator">:</span> <span class="token string">'Microsoft YaHei'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">borderColor</span><span class="token operator">:</span> <span class="token string">'#449933'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">borderRadius</span><span class="token operator">:</span> <span class="token number">4</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <blockquote><p>注意:如果不定义 <code>rich</code>,不能指定文字块的 <code>width</code> 和 <code>height</code>。</p></blockquote> <h2 id="%E6%96%87%E6%9C%AC%E3%80%81%E6%96%87%E6%9C%AC%E6%A1%86%E3%80%81%E6%96%87%E6%9C%AC%E7%89%87%E6%AE%B5%E7%9A%84%E5%9F%BA%E6%9C%AC%E6%A0%B7%E5%BC%8F%E5%92%8C%E8%A3%85%E9%A5%B0" tabindex="-1">文本、文本框、文本片段的基本样式和装饰</h2> <p>每个文本可以设置基本的字体样式:<code>fontStyle</code>、<code>fontWeight</code>、<code>fontSize</code>、<code>fontFamily</code>。</p> <p>可以设置文字的颜色 <code>color</code> 和边框的颜色 <code>textBorderColor</code>、<code>textBorderWidth</code>。</p> <p>文本框可以设置边框和背景的样式:<code>borderColor</code>、<code>borderWidth</code>、<code>backgroundColor</code>、<code>padding</code>。</p> <p>文本片段也可以设置边框和背景的样式:<code>borderColor</code>、<code>borderWidth</code>、<code>backgroundColor</code>、<code>padding</code>。</p> <p>例如:</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  series: [
+    {
+      type: 'scatter',
+      symbolSize: 1,
+      data: [
+        {
+          value: [0, 0],
+          label: {
+            show: true,
+            formatter: [
+              'Plain text',
+              '{textBorder|textBorderColor + textBorderWidth}',
+              '{textShadow|textShadowColor + textShadowBlur + textShadowOffsetX + textShadowOffsetY}',
+              '{bg|backgroundColor + borderRadius + padding}',
+              '{border|borderColor + borderWidth + borderRadius + padding}',
+              '{shadow|shadowColor + shadowBlur + shadowOffsetX + shadowOffsetY}'
+            ].join('\n'),
+            backgroundColor: '#eee',
+            borderColor: '#333',
+            borderWidth: 2,
+            borderRadius: 5,
+            padding: 10,
+            color: '#000',
+            fontSize: 14,
+            shadowBlur: 3,
+            shadowColor: '#888',
+            shadowOffsetX: 0,
+            shadowOffsetY: 3,
+            lineHeight: 30,
+            rich: {
+              textBorder: {
+                fontSize: 20,
+                textBorderColor: '#000',
+                textBorderWidth: 3,
+                color: '#fff'
+              },
+              textShadow: {
+                fontSize: 16,
+                textShadowBlur: 5,
+                textShadowColor: '#000',
+                textShadowOffsetX: 3,
+                textShadowOffsetY: 3,
+                color: '#fff'
+              },
+              bg: {
+                backgroundColor: '#339911',
+                color: '#fff',
+                borderRadius: 15,
+                padding: 5
+              },
+              border: {
+                color: '#000',
+                borderColor: '#449911',
+                borderWidth: 1,
+                borderRadius: 3,
+                padding: 5
+              },
+              shadow: {
+                backgroundColor: '#992233',
+                padding: 5,
+                color: '#fff',
+                shadowBlur: 5,
+                shadowColor: '#336699',
+                shadowOffsetX: 6,
+                shadowOffsetY: 6
+              }
+            }
+          }
+        }
+      ]
+    }
+  ],
+  xAxis: {
+    show: false,
+    min: -1,
+    max: 1
+  },
+  yAxis: {
+    show: false,
+    min: -1,
+    max: 1
+  }
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'scatter'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">symbolSize</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+            <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">formatter</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+              <span class="token string">'Plain text'</span><span class="token punctuation">,</span>
+              <span class="token string">'{textBorder|textBorderColor + textBorderWidth}'</span><span class="token punctuation">,</span>
+              <span class="token string">'{textShadow|textShadowColor + textShadowBlur + textShadowOffsetX + textShadowOffsetY}'</span><span class="token punctuation">,</span>
+              <span class="token string">'{bg|backgroundColor + borderRadius + padding}'</span><span class="token punctuation">,</span>
+              <span class="token string">'{border|borderColor + borderWidth + borderRadius + padding}'</span><span class="token punctuation">,</span>
+              <span class="token string">'{shadow|shadowColor + shadowBlur + shadowOffsetX + shadowOffsetY}'</span>
+            <span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">join</span><span class="token punctuation">(</span><span class="token string">'\n'</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">backgroundColor</span><span class="token operator">:</span> <span class="token string">'#eee'</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">borderColor</span><span class="token operator">:</span> <span class="token string">'#333'</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">borderWidth</span><span class="token operator">:</span> <span class="token number">2</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">borderRadius</span><span class="token operator">:</span> <span class="token number">5</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">padding</span><span class="token operator">:</span> <span class="token number">10</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'#000'</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">fontSize</span><span class="token operator">:</span> <span class="token number">14</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">shadowBlur</span><span class="token operator">:</span> <span class="token number">3</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">shadowColor</span><span class="token operator">:</span> <span class="token string">'#888'</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">shadowOffsetX</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">shadowOffsetY</span><span class="token operator">:</span> <span class="token number">3</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">lineHeight</span><span class="token operator">:</span> <span class="token number">30</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">rich</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+              <span class="token literal-property property">textBorder</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+                <span class="token literal-property property">fontSize</span><span class="token operator">:</span> <span class="token number">20</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">textBorderColor</span><span class="token operator">:</span> <span class="token string">'#000'</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">textBorderWidth</span><span class="token operator">:</span> <span class="token number">3</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'#fff'</span>
+              <span class="token punctuation">}</span><span class="token punctuation">,</span>
+              <span class="token literal-property property">textShadow</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+                <span class="token literal-property property">fontSize</span><span class="token operator">:</span> <span class="token number">16</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">textShadowBlur</span><span class="token operator">:</span> <span class="token number">5</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">textShadowColor</span><span class="token operator">:</span> <span class="token string">'#000'</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">textShadowOffsetX</span><span class="token operator">:</span> <span class="token number">3</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">textShadowOffsetY</span><span class="token operator">:</span> <span class="token number">3</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'#fff'</span>
+              <span class="token punctuation">}</span><span class="token punctuation">,</span>
+              <span class="token literal-property property">bg</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+                <span class="token literal-property property">backgroundColor</span><span class="token operator">:</span> <span class="token string">'#339911'</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'#fff'</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">borderRadius</span><span class="token operator">:</span> <span class="token number">15</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">padding</span><span class="token operator">:</span> <span class="token number">5</span>
+              <span class="token punctuation">}</span><span class="token punctuation">,</span>
+              <span class="token literal-property property">border</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+                <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'#000'</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">borderColor</span><span class="token operator">:</span> <span class="token string">'#449911'</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">borderWidth</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">borderRadius</span><span class="token operator">:</span> <span class="token number">3</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">padding</span><span class="token operator">:</span> <span class="token number">5</span>
+              <span class="token punctuation">}</span><span class="token punctuation">,</span>
+              <span class="token literal-property property">shadow</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+                <span class="token literal-property property">backgroundColor</span><span class="token operator">:</span> <span class="token string">'#992233'</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">padding</span><span class="token operator">:</span> <span class="token number">5</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'#fff'</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">shadowBlur</span><span class="token operator">:</span> <span class="token number">5</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">shadowColor</span><span class="token operator">:</span> <span class="token string">'#336699'</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">shadowOffsetX</span><span class="token operator">:</span> <span class="token number">6</span><span class="token punctuation">,</span>
+                <span class="token literal-property property">shadowOffsetY</span><span class="token operator">:</span> <span class="token number">6</span>
+              <span class="token punctuation">}</span>
+            <span class="token punctuation">}</span>
+          <span class="token punctuation">}</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">min</span><span class="token operator">:</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">max</span><span class="token operator">:</span> <span class="token number">1</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">min</span><span class="token operator">:</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">max</span><span class="token operator">:</span> <span class="token number">1</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <h2 id="%E6%A0%87%E7%AD%BE%E7%9A%84%E4%BD%8D%E7%BD%AE" tabindex="-1">标签的位置</h2> <p>对于折线图、柱状图、散点图等,均可以使用 <code>label</code> 来设置标签。标签的相对于图形元素的位置,一般使用 <a href="option.html#series-scatter.label.position">label.position</a>、<a href="option.html#series-scatter.label.distance">label.distance</a> 来配置。</p> <p>试试在下面例子中修改<code>position</code>和<code>distance</code> 属性:</p> <div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  series: [
+    {
+      type: 'scatter',
+      symbolSize: 160,
+      symbol: 'roundRect',
+      data: [[1, 1]],
+      label: {
+        // 修改 position 和 distance 的值试试
+        // 支持:'left', 'right', 'top', 'bottom', 'inside', 'insideTop', 'insideLeft', 'insideRight', 'insideBottom', 'insideTopLeft', 'insideTopRight', 'insideBottomLeft', 'insideBottomRight'
+        position: 'top',
+        distance: 10,
+
+        show: true,
+        formatter: ['Label Text'].join('\n'),
+        backgroundColor: '#eee',
+        borderColor: '#555',
+        borderWidth: 2,
+        borderRadius: 5,
+        padding: 10,
+        fontSize: 18,
+        shadowBlur: 3,
+        shadowColor: '#888',
+        shadowOffsetX: 0,
+        shadowOffsetY: 3,
+        textBorderColor: '#000',
+        textBorderWidth: 3,
+        color: '#fff'
+      }
+    }
+  ],
+  xAxis: {
+    max: 2
+  },
+  yAxis: {
+    max: 2
+  }
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'scatter'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">symbolSize</span><span class="token operator">:</span> <span class="token number">160</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">symbol</span><span class="token operator">:</span> <span class="token string">'roundRect'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token comment">// 修改 position 和 distance 的值试试</span>
+        <span class="token comment">// 支持:'left', 'right', 'top', 'bottom', 'inside', 'insideTop', 'insideLeft', 'insideRight', 'insideBottom', 'insideTopLeft', 'insideTopRight', 'insideBottomLeft', 'insideBottomRight'</span>
+        <span class="token literal-property property">position</span><span class="token operator">:</span> <span class="token string">'top'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">distance</span><span class="token operator">:</span> <span class="token number">10</span><span class="token punctuation">,</span>
+
+        <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">formatter</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'Label Text'</span><span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">join</span><span class="token punctuation">(</span><span class="token string">'\n'</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">backgroundColor</span><span class="token operator">:</span> <span class="token string">'#eee'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">borderColor</span><span class="token operator">:</span> <span class="token string">'#555'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">borderWidth</span><span class="token operator">:</span> <span class="token number">2</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">borderRadius</span><span class="token operator">:</span> <span class="token number">5</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">padding</span><span class="token operator">:</span> <span class="token number">10</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">fontSize</span><span class="token operator">:</span> <span class="token number">18</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">shadowBlur</span><span class="token operator">:</span> <span class="token number">3</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">shadowColor</span><span class="token operator">:</span> <span class="token string">'#888'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">shadowOffsetX</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">shadowOffsetY</span><span class="token operator">:</span> <span class="token number">3</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">textBorderColor</span><span class="token operator">:</span> <span class="token string">'#000'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">textBorderWidth</span><span class="token operator">:</span> <span class="token number">3</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'#fff'</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">max</span><span class="token operator">:</span> <span class="token number">2</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">max</span><span class="token operator">:</span> <span class="token number">2</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <blockquote><p>注意:<code>position</code> 在不同的图中可取值有所不同。<code>distance</code> 并不是在每个图中都支持。详情请参见 <a href="https://echarts.apache.org/option.html">option 文档</a>。</p></blockquote> <h2 id="%E6%A0%87%E7%AD%BE%E7%9A%84%E6%97%8B%E8%BD%AC" tabindex="-1">标签的旋转</h2> <p>某些图中,为了能有足够长的空间来显示标签,需要对标签进行旋转。例如:</p> <div class="md-live layout-lr"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">const labelOption = {
+  show: true,
+  rotate: 90,
+  formatter: '{c}  {name|{a}}',
+  fontSize: 16,
+  rich: {
+    name: {}
+  }
+};
+
+option = {
+  xAxis: [
+    {
+      type: 'category',
+      data: ['2012', '2013', '2014', '2015', '2016']
+    }
+  ],
+  yAxis: [
+    {
+      type: 'value'
+    }
+  ],
+  series: [
+    {
+      name: 'Forest',
+      type: 'bar',
+      barGap: 0,
+      label: labelOption,
+      emphasis: {
+        focus: 'series'
+      },
+      data: [320, 332, 301, 334, 390]
+    },
+    {
+      name: 'Steppe',
+      type: 'bar',
+      label: labelOption,
+      emphasis: {
+        focus: 'series'
+      },
+      data: [220, 182, 191, 234, 290]
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor"><span class="token keyword">const</span> labelOption <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">rotate</span><span class="token operator">:</span> <span class="token number">90</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">formatter</span><span class="token operator">:</span> <span class="token string">'{c}  {name|{a}}'</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">fontSize</span><span class="token operator">:</span> <span class="token number">16</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">rich</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span>
+
+option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'category'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'2012'</span><span class="token punctuation">,</span> <span class="token string">'2013'</span><span class="token punctuation">,</span> <span class="token string">'2014'</span><span class="token punctuation">,</span> <span class="token string">'2015'</span><span class="token punctuation">,</span> <span class="token string">'2016'</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'value'</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Forest'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">barGap</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">label</span><span class="token operator">:</span> labelOption<span class="token punctuation">,</span>
+      <span class="token literal-property property">emphasis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">focus</span><span class="token operator">:</span> <span class="token string">'series'</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">320</span><span class="token punctuation">,</span> <span class="token number">332</span><span class="token punctuation">,</span> <span class="token number">301</span><span class="token punctuation">,</span> <span class="token number">334</span><span class="token punctuation">,</span> <span class="token number">390</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span><span class="token punctuation">,</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token string">'Steppe'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">label</span><span class="token operator">:</span> labelOption<span class="token punctuation">,</span>
+      <span class="token literal-property property">emphasis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">focus</span><span class="token operator">:</span> <span class="token string">'series'</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">220</span><span class="token punctuation">,</span> <span class="token number">182</span><span class="token punctuation">,</span> <span class="token number">191</span><span class="token punctuation">,</span> <span class="token number">234</span><span class="token punctuation">,</span> <span class="token number">290</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>这种场景下,可以结合 <a href="option.html#series-bar.label.align">align</a> 和 <a href="option.html#series-bar.label.verticalAlign">verticalAlign</a> 来调整标签位置。</p> <p>注意,逻辑是,先使用 <code>align</code> 和 <code>verticalAlign</code> 定位,再旋转。</p> <h2 id="%E6%96%87%E6%9C%AC%E7%89%87%E6%AE%B5%E7%9A%84%E6%8E%92%E7%89%88%E5%92%8C%E5%AF%B9%E9%BD%90" tabindex="-1">文本片段的排版和对齐</h2> <p>关于排版方式,每个文本片段,可以想象成 CSS 中的 <code>inline-block</code>,在文档流中按行放置。</p> <p>每个文本片段的内容盒尺寸(<code>content box size</code>),默认是根据文字大小决定的。但是,也可以设置 <code>width</code>、<code>height</code> 来强制指定,虽然一般不会这么做(参见下文)。文本片段的边框盒尺寸(<code>border box size</code>),由上述本身尺寸,加上文本片段的 <code>padding</code> 来得到。</p> <p>只有 <code>'\n'</code> 是换行符,能导致换行。</p> <p>一行内,会有多个文本片段。每行的实际高度,由 <code>lineHeight</code> 最大的文本片段决定。文本片段的 <code>lineHeight</code> 可直接在 <code>rich</code> 中指定,也可以在 <code>rich</code> 的父层级中统一指定而采用到 <code>rich</code> 的所有项中,如果都不指定,则取文本片段的边框盒尺寸(<code>border box size</code>)。</p> <p>在一行的 <code>lineHeight</code> 被决定后,一行内,文本片段的竖直位置,由文本片段的 <code>verticalAlign</code> 来指定(这里和 CSS 中的规则稍有不同):</p> <ul><li><code>'bottom'</code>:文本片段的盒的底边贴住行底。</li> <li><code>'top'</code>:文本片段的盒的顶边贴住行顶。</li> <li><code>'middle'</code>:居行中。</li></ul> <p>文本块的宽度,可以直接由文本块的 <code>width</code> 指定,否则,由最长的行决定。宽度决定后,在一行中进行文本片段的放置。文本片段的 <code>align</code> 决定了文本片段在行中的水平位置:</p> <ul><li>首先,从左向右连续紧靠放置 <code>align</code> 为 <code>'left'</code> 的文本片段盒。</li> <li>然后,从右向左连续紧靠放置 <code>align</code> 为 <code>'right'</code> 的文本片段盒。</li> <li>最后,剩余的没处理的文本片段盒,紧贴着,在中间剩余的区域中居中放置。</li></ul> <p>关于文字在文本片段盒中的位置:</p> <ul><li>如果 <code>align</code> 为 <code>'center'</code>,则文字在文本片段盒中是居中的。</li> <li>如果 <code>align</code> 为 <code>'left'</code>,则文字在文本片段盒中是居左的。</li> <li>如果 <code>align</code> 为 <code>'right'</code>,则文字在文本片段盒中是居右的。</li></ul> <h2 id="%E7%89%B9%E6%AE%8A%E6%95%88%E6%9E%9C%EF%BC%9A%E5%9B%BE%E6%A0%87%E3%80%81%E5%88%86%E5%89%B2%E7%BA%BF%E3%80%81%E6%A0%87%E9%A2%98%E5%9D%97%E3%80%81%E7%AE%80%E5%8D%95%E8%A1%A8%E6%A0%BC" tabindex="-1">特殊效果:图标、分割线、标题块、简单表格</h2> <p>看下面的例子:</p> <div class="md-live layout-lr"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  series: [
+    {
+      type: 'scatter',
+      data: [
+        {
+          value: [0, 0],
+          label: {
+            formatter: [
+              '{tc|Center Title}{titleBg|}',
+              '  Content text xxxxxxxx {sunny|} xxxxxxxx {cloudy|}  ',
+              '{hr|}',
+              '  xxxxx {showers|} xxxxxxxx  xxxxxxxxx  '
+            ].join('\n'),
+            rich: {
+              titleBg: {
+                align: 'right'
+              }
+            }
+          }
+        },
+        {
+          value: [0, 1],
+          label: {
+            formatter: [
+              '{titleBg|Left Title}',
+              '  Content text xxxxxxxx {sunny|} xxxxxxxx {cloudy|}  ',
+              '{hr|}',
+              '  xxxxx {showers|} xxxxxxxx  xxxxxxxxx  '
+            ].join('\n')
+          }
+        },
+        {
+          value: [0, 2],
+          label: {
+            formatter: [
+              '{titleBg|Right Title}',
+              '  Content text xxxxxxxx {sunny|} xxxxxxxx {cloudy|}  ',
+              '{hr|}',
+              '  xxxxx {showers|} xxxxxxxx  xxxxxxxxx  '
+            ].join('\n'),
+            rich: {
+              titleBg: {
+                align: 'right'
+              }
+            }
+          }
+        }
+      ],
+      symbolSize: 1,
+      label: {
+        show: true,
+        backgroundColor: '#ddd',
+        borderColor: '#555',
+        borderWidth: 1,
+        borderRadius: 5,
+        color: '#000',
+        fontSize: 14,
+        rich: {
+          titleBg: {
+            backgroundColor: '#000',
+            height: 30,
+            borderRadius: [5, 5, 0, 0],
+            padding: [0, 10, 0, 10],
+            width: '100%',
+            color: '#eee'
+          },
+          tc: {
+            align: 'center',
+            color: '#eee'
+          },
+          hr: {
+            borderColor: '#777',
+            width: '100%',
+            borderWidth: 0.5,
+            height: 0
+          },
+          sunny: {
+            height: 30,
+            align: 'left',
+            backgroundColor: {
+              image:
+                'https://echarts.apache.org/examples/data/asset/img/weather/sunny_128.png'
+            }
+          },
+          cloudy: {
+            height: 30,
+            align: 'left',
+            backgroundColor: {
+              image:
+                'https://echarts.apache.org/examples/data/asset/img/weather/cloudy_128.png'
+            }
+          },
+          showers: {
+            height: 30,
+            align: 'left',
+            backgroundColor: {
+              image:
+                'https://echarts.apache.org/examples/data/asset/img/weather/showers_128.png'
+            }
+          }
+        }
+      }
+    }
+  ],
+  xAxis: {
+    show: false,
+    min: -1,
+    max: 1
+  },
+  yAxis: {
+    show: false,
+    min: 0,
+    max: 2,
+    inverse: true
+  }
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'scatter'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+            <span class="token literal-property property">formatter</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+              <span class="token string">'{tc|Center Title}{titleBg|}'</span><span class="token punctuation">,</span>
+              <span class="token string">'  Content text xxxxxxxx {sunny|} xxxxxxxx {cloudy|}  '</span><span class="token punctuation">,</span>
+              <span class="token string">'{hr|}'</span><span class="token punctuation">,</span>
+              <span class="token string">'  xxxxx {showers|} xxxxxxxx  xxxxxxxxx  '</span>
+            <span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">join</span><span class="token punctuation">(</span><span class="token string">'\n'</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">rich</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+              <span class="token literal-property property">titleBg</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+                <span class="token literal-property property">align</span><span class="token operator">:</span> <span class="token string">'right'</span>
+              <span class="token punctuation">}</span>
+            <span class="token punctuation">}</span>
+          <span class="token punctuation">}</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+            <span class="token literal-property property">formatter</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+              <span class="token string">'{titleBg|Left Title}'</span><span class="token punctuation">,</span>
+              <span class="token string">'  Content text xxxxxxxx {sunny|} xxxxxxxx {cloudy|}  '</span><span class="token punctuation">,</span>
+              <span class="token string">'{hr|}'</span><span class="token punctuation">,</span>
+              <span class="token string">'  xxxxx {showers|} xxxxxxxx  xxxxxxxxx  '</span>
+            <span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">join</span><span class="token punctuation">(</span><span class="token string">'\n'</span><span class="token punctuation">)</span>
+          <span class="token punctuation">}</span>
+        <span class="token punctuation">}</span><span class="token punctuation">,</span>
+        <span class="token punctuation">{</span>
+          <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+            <span class="token literal-property property">formatter</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+              <span class="token string">'{titleBg|Right Title}'</span><span class="token punctuation">,</span>
+              <span class="token string">'  Content text xxxxxxxx {sunny|} xxxxxxxx {cloudy|}  '</span><span class="token punctuation">,</span>
+              <span class="token string">'{hr|}'</span><span class="token punctuation">,</span>
+              <span class="token string">'  xxxxx {showers|} xxxxxxxx  xxxxxxxxx  '</span>
+            <span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">join</span><span class="token punctuation">(</span><span class="token string">'\n'</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">rich</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+              <span class="token literal-property property">titleBg</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+                <span class="token literal-property property">align</span><span class="token operator">:</span> <span class="token string">'right'</span>
+              <span class="token punctuation">}</span>
+            <span class="token punctuation">}</span>
+          <span class="token punctuation">}</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">symbolSize</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">backgroundColor</span><span class="token operator">:</span> <span class="token string">'#ddd'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">borderColor</span><span class="token operator">:</span> <span class="token string">'#555'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">borderWidth</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">borderRadius</span><span class="token operator">:</span> <span class="token number">5</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'#000'</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">fontSize</span><span class="token operator">:</span> <span class="token number">14</span><span class="token punctuation">,</span>
+        <span class="token literal-property property">rich</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+          <span class="token literal-property property">titleBg</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+            <span class="token literal-property property">backgroundColor</span><span class="token operator">:</span> <span class="token string">'#000'</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">height</span><span class="token operator">:</span> <span class="token number">30</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">borderRadius</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">padding</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">width</span><span class="token operator">:</span> <span class="token string">'100%'</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'#eee'</span>
+          <span class="token punctuation">}</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">tc</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+            <span class="token literal-property property">align</span><span class="token operator">:</span> <span class="token string">'center'</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'#eee'</span>
+          <span class="token punctuation">}</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">hr</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+            <span class="token literal-property property">borderColor</span><span class="token operator">:</span> <span class="token string">'#777'</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">width</span><span class="token operator">:</span> <span class="token string">'100%'</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">borderWidth</span><span class="token operator">:</span> <span class="token number">0.5</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">height</span><span class="token operator">:</span> <span class="token number">0</span>
+          <span class="token punctuation">}</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">sunny</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+            <span class="token literal-property property">height</span><span class="token operator">:</span> <span class="token number">30</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">align</span><span class="token operator">:</span> <span class="token string">'left'</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">backgroundColor</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+              <span class="token literal-property property">image</span><span class="token operator">:</span>
+                <span class="token string">'https://echarts.apache.org/examples/data/asset/img/weather/sunny_128.png'</span>
+            <span class="token punctuation">}</span>
+          <span class="token punctuation">}</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">cloudy</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+            <span class="token literal-property property">height</span><span class="token operator">:</span> <span class="token number">30</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">align</span><span class="token operator">:</span> <span class="token string">'left'</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">backgroundColor</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+              <span class="token literal-property property">image</span><span class="token operator">:</span>
+                <span class="token string">'https://echarts.apache.org/examples/data/asset/img/weather/cloudy_128.png'</span>
+            <span class="token punctuation">}</span>
+          <span class="token punctuation">}</span><span class="token punctuation">,</span>
+          <span class="token literal-property property">showers</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+            <span class="token literal-property property">height</span><span class="token operator">:</span> <span class="token number">30</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">align</span><span class="token operator">:</span> <span class="token string">'left'</span><span class="token punctuation">,</span>
+            <span class="token literal-property property">backgroundColor</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+              <span class="token literal-property property">image</span><span class="token operator">:</span>
+                <span class="token string">'https://echarts.apache.org/examples/data/asset/img/weather/showers_128.png'</span>
+            <span class="token punctuation">}</span>
+          <span class="token punctuation">}</span>
+        <span class="token punctuation">}</span>
+      <span class="token punctuation">}</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">min</span><span class="token operator">:</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">max</span><span class="token operator">:</span> <span class="token number">1</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">show</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">min</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">max</span><span class="token operator">:</span> <span class="token number">2</span><span class="token punctuation">,</span>
+    <span class="token literal-property property">inverse</span><span class="token operator">:</span> <span class="token boolean">true</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div> <p>文本片段的 <code>backgroundColor</code> 可以指定为图片后,就可以在文本中使用图标了:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>labelOption <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">rich</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">Sunny</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token comment">// 这样设定 backgroundColor 就可以是图片了。</span>
+      <span class="token literal-property property">backgroundColor</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+        <span class="token literal-property property">image</span><span class="token operator">:</span> <span class="token string">'./data/asset/img/weather/sunny_128.png'</span>
+      <span class="token punctuation">}</span><span class="token punctuation">,</span>
+      <span class="token comment">// 可以只指定图片的高度,从而图片的宽度根据图片的长宽比自动得到。</span>
+      <span class="token literal-property property">height</span><span class="token operator">:</span> <span class="token number">30</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>分割线实际是用 border 实现的:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>labelOption <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">rich</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">hr</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">borderColor</span><span class="token operator">:</span> <span class="token string">'#777'</span><span class="token punctuation">,</span>
+      <span class="token comment">// 这里把 width 设置为 '100%',表示分割线的长度充满文本块。</span>
+      <span class="token comment">// 注意,这里是文本块内容盒(content box)的 100%,而不包含 padding。</span>
+      <span class="token comment">// 虽然这和 CSS 相关的定义有所不同,但是在这类场景中更加方便。</span>
+      <span class="token literal-property property">width</span><span class="token operator">:</span> <span class="token string">'100%'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">borderWidth</span><span class="token operator">:</span> <span class="token number">0.5</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">height</span><span class="token operator">:</span> <span class="token number">0</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>标题块是使用 <code>backgroundColor</code> 实现的:</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>labelOption <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token comment">// 标题文字居左</span>
+  <span class="token literal-property property">formatter</span><span class="token operator">:</span> <span class="token string">'{titleBg|Left Title}'</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">rich</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">titleBg</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">backgroundColor</span><span class="token operator">:</span> <span class="token string">'#000'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">height</span><span class="token operator">:</span> <span class="token number">30</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">borderRadius</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">padding</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">width</span><span class="token operator">:</span> <span class="token string">'100%'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'#eee'</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span>
+
+<span class="token comment">// 标题文字居中。</span>
+<span class="token comment">// 这个实现有些 tricky,但是,能够不引入更复杂的排版规则而实现这个效果。</span>
+labelOption <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">formatter</span><span class="token operator">:</span> <span class="token string">'{tc|Center Title}{titleBg|}'</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">rich</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">titleBg</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+      <span class="token literal-property property">align</span><span class="token operator">:</span> <span class="token string">'right'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">backgroundColor</span><span class="token operator">:</span> <span class="token string">'#000'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">height</span><span class="token operator">:</span> <span class="token number">30</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">borderRadius</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">padding</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">width</span><span class="token operator">:</span> <span class="token string">'100%'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'#eee'</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">}</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>简单表格的设定,其实就是给不同行上纵向对应的文本片段设定同样的宽度就可以了。见 <a href="https://echarts.apache.org/examples/zh/editor.html?c=pie-rich-text">该例子</a></p></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">本文贡献者</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/zh/how-to/label/rich-text.md" title="编辑本文" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">在 GitHub 上编辑本页</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/plainheart" target="_blank" class="post-contributor has-avatar"><img alt="plainheart" src="https://echarts.apache.org/en/images/people/plainheart.jpg" loading="lazy" decoding="async" fetchpriority="low"> <span>plainheart</span></a><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(g,I,C,A,i,e,d,o,t,l,c,a,n,r,h,s,b,p,Z,m,G,B,H,y,W,w,v,J,u,Y,E,L,R,M,K,D,z,x,V,f,N,O,X,S,j,k,F,Q,T,U,q,P,_,$,gg,Ig,Cg,Ag,ig,eg,dg,og,tg){return{layout:"default",data:[{html:'<h1 id="%E5%AF%8C%E6%96%87%E6%9C%AC%E6%A0%87%E7%AD%BE" tabindex="-1">富文本标签</h1>\n<p>Apache ECharts<sup>TM</sup> 中的文本标签从 v3.7 开始支持富文本模式,能够:</p>\n<ul>\n<li>定制文本块整体的样式(如背景、边框、阴影等)、位置、旋转等。</li>\n<li>对文本块中个别片段定义样式(如颜色、字体、高宽、背景、阴影等)、对齐方式等。</li>\n<li>在文本中使用图片做小图标或者背景。</li>\n<li>特定组合以上的规则,可以做出简单表格、分割线等效果。</li>\n</ul>\n<p>开始下面的介绍之前,先说明一下下面会使用的两个名词的含义:</p>\n<ul>\n<li>文本块(Text Block):文本标签块整体。</li>\n<li>文本片段(Text fragment):文本标签块中的部分文本。</li>\n</ul>\n<p>如下图示例:</p>\n<p><md-example src="doc-example/text-block-fragment" width="450" height="300"></md-example></p>\n<h2 id="%E6%96%87%E6%9C%AC%E6%A0%B7%E5%BC%8F%E7%9B%B8%E5%85%B3%E7%9A%84%E9%85%8D%E7%BD%AE%E9%A1%B9" tabindex="-1">文本样式相关的配置项</h2>\n<p>echarts 提供了丰富的文本标签配置项,包括:</p>\n<ul>\n<li>字体基本样式设置:<code>fontStyle</code>、<code>fontWeight</code>、<code>fontSize</code>、<code>fontFamily</code>。</li>\n<li>文字颜色:<code>color</code>。</li>\n<li>文字描边:<code>textBorderColor</code>、<code>textBorderWidth</code>。</li>\n<li>文字阴影:<code>textShadowColor</code>、<code>textShadowBlur</code>、<code>textShadowOffsetX</code>、<code>textShadowOffsetY</code>。</li>\n<li>文本块或文本片段大小:<code>lineHeight</code>、<code>width</code>、<code>height</code>、<code>padding</code>。</li>\n<li>文本块或文本片段的对齐:<code>align</code>、<code>verticalAlign</code>。</li>\n<li>文本块或文本片段的边框、背景(颜色或图片):<code>backgroundColor</code>、<code>borderColor</code>、<code>borderWidth</code>、<code>borderRadius</code>。</li>\n<li>文本块或文本片段的阴影:<code>shadowColor</code>、<code>shadowBlur</code>、<code>shadowOffsetX</code>、<code>shadowOffsetY</code>。</li>\n<li>文本块的位置和旋转:<code>position</code>、<code>distance</code>、<code>rotate</code>。</li>\n</ul>\n<p>可以在各处的 <code>rich</code> 属性中定义文本片段样式。例如 <a href="option.html#series-bar.label.rich">series-bar.label.rich</a></p>\n<p>例如:</p>\n<md-code-block lang="js" code="\'bGFiZWxPcHRpb24gPSB7CiAgLy8g5Zyo5paH5pys5Lit77yM5Y-v5Lul5a-56YOo5YiG5paH5pys6YeH55SoIHJpY2gg5Lit5a6a5LmJ5qC35byP44CCCiAgLy8g6L-Z6YeM6ZyA6KaB5Zyo5paH5pys5Lit5L2_55So5qCH6K6w56ym5Y-377yaCiAgLy8gYHtzdHlsZU5hbWV8dGV4dCBjb250ZW50IHRleHQgY29udGVudH1gIOagh-iusOagt-W8j-WQjeOAggogIC8vIOazqOaEj--8jOaNouihjOS7jeaYr-S9v-eUqCAnXG4n44CCCiAgZm9ybWF0dGVyOiBbCiAgICAne2F86L-Z5q615paH5pys6YeH55So5qC35byPYX0nLAogICAgJ3tifOi_meauteaWh-acrOmHh-eUqOagt-W8j2J96L-Z5q6155So6buY6K6k5qC35byPe3h86L-Z5q6155So5qC35byPeH0nCiAgXS5qb2luKCdcbicpLAoKICAvLyDov5nph4zmmK_mlofmnKzlnZfnmoTmoLflvI_orr7nva7vvJoKICBjb2xvcjogJyMzMzMnLAogIGZvbnRTaXplOiA1LAogIGZvbnRGYW1pbHk6ICdBcmlhbCcsCiAgYm9yZGVyV2lkdGg6IDMsCiAgYmFja2dyb3VuZENvbG9yOiAnIzk4NDQ1NScsCiAgcGFkZGluZzogWzMsIDEwLCAxMCwgNV0sCiAgbGluZUhlaWdodDogMjAsCgogIC8vIHJpY2gg6YeM5piv5paH5pys54mH5q6155qE5qC35byP6K6-572u77yaCiAgcmljaDogewogICAgYTogewogICAgICBjb2xvcjogJ3JlZCcsCiAgICAgIGxpbmVIZWlnaHQ6IDEwCiAgICB9LAogICAgYjogewogICAgICBiYWNrZ3JvdW5kQ29sb3I6IHsKICAgICAgICBpbWFnZTogJ3h4eC94eHguanBnJwogICAgICB9LAogICAgICBoZWlnaHQ6IDQwCiAgICB9LAogICAgeDogewogICAgICBmb250U2l6ZTogMTgsCiAgICAgIGZvbnRGYW1pbHk6ICdNaWNyb3NvZnQgWWFIZWknLAogICAgICBib3JkZXJDb2xvcjogJyM0NDk5MzMnLAogICAgICBib3JkZXJSYWRpdXM6IDQKICAgIH0KICB9Cn07\'" line-highlights="\'\'" />\n<blockquote>\n<p>注意:如果不定义 <code>rich</code>,不能指定文字块的 <code>width</code> 和 <code>height</code>。</p>\n</blockquote>\n<h2 id="%E6%96%87%E6%9C%AC%E3%80%81%E6%96%87%E6%9C%AC%E6%A1%86%E3%80%81%E6%96%87%E6%9C%AC%E7%89%87%E6%AE%B5%E7%9A%84%E5%9F%BA%E6%9C%AC%E6%A0%B7%E5%BC%8F%E5%92%8C%E8%A3%85%E9%A5%B0" tabindex="-1">文本、文本框、文本片段的基本样式和装饰</h2>\n<p>每个文本可以设置基本的字体样式:<code>fontStyle</code>、<code>fontWeight</code>、<code>fontSize</code>、<code>fontFamily</code>。</p>\n<p>可以设置文字的颜色 <code>color</code> 和边框的颜色 <code>textBorderColor</code>、<code>textBorderWidth</code>。</p>\n<p>文本框可以设置边框和背景的样式:<code>borderColor</code>、<code>borderWidth</code>、<code>backgroundColor</code>、<code>padding</code>。</p>\n<p>文本片段也可以设置边框和背景的样式:<code>borderColor</code>、<code>borderWidth</code>、<code>backgroundColor</code>、<code>padding</code>。</p>\n<p>例如:</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHNlcmllczogWwogICAgewogICAgICB0eXBlOiAnc2NhdHRlcicsCiAgICAgIHN5bWJvbFNpemU6IDEsCiAgICAgIGRhdGE6IFsKICAgICAgICB7CiAgICAgICAgICB2YWx1ZTogWzAsIDBdLAogICAgICAgICAgbGFiZWw6IHsKICAgICAgICAgICAgc2hvdzogdHJ1ZSwKICAgICAgICAgICAgZm9ybWF0dGVyOiBbCiAgICAgICAgICAgICAgJ1BsYWluIHRleHQnLAogICAgICAgICAgICAgICd7dGV4dEJvcmRlcnx0ZXh0Qm9yZGVyQ29sb3IgKyB0ZXh0Qm9yZGVyV2lkdGh9JywKICAgICAgICAgICAgICAne3RleHRTaGFkb3d8dGV4dFNoYWRvd0NvbG9yICsgdGV4dFNoYWRvd0JsdXIgKyB0ZXh0U2hhZG93T2Zmc2V0WCArIHRleHRTaGFkb3dPZmZzZXRZfScsCiAgICAgICAgICAgICAgJ3tiZ3xiYWNrZ3JvdW5kQ29sb3IgKyBib3JkZXJSYWRpdXMgKyBwYWRkaW5nfScsCiAgICAgICAgICAgICAgJ3tib3JkZXJ8Ym9yZGVyQ29sb3IgKyBib3JkZXJXaWR0aCArIGJvcmRlclJhZGl1cyArIHBhZGRpbmd9JywKICAgICAgICAgICAgICAne3NoYWRvd3xzaGFkb3dDb2xvciArIHNoYWRvd0JsdXIgKyBzaGFkb3dPZmZzZXRYICsgc2hhZG93T2Zmc2V0WX0nCiAgICAgICAgICAgIF0uam9pbignXG4nKSwKICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnI2VlZScsCiAgICAgICAgICAgIGJvcmRlckNvbG9yOiAnIzMzMycsCiAgICAgICAgICAgIGJvcmRlcldpZHRoOiAyLAogICAgICAgICAgICBib3JkZXJSYWRpdXM6IDUsCiAgICAgICAgICAgIHBhZGRpbmc6IDEwLAogICAgICAgICAgICBjb2xvcjogJyMwMDAnLAogICAgICAgICAgICBmb250U2l6ZTogMTQsCiAgICAgICAgICAgIHNoYWRvd0JsdXI6IDMsCiAgICAgICAgICAgIHNoYWRvd0NvbG9yOiAnIzg4OCcsCiAgICAgICAgICAgIHNoYWRvd09mZnNldFg6IDAsCiAgICAgICAgICAgIHNoYWRvd09mZnNldFk6IDMsCiAgICAgICAgICAgIGxpbmVIZWlnaHQ6IDMwLAogICAgICAgICAgICByaWNoOiB7CiAgICAgICAgICAgICAgdGV4dEJvcmRlcjogewogICAgICAgICAgICAgICAgZm9udFNpemU6IDIwLAogICAgICAgICAgICAgICAgdGV4dEJvcmRlckNvbG9yOiAnIzAwMCcsCiAgICAgICAgICAgICAgICB0ZXh0Qm9yZGVyV2lkdGg6IDMsCiAgICAgICAgICAgICAgICBjb2xvcjogJyNmZmYnCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICB0ZXh0U2hhZG93OiB7CiAgICAgICAgICAgICAgICBmb250U2l6ZTogMTYsCiAgICAgICAgICAgICAgICB0ZXh0U2hhZG93Qmx1cjogNSwKICAgICAgICAgICAgICAgIHRleHRTaGFkb3dDb2xvcjogJyMwMDAnLAogICAgICAgICAgICAgICAgdGV4dFNoYWRvd09mZnNldFg6IDMsCiAgICAgICAgICAgICAgICB0ZXh0U2hhZG93T2Zmc2V0WTogMywKICAgICAgICAgICAgICAgIGNvbG9yOiAnI2ZmZicKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgIGJnOiB7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjMzM5OTExJywKICAgICAgICAgICAgICAgIGNvbG9yOiAnI2ZmZicsCiAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6IDE1LAogICAgICAgICAgICAgICAgcGFkZGluZzogNQogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgYm9yZGVyOiB7CiAgICAgICAgICAgICAgICBjb2xvcjogJyMwMDAnLAogICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I6ICcjNDQ5OTExJywKICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoOiAxLAogICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAzLAogICAgICAgICAgICAgICAgcGFkZGluZzogNQogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgc2hhZG93OiB7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjOTkyMjMzJywKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDUsCiAgICAgICAgICAgICAgICBjb2xvcjogJyNmZmYnLAogICAgICAgICAgICAgICAgc2hhZG93Qmx1cjogNSwKICAgICAgICAgICAgICAgIHNoYWRvd0NvbG9yOiAnIzMzNjY5OScsCiAgICAgICAgICAgICAgICBzaGFkb3dPZmZzZXRYOiA2LAogICAgICAgICAgICAgICAgc2hhZG93T2Zmc2V0WTogNgogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgXQogICAgfQogIF0sCiAgeEF4aXM6IHsKICAgIHNob3c6IGZhbHNlLAogICAgbWluOiAtMSwKICAgIG1heDogMQogIH0sCiAgeUF4aXM6IHsKICAgIHNob3c6IGZhbHNlLAogICAgbWluOiAtMSwKICAgIG1heDogMQogIH0KfTs\'" v-bind="{}" />\n<h2 id="%E6%A0%87%E7%AD%BE%E7%9A%84%E4%BD%8D%E7%BD%AE" tabindex="-1">标签的位置</h2>\n<p>对于折线图、柱状图、散点图等,均可以使用 <code>label</code> 来设置标签。标签的相对于图形元素的位置,一般使用 <a href="option.html#series-scatter.label.position">label.position</a>、<a href="option.html#series-scatter.label.distance">label.distance</a> 来配置。</p>\n<p>试试在下面例子中修改<code>position</code>和<code>distance</code> 属性:</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHNlcmllczogWwogICAgewogICAgICB0eXBlOiAnc2NhdHRlcicsCiAgICAgIHN5bWJvbFNpemU6IDE2MCwKICAgICAgc3ltYm9sOiAncm91bmRSZWN0JywKICAgICAgZGF0YTogW1sxLCAxXV0sCiAgICAgIGxhYmVsOiB7CiAgICAgICAgLy8g5L-u5pS5IHBvc2l0aW9uIOWSjCBkaXN0YW5jZSDnmoTlgLzor5Xor5UKICAgICAgICAvLyDmlK_mjIHvvJonbGVmdCcsICdyaWdodCcsICd0b3AnLCAnYm90dG9tJywgJ2luc2lkZScsICdpbnNpZGVUb3AnLCAnaW5zaWRlTGVmdCcsICdpbnNpZGVSaWdodCcsICdpbnNpZGVCb3R0b20nLCAnaW5zaWRlVG9wTGVmdCcsICdpbnNpZGVUb3BSaWdodCcsICdpbnNpZGVCb3R0b21MZWZ0JywgJ2luc2lkZUJvdHRvbVJpZ2h0JwogICAgICAgIHBvc2l0aW9uOiAndG9wJywKICAgICAgICBkaXN0YW5jZTogMTAsCgogICAgICAgIHNob3c6IHRydWUsCiAgICAgICAgZm9ybWF0dGVyOiBbJ0xhYmVsIFRleHQnXS5qb2luKCdcbicpLAogICAgICAgIGJhY2tncm91bmRDb2xvcjogJyNlZWUnLAogICAgICAgIGJvcmRlckNvbG9yOiAnIzU1NScsCiAgICAgICAgYm9yZGVyV2lkdGg6IDIsCiAgICAgICAgYm9yZGVyUmFkaXVzOiA1LAogICAgICAgIHBhZGRpbmc6IDEwLAogICAgICAgIGZvbnRTaXplOiAxOCwKICAgICAgICBzaGFkb3dCbHVyOiAzLAogICAgICAgIHNoYWRvd0NvbG9yOiAnIzg4OCcsCiAgICAgICAgc2hhZG93T2Zmc2V0WDogMCwKICAgICAgICBzaGFkb3dPZmZzZXRZOiAzLAogICAgICAgIHRleHRCb3JkZXJDb2xvcjogJyMwMDAnLAogICAgICAgIHRleHRCb3JkZXJXaWR0aDogMywKICAgICAgICBjb2xvcjogJyNmZmYnCiAgICAgIH0KICAgIH0KICBdLAogIHhBeGlzOiB7CiAgICBtYXg6IDIKICB9LAogIHlBeGlzOiB7CiAgICBtYXg6IDIKICB9Cn07\'" v-bind="{}" />\n<blockquote>\n<p>注意:<code>position</code> 在不同的图中可取值有所不同。<code>distance</code> 并不是在每个图中都支持。详情请参见 <a href="https://echarts.apache.org/option.html">option 文档</a>。</p>\n</blockquote>\n<h2 id="%E6%A0%87%E7%AD%BE%E7%9A%84%E6%97%8B%E8%BD%AC" tabindex="-1">标签的旋转</h2>\n<p>某些图中,为了能有足够长的空间来显示标签,需要对标签进行旋转。例如:</p>\n<md-live lang="js" code="\'Y29uc3QgbGFiZWxPcHRpb24gPSB7CiAgc2hvdzogdHJ1ZSwKICByb3RhdGU6IDkwLAogIGZvcm1hdHRlcjogJ3tjfSAge25hbWV8e2F9fScsCiAgZm9udFNpemU6IDE2LAogIHJpY2g6IHsKICAgIG5hbWU6IHt9CiAgfQp9OwoKb3B0aW9uID0gewogIHhBeGlzOiBbCiAgICB7CiAgICAgIHR5cGU6ICdjYXRlZ29yeScsCiAgICAgIGRhdGE6IFsnMjAxMicsICcyMDEzJywgJzIwMTQnLCAnMjAxNScsICcyMDE2J10KICAgIH0KICBdLAogIHlBeGlzOiBbCiAgICB7CiAgICAgIHR5cGU6ICd2YWx1ZScKICAgIH0KICBdLAogIHNlcmllczogWwogICAgewogICAgICBuYW1lOiAnRm9yZXN0JywKICAgICAgdHlwZTogJ2JhcicsCiAgICAgIGJhckdhcDogMCwKICAgICAgbGFiZWw6IGxhYmVsT3B0aW9uLAogICAgICBlbXBoYXNpczogewogICAgICAgIGZvY3VzOiAnc2VyaWVzJwogICAgICB9LAogICAgICBkYXRhOiBbMzIwLCAzMzIsIDMwMSwgMzM0LCAzOTBdCiAgICB9LAogICAgewogICAgICBuYW1lOiAnU3RlcHBlJywKICAgICAgdHlwZTogJ2JhcicsCiAgICAgIGxhYmVsOiBsYWJlbE9wdGlvbiwKICAgICAgZW1waGFzaXM6IHsKICAgICAgICBmb2N1czogJ3NlcmllcycKICAgICAgfSwKICAgICAgZGF0YTogWzIyMCwgMTgyLCAxOTEsIDIzNCwgMjkwXQogICAgfQogIF0KfTs\'" v-bind="{layout: \'lr\'}" />\n<p>这种场景下,可以结合 <a href="option.html#series-bar.label.align">align</a> 和 <a href="option.html#series-bar.label.verticalAlign">verticalAlign</a> 来调整标签位置。</p>\n<p>注意,逻辑是,先使用 <code>align</code> 和 <code>verticalAlign</code> 定位,再旋转。</p>\n<h2 id="%E6%96%87%E6%9C%AC%E7%89%87%E6%AE%B5%E7%9A%84%E6%8E%92%E7%89%88%E5%92%8C%E5%AF%B9%E9%BD%90" tabindex="-1">文本片段的排版和对齐</h2>\n<p>关于排版方式,每个文本片段,可以想象成 CSS 中的 <code>inline-block</code>,在文档流中按行放置。</p>\n<p>每个文本片段的内容盒尺寸(<code>content box size</code>),默认是根据文字大小决定的。但是,也可以设置 <code>width</code>、<code>height</code> 来强制指定,虽然一般不会这么做(参见下文)。文本片段的边框盒尺寸(<code>border box size</code>),由上述本身尺寸,加上文本片段的 <code>padding</code> 来得到。</p>\n<p>只有 <code>\'\\n\'</code> 是换行符,能导致换行。</p>\n<p>一行内,会有多个文本片段。每行的实际高度,由 <code>lineHeight</code> 最大的文本片段决定。文本片段的 <code>lineHeight</code> 可直接在 <code>rich</code> 中指定,也可以在 <code>rich</code> 的父层级中统一指定而采用到 <code>rich</code> 的所有项中,如果都不指定,则取文本片段的边框盒尺寸(<code>border box size</code>)。</p>\n<p>在一行的 <code>lineHeight</code> 被决定后,一行内,文本片段的竖直位置,由文本片段的 <code>verticalAlign</code> 来指定(这里和 CSS 中的规则稍有不同):</p>\n<ul>\n<li><code>\'bottom\'</code>:文本片段的盒的底边贴住行底。</li>\n<li><code>\'top\'</code>:文本片段的盒的顶边贴住行顶。</li>\n<li><code>\'middle\'</code>:居行中。</li>\n</ul>\n<p>文本块的宽度,可以直接由文本块的 <code>width</code> 指定,否则,由最长的行决定。宽度决定后,在一行中进行文本片段的放置。文本片段的 <code>align</code> 决定了文本片段在行中的水平位置:</p>\n<ul>\n<li>首先,从左向右连续紧靠放置 <code>align</code> 为 <code>\'left\'</code> 的文本片段盒。</li>\n<li>然后,从右向左连续紧靠放置 <code>align</code> 为 <code>\'right\'</code> 的文本片段盒。</li>\n<li>最后,剩余的没处理的文本片段盒,紧贴着,在中间剩余的区域中居中放置。</li>\n</ul>\n<p>关于文字在文本片段盒中的位置:</p>\n<ul>\n<li>如果 <code>align</code> 为 <code>\'center\'</code>,则文字在文本片段盒中是居中的。</li>\n<li>如果 <code>align</code> 为 <code>\'left\'</code>,则文字在文本片段盒中是居左的。</li>\n<li>如果 <code>align</code> 为 <code>\'right\'</code>,则文字在文本片段盒中是居右的。</li>\n</ul>\n<h2 id="%E7%89%B9%E6%AE%8A%E6%95%88%E6%9E%9C%EF%BC%9A%E5%9B%BE%E6%A0%87%E3%80%81%E5%88%86%E5%89%B2%E7%BA%BF%E3%80%81%E6%A0%87%E9%A2%98%E5%9D%97%E3%80%81%E7%AE%80%E5%8D%95%E8%A1%A8%E6%A0%BC" tabindex="-1">特殊效果:图标、分割线、标题块、简单表格</h2>\n<p>看下面的例子:</p>\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHNlcmllczogWwogICAgewogICAgICB0eXBlOiAnc2NhdHRlcicsCiAgICAgIGRhdGE6IFsKICAgICAgICB7CiAgICAgICAgICB2YWx1ZTogWzAsIDBdLAogICAgICAgICAgbGFiZWw6IHsKICAgICAgICAgICAgZm9ybWF0dGVyOiBbCiAgICAgICAgICAgICAgJ3t0Y3xDZW50ZXIgVGl0bGV9e3RpdGxlQmd8fScsCiAgICAgICAgICAgICAgJyAgQ29udGVudCB0ZXh0IHh4eHh4eHh4IHtzdW5ueXx9IHh4eHh4eHh4IHtjbG91ZHl8fSAgJywKICAgICAgICAgICAgICAne2hyfH0nLAogICAgICAgICAgICAgICcgIHh4eHh4IHtzaG93ZXJzfH0geHh4eHh4eHggIHh4eHh4eHh4eCAgJwogICAgICAgICAgICBdLmpvaW4oJ1xuJyksCiAgICAgICAgICAgIHJpY2g6IHsKICAgICAgICAgICAgICB0aXRsZUJnOiB7CiAgICAgICAgICAgICAgICBhbGlnbjogJ3JpZ2h0JwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgdmFsdWU6IFswLCAxXSwKICAgICAgICAgIGxhYmVsOiB7CiAgICAgICAgICAgIGZvcm1hdHRlcjogWwogICAgICAgICAgICAgICd7dGl0bGVCZ3xMZWZ0IFRpdGxlfScsCiAgICAgICAgICAgICAgJyAgQ29udGVudCB0ZXh0IHh4eHh4eHh4IHtzdW5ueXx9IHh4eHh4eHh4IHtjbG91ZHl8fSAgJywKICAgICAgICAgICAgICAne2hyfH0nLAogICAgICAgICAgICAgICcgIHh4eHh4IHtzaG93ZXJzfH0geHh4eHh4eHggIHh4eHh4eHh4eCAgJwogICAgICAgICAgICBdLmpvaW4oJ1xuJykKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgIHZhbHVlOiBbMCwgMl0sCiAgICAgICAgICBsYWJlbDogewogICAgICAgICAgICBmb3JtYXR0ZXI6IFsKICAgICAgICAgICAgICAne3RpdGxlQmd8UmlnaHQgVGl0bGV9JywKICAgICAgICAgICAgICAnICBDb250ZW50IHRleHQgeHh4eHh4eHgge3N1bm55fH0geHh4eHh4eHgge2Nsb3VkeXx9ICAnLAogICAgICAgICAgICAgICd7aHJ8fScsCiAgICAgICAgICAgICAgJyAgeHh4eHgge3Nob3dlcnN8fSB4eHh4eHh4eCAgeHh4eHh4eHh4ICAnCiAgICAgICAgICAgIF0uam9pbignXG4nKSwKICAgICAgICAgICAgcmljaDogewogICAgICAgICAgICAgIHRpdGxlQmc6IHsKICAgICAgICAgICAgICAgIGFsaWduOiAncmlnaHQnCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBdLAogICAgICBzeW1ib2xTaXplOiAxLAogICAgICBsYWJlbDogewogICAgICAgIHNob3c6IHRydWUsCiAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnI2RkZCcsCiAgICAgICAgYm9yZGVyQ29sb3I6ICcjNTU1JywKICAgICAgICBib3JkZXJXaWR0aDogMSwKICAgICAgICBib3JkZXJSYWRpdXM6IDUsCiAgICAgICAgY29sb3I6ICcjMDAwJywKICAgICAgICBmb250U2l6ZTogMTQsCiAgICAgICAgcmljaDogewogICAgICAgICAgdGl0bGVCZzogewogICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjMDAwJywKICAgICAgICAgICAgaGVpZ2h0OiAzMCwKICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiBbNSwgNSwgMCwgMF0sCiAgICAgICAgICAgIHBhZGRpbmc6IFswLCAxMCwgMCwgMTBdLAogICAgICAgICAgICB3aWR0aDogJzEwMCUnLAogICAgICAgICAgICBjb2xvcjogJyNlZWUnCiAgICAgICAgICB9LAogICAgICAgICAgdGM6IHsKICAgICAgICAgICAgYWxpZ246ICdjZW50ZXInLAogICAgICAgICAgICBjb2xvcjogJyNlZWUnCiAgICAgICAgICB9LAogICAgICAgICAgaHI6IHsKICAgICAgICAgICAgYm9yZGVyQ29sb3I6ICcjNzc3JywKICAgICAgICAgICAgd2lkdGg6ICcxMDAlJywKICAgICAgICAgICAgYm9yZGVyV2lkdGg6IDAuNSwKICAgICAgICAgICAgaGVpZ2h0OiAwCiAgICAgICAgICB9LAogICAgICAgICAgc3Vubnk6IHsKICAgICAgICAgICAgaGVpZ2h0OiAzMCwKICAgICAgICAgICAgYWxpZ246ICdsZWZ0JywKICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiB7CiAgICAgICAgICAgICAgaW1hZ2U6CiAgICAgICAgICAgICAgICAnaHR0cHM6Ly9lY2hhcnRzLmFwYWNoZS5vcmcvZXhhbXBsZXMvZGF0YS9hc3NldC9pbWcvd2VhdGhlci9zdW5ueV8xMjgucG5nJwogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgY2xvdWR5OiB7CiAgICAgICAgICAgIGhlaWdodDogMzAsCiAgICAgICAgICAgIGFsaWduOiAnbGVmdCcsCiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogewogICAgICAgICAgICAgIGltYWdlOgogICAgICAgICAgICAgICAgJ2h0dHBzOi8vZWNoYXJ0cy5hcGFjaGUub3JnL2V4YW1wbGVzL2RhdGEvYXNzZXQvaW1nL3dlYXRoZXIvY2xvdWR5XzEyOC5wbmcnCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICBzaG93ZXJzOiB7CiAgICAgICAgICAgIGhlaWdodDogMzAsCiAgICAgICAgICAgIGFsaWduOiAnbGVmdCcsCiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogewogICAgICAgICAgICAgIGltYWdlOgogICAgICAgICAgICAgICAgJ2h0dHBzOi8vZWNoYXJ0cy5hcGFjaGUub3JnL2V4YW1wbGVzL2RhdGEvYXNzZXQvaW1nL3dlYXRoZXIvc2hvd2Vyc18xMjgucG5nJwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgXSwKICB4QXhpczogewogICAgc2hvdzogZmFsc2UsCiAgICBtaW46IC0xLAogICAgbWF4OiAxCiAgfSwKICB5QXhpczogewogICAgc2hvdzogZmFsc2UsCiAgICBtaW46IDAsCiAgICBtYXg6IDIsCiAgICBpbnZlcnNlOiB0cnVlCiAgfQp9Ow\'" v-bind="{layout: \'lr\'}" />\n<p>文本片段的 <code>backgroundColor</code> 可以指定为图片后,就可以在文本中使用图标了:</p>\n<md-code-block lang="js" code="\'bGFiZWxPcHRpb24gPSB7CiAgcmljaDogewogICAgU3Vubnk6IHsKICAgICAgLy8g6L-Z5qC36K6-5a6aIGJhY2tncm91bmRDb2xvciDlsLHlj6_ku6XmmK_lm77niYfkuobjgIIKICAgICAgYmFja2dyb3VuZENvbG9yOiB7CiAgICAgICAgaW1hZ2U6ICcuL2RhdGEvYXNzZXQvaW1nL3dlYXRoZXIvc3VubnlfMTI4LnBuZycKICAgICAgfSwKICAgICAgLy8g5Y-v5Lul5Y-q5oyH5a6a5Zu-54mH55qE6auY5bqm77yM5LuO6ICM5Zu-54mH55qE5a695bqm5qC55o2u5Zu-54mH55qE6ZW_5a695q-U6Ieq5Yqo5b6X5Yiw44CCCiAgICAgIGhlaWdodDogMzAKICAgIH0KICB9Cn07\'" line-highlights="\'\'" />\n<p>分割线实际是用 border 实现的:</p>\n<md-code-block lang="js" code="\'bGFiZWxPcHRpb24gPSB7CiAgcmljaDogewogICAgaHI6IHsKICAgICAgYm9yZGVyQ29sb3I6ICcjNzc3JywKICAgICAgLy8g6L-Z6YeM5oqKIHdpZHRoIOiuvue9ruS4uiAnMTAwJSfvvIzooajnpLrliIblibLnur_nmoTplb_luqblhYXmu6HmlofmnKzlnZfjgIIKICAgICAgLy8g5rOo5oSP77yM6L-Z6YeM5piv5paH5pys5Z2X5YaF5a6555uS77yIY29udGVudCBib3jvvInnmoQgMTAwJe-8jOiAjOS4jeWMheWQqyBwYWRkaW5n44CCCiAgICAgIC8vIOiZveeEtui_meWSjCBDU1Mg55u45YWz55qE5a6a5LmJ5pyJ5omA5LiN5ZCM77yM5L2G5piv5Zyo6L-Z57G75Zy65pmv5Lit5pu05Yqg5pa55L6_44CCCiAgICAgIHdpZHRoOiAnMTAwJScsCiAgICAgIGJvcmRlcldpZHRoOiAwLjUsCiAgICAgIGhlaWdodDogMAogICAgfQogIH0KfTs\'" line-highlights="\'\'" />\n<p>标题块是使用 <code>backgroundColor</code> 实现的:</p>\n<md-code-block lang="js" code="\'bGFiZWxPcHRpb24gPSB7CiAgLy8g5qCH6aKY5paH5a2X5bGF5bemCiAgZm9ybWF0dGVyOiAne3RpdGxlQmd8TGVmdCBUaXRsZX0nLAogIHJpY2g6IHsKICAgIHRpdGxlQmc6IHsKICAgICAgYmFja2dyb3VuZENvbG9yOiAnIzAwMCcsCiAgICAgIGhlaWdodDogMzAsCiAgICAgIGJvcmRlclJhZGl1czogWzUsIDUsIDAsIDBdLAogICAgICBwYWRkaW5nOiBbMCwgMTAsIDAsIDEwXSwKICAgICAgd2lkdGg6ICcxMDAlJywKICAgICAgY29sb3I6ICcjZWVlJwogICAgfQogIH0KfTsKCi8vIOagh-mimOaWh-Wtl-WxheS4reOAggovLyDov5nkuKrlrp7njrDmnInkupsgdHJpY2t577yM5L2G5piv77yM6IO95aSf5LiN5byV5YWl5pu05aSN5p2C55qE5o6S54mI6KeE5YiZ6ICM5a6e546w6L-Z5Liq5pWI5p6c44CCCmxhYmVsT3B0aW9uID0gewogIGZvcm1hdHRlcjogJ3t0Y3xDZW50ZXIgVGl0bGV9e3RpdGxlQmd8fScsCiAgcmljaDogewogICAgdGl0bGVCZzogewogICAgICBhbGlnbjogJ3JpZ2h0JywKICAgICAgYmFja2dyb3VuZENvbG9yOiAnIzAwMCcsCiAgICAgIGhlaWdodDogMzAsCiAgICAgIGJvcmRlclJhZGl1czogWzUsIDUsIDAsIDBdLAogICAgICBwYWRkaW5nOiBbMCwgMTAsIDAsIDEwXSwKICAgICAgd2lkdGg6ICcxMDAlJywKICAgICAgY29sb3I6ICcjZWVlJwogICAgfQogIH0KfTs\'" line-highlights="\'\'" />\n<p>简单表格的设定,其实就是给不同行上纵向对应的文本片段设定同样的宽度就可以了。见 <a href="https://echarts.apache.org/examples/zh/editor.html?c=pie-rich-text">该例子</a></p>\n',postPath:"zh/how-to/label/rich-text",title:"富文本标签 - 标签 - 应用篇"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:A},{title:"入门篇",dir:i,children:[{title:"获取 ECharts",dir:e},{title:"在项目中引入 ECharts",dir:d},{title:"资源列表",dir:o,draft:g},{title:"寻求帮助",dir:t},{title:"版本特性",dir:l,children:[{title:"ECharts 6 特性介绍",dir:c},{title:"v5 升级 v6 指南",dir:a},{title:"5.0",dir:n},{title:"v4 升级 v5 指南",dir:r},{title:5.2,dir:h},{title:5.3,dir:s},{title:5.4,dir:b},{title:5.5,dir:p},{title:5.6,dir:Z}]}]},{title:"概念篇",dir:m,children:[{title:"图表容器及大小",dir:G},{title:"配置项",dir:B,draft:g},{title:"系列",dir:H,draft:g},{title:"样式",dir:y},{title:"数据集",dir:W},{title:"数据转换",dir:w},{title:"坐标系",dir:v,draft:g},{title:"坐标轴",dir:J},{title:"视觉映射",dir:C},{title:"图例",dir:u},{title:"事件与行为",dir:Y}]},{title:"应用篇",dir:E,children:[{title:"常用图表类型",dir:L,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:R},{title:"堆叠柱状图",dir:M},{title:"动态排序柱状图",dir:K},{title:"极坐标系柱状图",dir:D,draft:g},{title:"阶梯瀑布图",dir:z},{title:"视觉映射的柱状图",dir:C,draft:g}]},{title:"折线图",dir:x,children:[{title:"基础折线图",dir:V},{title:"堆叠折线图",dir:f},{title:"区域面积图",dir:N},{title:"平滑曲线图",dir:O},{title:"阶梯线图",dir:X}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:S},{title:"圆环图",dir:j},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:k,children:[{title:"基础散点图",dir:F}]}]},{title:"常用组件",dir:Q,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:T}]}]},{title:"移动端优化",dir:I,draft:g},{title:"跨平台方案",dir:U,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:q},{title:"数据下钻",dir:P,draft:g}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:_}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:gg}]},{title:"交互",dir:Ig,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:Cg,draft:g},{title:"智能指针吸附",dir:Ag}]}]},{title:"最佳实践",dir:ig,children:[{title:"移动端优化",dir:I,draft:g},{title:eg,dir:dg},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:og}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:tg}]}],en:[{title:"Get Started",dir:A},{title:"Basics",dir:i,children:[{title:"Download ECharts",dir:e},{title:"Import ECharts",dir:d},{title:"Resources",dir:o,draft:g},{title:"Get Help",dir:t},{title:"What's New",dir:l,children:[{title:"ECharts 6 Features",dir:c},{title:"Migration from v5 to v6",dir:a},{title:"5.0",dir:n},{title:"Migration from v4 to v5",dir:r},{title:5.2,dir:h},{title:5.3,dir:s},{title:5.4,dir:b},{title:5.5,dir:p},{title:5.6,dir:Z}]}]},{title:"Concepts",dir:m,children:[{title:"Chart Container",dir:G},{title:"Chart Option",dir:B,draft:g},{title:"Series",dir:H,draft:g},{title:"Style",dir:y},{title:"Dataset",dir:W},{title:"Data Transform",dir:w},{title:"Coordinate",dir:v,draft:g},{title:"Axis",dir:J},{title:"Visual Mapping",dir:C},{title:"Legend",dir:u},{title:"Event and Action",dir:Y}]},{title:"How To Guides",dir:E,children:[{title:"Common Charts",dir:L,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:R},{title:"Stacked Bar",dir:M},{title:"Bar Racing",dir:K},{title:"Bar Polar",dir:D,draft:g},{title:"Waterfall",dir:z}]},{title:"Line",dir:x,children:[{title:"Basic Line",dir:V},{title:"Stacked Line",dir:f},{title:"Area Chart",dir:N},{title:"Smoothed Line",dir:O},{title:"Step Line",dir:X}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:S},{title:"Ring Style",dir:j},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:k,children:[{title:"Basic Scatter",dir:F}]}]},{title:"Common Components",dir:Q,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:T}]}]},{title:"Mobile",dir:I,draft:g},{title:"Cross Platform",dir:U,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:q},{title:"Drilldown",dir:P,draft:g}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:_}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:gg}]},{title:"Interaction",dir:Ig,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:Cg,draft:g},{title:"Intelligent Pointer Snapping",dir:Ag}]}]},{title:"Best Practices",dir:ig,children:[{title:"Mobile Optimization",dir:I,draft:g},{title:eg,dir:dg},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:og}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:tg}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:g,routePath:"/zh/how-to/label/rich-text",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/zh/index.html b/docs/zh/index.html
new file mode 100644
index 0000000..0c634c8
--- /dev/null
+++ b/docs/zh/index.html
@@ -0,0 +1,13 @@
+<!doctype html>
+<html data-n-head-ssr lang="zh-CN" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh-CN%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>使用手册 - Apache ECharts</title><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/zh/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/zh/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/zh/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/e33c9002634265ded0e5.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/zh/index.html" class="navbar-brand"><img src="https://echarts.apache.org/zh/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/zh/index.html">首页</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">文档<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/feature.html">特性</a></li><li><a href="https://echarts.apache.org/handbook/zh/get-started/">使用手册</a></li><li><a href="https://echarts.apache.org/zh/api.html">API</a></li><li><a href="https://echarts.apache.org/zh/option.html">配置项手册</a></li><li><a href="https://echarts.apache.org/zh/changelog.html">版本记录</a></li><li><a href="https://echarts.apache.org/zh/faq.html">常见问题</a></li><li><a href="https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide">v6 升级指南</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">下载<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/download.html">下载</a></li><li><a href="https://echarts.apache.org/zh/download-theme.html">主题下载</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">自定义系列下载<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/download-extension.html">扩展下载</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/zh/index.html">示例</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">资源<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/spreadsheet.html">表格工具</a></li><li><a href="https://echarts.apache.org/zh/theme-builder.html">主题构建工具</a></li><li><a href="https://echarts.apache.org/zh/cheat-sheet.html">术语速查手册</a></li><li><a href="https://echarts.apache.org/zh/resources.html">更多资源</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">社区<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/events.html">活动</a></li><li><a href="https://echarts.apache.org/zh/committers.html">贡献者列表</a></li><li><a href="https://echarts.apache.org/zh/maillist.html">邮件列表</a></li><li><a href="https://echarts.apache.org/zh/contributing.html">如何贡献</a></li><li><a href="https://echarts.apache.org/zh/dependencies.html">依赖项</a></li><li><a href="https://echarts.apache.org/zh/coding-standard.html">代码规范</a></li><li><a href="https://github.com/apache/echarts" target="_blank">源码(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/security.html">安全</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">版权<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">活动<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">捐赠<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">鸣谢<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("en")'>EN</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/zh/get-started" class="nav-link"><span class="title">快速上手</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">入门篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/basics/download" class="nav-link"><span class="title">获取 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/import" class="nav-link"><span class="title">在项目中引入 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/basics/help" class="nav-link"><span class="title">寻求帮助</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">版本特性</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 特性介绍</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">v5 升级 v6 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">v4 升级 v5 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">概念篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/concepts/chart-size" class="nav-link"><span class="title">图表容器及大小</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/style" class="nav-link"><span class="title">样式</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/dataset" class="nav-link"><span class="title">数据集</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/data-transform" class="nav-link"><span class="title">数据转换</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/axis" class="nav-link"><span class="title">坐标轴</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/visual-map" class="nav-link"><span class="title">视觉映射</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/legend" class="nav-link"><span class="title">图例</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/event" class="nav-link"><span class="title">事件与行为</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">应用篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">常用图表类型</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">柱状图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">基础柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">堆叠柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">动态排序柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">阶梯瀑布图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">折线图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">基础折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">堆叠折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/area-line" class="nav-link"><span class="title">区域面积图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">平滑曲线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/step-line" class="nav-link"><span class="title">阶梯线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">饼图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">基础饼图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">圆环图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/rose" class="nav-link"><span class="title">南丁格尔图(玫瑰图)</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">散点图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">基础散点图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">常用组件</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">地理坐标系(Geo)</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG 底图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">跨平台方案</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/server" class="nav-link"><span class="title">服务端渲染</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/wechat-app" class="nav-link"><span class="title">微信小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/baidu-app" class="nav-link"><span class="title">百度智能小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">数据处理</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/data/dynamic-data" class="nav-link"><span class="title">动态的异步数据</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">标签</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/label/rich-text" class="nav-link"><span class="title">富文本标签</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">动画</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/animation/transition" class="nav-link"><span class="title">数据过渡动画</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">交互</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/drag" class="nav-link"><span class="title">拖拽的实现</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">智能指针吸附</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">最佳实践</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/aria" class="nav-link"><span class="title">无障碍访问</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/security" class="nav-link"><span class="title">安全指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">编辑本文档</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/meta/edit-guide" class="nav-link"><span class="title">文档编辑指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div class="hidden"><a href="/echarts-handbook/zh/get-started">中文</a> <a href="/echarts-handbook/en/get-started">English</a></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(t,i,e,r,d,l,a,n,o,c,s,h,p,f,g,m,u,b,v,C,S,P,B,w,k,y,x,E,G,D,R,L,M,V,A,_,T,z,H,I,N,O,U,W,$,F,X,j,q,J,K,Q,Y,Z,tt,it,et,rt,dt,lt,at,nt,ot){return{layout:"default",data:[{}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:r},{title:"入门篇",dir:d,children:[{title:"获取 ECharts",dir:l},{title:"在项目中引入 ECharts",dir:a},{title:"资源列表",dir:n,draft:t},{title:"寻求帮助",dir:o},{title:"版本特性",dir:c,children:[{title:"ECharts 6 特性介绍",dir:s},{title:"v5 升级 v6 指南",dir:h},{title:"5.0",dir:p},{title:"v4 升级 v5 指南",dir:f},{title:5.2,dir:g},{title:5.3,dir:m},{title:5.4,dir:u},{title:5.5,dir:b},{title:5.6,dir:v}]}]},{title:"概念篇",dir:C,children:[{title:"图表容器及大小",dir:S},{title:"配置项",dir:P,draft:t},{title:"系列",dir:B,draft:t},{title:"样式",dir:w},{title:"数据集",dir:k},{title:"数据转换",dir:y},{title:"坐标系",dir:x,draft:t},{title:"坐标轴",dir:E},{title:"视觉映射",dir:e},{title:"图例",dir:G},{title:"事件与行为",dir:D}]},{title:"应用篇",dir:R,children:[{title:"常用图表类型",dir:L,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:M},{title:"堆叠柱状图",dir:V},{title:"动态排序柱状图",dir:A},{title:"极坐标系柱状图",dir:_,draft:t},{title:"阶梯瀑布图",dir:T},{title:"视觉映射的柱状图",dir:e,draft:t}]},{title:"折线图",dir:z,children:[{title:"基础折线图",dir:H},{title:"堆叠折线图",dir:I},{title:"区域面积图",dir:N},{title:"平滑曲线图",dir:O},{title:"阶梯线图",dir:U}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:W},{title:"圆环图",dir:$},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:F,children:[{title:"基础散点图",dir:X}]}]},{title:"常用组件",dir:j,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:q}]}]},{title:"移动端优化",dir:i,draft:t},{title:"跨平台方案",dir:J,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:K},{title:"数据下钻",dir:Q,draft:t}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:Y}]},{title:"动画",dir:Z,children:[{title:"数据过渡动画",dir:tt}]},{title:"交互",dir:it,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:et,draft:t},{title:"智能指针吸附",dir:rt}]}]},{title:"最佳实践",dir:dt,children:[{title:"移动端优化",dir:i,draft:t},{title:lt,dir:at},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:nt}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:ot}]}],en:[{title:"Get Started",dir:r},{title:"Basics",dir:d,children:[{title:"Download ECharts",dir:l},{title:"Import ECharts",dir:a},{title:"Resources",dir:n,draft:t},{title:"Get Help",dir:o},{title:"What's New",dir:c,children:[{title:"ECharts 6 Features",dir:s},{title:"Migration from v5 to v6",dir:h},{title:"5.0",dir:p},{title:"Migration from v4 to v5",dir:f},{title:5.2,dir:g},{title:5.3,dir:m},{title:5.4,dir:u},{title:5.5,dir:b},{title:5.6,dir:v}]}]},{title:"Concepts",dir:C,children:[{title:"Chart Container",dir:S},{title:"Chart Option",dir:P,draft:t},{title:"Series",dir:B,draft:t},{title:"Style",dir:w},{title:"Dataset",dir:k},{title:"Data Transform",dir:y},{title:"Coordinate",dir:x,draft:t},{title:"Axis",dir:E},{title:"Visual Mapping",dir:e},{title:"Legend",dir:G},{title:"Event and Action",dir:D}]},{title:"How To Guides",dir:R,children:[{title:"Common Charts",dir:L,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:M},{title:"Stacked Bar",dir:V},{title:"Bar Racing",dir:A},{title:"Bar Polar",dir:_,draft:t},{title:"Waterfall",dir:T}]},{title:"Line",dir:z,children:[{title:"Basic Line",dir:H},{title:"Stacked Line",dir:I},{title:"Area Chart",dir:N},{title:"Smoothed Line",dir:O},{title:"Step Line",dir:U}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:W},{title:"Ring Style",dir:$},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:F,children:[{title:"Basic Scatter",dir:X}]}]},{title:"Common Components",dir:j,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:q}]}]},{title:"Mobile",dir:i,draft:t},{title:"Cross Platform",dir:J,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:K},{title:"Drilldown",dir:Q,draft:t}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:Y}]},{title:"Animation",dir:Z,children:[{title:"Data Transition",dir:tt}]},{title:"Interaction",dir:it,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:et,draft:t},{title:"Intelligent Pointer Snapping",dir:rt}]}]},{title:"Best Practices",dir:dt,children:[{title:"Mobile Optimization",dir:i,draft:t},{title:lt,dir:at},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:nt}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:ot}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:t,routePath:"/zh",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e33c9002634265ded0e5.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>
diff --git a/docs/zh/meta/edit-guide/index.html b/docs/zh/meta/edit-guide/index.html
new file mode 100644
index 0000000..86f1782
--- /dev/null
+++ b/docs/zh/meta/edit-guide/index.html
@@ -0,0 +1,206 @@
+<!doctype html>
+<html data-n-head-ssr lang="zh-CN" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh-CN%22%7D%7D">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>文档编辑指南 - 编辑本文档 - 使用手册 - Apache ECharts</title><meta data-n-head="ssr" data-hid="docsearch:language" name="docsearch:language" content="zh"><base href="/echarts-handbook/"><link data-n-head="ssr" rel="shortcut icon" type="image/png" href="https://echarts.apache.org/zh/images/favicon.png"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css"><link data-n-head="ssr" rel="stylesheet" href="https://echarts.apache.org/zh/css/main.css"><link data-n-head="ssr" rel="stylesheet" href="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.css"><script data-n-head="ssr">window.ECHARTS_WWW_VENDORS_CDN_ROOT="//echarts.apache.org/zh/js/vendors/"</script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/jquery@3.7.1/dist/jquery.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js"></script><script data-n-head="ssr" src="//echarts.apache.org/zh/js/vendors/docsearch.js@2.6.3/dist/cdn/docsearch.min.js"></script><link rel="preload" href="/echarts-handbook/_nuxt/73c8e4b.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/ee8e7fb.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/6b95e13.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/0c5ed63.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" as="script"><link rel="preload" href="/echarts-handbook/_nuxt/css/3556c50.css" as="style"><link rel="preload" href="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" as="script"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/ee8e7fb.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/6b95e13.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/0c5ed63.css"><link rel="stylesheet" href="/echarts-handbook/_nuxt/css/3556c50.css">
+  </head>
+  <body>
+    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache.org/zh/index.html" class="navbar-brand"><img src="https://echarts.apache.org/zh/images/logo.png?_v_=20240226" alt="echarts logo" class="navbar-logo"></a></div><div id="navbar-collapse" class="collapse navbar-collapse"><ul class="nav navbar-nav navbar-left"><li id="nav-index"><a href="https://echarts.apache.org/zh/index.html">首页</a></li><li id="nav-doc" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">文档<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/feature.html">特性</a></li><li><a href="https://echarts.apache.org/handbook/zh/get-started/">使用手册</a></li><li><a href="https://echarts.apache.org/zh/api.html">API</a></li><li><a href="https://echarts.apache.org/zh/option.html">配置项手册</a></li><li><a href="https://echarts.apache.org/zh/changelog.html">版本记录</a></li><li><a href="https://echarts.apache.org/zh/faq.html">常见问题</a></li><li><a href="https://echarts.apache.org/handbook/zh/basics/release-note/v6-upgrade-guide">v6 升级指南</a></li></ul></li><li id="nav-download" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">下载<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/download.html">下载</a></li><li><a href="https://echarts.apache.org/zh/download-theme.html">主题下载</a></li><li><a href="https://github.com/apache/echarts-custom-series" target="_blank">自定义系列下载<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/download-extension.html">扩展下载</a></li></ul></li><li id="nav-examples"><a href="https://echarts.apache.org/examples/zh/index.html">示例</a></li><li id="nav-resources"><a href="#" data-toggle="dropdown" class="dropdown-toggle">资源<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/spreadsheet.html">表格工具</a></li><li><a href="https://echarts.apache.org/zh/theme-builder.html">主题构建工具</a></li><li><a href="https://echarts.apache.org/zh/cheat-sheet.html">术语速查手册</a></li><li><a href="https://echarts.apache.org/zh/resources.html">更多资源</a></li></ul></li><li id="nav-contribute"><a href="#" data-toggle="dropdown" class="dropdown-toggle">社区<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://echarts.apache.org/zh/events.html">活动</a></li><li><a href="https://echarts.apache.org/zh/committers.html">贡献者列表</a></li><li><a href="https://echarts.apache.org/zh/maillist.html">邮件列表</a></li><li><a href="https://echarts.apache.org/zh/contributing.html">如何贡献</a></li><li><a href="https://echarts.apache.org/zh/dependencies.html">依赖项</a></li><li><a href="https://echarts.apache.org/zh/coding-standard.html">代码规范</a></li><li><a href="https://github.com/apache/echarts" target="_blank">源码(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://github.com/apache/echarts/issues" target="_blank">Issues(GitHub)<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li><li id="nav-others"><a href="#" data-toggle="dropdown" class="dropdown-toggle">ASF<b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://www.apache.org/" target="_blank">Apache Software Foundation<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://echarts.apache.org/zh/security.html">安全</a></li><li><a href="https://www.apache.org/licenses/" target="_blank">版权<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/events/current-event" target="_blank">活动<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">捐赠<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">鸣谢<svg width="15px" height="15px" viewbox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="icon-external-link"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li id="nav-homeen"><a href="javascript:;" onclick='changeLang("en")'>EN</a></li><li id="nav-github"><a href="https://github.com/apache/echarts" target="_blank"><svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g transform="translate(-262.000000, -2480.000000)" fill="#333"><g transform="translate(252.000000, 2470.000000)"><path d="M29.9006449,27.904446 C28.5016932,29.8668872 26.6944882,31.2248797 24.4790301,31.9784237 C24.2211218,32.0272886 24.0325745,31.9931534 23.9133882,31.876018 C23.7942019,31.7588827 23.7346171,31.6119968 23.7346338,31.4353603 L23.7346338,28.3376019 C23.7346338,27.3880159 23.4865017,26.6930482 22.9902375,26.2526987 C23.5347812,26.1938141 24.024319,26.1058042 24.458851,25.9886688 C24.893383,25.8715335 25.3422785,25.680801 25.8055376,25.4164714 C26.2687966,25.1521418 26.6556591,24.8267354 26.9661251,24.4402521 C27.276591,24.0537688 27.5296112,23.5398222 27.7251857,22.8984123 C27.9207602,22.2570024 28.0185475,21.5203805 28.0185475,20.6885464 C28.0185475,19.504056 27.6414612,18.4959023 26.8872886,17.6640854 C27.240536,16.7733669 27.2023419,15.7752328 26.7727063,14.6696833 C26.5050218,14.5813565 26.1181593,14.6352226 25.6121189,14.8312818 C25.1060784,15.0273409 24.6669591,15.2428141 24.2947609,15.4777015 L23.7502256,15.8300324 C22.8622108,15.5757225 21.9454689,15.4485675 21,15.4485675 C20.0545311,15.4485675 19.1377892,15.5757225 18.2497744,15.8300324 C18.0969813,15.7223001 17.8940788,15.5901353 17.641067,15.433538 C17.3880551,15.2769408 16.9892689,15.0884007 16.4447085,14.8679176 C15.9001481,14.6474346 15.4894467,14.5813479 15.2126043,14.6696576 C14.7921266,15.7758408 14.7588206,16.7739749 15.1126863,17.6640597 C14.3585137,18.4958938 13.9814275,19.5040475 13.9814275,20.6885208 C13.9814275,21.5203548 14.0792147,22.2544676 14.2747892,22.8908591 C14.4703637,23.5272505 14.720944,24.0411971 15.0265302,24.4326988 C15.3321164,24.8242005 15.7165391,25.1521076 16.1797981,25.41642 C16.6430571,25.6807325 17.0919527,25.871465 17.5264847,25.9886174 C17.9610167,26.1057699 18.4505545,26.1937799 18.9950982,26.2526473 C18.6131238,26.60467 18.3790461,27.1085884 18.292865,27.7644025 C18.0924107,27.8621152 17.8775846,27.935404 17.6483866,27.984269 C17.4191886,28.0331339 17.1469167,28.0575663 16.831571,28.0575663 C16.5162253,28.0575663 16.203612,27.9523346 15.8937309,27.7418712 C15.5838499,27.5314078 15.3189144,27.225424 15.0989244,26.8239198 C14.9174043,26.5107253 14.6857747,26.2564154 14.4040358,26.0609899 C14.1222969,25.8655645 13.8860801,25.7481209 13.6953854,25.708659 L13.4084408,25.6644956 C13.2079866,25.6644956 13.069557,25.6864188 12.9931521,25.7302654 C12.9167472,25.7741119 12.8929083,25.8304873 12.9216353,25.8993914 C12.9503623,25.9682956 12.9934529,26.0368829 13.050907,26.1051533 C13.1083611,26.1734238 13.1703941,26.2319915 13.2370061,26.2808564 L13.336924,26.3541538 C13.5471712,26.4518665 13.7549701,26.6378974 13.9603209,26.9122466 C14.1656716,27.1865958 14.3160164,27.4362043 14.4113555,27.661072 L14.554364,27.9983735 C14.67843,28.3704354 14.8886689,28.6714094 15.1850804,28.9012955 C15.481492,29.1311815 15.8014334,29.2780674 16.1449045,29.3419532 C16.4883756,29.405839 16.8202406,29.4399742 17.1404995,29.4443589 C17.4607584,29.4487435 17.7256939,29.4315218 17.935306,29.3926936 L18.2644137,29.3335008 C18.2644137,29.7055627 18.2668619,30.1412107 18.2717584,30.6404447 C18.2766548,31.1396787 18.279103,31.4040083 18.279103,31.4334334 C18.279103,31.6094533 18.21707,31.7563392 18.093004,31.8740912 C17.9689379,31.9918431 17.7779507,32.0259784 17.5200424,31.9764969 C15.3045843,31.22297 13.4973793,29.8649774 12.0984276,27.9025191 C10.6994759,25.9400608 10,23.7305118 10,21.2738721 C10,19.2281225 10.4916769,17.3417791 11.4750308,15.6148418 C12.4583846,13.8879045 13.7928551,12.5202092 15.4784422,11.5117558 C17.1640293,10.5033024 19.0045486,9.99938397 21,10.0000006 C22.9954514,10.0006172 24.8359707,10.5045356 26.5215578,11.5117558 C28.2071449,12.518976 29.5416154,13.8866713 30.5249692,15.6148418 C31.5083231,17.3430123 32,19.2293557 32,21.2738721 C31.9990725,23.7324558 31.2995966,25.9420048 29.9006449,27.904446 Z"></path></g></g></g></svg></a></li></ul></div></div></nav> <div class="page-main"><div class="page-content handbook-content single-page container-fluid row flex-xl-nowrap"><div class="bd-sidebar col-sm-3 col-md-2 closed"><div class="bd-docs-nav"><ul class="nav bd-sidenav nav-root level0"><li class="nav-item"><a href="/echarts-handbook/zh/get-started" class="nav-link"><span class="title">快速上手</span></a> <ul class="nav bd-sidenav level1" style="display:none"></ul></li><li class="nav-item"><div class="nav-link"><span class="title">入门篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/basics/download" class="nav-link"><span class="title">获取 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/import" class="nav-link"><span class="title">在项目中引入 ECharts</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/basics/help" class="nav-link"><span class="title">寻求帮助</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a class="nav-link"><span class="title">版本特性</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-feature" class="nav-link"><span class="title">ECharts 6 特性介绍</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v6-upgrade-guide" class="nav-link"><span class="title">v5 升级 v6 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-feature" class="nav-link"><span class="title">5.0</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/v5-upgrade-guide" class="nav-link"><span class="title">v4 升级 v5 指南</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-2-0" class="nav-link"><span class="title">5.2</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-3-0" class="nav-link"><span class="title">5.3</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-4-0" class="nav-link"><span class="title">5.4</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-5-0" class="nav-link"><span class="title">5.5</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/basics/release-note/5-6-0" class="nav-link"><span class="title">5.6</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">概念篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/concepts/chart-size" class="nav-link"><span class="title">图表容器及大小</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/style" class="nav-link"><span class="title">样式</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/dataset" class="nav-link"><span class="title">数据集</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/data-transform" class="nav-link"><span class="title">数据转换</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/concepts/axis" class="nav-link"><span class="title">坐标轴</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/visual-map" class="nav-link"><span class="title">视觉映射</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/legend" class="nav-link"><span class="title">图例</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/concepts/event" class="nav-link"><span class="title">事件与行为</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">应用篇</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a class="nav-link"><span class="title">常用图表类型</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">柱状图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/basic-bar" class="nav-link"><span class="title">基础柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/stacked-bar" class="nav-link"><span class="title">堆叠柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/bar-race" class="nav-link"><span class="title">动态排序柱状图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/bar/waterfall" class="nav-link"><span class="title">阶梯瀑布图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">折线图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/basic-line" class="nav-link"><span class="title">基础折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/stacked-line" class="nav-link"><span class="title">堆叠折线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/area-line" class="nav-link"><span class="title">区域面积图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/smooth-line" class="nav-link"><span class="title">平滑曲线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/line/step-line" class="nav-link"><span class="title">阶梯线图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">饼图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/basic-pie" class="nav-link"><span class="title">基础饼图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/doughnut" class="nav-link"><span class="title">圆环图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/pie/rose" class="nav-link"><span class="title">南丁格尔图(玫瑰图)</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">散点图</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/chart-types/scatter/basic-scatter" class="nav-link"><span class="title">基础散点图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">常用组件</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a class="nav-link"><span class="title">地理坐标系(Geo)</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level3" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/component-types/geo/svg-base-map" class="nav-link"><span class="title">SVG 底图</span></a> <ul class="nav bd-sidenav level4" style="display:none"></ul></li></ul></li></ul></li><!----><li class="nav-item"><a class="nav-link"><span class="title">跨平台方案</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/server" class="nav-link"><span class="title">服务端渲染</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/wechat-app" class="nav-link"><span class="title">微信小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/how-to/cross-platform/baidu-app" class="nav-link"><span class="title">百度智能小程序</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">数据处理</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/data/dynamic-data" class="nav-link"><span class="title">动态的异步数据</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----></ul></li><li class="nav-item"><a class="nav-link"><span class="title">标签</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/label/rich-text" class="nav-link"><span class="title">富文本标签</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">动画</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/animation/transition" class="nav-link"><span class="title">数据过渡动画</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li><li class="nav-item"><a class="nav-link"><span class="title">交互</span> <span class="glyphicon glyphicon-menu-down"></span></a> <ul class="nav bd-sidenav level2" style="display:none"><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/drag" class="nav-link"><span class="title">拖拽的实现</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li><!----><li class="nav-item"><a href="/echarts-handbook/zh/how-to/interaction/coarse-pointer" class="nav-link"><span class="title">智能指针吸附</span></a> <ul class="nav bd-sidenav level3" style="display:none"></ul></li></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">最佳实践</span></div> <ul class="nav bd-sidenav level1"><!----><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/canvas-vs-svg" class="nav-link"><span class="title">Canvas vs. SVG</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/aria" class="nav-link"><span class="title">无障碍访问</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li><li class="nav-item"><a href="/echarts-handbook/zh/best-practices/security" class="nav-link"><span class="title">安全指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li><li class="nav-item"><div class="nav-link"><span class="title">编辑本文档</span></div> <ul class="nav bd-sidenav level1"><li class="nav-item"><a href="/echarts-handbook/zh/meta/edit-guide" aria-current="page" class="nav-link nuxt-link-exact-active nuxt-link-active"><span class="title">文档编辑指南</span></a> <ul class="nav bd-sidenav level2" style="display:none"></ul></li></ul></li></ul></div> <div class="open-sidebar"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></div></div> <div class="bd-content col-sm-7 pl-sm-2 col-12"><div class="post-content content"><div><div class="post-inner"><!----> <div class="nuxt-content"><article><h1 id="%E6%96%87%E6%A1%A3%E7%BC%96%E8%BE%91%E6%8C%87%E5%8D%97" tabindex="-1">文档编辑指南</h1> <h2 id="adding-a-markdown-file" tabindex="-1">新增一个 markdown 文件</h2> <p>在 <code>contents/zh/</code>(中文文章)或 <code>contents/en/</code>(英文文章)目录下新增一个 markdown 文件,最多支持三级目录。将路径及标题信息更新在 <code>contents/zh/posts.yml</code> 或 <code>contents/en/posts.yml</code>。将作者信息添加在 <code>components/helper/contributors.ts</code>。(注意,此文件中 <code>en</code> 和 <code>zh</code> 是不同的条目。)</p> <p>markdown 文件名称小写。</p> <h2 id="using-prettier-to-automatically-format-code" tabindex="-1">使用 prettier 来自动格式化代码</h2> <p>在开始之前,我们推荐安装<code>prettier</code>的 <a href="https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode">VSCode 插件</a>,该插件可以在你保存的时候自动帮你格式化代码。</p> <p>如果你觉得自动的格式化破坏了你的代码块,你可以在在代码块外面加上下面代码阻止<code>prettier</code>格式化该部分代码</p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-markdown line-numbers"><code><span class="token comment">&lt;!-- prettier-ignore-start --></span>
+<span class="token comment">&lt;!-- prettier-ignore-end --></span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <p>如果你发现有的代码块并没有被格式化,请先检查该代码是否存在语法上的错误。</p> <h2 id="built-in-variables" tabindex="-1">内置变量</h2> <ul><li><p><code>optionPath</code>: 例如,链接 <a href="https://echarts.apache.org/option.html#xAxis.type">xAxis.type</a> 能这么写而得到:</p> <pre>[xAxis.type](${optionPath}xAxis.type)</pre></li> <li><p><code>apiPath</code>: 例如,链接 <a href="https://echarts.apache.org/api.html#echarts.init">echarts.init</a> 能这么写而得到:</p> <pre>[echarts.init](${apiPath}echarts.init)</pre></li> <li><p><code>mainSitePath</code>: 例如,链接 <a href="https://echarts.apache.org/api.html#echarts.init">echarts.init</a> 能这么写而得到:</p> <pre>[echarts.init](${mainSitePath}api.html#echarts.init)</pre></li> <li><p><code>exampleEditorPath</code>: 例如,链接 <a href="https://echarts.apache.org/examples/zh/editor.html?c=line-simple&edit=1&reset=1">line-simple</a> 能这么写而得到:</p> <pre>[line-simple](${exampleEditorPath}line-simple&edit=1&reset=1)</pre></li> <li><p><code>exampleViewPath</code>: 例如,链接 <a href="https://echarts.apache.org/examples/zh/view.html?c=line-simple&edit=1&reset=1">line-simple</a> 能这么写而得到:</p> <pre>[line-simple](${exampleViewPath}scatter-exponential-regression&edit=1&reset=1)</pre></li> <li><p><code>lang</code>: 例如,链接 <a href="zh/get-started">Get Started</a> 能这么写而得到:</p> <pre>[Get Started](${lang}/get-started)</pre></li></ul> <h2 id="headings" tabindex="-1">段落标题/子标题</h2> <p>The syntax:</p> <pre>## 某段落标题 [[[#a-unique-id-for-link]]]
+</pre> <blockquote class="md-alert md-alert-danger" data-v-baf1bad2><p data-v-baf1bad2>
+id 用于外链到此段落。强烈建议为每个段落标题声明唯一 id ,并且保持不变。否则,会自动根据段落标题文字生成一个 id ,但是当标题修改时,生成的 id 也会变,导致外链失效。并且,不同语言的文档中生成的 id 也不同,很不方便引用。
+</p></blockquote> <p>注:文章主标题不必声明 id ,因为文章的链接就是文件路径(在 <code>posts.yml</code> 中定义)。</p> <h2 id="link-to-other-articles" tabindex="-1">引用其它文章</h2> <pre>[获取 Apache ECharts](${lang}/basics/download)
+</pre> <p>效果为:
+<a href="zh/basics/download">获取 Apache ECharts</a></p> <h2 id="embedding-code" tabindex="-1">嵌入代码</h2> <h3 id="embedding-code-basic-usage" tabindex="-1">基础使用</h3> <p>写法为:</p> <pre>```js
+option = {
+    series: [{
+        type: 'bar',
+        data: [23, 24, 18, 25, 27, 28, 25]
+    }]
+};
+```
+</pre> <p>效果为:
+</p><div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">23</span><span class="token punctuation">,</span> <span class="token number">24</span><span class="token punctuation">,</span> <span class="token number">18</span><span class="token punctuation">,</span> <span class="token number">25</span><span class="token punctuation">,</span> <span class="token number">27</span><span class="token punctuation">,</span> <span class="token number">28</span><span class="token punctuation">,</span> <span class="token number">25</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div><p></p> <h3 id="embedding-code-recommended-way-of-writing-code" tabindex="-1">代码推荐写法</h3> <p>为了可以让工具帮助我们对代码进行格式化,我们应该尽量避免有语法问题的写法。</p> <p>比如注释 <code>...</code></p> <div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span>
+      <span class="token comment">// ...</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <h3 id="embedding-code-live-preview-and-editing" tabindex="-1">实时预览和编辑</h3> <blockquote><p>目前只支持对 ECharts option 代码的预览(执行代码绘制图表)</p></blockquote> <p>写法为:</p> <pre>```js live
+option = {
+  xAxis: {
+    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
+  },
+  yAxis: {},
+  series: [
+    {
+      type: 'bar',
+      data: [23, 24, 18, 25, 27, 28, 25]
+    }
+  ]
+};
+```
+</pre> <p>效果为:
+</p><div class="md-live layout-tb"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
+  },
+  yAxis: {},
+  series: [
+    {
+      type: 'bar',
+      data: [23, 24, 18, 25, 27, 28, 25]
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'Mon'</span><span class="token punctuation">,</span> <span class="token string">'Tue'</span><span class="token punctuation">,</span> <span class="token string">'Wed'</span><span class="token punctuation">,</span> <span class="token string">'Thu'</span><span class="token punctuation">,</span> <span class="token string">'Fri'</span><span class="token punctuation">,</span> <span class="token string">'Sat'</span><span class="token punctuation">,</span> <span class="token string">'Sun'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">23</span><span class="token punctuation">,</span> <span class="token number">24</span><span class="token punctuation">,</span> <span class="token number">18</span><span class="token punctuation">,</span> <span class="token number">25</span><span class="token punctuation">,</span> <span class="token number">27</span><span class="token punctuation">,</span> <span class="token number">28</span><span class="token punctuation">,</span> <span class="token number">25</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div><p></p> <h3 id="embedding-code-more-preview-layouts" tabindex="-1">更多预览布局</h3> <h4 id="embedding-code-more-preview-layouts-left-to-right" tabindex="-1">左右</h4> <p>写法为:</p> <pre>```js live {layout: 'lr'}
+option = {
+  ...
+};
+```
+</pre> <p>效果为:
+</p><div class="md-live layout-lr"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
+  },
+  yAxis: {},
+  series: [
+    {
+      type: 'bar',
+      data: [23, 24, 18, 25, 27, 28, 25]
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'Mon'</span><span class="token punctuation">,</span> <span class="token string">'Tue'</span><span class="token punctuation">,</span> <span class="token string">'Wed'</span><span class="token punctuation">,</span> <span class="token string">'Thu'</span><span class="token punctuation">,</span> <span class="token string">'Fri'</span><span class="token punctuation">,</span> <span class="token string">'Sat'</span><span class="token punctuation">,</span> <span class="token string">'Sun'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">23</span><span class="token punctuation">,</span> <span class="token number">24</span><span class="token punctuation">,</span> <span class="token number">18</span><span class="token punctuation">,</span> <span class="token number">25</span><span class="token punctuation">,</span> <span class="token number">27</span><span class="token punctuation">,</span> <span class="token number">28</span><span class="token punctuation">,</span> <span class="token number">25</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div><p></p> <h4 id="embedding-code-more-preview-layouts-right-to-left" tabindex="-1">右左</h4> <p>写法为:</p> <pre>```js live {layout: 'rl'}
+option = {
+  ...
+};
+```
+</pre> <p>效果为:
+</p><div class="md-live layout-rl"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
+  },
+  yAxis: {},
+  series: [
+    {
+      type: 'bar',
+      data: [23, 24, 18, 25, 27, 28, 25]
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'Mon'</span><span class="token punctuation">,</span> <span class="token string">'Tue'</span><span class="token punctuation">,</span> <span class="token string">'Wed'</span><span class="token punctuation">,</span> <span class="token string">'Thu'</span><span class="token punctuation">,</span> <span class="token string">'Fri'</span><span class="token punctuation">,</span> <span class="token string">'Sat'</span><span class="token punctuation">,</span> <span class="token string">'Sun'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">23</span><span class="token punctuation">,</span> <span class="token number">24</span><span class="token punctuation">,</span> <span class="token number">18</span><span class="token punctuation">,</span> <span class="token number">25</span><span class="token punctuation">,</span> <span class="token number">27</span><span class="token punctuation">,</span> <span class="token number">28</span><span class="token punctuation">,</span> <span class="token number">25</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div><p></p> <h4 id="embedding-code-more-preview-layouts-down-to-up" tabindex="-1">下上</h4> <p>写法为:</p> <pre>```js live {layout: 'bt'}
+option = {
+  ...
+};
+</pre> <p>效果为:
+</p><div class="md-live layout-bt"><div class="md-live-editor"><div class="md-live-editor-container"><div class="prism-editor-wrapper"><div class="prism-editor__container"><textarea spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">option = {
+  xAxis: {
+    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
+  },
+  yAxis: {},
+  series: [
+    {
+      type: 'bar',
+      data: [23, 24, 18, 25, 27, 28, 25]
+    }
+  ]
+};</textarea><pre data-testid="preview" class="prism-editor__editor">option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">xAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span>
+    <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'Mon'</span><span class="token punctuation">,</span> <span class="token string">'Tue'</span><span class="token punctuation">,</span> <span class="token string">'Wed'</span><span class="token punctuation">,</span> <span class="token string">'Thu'</span><span class="token punctuation">,</span> <span class="token string">'Fri'</span><span class="token punctuation">,</span> <span class="token string">'Sat'</span><span class="token punctuation">,</span> <span class="token string">'Sun'</span><span class="token punctuation">]</span>
+  <span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">yAxis</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">23</span><span class="token punctuation">,</span> <span class="token number">24</span><span class="token punctuation">,</span> <span class="token number">18</span><span class="token punctuation">,</span> <span class="token number">25</span><span class="token punctuation">,</span> <span class="token number">27</span><span class="token punctuation">,</span> <span class="token number">28</span><span class="token punctuation">,</span> <span class="token number">25</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span><br></pre></div></div></div> <div class="md-live-tag">live</div> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div> <div class="md-live-preview"></div></div><p></p> <h3 id="embedding-code-highlighting-lines-of-code-and-adding-filenames" tabindex="-1">高亮指定代码行以及设置文件名</h3> <p>写法为:</p> <pre>```js {1,3-5}[option.js]
+option = {
+  series: [
+    {
+      type: 'bar',
+      data: [23, 24, 18, 25, 27, 28, 25]
+    }
+  ]
+};
+```
+</pre> <p>效果为:
+</p><div class="md-code-block"><div class="nuxt-content-highlight"><pre class="language-js line-numbers"><code>option <span class="token operator">=</span> <span class="token punctuation">{</span>
+  <span class="token literal-property property">series</span><span class="token operator">:</span> <span class="token punctuation">[</span>
+    <span class="token punctuation">{</span>
+      <span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'bar'</span><span class="token punctuation">,</span>
+      <span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">23</span><span class="token punctuation">,</span> <span class="token number">24</span><span class="token punctuation">,</span> <span class="token number">18</span><span class="token punctuation">,</span> <span class="token number">25</span><span class="token punctuation">,</span> <span class="token number">27</span><span class="token punctuation">,</span> <span class="token number">28</span><span class="token punctuation">,</span> <span class="token number">25</span><span class="token punctuation">]</span>
+    <span class="token punctuation">}</span>
+  <span class="token punctuation">]</span>
+<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div> <!----> <div class="clipboard" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-6 w-6" data-v-479657ca><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" data-v-479657ca></path></svg></svg></div></div><p></p> <h2 id="embedding-images" tabindex="-1">嵌入图片</h2> <p>图片实际存放地址在 <code>static/images/</code> 下。</p> <p>写法为:</p> <pre><code>![图片说明](images/demo.png)
+</code></pre> <h3 id="embedding-images-set-width-height" tabindex="-1">设置图片高宽</h3> <p>对于当前页面的临时样式,可以直接写 html:</p> <pre><code>&lt;img data-src="images/demo.png" style="width: 50px" />
+</code></pre> <h2 id="embedding-examples" tabindex="-1">嵌入示例(iframe)</h2> <p>写法为:</p> <pre><code>&lt;md-example src="doc-example/getting-started" width="100%" height="300" />
+</code></pre> <p>其中,<code>src</code> 为 <a href="https://echarts.apache.org/examples/zh/editor.html?c=line-simple">https://echarts.apache.org/examples/zh/editor.html?c=line-simple</a> 地址中 <code>?c=</code> 后面这一串。</p> <p>效果为:
+<iframe width="100%" height="300" src=""></iframe></p> <h2 id="link-to-examples" tabindex="-1">添加示例链接</h2> <p>写法为:</p> <pre>[line-simple](${exampleEditorPath}line-simple&edit=1&reset=1)</pre> <p>效果为:<a href="https://echarts.apache.org/examples/zh/editor.html?c=line-simple&edit=1&reset=1">line-simple</a></p> <h2 id="link-to-echarts-option-items" tabindex="-1">添加 ECharts 配置项链接</h2> <p>写法为:</p> <pre>[xAxis.type](${optionPath}xAxis.type)</pre> <p>效果为:
+<a href="https://echarts.apache.org/option.html#xAxis.type">xAxis.type</a></p> <p>写法为:</p> <pre>[echarts.init](${apiPath}echarts.init)</pre> <p>效果为:
+<a href="https://echarts.apache.org/api.html#echarts.init">echarts.init</a></p> <h2 id="more-component-usage" tabindex="-1">更多组件使用</h2> <p>文档支持使用全局注册的<code>markdown</code>组件,除了刚才介绍的<code>md-example</code>组件,还有下面几种组件</p> <h3 id="more-component-usage-md-alert" tabindex="-1">md-alert</h3> <p>提示组件</p> <pre><code>&lt;md-alert type="info">
+This is an info alert.
+&lt;/md-alert>
+</code></pre> <blockquote class="md-alert md-alert-info" data-v-baf1bad2><p data-v-baf1bad2>
+This is an info alert.
+</p></blockquote> <pre><code>&lt;md-alert type="success">
+This is a success alert.
+&lt;/md-alert>
+</code></pre> <blockquote class="md-alert md-alert-success" data-v-baf1bad2><p data-v-baf1bad2>
+This is a success alert.
+</p></blockquote> <pre><code>&lt;md-alert type="warning">
+This is a warning alert.
+&lt;/md-alert>
+</code></pre> <blockquote class="md-alert md-alert-warning" data-v-baf1bad2><p data-v-baf1bad2>
+This is a warning alert.
+</p></blockquote> <pre><code>&lt;md-alert type="danger">
+This is a danger alert.
+&lt;/md-alert>
+</code></pre> <blockquote class="md-alert md-alert-danger" data-v-baf1bad2><p data-v-baf1bad2>
+This is a danger alert.
+</p></blockquote></article></div></div> <div class="post-contributors"><h3><span class="inline-block align-middle">本文贡献者</span> <a target="_blank" href="https://github.com/apache/echarts-handbook/tree/master/contents/zh/meta/edit-guide.md" title="编辑本文" class="inline-block align-middle text-sm"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-8 w-8 inline-block align-middle"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span class="inline-block align-middle">在 GitHub 上编辑本页</span></a></h3> <div class="post-contributors-list"><a href="https://github.com/pissang" target="_blank" class="post-contributor has-avatar"><img alt="pissang" src="https://echarts.apache.org/en/images/people/沈毅.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>pissang</span></a><a href="https://github.com/100pah" target="_blank" class="post-contributor has-avatar"><img alt="100pah" src="https://echarts.apache.org/en/images/people/宿爽.jpg?_v_=20240226" loading="lazy" decoding="async" fetchpriority="low"> <span>100pah</span></a><a href="https://github.com/suisuiz" target="_blank" class="post-contributor"><!----> <span>suisuiz</span></a></div></div></div></div></div></div></div></div></div></div><script>window.__NUXT__=function(e,t,i,r,n,d,a,l,o,p,s,c,h,g,m,C,I,b,A,u,w,y,x,f,B,v,k,L,S,z,O,V,P,j,D,M,G,R,X,E,J,W,T,U,q,H,Y,N,F,Q,K,_,Z,$,ee,te,ie,re,ne,de,ae,le,oe){return{layout:"default",data:[{html:'<h1 id="%E6%96%87%E6%A1%A3%E7%BC%96%E8%BE%91%E6%8C%87%E5%8D%97" tabindex="-1">文档编辑指南</h1>\n<h2 id="adding-a-markdown-file" tabindex="-1">新增一个 markdown 文件</h2>\n<p>在 <code>contents/zh/</code>(中文文章)或 <code>contents/en/</code>(英文文章)目录下新增一个 markdown 文件,最多支持三级目录。将路径及标题信息更新在 <code>contents/zh/posts.yml</code> 或 <code>contents/en/posts.yml</code>。将作者信息添加在 <code>components/helper/contributors.ts</code>。(注意,此文件中 <code>en</code> 和 <code>zh</code> 是不同的条目。)</p>\n<p>markdown 文件名称小写。</p>\n<h2 id="using-prettier-to-automatically-format-code" tabindex="-1">使用 prettier 来自动格式化代码</h2>\n<p>在开始之前,我们推荐安装<code>prettier</code>的 <a href="https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode">VSCode 插件</a>,该插件可以在你保存的时候自动帮你格式化代码。</p>\n<p>如果你觉得自动的格式化破坏了你的代码块,你可以在在代码块外面加上下面代码阻止<code>prettier</code>格式化该部分代码</p>\n<md-code-block lang="markdown" code="\'PCEtLSBwcmV0dGllci1pZ25vcmUtc3RhcnQgLS0-CjwhLS0gcHJldHRpZXItaWdub3JlLWVuZCAtLT4\'" line-highlights="\'\'" />\n<p>如果你发现有的代码块并没有被格式化,请先检查该代码是否存在语法上的错误。</p>\n<h2 id="built-in-variables" tabindex="-1">内置变量</h2>\n<ul>\n<li>\n<p><code>optionPath</code>: 例如,链接 <a href="https://echarts.apache.org/option.html#xAxis.type">xAxis.type</a> 能这么写而得到:</p>\n<pre>&#91;xAxis.type&#93;&#40;&#36;{optionPath}xAxis.type&#41;</pre>\n</li>\n<li>\n<p><code>apiPath</code>: 例如,链接 <a href="https://echarts.apache.org/api.html#echarts.init">echarts.init</a> 能这么写而得到:</p>\n<pre>&#91;echarts.init&#93;&#40;&#36;{apiPath}echarts.init&#41;</pre>\n</li>\n<li>\n<p><code>mainSitePath</code>: 例如,链接 <a href="https://echarts.apache.org/api.html#echarts.init">echarts.init</a> 能这么写而得到:</p>\n<pre>&#91;echarts.init&#93;&#40;&#36;{mainSitePath}api.html#echarts.init&#41;</pre>\n</li>\n<li>\n<p><code>exampleEditorPath</code>: 例如,链接 <a href="https://echarts.apache.org/examples/zh/editor.html?c=line-simple&amp;edit=1&amp;reset=1">line-simple</a> 能这么写而得到:</p>\n<pre>&#91;line-simple&#93;&#40;&#36;{exampleEditorPath}line-simple&edit=1&reset=1&#41;</pre>\n</li>\n<li>\n<p><code>exampleViewPath</code>: 例如,链接 <a href="https://echarts.apache.org/examples/zh/view.html?c=line-simple&amp;edit=1&amp;reset=1">line-simple</a> 能这么写而得到:</p>\n<pre>&#91;line-simple&#93;&#40;&#36;{exampleViewPath}scatter-exponential-regression&edit=1&reset=1&#41;</pre>\n</li>\n<li>\n<p><code>lang</code>: 例如,链接 <a href="zh/get-started">Get Started</a> 能这么写而得到:</p>\n<pre>&#91;Get Started&#93;&#40;&#36;{lang}/get-started&#41;</pre>\n</li>\n</ul>\n<h2 id="headings" tabindex="-1">段落标题/子标题</h2>\n<p>The syntax:</p>\n\x3c!-- prettier-ignore-start --\x3e\n<pre>\n&#35;&#35; 某段落标题 [[[#a-unique-id-for-link]]]\n</pre>\n\x3c!-- prettier-ignore-end --\x3e\n<md-alert type="danger">\nid 用于外链到此段落。强烈建议为每个段落标题声明唯一 id ,并且保持不变。否则,会自动根据段落标题文字生成一个 id ,但是当标题修改时,生成的 id 也会变,导致外链失效。并且,不同语言的文档中生成的 id 也不同,很不方便引用。\n</md-alert>\n<p>注:文章主标题不必声明 id ,因为文章的链接就是文件路径(在 <code>posts.yml</code> 中定义)。</p>\n<h2 id="link-to-other-articles" tabindex="-1">引用其它文章</h2>\n<pre>\n&#91;获取 Apache ECharts&#93;&#40;&#36;{lang}/basics/download&#41;\n</pre>\n<p>效果为:\n<a href="zh/basics/download">获取 Apache ECharts</a></p>\n<h2 id="embedding-code" tabindex="-1">嵌入代码</h2>\n<h3 id="embedding-code-basic-usage" tabindex="-1">基础使用</h3>\n<p>写法为:</p>\n\x3c!-- prettier-ignore-start --\x3e\n<pre>\n&#96;&#96;&#96;js\noption = {\n    series: [{\n        type: \'bar\',\n        data: [23, 24, 18, 25, 27, 28, 25]\n    }]\n};\n&#96;&#96;&#96;\n</pre>\n\x3c!-- prettier-ignore-end --\x3e\n<p>效果为:\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIHNlcmllczogWwogICAgewogICAgICB0eXBlOiAnYmFyJywKICAgICAgZGF0YTogWzIzLCAyNCwgMTgsIDI1LCAyNywgMjgsIDI1XQogICAgfQogIF0KfTs\'" line-highlights="\'\'" /></p>\n<h3 id="embedding-code-recommended-way-of-writing-code" tabindex="-1">代码推荐写法</h3>\n<p>为了可以让工具帮助我们对代码进行格式化,我们应该尽量避免有语法问题的写法。</p>\n<p>比如注释 <code>...</code></p>\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIHNlcmllczogWwogICAgewogICAgICB0eXBlOiAnYmFyJwogICAgICAvLyAuLi4KICAgIH0KICBdCn07\'" line-highlights="\'\'" />\n<h3 id="embedding-code-live-preview-and-editing" tabindex="-1">实时预览和编辑</h3>\n<blockquote>\n<p>目前只支持对 ECharts option 代码的预览(执行代码绘制图表)</p>\n</blockquote>\n<p>写法为:</p>\n\x3c!-- prettier-ignore-start --\x3e\n<pre>\n&#96;&#96;&#96;js live\noption = {\n  xAxis: {\n    data: [\'Mon\', \'Tue\', \'Wed\', \'Thu\', \'Fri\', \'Sat\', \'Sun\']\n  },\n  yAxis: {},\n  series: [\n    {\n      type: \'bar\',\n      data: [23, 24, 18, 25, 27, 28, 25]\n    }\n  ]\n};\n&#96;&#96;&#96;\n</pre>\n\x3c!-- prettier-ignore-end --\x3e\n<p>效果为:\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBkYXRhOiBbJ01vbicsICdUdWUnLCAnV2VkJywgJ1RodScsICdGcmknLCAnU2F0JywgJ1N1biddCiAgfSwKICB5QXhpczoge30sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIHR5cGU6ICdiYXInLAogICAgICBkYXRhOiBbMjMsIDI0LCAxOCwgMjUsIDI3LCAyOCwgMjVdCiAgICB9CiAgXQp9Ow\'" v-bind="{}" /></p>\n<h3 id="embedding-code-more-preview-layouts" tabindex="-1">更多预览布局</h3>\n<h4 id="embedding-code-more-preview-layouts-left-to-right" tabindex="-1">左右</h4>\n<p>写法为:</p>\n\x3c!-- prettier-ignore-start --\x3e\n<pre>\n&#96;&#96;&#96;js live {layout: \'lr\'}\noption = {\n  ...\n};\n&#96;&#96;&#96;\n</pre>\n\x3c!-- prettier-ignore-end --\x3e\n<p>效果为:\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBkYXRhOiBbJ01vbicsICdUdWUnLCAnV2VkJywgJ1RodScsICdGcmknLCAnU2F0JywgJ1N1biddCiAgfSwKICB5QXhpczoge30sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIHR5cGU6ICdiYXInLAogICAgICBkYXRhOiBbMjMsIDI0LCAxOCwgMjUsIDI3LCAyOCwgMjVdCiAgICB9CiAgXQp9Ow\'" v-bind="{layout: \'lr\'}" /></p>\n<h4 id="embedding-code-more-preview-layouts-right-to-left" tabindex="-1">右左</h4>\n<p>写法为:</p>\n\x3c!-- prettier-ignore-start --\x3e\n<pre>\n&#96;&#96;&#96;js live {layout: \'rl\'}\noption = {\n  ...\n};\n&#96;&#96;&#96;\n</pre>\n\x3c!-- prettier-ignore-end --\x3e\n<p>效果为:\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBkYXRhOiBbJ01vbicsICdUdWUnLCAnV2VkJywgJ1RodScsICdGcmknLCAnU2F0JywgJ1N1biddCiAgfSwKICB5QXhpczoge30sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIHR5cGU6ICdiYXInLAogICAgICBkYXRhOiBbMjMsIDI0LCAxOCwgMjUsIDI3LCAyOCwgMjVdCiAgICB9CiAgXQp9Ow\'" v-bind="{layout: \'rl\'}" /></p>\n<h4 id="embedding-code-more-preview-layouts-down-to-up" tabindex="-1">下上</h4>\n<p>写法为:</p>\n\x3c!-- prettier-ignore-start --\x3e\n<pre>\n&#96;&#96;&#96;js live {layout: \'bt\'}\noption = {\n  ...\n};\n</pre>\n\x3c!-- prettier-ignore-end --\x3e\n<p>效果为:\n<md-live lang="js" code="\'b3B0aW9uID0gewogIHhBeGlzOiB7CiAgICBkYXRhOiBbJ01vbicsICdUdWUnLCAnV2VkJywgJ1RodScsICdGcmknLCAnU2F0JywgJ1N1biddCiAgfSwKICB5QXhpczoge30sCiAgc2VyaWVzOiBbCiAgICB7CiAgICAgIHR5cGU6ICdiYXInLAogICAgICBkYXRhOiBbMjMsIDI0LCAxOCwgMjUsIDI3LCAyOCwgMjVdCiAgICB9CiAgXQp9Ow\'" v-bind="{layout: \'bt\'}" /></p>\n<h3 id="embedding-code-highlighting-lines-of-code-and-adding-filenames" tabindex="-1">高亮指定代码行以及设置文件名</h3>\n<p>写法为:</p>\n\x3c!-- prettier-ignore-start --\x3e\n<pre>\n&#96;&#96;&#96;js {1,3-5}[option.js]\noption = {\n  series: [\n    {\n      type: \'bar\',\n      data: [23, 24, 18, 25, 27, 28, 25]\n    }\n  ]\n};\n&#96;&#96;&#96;\n</pre>\n\x3c!-- prettier-ignore-end --\x3e\n<p>效果为:\n<md-code-block lang="js" code="\'b3B0aW9uID0gewogIHNlcmllczogWwogICAgewogICAgICB0eXBlOiAnYmFyJywKICAgICAgZGF0YTogWzIzLCAyNCwgMTgsIDI1LCAyNywgMjgsIDI1XQogICAgfQogIF0KfTs\'" line-highlights="\'{1,3-5}\'" /></p>\n<h2 id="embedding-images" tabindex="-1">嵌入图片</h2>\n<p>图片实际存放地址在 <code>static/images/</code> 下。</p>\n<p>写法为:</p>\n<pre><code>![图片说明](images/demo.png)\n</code></pre>\n<h3 id="embedding-images-set-width-height" tabindex="-1">设置图片高宽</h3>\n<p>对于当前页面的临时样式,可以直接写 html:</p>\n<pre><code>&lt;img data-src=&quot;images/demo.png&quot; style=&quot;width: 50px&quot; /&gt;\n</code></pre>\n<h2 id="embedding-examples" tabindex="-1">嵌入示例(iframe)</h2>\n<p>写法为:</p>\n<pre><code>&lt;md-example src=&quot;doc-example/getting-started&quot; width=&quot;100%&quot; height=&quot;300&quot; /&gt;\n</code></pre>\n<p>其中,<code>src</code> 为 <a href="https://echarts.apache.org/examples/zh/editor.html?c=line-simple">https://echarts.apache.org/examples/zh/editor.html?c=line-simple</a> 地址中 <code>?c=</code> 后面这一串。</p>\n<p>效果为:\n<md-example src="doc-example/getting-started" width="100%" height="300" /></p>\n<h2 id="link-to-examples" tabindex="-1">添加示例链接</h2>\n<p>写法为:</p>\n<pre>&#91;line-simple&#93;&#40;&#36;{exampleEditorPath}line-simple&edit=1&reset=1&#41;</pre>\n<p>效果为:<a href="https://echarts.apache.org/examples/zh/editor.html?c=line-simple&amp;edit=1&amp;reset=1">line-simple</a></p>\n<h2 id="link-to-echarts-option-items" tabindex="-1">添加 ECharts 配置项链接</h2>\n<p>写法为:</p>\n<pre>&#91;xAxis.type&#93;&#40;&#36;{optionPath}xAxis.type&#41;</pre>\n<p>效果为:\n<a href="https://echarts.apache.org/option.html#xAxis.type">xAxis.type</a></p>\n<p>写法为:</p>\n<pre>&#91;echarts.init&#93;&#40;&#36;{apiPath}echarts.init&#41;</pre>\n<p>效果为:\n<a href="https://echarts.apache.org/api.html#echarts.init">echarts.init</a></p>\n<h2 id="more-component-usage" tabindex="-1">更多组件使用</h2>\n<p>文档支持使用全局注册的<code>markdown</code>组件,除了刚才介绍的<code>md-example</code>组件,还有下面几种组件</p>\n<h3 id="more-component-usage-md-alert" tabindex="-1">md-alert</h3>\n<p>提示组件</p>\n<pre><code>&lt;md-alert type=&quot;info&quot;&gt;\nThis is an info alert.\n&lt;/md-alert&gt;\n</code></pre>\n<md-alert type="info">\nThis is an info alert.\n</md-alert>\n<pre><code>&lt;md-alert type=&quot;success&quot;&gt;\nThis is a success alert.\n&lt;/md-alert&gt;\n</code></pre>\n<md-alert type="success">\nThis is a success alert.\n</md-alert>\n<pre><code>&lt;md-alert type=&quot;warning&quot;&gt;\nThis is a warning alert.\n&lt;/md-alert&gt;\n</code></pre>\n<md-alert type="warning">\nThis is a warning alert.\n</md-alert>\n<pre><code>&lt;md-alert type=&quot;danger&quot;&gt;\nThis is a danger alert.\n&lt;/md-alert&gt;\n</code></pre>\n<md-alert type="danger">\nThis is a danger alert.\n</md-alert>\n',postPath:"zh/meta/edit-guide",title:"文档编辑指南 - 编辑本文档"}],fetch:{},error:null,state:{filled:!1,docVersion:"",ghVersion:"",visibleAffix:!1,homepage:{},adBlocked:!1,focusMode:!1,posts:{zh:[{title:"快速上手",dir:r},{title:"入门篇",dir:n,children:[{title:"获取 ECharts",dir:d},{title:"在项目中引入 ECharts",dir:a},{title:"资源列表",dir:l,draft:e},{title:"寻求帮助",dir:o},{title:"版本特性",dir:p,children:[{title:"ECharts 6 特性介绍",dir:s},{title:"v5 升级 v6 指南",dir:c},{title:"5.0",dir:h},{title:"v4 升级 v5 指南",dir:g},{title:5.2,dir:m},{title:5.3,dir:C},{title:5.4,dir:I},{title:5.5,dir:b},{title:5.6,dir:A}]}]},{title:"概念篇",dir:u,children:[{title:"图表容器及大小",dir:w},{title:"配置项",dir:y,draft:e},{title:"系列",dir:x,draft:e},{title:"样式",dir:f},{title:"数据集",dir:B},{title:"数据转换",dir:v},{title:"坐标系",dir:k,draft:e},{title:"坐标轴",dir:L},{title:"视觉映射",dir:i},{title:"图例",dir:S},{title:"事件与行为",dir:z}]},{title:"应用篇",dir:O,children:[{title:"常用图表类型",dir:V,children:[{title:"柱状图",dir:"bar",children:[{title:"基础柱状图",dir:P},{title:"堆叠柱状图",dir:j},{title:"动态排序柱状图",dir:D},{title:"极坐标系柱状图",dir:M,draft:e},{title:"阶梯瀑布图",dir:G},{title:"视觉映射的柱状图",dir:i,draft:e}]},{title:"折线图",dir:R,children:[{title:"基础折线图",dir:X},{title:"堆叠折线图",dir:E},{title:"区域面积图",dir:J},{title:"平滑曲线图",dir:W},{title:"阶梯线图",dir:T}]},{title:"饼图",dir:"pie",children:[{title:"基础饼图",dir:U},{title:"圆环图",dir:q},{title:"南丁格尔图(玫瑰图)",dir:"rose"}]},{title:"散点图",dir:H,children:[{title:"基础散点图",dir:Y}]}]},{title:"常用组件",dir:N,children:[{title:"地理坐标系(Geo)",dir:"geo",children:[{title:"SVG 底图",dir:F}]}]},{title:"移动端优化",dir:t,draft:e},{title:"跨平台方案",dir:Q,children:[{title:"服务端渲染",dir:"server"},{title:"微信小程序",dir:"wechat-app"},{title:"百度智能小程序",dir:"baidu-app"}]},{title:"数据处理",dir:"data",children:[{title:"动态的异步数据",dir:K},{title:"数据下钻",dir:_,draft:e}]},{title:"标签",dir:"label",children:[{title:"富文本标签",dir:Z}]},{title:"动画",dir:$,children:[{title:"数据过渡动画",dir:ee}]},{title:"交互",dir:te,children:[{title:"拖拽的实现",dir:"drag"},{title:"多图联动",dir:ie,draft:e},{title:"智能指针吸附",dir:re}]}]},{title:"最佳实践",dir:ne,children:[{title:"移动端优化",dir:t,draft:e},{title:de,dir:ae},{title:"无障碍访问",dir:"aria"},{title:"安全指南",dir:le}]},{title:"编辑本文档",dir:"meta",children:[{title:"文档编辑指南",dir:oe}]}],en:[{title:"Get Started",dir:r},{title:"Basics",dir:n,children:[{title:"Download ECharts",dir:d},{title:"Import ECharts",dir:a},{title:"Resources",dir:l,draft:e},{title:"Get Help",dir:o},{title:"What's New",dir:p,children:[{title:"ECharts 6 Features",dir:s},{title:"Migration from v5 to v6",dir:c},{title:"5.0",dir:h},{title:"Migration from v4 to v5",dir:g},{title:5.2,dir:m},{title:5.3,dir:C},{title:5.4,dir:I},{title:5.5,dir:b},{title:5.6,dir:A}]}]},{title:"Concepts",dir:u,children:[{title:"Chart Container",dir:w},{title:"Chart Option",dir:y,draft:e},{title:"Series",dir:x,draft:e},{title:"Style",dir:f},{title:"Dataset",dir:B},{title:"Data Transform",dir:v},{title:"Coordinate",dir:k,draft:e},{title:"Axis",dir:L},{title:"Visual Mapping",dir:i},{title:"Legend",dir:S},{title:"Event and Action",dir:z}]},{title:"How To Guides",dir:O,children:[{title:"Common Charts",dir:V,children:[{title:"Bar",dir:"bar",children:[{title:"Basic Bar",dir:P},{title:"Stacked Bar",dir:j},{title:"Bar Racing",dir:D},{title:"Bar Polar",dir:M,draft:e},{title:"Waterfall",dir:G}]},{title:"Line",dir:R,children:[{title:"Basic Line",dir:X},{title:"Stacked Line",dir:E},{title:"Area Chart",dir:J},{title:"Smoothed Line",dir:W},{title:"Step Line",dir:T}]},{title:"Pie",dir:"pie",children:[{title:"Basic Pie",dir:U},{title:"Ring Style",dir:q},{title:"Rose Style",dir:"rose"}]},{title:"Scatter",dir:H,children:[{title:"Basic Scatter",dir:Y}]}]},{title:"Common Components",dir:N,children:[{title:"Geo",dir:"geo",children:[{title:"SVG Base Map",dir:F}]}]},{title:"Mobile",dir:t,draft:e},{title:"Cross Platform",dir:Q,children:[{title:"Server Side Rendering",dir:"server"}]},{title:"Data",dir:"data",children:[{title:"Dynamic Data",dir:K},{title:"Drilldown",dir:_,draft:e}]},{title:"Label",dir:"label",children:[{title:"Rich Text",dir:Z}]},{title:"Animation",dir:$,children:[{title:"Data Transition",dir:ee}]},{title:"Interaction",dir:te,children:[{title:"Drag",dir:"drag"},{title:"Connect",dir:ie,draft:e},{title:"Intelligent Pointer Snapping",dir:re}]}]},{title:"Best Practices",dir:ne,children:[{title:"Mobile Optimization",dir:t,draft:e},{title:de,dir:ae},{title:"Aria",dir:"aria"},{title:"Security Guidelines",dir:le}]},{title:"Edit Handbook",dir:"meta",children:[{title:"Edit Guide",dir:oe}]}]},config:{routerBase:"/echarts-handbook",rootPath:"https://apache.github.io/echarts-handbook/",exampleViewPath:"https://echarts.apache.org/examples/${lang}/view.html?c=",exampleEditorPath:"https://echarts.apache.org/examples/${lang}/editor.html?c=",mainSitePath:"https://echarts.apache.org/",optionPath:"https://echarts.apache.org/option.html#",apiPath:"https://echarts.apache.org/api.html#",gitRepo:"apache/echarts-handbook"},i18n:{routeParams:{}}},serverRendered:e,routePath:"/zh/meta/edit-guide",config:{_app:{basePath:"/echarts-handbook/",assetsPath:"/echarts-handbook/_nuxt/",cdnURL:null}}}}(!0,"mobile","visual-map","get-started","basics","download","import","resource","help","release-note","v6-feature","v6-upgrade-guide","v5-feature","v5-upgrade-guide","5-2-0","5-3-0","5-4-0","5-5-0","5-6-0","concepts","chart-size","options","series","style","dataset","data-transform","coordinate","axis","legend","event","how-to","chart-types","basic-bar","stacked-bar","bar-race","polar-bar","waterfall","line","basic-line","stacked-line","area-line","smooth-line","step-line","basic-pie","doughnut","scatter","basic-scatter","component-types","svg-base-map","cross-platform","dynamic-data","drilldown","rich-text","animation","transition","interaction","connect","coarse-pointer","best-practices","Canvas vs. SVG","canvas-vs-svg","security","edit-guide")</script><script src="/echarts-handbook/_nuxt/73c8e4b.js" defer></script><script src="/echarts-handbook/_nuxt/js/e97de2cdc6b7785ece0f.js" defer></script><script src="/echarts-handbook/_nuxt/js/8cbc28eba39ffdac2c44.js" defer></script><script src="/echarts-handbook/_nuxt/js/fa73816a85b29fbf7562.js" defer></script><script src="/echarts-handbook/_nuxt/js/b964c20bb1562bc48da6.js" defer></script><script src="/echarts-handbook/_nuxt/js/58025dad1462d49b8398.js" defer></script><noscript data-n-head="ssr" data-body="true"><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript>
+    <script type="text/javascript">document.getElementById("nav-doc").className="active"</script>
+  </body>
+</html>