This is an automated email from the ASF dual-hosted git repository.

ovilia pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/echarts-doc.git


The following commit(s) were added to refs/heads/master by this push:
     new 8e6325f  feat: doc for colorBy apache/echarts#13788
8e6325f is described below

commit 8e6325f19604583bebbf1b234bb004677dfc0c46
Author: Ovilia <zwl.s...@gmail.com>
AuthorDate: Tue Aug 31 15:16:58 2021 +0800

    feat: doc for colorBy apache/echarts#13788
---
 en/option/partial/colorBy.md      |   8 +
 en/option/series/bar.md           |   2 +
 en/option/series/boxplot.md       |   2 +
 en/option/series/candlestick.md   |   2 +
 en/option/series/custom.md        |   2 +
 en/option/series/effectScatter.md |   2 +
 en/option/series/funnel.md        |   2 +
 en/option/series/gauge.md         |   2 +
 en/option/series/line.md          |   2 +
 en/option/series/lines.md         |   2 +
 en/option/series/map.md           |   2 +
 en/option/series/parallel.md      |   2 +
 en/option/series/pictorialBar.md  |   2 +
 en/option/series/pie.md           |   2 +
 en/option/series/radar.md         |   2 +
 en/option/series/scatter.md       |   2 +
 en/option/series/themeRiver.md    |   2 +
 public/en/css/doc-bundle.css      |  61 +++--
 public/en/css/doc-bundle.css.map  |   2 +-
 public/en/js/doc-bundle.js        | 534 +++++++++++++++++---------------------
 public/zh/css/doc-bundle.css      |  61 +++--
 public/zh/css/doc-bundle.css.map  |   2 +-
 public/zh/js/doc-bundle.js        | 534 +++++++++++++++++---------------------
 zh/option/partial/colorBy.md      |   8 +
 zh/option/series/bar.md           |   2 +
 zh/option/series/boxplot.md       |   2 +
 zh/option/series/candlestick.md   |   2 +
 zh/option/series/custom.md        |   2 +
 zh/option/series/effectScatter.md |   2 +
 zh/option/series/funnel.md        |   2 +
 zh/option/series/gauge.md         |   2 +
 zh/option/series/line.md          |   2 +
 zh/option/series/lines.md         |   2 +
 zh/option/series/map.md           |   2 +
 zh/option/series/parallel.md      |   2 +
 zh/option/series/pictorialBar.md  |   2 +
 zh/option/series/pie.md           |   2 +
 zh/option/series/radar.md         |   2 +
 zh/option/series/scatter.md       |   2 +
 zh/option/series/themeRiver.md    |   2 +
 40 files changed, 630 insertions(+), 644 deletions(-)

diff --git a/en/option/partial/colorBy.md b/en/option/partial/colorBy.md
new file mode 100644
index 0000000..8a3160f
--- /dev/null
+++ b/en/option/partial/colorBy.md
@@ -0,0 +1,8 @@
+{{ target: partial-colorby }}
+
+## colorBy(string) = ${defaultColorBy|default("'series'")}
+
+The policy to take color from [option.color](~color). Valid values:
+
++ `'series'`: assigns the colors in the palette by series, so that all data in 
the same series are in the same color;
++ `'data'`: assigns colors in the palette according to data items, with each 
data item using a different color.
diff --git a/en/option/series/bar.md b/en/option/series/bar.md
index cc32c13..c125a92 100644
--- a/en/option/series/bar.md
+++ b/en/option/series/bar.md
@@ -15,6 +15,8 @@ Bar chart shows different data through the height of a bar, 
which is used in [re
 
 {{ use: partial-series-name() }}
 
+{{ use: partial-colorby() }}
+
 {{ use: partial-legend-hover-link() }}
 
 {{ use: partial-coord-sys(
diff --git a/en/option/series/boxplot.md b/en/option/series/boxplot.md
index 99723dd..798044d 100644
--- a/en/option/series/boxplot.md
+++ b/en/option/series/boxplot.md
@@ -29,6 +29,8 @@ Multiple `series` can be displayed in the same coordinate 
system. Please refer t
 
 {{ use: partial-series-name() }}
 
+{{ use: partial-colorby() }}
+
 {{ use: partial-legend-hover-link() }}
 
 ## hoverAnimation(boolean) = true
diff --git a/en/option/series/candlestick.md b/en/option/series/candlestick.md
index a8551de..f32fb91 100644
--- a/en/option/series/candlestick.md
+++ b/en/option/series/candlestick.md
@@ -42,6 +42,8 @@ We use red to represent increasing and blue decreasing by 
default. If you want t
 
 {{ use: partial-series-name() }}
 
+{{ use: partial-colorby() }}
+
 {{ use: partial-legend-hover-link() }}
 
 ## hoverAnimation(boolean) = true
diff --git a/en/option/series/custom.md b/en/option/series/custom.md
index c18c7e1..f9a9bcb 100644
--- a/en/option/series/custom.md
+++ b/en/option/series/custom.md
@@ -99,6 +99,8 @@ chart.on('click', {element: 'aaa'}, function (params) {
 
 {{ use: partial-series-name() }}
 
+{{ use: partial-colorby() }}
+
 {{ use: partial-legend-hover-link() }}
 
 {{ use: partial-coord-sys(
diff --git a/en/option/series/effectScatter.md 
b/en/option/series/effectScatter.md
index e76a945..a34900d 100644
--- a/en/option/series/effectScatter.md
+++ b/en/option/series/effectScatter.md
@@ -15,6 +15,8 @@ The scatter (bubble) graph with ripple animation. The special 
animation effect c
 
 {{ use: partial-series-name() }}
 
+{{ use: partial-colorby() }}
+
 {{ use: partial-legend-hover-link() }}
 
 ## effectType(string) = 'ripple'
diff --git a/en/option/series/funnel.md b/en/option/series/funnel.md
index c5e4eb2..8c17eee 100644
--- a/en/option/series/funnel.md
+++ b/en/option/series/funnel.md
@@ -16,6 +16,8 @@
 
 {{ use: partial-series-name() }}
 
+{{ use: partial-colorby(defaultColorBy="'data'") }}
+
 ## min(number) = 0
 
 <ExampleUIControlNumber default="0" step="1" />
diff --git a/en/option/series/gauge.md b/en/option/series/gauge.md
index fd179e4..df94976 100644
--- a/en/option/series/gauge.md
+++ b/en/option/series/gauge.md
@@ -16,6 +16,8 @@
 
 {{ use: partial-series-name() }}
 
+{{ use: partial-colorby(defaultColorBy="'data'") }}
+
 {{ use: component-circular-layout() }}
 
 <!-- overwrite radius -->
diff --git a/en/option/series/line.md b/en/option/series/line.md
index a9308b6..70cf379 100644
--- a/en/option/series/line.md
+++ b/en/option/series/line.md
@@ -21,6 +21,8 @@ Broken line chart relates all the data points 
[symbol](~series-line.symbol) by b
 
 {{ use: partial-series-name() }}
 
+{{ use: partial-colorby() }}
+
 {{ use: partial-coord-sys(
     seriesType = "bar",
     coordSysDefault = "'cartesian2d'",
diff --git a/en/option/series/lines.md b/en/option/series/lines.md
index b1f02a8..d022ecc 100644
--- a/en/option/series/lines.md
+++ b/en/option/series/lines.md
@@ -17,6 +17,8 @@ ECharts 2.x uses the `markLine` to draw the migrating effect, 
while in ECharts 3
 
 {{ use: partial-series-name() }}
 
+{{ use: partial-colorby() }}
+
 {{ use: partial-coord-sys(
     seriesType = "lines",
     coordSysDefault = "'geo'",
diff --git a/en/option/series/map.md b/en/option/series/map.md
index 07c7dfb..d2f96a6 100644
--- a/en/option/series/map.md
+++ b/en/option/series/map.md
@@ -17,6 +17,8 @@ Series of same [map type](~series-map.map) will show in one 
map. At this point,
 
 {{ use: partial-series-name() }}
 
+{{ use: partial-colorby() }}
+
 {{ use: geo-common(
     prefix = '#',
     inMap = true
diff --git a/en/option/series/parallel.md b/en/option/series/parallel.md
index be946a1..bdf51d3 100644
--- a/en/option/series/parallel.md
+++ b/en/option/series/parallel.md
@@ -190,6 +190,8 @@ const option = {
 
 {{ use: partial-series-name() }}
 
+{{ use: partial-colorby() }}
+
 {{ use: partial-parallel-line-style(
     prefix = "#"
 ) }}
diff --git a/en/option/series/pictorialBar.md b/en/option/series/pictorialBar.md
index b0a0c3d..8ddefa8 100644
--- a/en/option/series/pictorialBar.md
+++ b/en/option/series/pictorialBar.md
@@ -58,6 +58,8 @@ See the example below:
 
 {{ use: partial-series-name() }}
 
+{{ use: partial-colorby() }}
+
 {{ use: partial-legend-hover-link() }}
 
 {{ use: partial-coord-sys(
diff --git a/en/option/series/pie.md b/en/option/series/pie.md
index a305a62..c104f22 100644
--- a/en/option/series/pie.md
+++ b/en/option/series/pie.md
@@ -27,6 +27,8 @@ For multiple pie series in a single chart, you may use 
[left](~series-pie.left),
 
 {{ use: partial-series-name() }}
 
+{{ use: partial-colorby(defaultColorBy="'data'") }}
+
 {{ use: partial-legend-hover-link() }}
 
 {{ use: partial-selected-mode() }}
diff --git a/en/option/series/radar.md b/en/option/series/radar.md
index cb2acfc..23d28a7 100644
--- a/en/option/series/radar.md
+++ b/en/option/series/radar.md
@@ -19,6 +19,8 @@ Here is the example of AQI data which is presented in radar 
chart.
 
 {{ use: partial-series-name() }}
 
+{{ use: partial-colorby(defaultColorBy="'data'") }}
+
 ## radarIndex(number)
 
 Index of [radar](~radar) component that radar chart uses.
diff --git a/en/option/series/scatter.md b/en/option/series/scatter.md
index 2ebe7bc..1f383e4 100644
--- a/en/option/series/scatter.md
+++ b/en/option/series/scatter.md
@@ -16,6 +16,8 @@ It could be used with [rectangular coordinate](~grid) and 
[polar coordinate](~po
 
 {{ use: partial-series-name() }}
 
+{{ use: partial-colorby() }}
+
 {{ use: partial-coord-sys(
     seriesType = "bar",
     coordSysDefault = "'cartesian2d'",
diff --git a/en/option/series/themeRiver.md b/en/option/series/themeRiver.md
index 48bf85d..c6e162a 100644
--- a/en/option/series/themeRiver.md
+++ b/en/option/series/themeRiver.md
@@ -27,6 +27,8 @@ What's more, the time attribute of the orinigal dataset would 
map to a single ti
 
 {{ use: partial-series-name() }}
 
+{{ use: partial-colorby(defaultColorBy="'data'") }}
+
 {{ use: partial-rect-layout-width-height(
     componentName = 'thmemRiver',
     defaultLeft = '5%',
diff --git a/public/en/css/doc-bundle.css b/public/en/css/doc-bundle.css
index f7f34cc..6715268 100644
--- a/public/en/css/doc-bundle.css
+++ b/public/en/css/doc-bundle.css
@@ -248,17 +248,14 @@
   position: relative;
   padding: 15px 0;
 }
-.doc-content-item-card.current {
-    border-top: 1px solid #b03a5b;
-}
 .doc-content-item-card .hierarchy-line {
     position: absolute;
     top: 35px;
     bottom: 0px;
     left: -14px;
     width: 10px;
-    border-left: 1px solid #C592A0;
-    border-bottom: 1px solid #C592A0;
+    border-left: 1px solid #E0E6F1;
+    border-bottom: 1px solid #E0E6F1;
 }
 .doc-content-item-card h4 {
     margin: 0;
@@ -269,15 +266,13 @@
       vertical-align: bottom;
       display: inline-block;
 }
-.doc-content-item-card h4 .el-button {
-      padding: 2px;
-      font-size: 12px;
+.doc-content-item-card h4 .expand-toggle {
+      font-size: 18px;
       margin-left: -23px;
-      color: #C592A0;
-      border-color: #C592A0;
-      border-radius: 4px;
-      background: #fff;
+      color: #9aadd1;
+      cursor: pointer;
       position: relative;
+      background-color: #fff;
 }
 .doc-content-item-card h4 .anchor {
       color: #C592A0;
@@ -316,6 +311,10 @@
 .doc-content-item-card h4 .path-parent a:hover, .doc-content-item-card h4 
.path-base a:hover {
         text-decoration: underline;
 }
+.doc-content-item-card h4 .current-flag {
+      color: #434343;
+      font-size: 20px;
+}
 .doc-content-item-card h4 .default-value {
       color: #434343;
       font-size: 16px;
@@ -358,6 +357,9 @@
 .doc-content-item-card.level-2 > h4 .path-base {
     font-size: 16px;
 }
+.doc-content-item-card.level-2 > h4 .current-flag {
+    font-size: 16px;
+}
 .doc-content-item-card.level-3 > h4 .anchor {
     font-size: 16px;
 }
@@ -367,6 +369,9 @@
 .doc-content-item-card.level-3 > h4 .path-base {
     font-size: 16px;
 }
+.doc-content-item-card.level-3 > h4 .current-flag {
+    font-size: 16px;
+}
 .doc-content-item-card.level-2 {
     border-top: 1px solid #eee;
     margin-top: 10px;
@@ -376,7 +381,7 @@
       width: 28px;
       margin-left: -39px;
       margin-right: 2px;
-      border-top: 1px solid #C592A0;
+      border-top: 1px solid #E0E6F1;
       position: relative;
 }
 .doc-content-item-card.level-3 {
@@ -388,7 +393,7 @@
       width: 28px;
       margin-left: -39px;
       margin-right: 2px;
-      border-top: 1px solid #C592A0;
+      border-top: 1px solid #E0E6F1;
       position: relative;
 }
 .doc-content-item-card.level-4 {
@@ -400,7 +405,7 @@
       width: 28px;
       margin-left: -39px;
       margin-right: 2px;
-      border-top: 1px solid #C592A0;
+      border-top: 1px solid #E0E6F1;
       position: relative;
 }
 .doc-content-item-card.level-5 {
@@ -412,7 +417,7 @@
       width: 28px;
       margin-left: -39px;
       margin-right: 2px;
-      border-top: 1px solid #C592A0;
+      border-top: 1px solid #E0E6F1;
       position: relative;
 }
 .doc-content-item-card.level-6 {
@@ -424,7 +429,7 @@
       width: 28px;
       margin-left: -39px;
       margin-right: 2px;
-      border-top: 1px solid #C592A0;
+      border-top: 1px solid #E0E6F1;
       position: relative;
 }
 .doc-content-item-card.level-7 {
@@ -436,7 +441,7 @@
       width: 28px;
       margin-left: -39px;
       margin-right: 2px;
-      border-top: 1px solid #C592A0;
+      border-top: 1px solid #E0E6F1;
       position: relative;
 }
 .doc-content-item-card.level-8 {
@@ -448,7 +453,7 @@
       width: 28px;
       margin-left: -39px;
       margin-right: 2px;
-      border-top: 1px solid #C592A0;
+      border-top: 1px solid #E0E6F1;
       position: relative;
 }
 .doc-content-item-card.level-9 {
@@ -460,7 +465,7 @@
       width: 28px;
       margin-left: -39px;
       margin-right: 2px;
-      border-top: 1px solid #C592A0;
+      border-top: 1px solid #E0E6F1;
       position: relative;
 }
 .doc-content-item-card.level-10 {
@@ -472,7 +477,7 @@
       width: 28px;
       margin-left: -39px;
       margin-right: 2px;
-      border-top: 1px solid #C592A0;
+      border-top: 1px solid #E0E6F1;
       position: relative;
 }
 .doc-content-item-card.level-11 {
@@ -484,7 +489,7 @@
       width: 28px;
       margin-left: -39px;
       margin-right: 2px;
-      border-top: 1px solid #C592A0;
+      border-top: 1px solid #E0E6F1;
       position: relative;
 }
 .doc-content-item-card .prop-types {
@@ -962,6 +967,7 @@ span.CodeMirror-selectedtext { background: none; }
     top: 0;
 }
 #example-panel .preview-main {
+    position: relative;
     padding: 0 10px;
     background: #fefefe;
     box-sizing: border-box;
@@ -1255,6 +1261,14 @@ span.CodeMirror-selectedtext { background: none; }
 .doc-content .item-description a {
       font-family: 'Source Code Pro', STHeiti, "Microsoft Yahei", "WenQuanYi 
Micro Hei", sans-serif;
 }
+.doc-content table {
+    border: 1px solid #ddd;
+    border-collapse: collapse;
+}
+.doc-content th, .doc-content td {
+    padding: 10px;
+    border: 1px solid #eee;
+}
 .ec-doc-tutorial .page-description h2 {
   font-weight: normal;
   font-size: 22px;
@@ -1290,7 +1304,8 @@ span.CodeMirror-selectedtext { background: none; }
     width: 100%;
 }
 .el-autocomplete-suggestion.search-input-popper {
-  width: 300px !important;
+  width: auto !important;
+  min-width: 300px;
 }
 .el-autocomplete-suggestion.search-input-popper li {
     line-height: 28px;
diff --git a/public/en/css/doc-bundle.css.map b/public/en/css/doc-bundle.css.map
index e7d87fa..9400afa 100644
--- a/public/en/css/doc-bundle.css.map
+++ b/public/en/css/doc-bundle.css.map
@@ -1 +1 @@
-{"version":3,"sources":["webpack://echartsDoc/./src/components/DocNav.vue?4e19","webpack://echartsDoc/./src/components/PropertiesList.vue?f705","webpack://echartsDoc/./src/controls/ControlColor.vue?00aa","webpack://echartsDoc/./src/controls/ControlNumber.vue?7d88","webpack://echartsDoc/./src/controls/ControlVector.vue?59cc","webpack://echartsDoc/./src/controls/ControlEnum.vue?c193","webpack://echartsDoc/./src/controls/ControlPercent.vue?4384","webpack://echartsDoc/./src/controls/ControlP
 [...]
\ No newline at end of file
+{"version":3,"sources":["webpack://echartsDoc/./src/components/DocNav.vue?4e19","webpack://echartsDoc/./src/components/PropertiesList.vue?f705","webpack://echartsDoc/./src/controls/ControlColor.vue?00aa","webpack://echartsDoc/./src/controls/ControlNumber.vue?7d88","webpack://echartsDoc/./src/controls/ControlVector.vue?59cc","webpack://echartsDoc/./src/controls/ControlEnum.vue?c193","webpack://echartsDoc/./src/controls/ControlPercent.vue?4384","webpack://echartsDoc/./src/controls/ControlP
 [...]
\ No newline at end of file
diff --git a/public/en/js/doc-bundle.js b/public/en/js/doc-bundle.js
index 24b1c24..4ade970 100644
--- a/public/en/js/doc-bundle.js
+++ b/public/en/js/doc-bundle.js
@@ -685,6 +685,7 @@ __webpack_require__.r(__webpack_exports__);
 //
 //
 //
+//
 
 
 
@@ -1059,7 +1060,8 @@ __webpack_require__.r(__webpack_exports__);
 /* harmony import */ var js_beautify__WEBPACK_IMPORTED_MODULE_4___default = 
/*#__PURE__*/__webpack_require__.n(js_beautify__WEBPACK_IMPORTED_MODULE_4__);
 /* harmony import */ var lodash_throttle__WEBPACK_IMPORTED_MODULE_5__ = 
__webpack_require__(/*! lodash.throttle */ 
"./node_modules/lodash.throttle/index.js");
 /* harmony import */ var lodash_throttle__WEBPACK_IMPORTED_MODULE_5___default 
= 
/*#__PURE__*/__webpack_require__.n(lodash_throttle__WEBPACK_IMPORTED_MODULE_5__);
-/* harmony import */ var 
zrender_src_core_arrayDiff__WEBPACK_IMPORTED_MODULE_6__ = 
__webpack_require__(/*! zrender/src/core/arrayDiff */ 
"./node_modules/zrender/src/core/arrayDiff.js");
+/* harmony import */ var 
zrender_lib_core_arrayDiff__WEBPACK_IMPORTED_MODULE_6__ = 
__webpack_require__(/*! zrender/lib/core/arrayDiff */ 
"./node_modules/zrender/lib/core/arrayDiff.js");
+/* harmony import */ var 
zrender_lib_core_arrayDiff__WEBPACK_IMPORTED_MODULE_6___default = 
/*#__PURE__*/__webpack_require__.n(zrender_lib_core_arrayDiff__WEBPACK_IMPORTED_MODULE_6__);
 /* harmony import */ var scroll_into_view__WEBPACK_IMPORTED_MODULE_7__ = 
__webpack_require__(/*! scroll-into-view */ 
"./node_modules/scroll-into-view/scrollIntoView.js");
 /* harmony import */ var scroll_into_view__WEBPACK_IMPORTED_MODULE_7___default 
= 
/*#__PURE__*/__webpack_require__.n(scroll_into_view__WEBPACK_IMPORTED_MODULE_7__);
 /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_8__ = 
__webpack_require__(/*! ../config */ "./src/config.js");
@@ -1156,33 +1158,38 @@ function fetchECharts() {
 function diffUpdateCode(oldCode, newCode, cmInstance) {
   var oldLines = oldCode.split(/\n/);
   var newLines = newCode.split(/\n/);
-  var result = 
Object(zrender_src_core_arrayDiff__WEBPACK_IMPORTED_MODULE_6__["default"])(oldLines,
 newLines);
-  var changedLines = [];
-  var len = result.length;
-
-  for (var i = len - 1; i >= 0; i--) {
-    var item = result[i];
-
-    if (item.cmd === '-') {
-      cmInstance.replaceRange('', {
-        line: item.idx,
-        ch: 0
-      }, {
-        line: item.idx + 1,
-        ch: 0
-      });
+  var diff = 
zrender_lib_core_arrayDiff__WEBPACK_IMPORTED_MODULE_6___default()(oldLines, 
newLines);
+  var changedLines = []; // Remove lines from bottom to top so the line number 
won't be changed.
+
+  for (var i = diff.length - 1; i >= 0; i--) {
+    var item = diff[i];
+
+    if (item.removed) {
+      for (var k = item.count - 1; k >= 0; k--) {
+        var idx = item.indices[k];
+        cmInstance.replaceRange('', {
+          line: idx,
+          ch: 0
+        }, {
+          line: idx + 1,
+          ch: 0
+        });
+      }
     }
   }
 
-  for (var _i = 0; _i < len; _i++) {
-    var _item = result[_i];
+  for (var _i = 0; _i < diff.length; _i++) {
+    var _item = diff[_i];
 
-    if (_item.cmd === '+') {
-      cmInstance.replaceRange(newLines[_item.idx] + '\n', {
-        line: _item.idx,
-        ch: 0
-      });
-      changedLines.push(_item.idx);
+    if (_item.added) {
+      for (var _k = 0; _k < _item.count; _k++) {
+        var _idx = _item.indices[_k];
+        cmInstance.replaceRange(newLines[_idx] + '\n', {
+          line: _idx,
+          ch: 0
+        });
+        changedLines.push(_idx);
+      }
     }
   }
 
@@ -1190,7 +1197,7 @@ function diffUpdateCode(oldCode, newCode, cmInstance) {
     cmInstance.addLineClass(idx, 'wrap', 'option-changed');
   });
 
-  if (len) {
+  if (diff.length) {
     setTimeout(function () {
       cmInstance.scrollIntoView({
         line: changedLines[0],
@@ -1615,7 +1622,7 @@ __webpack_require__.r(__webpack_exports__);
   },
   methods: {
     getDesc: function getDesc(path) {
-      return this.descMap[path];
+      return this.descMap[path] && this.descMap[path].desc;
     },
     getName: function getName(path) {
       return path.split('.').pop();
@@ -9008,71 +9015,68 @@ var render = function() {
     [
       _vm.expanded ? _c("div", { staticClass: "hierarchy-line" }) : _vm._e(),
       _vm._v(" "),
-      _c(
-        "h4",
-        [
-          _vm.depth > 1 ? _c("span", { staticClass: "guider" }) : _vm._e(),
-          _vm._v(" "),
-          _vm.supportsExpandable
-            ? _c("el-button", {
-                attrs: {
-                  plain: "",
-                  circle: "",
-                  size: "mini",
-                  icon: _vm.expanded ? "el-icon-minus" : "el-icon-plus"
-                },
-                on: { click: _vm.toggleExpanded }
-              })
-            : _vm._e(),
-          _vm._v(" "),
-          !_vm.shared.isMobile
-            ? _c(
-                "span",
-                { staticClass: "path-parent" },
-                _vm._l(_vm.parentPath, function(item) {
-                  return _c(
-                    "a",
-                    { key: item.link, attrs: { href: "#" + item.link } },
-                    [_vm._v(_vm._s(item.text) + ".")]
-                  )
-                }),
-                0
-              )
-            : _vm._e(),
-          _vm._v(" "),
-          _c("span", { staticClass: "path-base" }, [
-            _c("a", { attrs: { href: "#" + _vm.baseName.link } }, [
-              _vm._v(_vm._s(_vm.baseName.text))
+      _c("h4", [
+        _vm.depth > 1 ? _c("span", { staticClass: "guider" }) : _vm._e(),
+        _vm._v(" "),
+        _vm.supportsExpandable
+          ? _c("i", {
+              staticClass: "expand-toggle",
+              class: _vm.expanded
+                ? "el-icon-remove-outline"
+                : "el-icon-circle-plus-outline",
+              on: { click: _vm.toggleExpanded }
+            })
+          : _vm._e(),
+        _vm._v(" "),
+        !_vm.shared.isMobile
+          ? _c(
+              "span",
+              { staticClass: "path-parent" },
+              _vm._l(_vm.parentPath, function(item) {
+                return _c(
+                  "a",
+                  { key: item.link, attrs: { href: "#" + item.link } },
+                  [_vm._v(_vm._s(item.text) + ".")]
+                )
+              }),
+              0
+            )
+          : _vm._e(),
+        _vm._v(" "),
+        _c("span", { staticClass: "path-base" }, [
+          _c("a", { attrs: { href: "#" + _vm.baseName.link } }, [
+            _vm._v(_vm._s(_vm.baseName.text))
+          ])
+        ]),
+        _vm._v(" "),
+        _vm.shared.currentPath === _vm.nodeData.path
+          ? _c("span", { staticClass: "current-flag" }, [
+              _c("i", { staticClass: "el-icon-caret-left" })
             ])
-          ]),
-          _vm._v(" "),
-          _vm.nodeData.default && _vm.nodeData.default !== "*"
-            ? _c("span", { staticClass: "default-value" }, [
-                _vm._v(" = " + _vm._s(_vm.nodeData.default))
-              ])
-            : _vm._e(),
-          _vm._v(" "),
-          _vm.uiControl && _vm.shared.allOptionExamples && !_vm.shared.isMobile
-            ? _c(
-                "span",
-                {
-                  class: [
-                    "control-toggle",
-                    _vm.enableUIControl ? "active" : ""
-                  ],
-                  on: { click: _vm.toggleUIControl }
-                },
-                [
-                  _c("i", [_vm._v("")]),
-                  _vm._v(
-                    " " + _vm._s(_vm.$t("example.tryDesc")) + "\n            "
-                  )
-                ]
-              )
-            : _vm._e()
-        ],
-        1
-      ),
+          : _vm._e(),
+        _vm._v(" "),
+        _vm.nodeData.default && _vm.nodeData.default !== "*"
+          ? _c("span", { staticClass: "default-value" }, [
+              _vm._v(" = " + _vm._s(_vm.nodeData.default))
+            ])
+          : _vm._e(),
+        _vm._v(" "),
+        _vm.uiControl && _vm.shared.allOptionExamples && !_vm.shared.isMobile
+          ? _c(
+              "span",
+              {
+                class: ["control-toggle", _vm.enableUIControl ? "active" : ""],
+                on: { click: _vm.toggleUIControl }
+              },
+              [
+                _c("i", [_vm._v("")]),
+                _vm._v(
+                  " " + _vm._s(_vm.$t("example.tryDesc")) + "\n            "
+                )
+              ]
+            )
+          : _vm._e()
+      ]),
       _vm._v(" "),
       _c(
         "div",
@@ -9105,26 +9109,24 @@ var render = function() {
         domProps: { innerHTML: _vm._s(_vm.desc) }
       }),
       _vm._v(" "),
-      _vm.supportsExpandable
+      _vm.supportsExpandable && _vm.expanded
         ? _c(
             "div",
             { staticClass: "children" },
             _vm._l(_vm.nodeData.children, function(child) {
-              return _vm.expanded
-                ? _c("DocContentItemCard", {
-                    key: child.path,
-                    attrs: {
-                      "node-data": child,
-                      "desc-map": _vm.descMap,
-                      depth: _vm.depth + 1,
-                      "max-depth": _vm.maxDepth
-                    },
-                    on: {
-                      "toggle-expanded": _vm.bubbleEventToggleExapndedEvent,
-                      "scroll-to-self": _vm.bubbleScrollToSelfEvent
-                    }
-                  })
-                : _vm._e()
+              return _c("DocContentItemCard", {
+                key: child.path,
+                attrs: {
+                  "node-data": child,
+                  "desc-map": _vm.descMap,
+                  depth: _vm.depth + 1,
+                  "max-depth": _vm.maxDepth
+                },
+                on: {
+                  "toggle-expanded": _vm.bubbleEventToggleExapndedEvent,
+                  "scroll-to-self": _vm.bubbleScrollToSelfEvent
+                }
+              })
             }),
             1
           )
@@ -10571,223 +10573,159 @@ module.exports = g;
 
 /***/ }),
 
-/***/ "./node_modules/zrender/src/core/arrayDiff.js":
+/***/ "./node_modules/zrender/lib/core/arrayDiff.js":
 /*!****************************************************!*\
-  !*** ./node_modules/zrender/src/core/arrayDiff.js ***!
+  !*** ./node_modules/zrender/lib/core/arrayDiff.js ***!
   \****************************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
-__webpack_require__.r(__webpack_exports__);
-// Hirschberg's algorithm
-// http://en.wikipedia.org/wiki/Hirschberg%27s_algorithm
 
-/**
- * @module zrender/core/arrayDiff
- * @author Yi Shen
- */
-
-function defaultCompareFunc(a, b) {
-    return a === b;
-}
-
-function createItem(cmd, idx, idx1) {
-    var res = {
-        // cmd explanation
-        // '=': not change
-        // '^': replace with a new item in second array. Unused temporary
-        // '+': add a new item of second array
-        // '-': del item in first array
-        cmd: cmd,
-        // Value index, use index in the first array
-        // Except '+'. Adding a new item needs value in the second array
-        idx: idx
-    };
-    // Replace need to know both two indices
-    // if (cmd === '^') {
-    //     res.idx1 = idx1;
-    // }
-
-    if (cmd === '=') {
-        res.idx1 = idx1;
+exports.__esModule = true;
+function diff(oldArr, newArr, equals) {
+    if (!equals) {
+        equals = function (a, b) {
+            return a === b;
+        };
     }
-    return res;
-}
-
-function append(out, cmd, idx, idx1) {
-    out.push(createItem(cmd, idx, idx1));
-}
-
-var abs = Math.abs;
-// Needleman-Wunsch score
-function score(arr0, arr1, i0, i1, j0, j1, equal, memo) {
-    var last;
-    var invM = i0 > i1;
-    var invN = j0 > j1;
-    var m = abs(i1 - i0);
-    var n = abs(j1 - j0);
-    var i;
-    var j;
-    for (i = 0; i <= m; i++) {
-        for (j = 0; j <= n; j++) {
-            if (i === 0) {
-                memo[j] = j;
+    oldArr = oldArr.slice();
+    newArr = newArr.slice();
+    var newLen = newArr.length;
+    var oldLen = oldArr.length;
+    var editLength = 1;
+    var maxEditLength = newLen + oldLen;
+    var bestPath = [{ newPos: -1, components: [] }];
+    var oldPos = extractCommon(bestPath[0], newArr, oldArr, 0, equals);
+    if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) {
+        var indices = [];
+        for (var i = 0; i < newArr.length; i++) {
+            indices.push(i);
+        }
+        return [{
+                indices: indices,
+                count: newArr.length,
+                added: false,
+                removed: false
+            }];
+    }
+    function execEditLength() {
+        for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; 
diagonalPath += 2) {
+            var basePath;
+            var addPath = bestPath[diagonalPath - 1];
+            var removePath = bestPath[diagonalPath + 1];
+            var oldPos = (removePath ? removePath.newPos : 0) - diagonalPath;
+            if (addPath) {
+                bestPath[diagonalPath - 1] = undefined;
             }
-            else if (j === 0) {
-                last = memo[j];
-                memo[j] = i;
+            var canAdd = addPath && addPath.newPos + 1 < newLen;
+            var canRemove = removePath && 0 <= oldPos && oldPos < oldLen;
+            if (!canAdd && !canRemove) {
+                bestPath[diagonalPath] = undefined;
+                continue;
             }
-            else {
-                // memo[i-1][j-1] + same(arr0[i-1], arr1[j-1]) ? 0 : 1
-                // Retained or replace
-                var val0 = arr0[invM ? (i0 - i) : (i - 1 + i0)];
-                var val1 = arr1[invN ? (j0 - j) : (j - 1 + j0)];
-                // Because replace is add after remove actually
-                // It has a higher score than removing or adding
-                // TODO custom score function
-                var score0 = last + (equal(val0, val1) ? 0 : 2);
-                // memo[i-1][j] + 1
-                // Remove arr0[i-1]
-                var score1 = memo[j] + 1;
-                // memo[i][j-1] + 1
-                // Add arr1[j-1]
-                var score2 = memo[j - 1] + 1;
-
-                last = memo[j];
-                memo[j] = score0 < score1 ? score0 : score1;
-                score2 < memo[j] && (memo[j] = score2);
-                // Math min of three parameters seems slow
-                // memo[j] = Math.min(score0, score1, score2);
-            }
-        }
-    }
-
-    return memo;
-}
-
-function hirschberg(arr0, arr1, i0, i1, j0, j1, equal, score0, score1) {
-    var out = [];
-    var len0 = i1 - i0;
-    var len1 = j1 - j0;
-    var i;
-    var j;
-    if (!len0) {
-        for (j = 0; j < len1; j++) {
-            append(out, '+', j + j0);
-        }
-    }
-    else if (!len1) {
-        for (i = 0; i < len0; i++) {
-            append(out, '-', i + i0);
-        }
-    }
-    else if (len0 === 1) {
-        var a = arr0[i0];
-        var matched = false;
-        for (j = 0; j < len1; j++) {
-            if (equal(a, arr1[j + j0]) && !matched) {
-                matched = true;
-                // Equal and update use the index in first array
-                append(out, '=', i0, j + j0);
+            if (!canAdd || (canRemove && addPath.newPos < removePath.newPos)) {
+                basePath = clonePath(removePath);
+                pushComponent(basePath.components, false, true);
             }
             else {
-                // if (j === len1 - 1 && ! matched) {
-                //     append(out, '^', i0, j + j0);
-                // }
-                // else {
-                append(out, '+', j + j0);
-                // }
+                basePath = addPath;
+                basePath.newPos++;
+                pushComponent(basePath.components, true, false);
             }
-        }
-        if (!matched) {
-            append(out, '-', i0);
-        }
-    }
-    else if (len1 === 1) {
-        var b = arr1[j0];
-        var matched = false;
-        for (i = 0; i < len0; i++) {
-            if (equal(b, arr0[i + i0]) && !matched) {
-                matched = true;
-                append(out, '=', i + i0, j0);
+            oldPos = extractCommon(basePath, newArr, oldArr, diagonalPath, 
equals);
+            if (basePath.newPos + 1 >= newLen && oldPos + 1 >= oldLen) {
+                return buildValues(basePath.components);
             }
             else {
-                // if (i === len0 - 1 && ! matched) {
-                //     append(out, '^', i + i0, j0);
-                // }
-                // else {
-                append(out, '-', i + i0);
-                // }
+                bestPath[diagonalPath] = basePath;
             }
         }
-        if (!matched) {
-            append(out, '+', j0);
-        }
+        editLength++;
     }
-    else {
-        var imid = ((len0 / 2) | 0) + i0;
-
-        score(arr0, arr1, i0, imid, j0, j1, equal, score0);
-        score(arr0, arr1, i1, imid + 1, j1, j0, equal, score1);
-
-        var min = Infinity;
-        var jmid = 0;
-        var sum;
-        for (j = 0; j <= len1; j++) {
-            sum = score0[j] + score1[len1 - j];
-            if (sum < min) {
-                min = sum;
-                jmid = j;
-            }
-        }
-        jmid += j0;
-
-        out = hirschberg(arr0, arr1, i0, imid, j0, jmid, equal, score0, 
score1);
-        var out1 = hirschberg(arr0, arr1, imid, i1, jmid, j1, equal, score0, 
score1);
-        // Concat
-        for (i = 0; i < out1.length; i++) {
-            out.push(out1[i]);
+    while (editLength <= maxEditLength) {
+        var ret = execEditLength();
+        if (ret) {
+            return ret;
         }
     }
-    return out;
 }
-
-function arrayDiff(arr0, arr1, equal) {
-    equal = equal || defaultCompareFunc;
-    // Remove the common head and tail
-    var i;
-    var j;
-    var len0 = arr0.length;
-    var len1 = arr1.length;
-    var lenMin = Math.min(len0, len1);
-    var head = [];
-    for (i = 0; i < lenMin; i++) {
-        if (!equal(arr0[i], arr1[i])) {
-            break;
-        }
-        append(head, '=', i, i);
+function extractCommon(basePath, newArr, oldArr, diagonalPath, equals) {
+    var newLen = newArr.length;
+    var oldLen = oldArr.length;
+    var newPos = basePath.newPos;
+    var oldPos = newPos - diagonalPath;
+    var commonCount = 0;
+    while (newPos + 1 < newLen && oldPos + 1 < oldLen && equals(newArr[newPos 
+ 1], oldArr[oldPos + 1])) {
+        newPos++;
+        oldPos++;
+        commonCount++;
+    }
+    if (commonCount) {
+        basePath.components.push({
+            count: commonCount,
+            added: false,
+            removed: false,
+            indices: []
+        });
     }
-
-    for (j = 0; j < lenMin; j++) {
-        if (!equal(arr0[len0 - j - 1], arr1[len1 - j - 1])) {
-            break;
-        }
+    basePath.newPos = newPos;
+    return oldPos;
+}
+function pushComponent(components, added, removed) {
+    var last = components[components.length - 1];
+    if (last && last.added === added && last.removed === removed) {
+        components[components.length - 1] = {
+            count: last.count + 1,
+            added: added,
+            removed: removed,
+            indices: []
+        };
     }
-
-    if (len0 - j >= i || len1 - j >= i) {
-        var middle = hirschberg(arr0, arr1, i, len0 - j, i, len1 - j, equal, 
[], []);
-        for (i = 0; i < middle.length; i++) {
-            head.push(middle[i]);
+    else {
+        components.push({
+            count: 1,
+            added: added,
+            removed: removed,
+            indices: []
+        });
+    }
+}
+function buildValues(components) {
+    var componentPos = 0;
+    var componentLen = components.length;
+    var newPos = 0;
+    var oldPos = 0;
+    for (; componentPos < componentLen; componentPos++) {
+        var component = components[componentPos];
+        if (!component.removed) {
+            var indices = [];
+            for (var i = newPos; i < newPos + component.count; i++) {
+                indices.push(i);
+            }
+            component.indices = indices;
+            newPos += component.count;
+            if (!component.added) {
+                oldPos += component.count;
+            }
         }
-        for (i = 0; i < j; i++) {
-            append(head, '=', len0 - j + i, len1 - j + i);
+        else {
+            for (var i = oldPos; i < oldPos + component.count; i++) {
+                component.indices.push(i);
+            }
+            oldPos += component.count;
         }
     }
-    return head;
+    return components;
+}
+function clonePath(path) {
+    return { newPos: path.newPos, components: path.components.slice(0) };
+}
+function arrayDiff(oldArr, newArr, equal) {
+    return diff(oldArr, newArr, equal);
 }
+exports["default"] = arrayDiff;
 
-/* harmony default export */ __webpack_exports__["default"] = (arrayDiff);
 
 /***/ }),
 
@@ -11832,7 +11770,7 @@ __webpack_require__.r(__webpack_exports__);
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, 
"ECHARTS_LIB", function() { return ECHARTS_LIB; });
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, 
"PROPERTIES_NOT_EXPAND", function() { return PROPERTIES_NOT_EXPAND; });
-var ECHARTS_LIB = 
'https://cdn.jsdelivr.net/npm/echarts@5.0.0-alpha.2/dist/echarts.min.js'; // 
Properties that will not be expanded by default.
+var ECHARTS_LIB = 
'https://cdn.jsdelivr.net/npm/echarts@5/dist/echarts.min.js'; // Properties 
that will not be expanded by default.
 // To reduce the display of unnecessary info.
 
 var PROPERTIES_NOT_EXPAND = ['data', 'markPoint', 'markLine', 'markArea', 
'tooltip'];
diff --git a/public/zh/css/doc-bundle.css b/public/zh/css/doc-bundle.css
index f7f34cc..6715268 100644
--- a/public/zh/css/doc-bundle.css
+++ b/public/zh/css/doc-bundle.css
@@ -248,17 +248,14 @@
   position: relative;
   padding: 15px 0;
 }
-.doc-content-item-card.current {
-    border-top: 1px solid #b03a5b;
-}
 .doc-content-item-card .hierarchy-line {
     position: absolute;
     top: 35px;
     bottom: 0px;
     left: -14px;
     width: 10px;
-    border-left: 1px solid #C592A0;
-    border-bottom: 1px solid #C592A0;
+    border-left: 1px solid #E0E6F1;
+    border-bottom: 1px solid #E0E6F1;
 }
 .doc-content-item-card h4 {
     margin: 0;
@@ -269,15 +266,13 @@
       vertical-align: bottom;
       display: inline-block;
 }
-.doc-content-item-card h4 .el-button {
-      padding: 2px;
-      font-size: 12px;
+.doc-content-item-card h4 .expand-toggle {
+      font-size: 18px;
       margin-left: -23px;
-      color: #C592A0;
-      border-color: #C592A0;
-      border-radius: 4px;
-      background: #fff;
+      color: #9aadd1;
+      cursor: pointer;
       position: relative;
+      background-color: #fff;
 }
 .doc-content-item-card h4 .anchor {
       color: #C592A0;
@@ -316,6 +311,10 @@
 .doc-content-item-card h4 .path-parent a:hover, .doc-content-item-card h4 
.path-base a:hover {
         text-decoration: underline;
 }
+.doc-content-item-card h4 .current-flag {
+      color: #434343;
+      font-size: 20px;
+}
 .doc-content-item-card h4 .default-value {
       color: #434343;
       font-size: 16px;
@@ -358,6 +357,9 @@
 .doc-content-item-card.level-2 > h4 .path-base {
     font-size: 16px;
 }
+.doc-content-item-card.level-2 > h4 .current-flag {
+    font-size: 16px;
+}
 .doc-content-item-card.level-3 > h4 .anchor {
     font-size: 16px;
 }
@@ -367,6 +369,9 @@
 .doc-content-item-card.level-3 > h4 .path-base {
     font-size: 16px;
 }
+.doc-content-item-card.level-3 > h4 .current-flag {
+    font-size: 16px;
+}
 .doc-content-item-card.level-2 {
     border-top: 1px solid #eee;
     margin-top: 10px;
@@ -376,7 +381,7 @@
       width: 28px;
       margin-left: -39px;
       margin-right: 2px;
-      border-top: 1px solid #C592A0;
+      border-top: 1px solid #E0E6F1;
       position: relative;
 }
 .doc-content-item-card.level-3 {
@@ -388,7 +393,7 @@
       width: 28px;
       margin-left: -39px;
       margin-right: 2px;
-      border-top: 1px solid #C592A0;
+      border-top: 1px solid #E0E6F1;
       position: relative;
 }
 .doc-content-item-card.level-4 {
@@ -400,7 +405,7 @@
       width: 28px;
       margin-left: -39px;
       margin-right: 2px;
-      border-top: 1px solid #C592A0;
+      border-top: 1px solid #E0E6F1;
       position: relative;
 }
 .doc-content-item-card.level-5 {
@@ -412,7 +417,7 @@
       width: 28px;
       margin-left: -39px;
       margin-right: 2px;
-      border-top: 1px solid #C592A0;
+      border-top: 1px solid #E0E6F1;
       position: relative;
 }
 .doc-content-item-card.level-6 {
@@ -424,7 +429,7 @@
       width: 28px;
       margin-left: -39px;
       margin-right: 2px;
-      border-top: 1px solid #C592A0;
+      border-top: 1px solid #E0E6F1;
       position: relative;
 }
 .doc-content-item-card.level-7 {
@@ -436,7 +441,7 @@
       width: 28px;
       margin-left: -39px;
       margin-right: 2px;
-      border-top: 1px solid #C592A0;
+      border-top: 1px solid #E0E6F1;
       position: relative;
 }
 .doc-content-item-card.level-8 {
@@ -448,7 +453,7 @@
       width: 28px;
       margin-left: -39px;
       margin-right: 2px;
-      border-top: 1px solid #C592A0;
+      border-top: 1px solid #E0E6F1;
       position: relative;
 }
 .doc-content-item-card.level-9 {
@@ -460,7 +465,7 @@
       width: 28px;
       margin-left: -39px;
       margin-right: 2px;
-      border-top: 1px solid #C592A0;
+      border-top: 1px solid #E0E6F1;
       position: relative;
 }
 .doc-content-item-card.level-10 {
@@ -472,7 +477,7 @@
       width: 28px;
       margin-left: -39px;
       margin-right: 2px;
-      border-top: 1px solid #C592A0;
+      border-top: 1px solid #E0E6F1;
       position: relative;
 }
 .doc-content-item-card.level-11 {
@@ -484,7 +489,7 @@
       width: 28px;
       margin-left: -39px;
       margin-right: 2px;
-      border-top: 1px solid #C592A0;
+      border-top: 1px solid #E0E6F1;
       position: relative;
 }
 .doc-content-item-card .prop-types {
@@ -962,6 +967,7 @@ span.CodeMirror-selectedtext { background: none; }
     top: 0;
 }
 #example-panel .preview-main {
+    position: relative;
     padding: 0 10px;
     background: #fefefe;
     box-sizing: border-box;
@@ -1255,6 +1261,14 @@ span.CodeMirror-selectedtext { background: none; }
 .doc-content .item-description a {
       font-family: 'Source Code Pro', STHeiti, "Microsoft Yahei", "WenQuanYi 
Micro Hei", sans-serif;
 }
+.doc-content table {
+    border: 1px solid #ddd;
+    border-collapse: collapse;
+}
+.doc-content th, .doc-content td {
+    padding: 10px;
+    border: 1px solid #eee;
+}
 .ec-doc-tutorial .page-description h2 {
   font-weight: normal;
   font-size: 22px;
@@ -1290,7 +1304,8 @@ span.CodeMirror-selectedtext { background: none; }
     width: 100%;
 }
 .el-autocomplete-suggestion.search-input-popper {
-  width: 300px !important;
+  width: auto !important;
+  min-width: 300px;
 }
 .el-autocomplete-suggestion.search-input-popper li {
     line-height: 28px;
diff --git a/public/zh/css/doc-bundle.css.map b/public/zh/css/doc-bundle.css.map
index e7d87fa..9400afa 100644
--- a/public/zh/css/doc-bundle.css.map
+++ b/public/zh/css/doc-bundle.css.map
@@ -1 +1 @@
-{"version":3,"sources":["webpack://echartsDoc/./src/components/DocNav.vue?4e19","webpack://echartsDoc/./src/components/PropertiesList.vue?f705","webpack://echartsDoc/./src/controls/ControlColor.vue?00aa","webpack://echartsDoc/./src/controls/ControlNumber.vue?7d88","webpack://echartsDoc/./src/controls/ControlVector.vue?59cc","webpack://echartsDoc/./src/controls/ControlEnum.vue?c193","webpack://echartsDoc/./src/controls/ControlPercent.vue?4384","webpack://echartsDoc/./src/controls/ControlP
 [...]
\ No newline at end of file
+{"version":3,"sources":["webpack://echartsDoc/./src/components/DocNav.vue?4e19","webpack://echartsDoc/./src/components/PropertiesList.vue?f705","webpack://echartsDoc/./src/controls/ControlColor.vue?00aa","webpack://echartsDoc/./src/controls/ControlNumber.vue?7d88","webpack://echartsDoc/./src/controls/ControlVector.vue?59cc","webpack://echartsDoc/./src/controls/ControlEnum.vue?c193","webpack://echartsDoc/./src/controls/ControlPercent.vue?4384","webpack://echartsDoc/./src/controls/ControlP
 [...]
\ No newline at end of file
diff --git a/public/zh/js/doc-bundle.js b/public/zh/js/doc-bundle.js
index 24b1c24..4ade970 100644
--- a/public/zh/js/doc-bundle.js
+++ b/public/zh/js/doc-bundle.js
@@ -685,6 +685,7 @@ __webpack_require__.r(__webpack_exports__);
 //
 //
 //
+//
 
 
 
@@ -1059,7 +1060,8 @@ __webpack_require__.r(__webpack_exports__);
 /* harmony import */ var js_beautify__WEBPACK_IMPORTED_MODULE_4___default = 
/*#__PURE__*/__webpack_require__.n(js_beautify__WEBPACK_IMPORTED_MODULE_4__);
 /* harmony import */ var lodash_throttle__WEBPACK_IMPORTED_MODULE_5__ = 
__webpack_require__(/*! lodash.throttle */ 
"./node_modules/lodash.throttle/index.js");
 /* harmony import */ var lodash_throttle__WEBPACK_IMPORTED_MODULE_5___default 
= 
/*#__PURE__*/__webpack_require__.n(lodash_throttle__WEBPACK_IMPORTED_MODULE_5__);
-/* harmony import */ var 
zrender_src_core_arrayDiff__WEBPACK_IMPORTED_MODULE_6__ = 
__webpack_require__(/*! zrender/src/core/arrayDiff */ 
"./node_modules/zrender/src/core/arrayDiff.js");
+/* harmony import */ var 
zrender_lib_core_arrayDiff__WEBPACK_IMPORTED_MODULE_6__ = 
__webpack_require__(/*! zrender/lib/core/arrayDiff */ 
"./node_modules/zrender/lib/core/arrayDiff.js");
+/* harmony import */ var 
zrender_lib_core_arrayDiff__WEBPACK_IMPORTED_MODULE_6___default = 
/*#__PURE__*/__webpack_require__.n(zrender_lib_core_arrayDiff__WEBPACK_IMPORTED_MODULE_6__);
 /* harmony import */ var scroll_into_view__WEBPACK_IMPORTED_MODULE_7__ = 
__webpack_require__(/*! scroll-into-view */ 
"./node_modules/scroll-into-view/scrollIntoView.js");
 /* harmony import */ var scroll_into_view__WEBPACK_IMPORTED_MODULE_7___default 
= 
/*#__PURE__*/__webpack_require__.n(scroll_into_view__WEBPACK_IMPORTED_MODULE_7__);
 /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_8__ = 
__webpack_require__(/*! ../config */ "./src/config.js");
@@ -1156,33 +1158,38 @@ function fetchECharts() {
 function diffUpdateCode(oldCode, newCode, cmInstance) {
   var oldLines = oldCode.split(/\n/);
   var newLines = newCode.split(/\n/);
-  var result = 
Object(zrender_src_core_arrayDiff__WEBPACK_IMPORTED_MODULE_6__["default"])(oldLines,
 newLines);
-  var changedLines = [];
-  var len = result.length;
-
-  for (var i = len - 1; i >= 0; i--) {
-    var item = result[i];
-
-    if (item.cmd === '-') {
-      cmInstance.replaceRange('', {
-        line: item.idx,
-        ch: 0
-      }, {
-        line: item.idx + 1,
-        ch: 0
-      });
+  var diff = 
zrender_lib_core_arrayDiff__WEBPACK_IMPORTED_MODULE_6___default()(oldLines, 
newLines);
+  var changedLines = []; // Remove lines from bottom to top so the line number 
won't be changed.
+
+  for (var i = diff.length - 1; i >= 0; i--) {
+    var item = diff[i];
+
+    if (item.removed) {
+      for (var k = item.count - 1; k >= 0; k--) {
+        var idx = item.indices[k];
+        cmInstance.replaceRange('', {
+          line: idx,
+          ch: 0
+        }, {
+          line: idx + 1,
+          ch: 0
+        });
+      }
     }
   }
 
-  for (var _i = 0; _i < len; _i++) {
-    var _item = result[_i];
+  for (var _i = 0; _i < diff.length; _i++) {
+    var _item = diff[_i];
 
-    if (_item.cmd === '+') {
-      cmInstance.replaceRange(newLines[_item.idx] + '\n', {
-        line: _item.idx,
-        ch: 0
-      });
-      changedLines.push(_item.idx);
+    if (_item.added) {
+      for (var _k = 0; _k < _item.count; _k++) {
+        var _idx = _item.indices[_k];
+        cmInstance.replaceRange(newLines[_idx] + '\n', {
+          line: _idx,
+          ch: 0
+        });
+        changedLines.push(_idx);
+      }
     }
   }
 
@@ -1190,7 +1197,7 @@ function diffUpdateCode(oldCode, newCode, cmInstance) {
     cmInstance.addLineClass(idx, 'wrap', 'option-changed');
   });
 
-  if (len) {
+  if (diff.length) {
     setTimeout(function () {
       cmInstance.scrollIntoView({
         line: changedLines[0],
@@ -1615,7 +1622,7 @@ __webpack_require__.r(__webpack_exports__);
   },
   methods: {
     getDesc: function getDesc(path) {
-      return this.descMap[path];
+      return this.descMap[path] && this.descMap[path].desc;
     },
     getName: function getName(path) {
       return path.split('.').pop();
@@ -9008,71 +9015,68 @@ var render = function() {
     [
       _vm.expanded ? _c("div", { staticClass: "hierarchy-line" }) : _vm._e(),
       _vm._v(" "),
-      _c(
-        "h4",
-        [
-          _vm.depth > 1 ? _c("span", { staticClass: "guider" }) : _vm._e(),
-          _vm._v(" "),
-          _vm.supportsExpandable
-            ? _c("el-button", {
-                attrs: {
-                  plain: "",
-                  circle: "",
-                  size: "mini",
-                  icon: _vm.expanded ? "el-icon-minus" : "el-icon-plus"
-                },
-                on: { click: _vm.toggleExpanded }
-              })
-            : _vm._e(),
-          _vm._v(" "),
-          !_vm.shared.isMobile
-            ? _c(
-                "span",
-                { staticClass: "path-parent" },
-                _vm._l(_vm.parentPath, function(item) {
-                  return _c(
-                    "a",
-                    { key: item.link, attrs: { href: "#" + item.link } },
-                    [_vm._v(_vm._s(item.text) + ".")]
-                  )
-                }),
-                0
-              )
-            : _vm._e(),
-          _vm._v(" "),
-          _c("span", { staticClass: "path-base" }, [
-            _c("a", { attrs: { href: "#" + _vm.baseName.link } }, [
-              _vm._v(_vm._s(_vm.baseName.text))
+      _c("h4", [
+        _vm.depth > 1 ? _c("span", { staticClass: "guider" }) : _vm._e(),
+        _vm._v(" "),
+        _vm.supportsExpandable
+          ? _c("i", {
+              staticClass: "expand-toggle",
+              class: _vm.expanded
+                ? "el-icon-remove-outline"
+                : "el-icon-circle-plus-outline",
+              on: { click: _vm.toggleExpanded }
+            })
+          : _vm._e(),
+        _vm._v(" "),
+        !_vm.shared.isMobile
+          ? _c(
+              "span",
+              { staticClass: "path-parent" },
+              _vm._l(_vm.parentPath, function(item) {
+                return _c(
+                  "a",
+                  { key: item.link, attrs: { href: "#" + item.link } },
+                  [_vm._v(_vm._s(item.text) + ".")]
+                )
+              }),
+              0
+            )
+          : _vm._e(),
+        _vm._v(" "),
+        _c("span", { staticClass: "path-base" }, [
+          _c("a", { attrs: { href: "#" + _vm.baseName.link } }, [
+            _vm._v(_vm._s(_vm.baseName.text))
+          ])
+        ]),
+        _vm._v(" "),
+        _vm.shared.currentPath === _vm.nodeData.path
+          ? _c("span", { staticClass: "current-flag" }, [
+              _c("i", { staticClass: "el-icon-caret-left" })
             ])
-          ]),
-          _vm._v(" "),
-          _vm.nodeData.default && _vm.nodeData.default !== "*"
-            ? _c("span", { staticClass: "default-value" }, [
-                _vm._v(" = " + _vm._s(_vm.nodeData.default))
-              ])
-            : _vm._e(),
-          _vm._v(" "),
-          _vm.uiControl && _vm.shared.allOptionExamples && !_vm.shared.isMobile
-            ? _c(
-                "span",
-                {
-                  class: [
-                    "control-toggle",
-                    _vm.enableUIControl ? "active" : ""
-                  ],
-                  on: { click: _vm.toggleUIControl }
-                },
-                [
-                  _c("i", [_vm._v("")]),
-                  _vm._v(
-                    " " + _vm._s(_vm.$t("example.tryDesc")) + "\n            "
-                  )
-                ]
-              )
-            : _vm._e()
-        ],
-        1
-      ),
+          : _vm._e(),
+        _vm._v(" "),
+        _vm.nodeData.default && _vm.nodeData.default !== "*"
+          ? _c("span", { staticClass: "default-value" }, [
+              _vm._v(" = " + _vm._s(_vm.nodeData.default))
+            ])
+          : _vm._e(),
+        _vm._v(" "),
+        _vm.uiControl && _vm.shared.allOptionExamples && !_vm.shared.isMobile
+          ? _c(
+              "span",
+              {
+                class: ["control-toggle", _vm.enableUIControl ? "active" : ""],
+                on: { click: _vm.toggleUIControl }
+              },
+              [
+                _c("i", [_vm._v("")]),
+                _vm._v(
+                  " " + _vm._s(_vm.$t("example.tryDesc")) + "\n            "
+                )
+              ]
+            )
+          : _vm._e()
+      ]),
       _vm._v(" "),
       _c(
         "div",
@@ -9105,26 +9109,24 @@ var render = function() {
         domProps: { innerHTML: _vm._s(_vm.desc) }
       }),
       _vm._v(" "),
-      _vm.supportsExpandable
+      _vm.supportsExpandable && _vm.expanded
         ? _c(
             "div",
             { staticClass: "children" },
             _vm._l(_vm.nodeData.children, function(child) {
-              return _vm.expanded
-                ? _c("DocContentItemCard", {
-                    key: child.path,
-                    attrs: {
-                      "node-data": child,
-                      "desc-map": _vm.descMap,
-                      depth: _vm.depth + 1,
-                      "max-depth": _vm.maxDepth
-                    },
-                    on: {
-                      "toggle-expanded": _vm.bubbleEventToggleExapndedEvent,
-                      "scroll-to-self": _vm.bubbleScrollToSelfEvent
-                    }
-                  })
-                : _vm._e()
+              return _c("DocContentItemCard", {
+                key: child.path,
+                attrs: {
+                  "node-data": child,
+                  "desc-map": _vm.descMap,
+                  depth: _vm.depth + 1,
+                  "max-depth": _vm.maxDepth
+                },
+                on: {
+                  "toggle-expanded": _vm.bubbleEventToggleExapndedEvent,
+                  "scroll-to-self": _vm.bubbleScrollToSelfEvent
+                }
+              })
             }),
             1
           )
@@ -10571,223 +10573,159 @@ module.exports = g;
 
 /***/ }),
 
-/***/ "./node_modules/zrender/src/core/arrayDiff.js":
+/***/ "./node_modules/zrender/lib/core/arrayDiff.js":
 /*!****************************************************!*\
-  !*** ./node_modules/zrender/src/core/arrayDiff.js ***!
+  !*** ./node_modules/zrender/lib/core/arrayDiff.js ***!
   \****************************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
-__webpack_require__.r(__webpack_exports__);
-// Hirschberg's algorithm
-// http://en.wikipedia.org/wiki/Hirschberg%27s_algorithm
 
-/**
- * @module zrender/core/arrayDiff
- * @author Yi Shen
- */
-
-function defaultCompareFunc(a, b) {
-    return a === b;
-}
-
-function createItem(cmd, idx, idx1) {
-    var res = {
-        // cmd explanation
-        // '=': not change
-        // '^': replace with a new item in second array. Unused temporary
-        // '+': add a new item of second array
-        // '-': del item in first array
-        cmd: cmd,
-        // Value index, use index in the first array
-        // Except '+'. Adding a new item needs value in the second array
-        idx: idx
-    };
-    // Replace need to know both two indices
-    // if (cmd === '^') {
-    //     res.idx1 = idx1;
-    // }
-
-    if (cmd === '=') {
-        res.idx1 = idx1;
+exports.__esModule = true;
+function diff(oldArr, newArr, equals) {
+    if (!equals) {
+        equals = function (a, b) {
+            return a === b;
+        };
     }
-    return res;
-}
-
-function append(out, cmd, idx, idx1) {
-    out.push(createItem(cmd, idx, idx1));
-}
-
-var abs = Math.abs;
-// Needleman-Wunsch score
-function score(arr0, arr1, i0, i1, j0, j1, equal, memo) {
-    var last;
-    var invM = i0 > i1;
-    var invN = j0 > j1;
-    var m = abs(i1 - i0);
-    var n = abs(j1 - j0);
-    var i;
-    var j;
-    for (i = 0; i <= m; i++) {
-        for (j = 0; j <= n; j++) {
-            if (i === 0) {
-                memo[j] = j;
+    oldArr = oldArr.slice();
+    newArr = newArr.slice();
+    var newLen = newArr.length;
+    var oldLen = oldArr.length;
+    var editLength = 1;
+    var maxEditLength = newLen + oldLen;
+    var bestPath = [{ newPos: -1, components: [] }];
+    var oldPos = extractCommon(bestPath[0], newArr, oldArr, 0, equals);
+    if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) {
+        var indices = [];
+        for (var i = 0; i < newArr.length; i++) {
+            indices.push(i);
+        }
+        return [{
+                indices: indices,
+                count: newArr.length,
+                added: false,
+                removed: false
+            }];
+    }
+    function execEditLength() {
+        for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; 
diagonalPath += 2) {
+            var basePath;
+            var addPath = bestPath[diagonalPath - 1];
+            var removePath = bestPath[diagonalPath + 1];
+            var oldPos = (removePath ? removePath.newPos : 0) - diagonalPath;
+            if (addPath) {
+                bestPath[diagonalPath - 1] = undefined;
             }
-            else if (j === 0) {
-                last = memo[j];
-                memo[j] = i;
+            var canAdd = addPath && addPath.newPos + 1 < newLen;
+            var canRemove = removePath && 0 <= oldPos && oldPos < oldLen;
+            if (!canAdd && !canRemove) {
+                bestPath[diagonalPath] = undefined;
+                continue;
             }
-            else {
-                // memo[i-1][j-1] + same(arr0[i-1], arr1[j-1]) ? 0 : 1
-                // Retained or replace
-                var val0 = arr0[invM ? (i0 - i) : (i - 1 + i0)];
-                var val1 = arr1[invN ? (j0 - j) : (j - 1 + j0)];
-                // Because replace is add after remove actually
-                // It has a higher score than removing or adding
-                // TODO custom score function
-                var score0 = last + (equal(val0, val1) ? 0 : 2);
-                // memo[i-1][j] + 1
-                // Remove arr0[i-1]
-                var score1 = memo[j] + 1;
-                // memo[i][j-1] + 1
-                // Add arr1[j-1]
-                var score2 = memo[j - 1] + 1;
-
-                last = memo[j];
-                memo[j] = score0 < score1 ? score0 : score1;
-                score2 < memo[j] && (memo[j] = score2);
-                // Math min of three parameters seems slow
-                // memo[j] = Math.min(score0, score1, score2);
-            }
-        }
-    }
-
-    return memo;
-}
-
-function hirschberg(arr0, arr1, i0, i1, j0, j1, equal, score0, score1) {
-    var out = [];
-    var len0 = i1 - i0;
-    var len1 = j1 - j0;
-    var i;
-    var j;
-    if (!len0) {
-        for (j = 0; j < len1; j++) {
-            append(out, '+', j + j0);
-        }
-    }
-    else if (!len1) {
-        for (i = 0; i < len0; i++) {
-            append(out, '-', i + i0);
-        }
-    }
-    else if (len0 === 1) {
-        var a = arr0[i0];
-        var matched = false;
-        for (j = 0; j < len1; j++) {
-            if (equal(a, arr1[j + j0]) && !matched) {
-                matched = true;
-                // Equal and update use the index in first array
-                append(out, '=', i0, j + j0);
+            if (!canAdd || (canRemove && addPath.newPos < removePath.newPos)) {
+                basePath = clonePath(removePath);
+                pushComponent(basePath.components, false, true);
             }
             else {
-                // if (j === len1 - 1 && ! matched) {
-                //     append(out, '^', i0, j + j0);
-                // }
-                // else {
-                append(out, '+', j + j0);
-                // }
+                basePath = addPath;
+                basePath.newPos++;
+                pushComponent(basePath.components, true, false);
             }
-        }
-        if (!matched) {
-            append(out, '-', i0);
-        }
-    }
-    else if (len1 === 1) {
-        var b = arr1[j0];
-        var matched = false;
-        for (i = 0; i < len0; i++) {
-            if (equal(b, arr0[i + i0]) && !matched) {
-                matched = true;
-                append(out, '=', i + i0, j0);
+            oldPos = extractCommon(basePath, newArr, oldArr, diagonalPath, 
equals);
+            if (basePath.newPos + 1 >= newLen && oldPos + 1 >= oldLen) {
+                return buildValues(basePath.components);
             }
             else {
-                // if (i === len0 - 1 && ! matched) {
-                //     append(out, '^', i + i0, j0);
-                // }
-                // else {
-                append(out, '-', i + i0);
-                // }
+                bestPath[diagonalPath] = basePath;
             }
         }
-        if (!matched) {
-            append(out, '+', j0);
-        }
+        editLength++;
     }
-    else {
-        var imid = ((len0 / 2) | 0) + i0;
-
-        score(arr0, arr1, i0, imid, j0, j1, equal, score0);
-        score(arr0, arr1, i1, imid + 1, j1, j0, equal, score1);
-
-        var min = Infinity;
-        var jmid = 0;
-        var sum;
-        for (j = 0; j <= len1; j++) {
-            sum = score0[j] + score1[len1 - j];
-            if (sum < min) {
-                min = sum;
-                jmid = j;
-            }
-        }
-        jmid += j0;
-
-        out = hirschberg(arr0, arr1, i0, imid, j0, jmid, equal, score0, 
score1);
-        var out1 = hirschberg(arr0, arr1, imid, i1, jmid, j1, equal, score0, 
score1);
-        // Concat
-        for (i = 0; i < out1.length; i++) {
-            out.push(out1[i]);
+    while (editLength <= maxEditLength) {
+        var ret = execEditLength();
+        if (ret) {
+            return ret;
         }
     }
-    return out;
 }
-
-function arrayDiff(arr0, arr1, equal) {
-    equal = equal || defaultCompareFunc;
-    // Remove the common head and tail
-    var i;
-    var j;
-    var len0 = arr0.length;
-    var len1 = arr1.length;
-    var lenMin = Math.min(len0, len1);
-    var head = [];
-    for (i = 0; i < lenMin; i++) {
-        if (!equal(arr0[i], arr1[i])) {
-            break;
-        }
-        append(head, '=', i, i);
+function extractCommon(basePath, newArr, oldArr, diagonalPath, equals) {
+    var newLen = newArr.length;
+    var oldLen = oldArr.length;
+    var newPos = basePath.newPos;
+    var oldPos = newPos - diagonalPath;
+    var commonCount = 0;
+    while (newPos + 1 < newLen && oldPos + 1 < oldLen && equals(newArr[newPos 
+ 1], oldArr[oldPos + 1])) {
+        newPos++;
+        oldPos++;
+        commonCount++;
+    }
+    if (commonCount) {
+        basePath.components.push({
+            count: commonCount,
+            added: false,
+            removed: false,
+            indices: []
+        });
     }
-
-    for (j = 0; j < lenMin; j++) {
-        if (!equal(arr0[len0 - j - 1], arr1[len1 - j - 1])) {
-            break;
-        }
+    basePath.newPos = newPos;
+    return oldPos;
+}
+function pushComponent(components, added, removed) {
+    var last = components[components.length - 1];
+    if (last && last.added === added && last.removed === removed) {
+        components[components.length - 1] = {
+            count: last.count + 1,
+            added: added,
+            removed: removed,
+            indices: []
+        };
     }
-
-    if (len0 - j >= i || len1 - j >= i) {
-        var middle = hirschberg(arr0, arr1, i, len0 - j, i, len1 - j, equal, 
[], []);
-        for (i = 0; i < middle.length; i++) {
-            head.push(middle[i]);
+    else {
+        components.push({
+            count: 1,
+            added: added,
+            removed: removed,
+            indices: []
+        });
+    }
+}
+function buildValues(components) {
+    var componentPos = 0;
+    var componentLen = components.length;
+    var newPos = 0;
+    var oldPos = 0;
+    for (; componentPos < componentLen; componentPos++) {
+        var component = components[componentPos];
+        if (!component.removed) {
+            var indices = [];
+            for (var i = newPos; i < newPos + component.count; i++) {
+                indices.push(i);
+            }
+            component.indices = indices;
+            newPos += component.count;
+            if (!component.added) {
+                oldPos += component.count;
+            }
         }
-        for (i = 0; i < j; i++) {
-            append(head, '=', len0 - j + i, len1 - j + i);
+        else {
+            for (var i = oldPos; i < oldPos + component.count; i++) {
+                component.indices.push(i);
+            }
+            oldPos += component.count;
         }
     }
-    return head;
+    return components;
+}
+function clonePath(path) {
+    return { newPos: path.newPos, components: path.components.slice(0) };
+}
+function arrayDiff(oldArr, newArr, equal) {
+    return diff(oldArr, newArr, equal);
 }
+exports["default"] = arrayDiff;
 
-/* harmony default export */ __webpack_exports__["default"] = (arrayDiff);
 
 /***/ }),
 
@@ -11832,7 +11770,7 @@ __webpack_require__.r(__webpack_exports__);
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, 
"ECHARTS_LIB", function() { return ECHARTS_LIB; });
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, 
"PROPERTIES_NOT_EXPAND", function() { return PROPERTIES_NOT_EXPAND; });
-var ECHARTS_LIB = 
'https://cdn.jsdelivr.net/npm/echarts@5.0.0-alpha.2/dist/echarts.min.js'; // 
Properties that will not be expanded by default.
+var ECHARTS_LIB = 
'https://cdn.jsdelivr.net/npm/echarts@5/dist/echarts.min.js'; // Properties 
that will not be expanded by default.
 // To reduce the display of unnecessary info.
 
 var PROPERTIES_NOT_EXPAND = ['data', 'markPoint', 'markLine', 'markArea', 
'tooltip'];
diff --git a/zh/option/partial/colorBy.md b/zh/option/partial/colorBy.md
new file mode 100644
index 0000000..c3ea4ca
--- /dev/null
+++ b/zh/option/partial/colorBy.md
@@ -0,0 +1,8 @@
+{{ target: partial-colorby }}
+
+## colorBy(string) = ${defaultColorBy|default("'series'")}
+
+从调色盘 [option.color](~color) 中取色的策略,可取值为:
+
++ `'series'`:按照系列分配调色盘中的颜色,同一系列中的所有数据都是用相同的颜色;
++ `'data'`:按照数据项分配调色盘中的颜色,每个数据项都使用不同的颜色。
diff --git a/zh/option/series/bar.md b/zh/option/series/bar.md
index a457304..6eb1ac9 100644
--- a/zh/option/series/bar.md
+++ b/zh/option/series/bar.md
@@ -91,6 +91,8 @@ option = {
 
 {{ use: partial-series-name() }}
 
+{{ use: partial-colorby() }}
+
 {{ use: partial-legend-hover-link() }}
 
 {{ use: partial-coord-sys(
diff --git a/zh/option/series/boxplot.md b/zh/option/series/boxplot.md
index 83f9820..c0ed734 100644
--- a/zh/option/series/boxplot.md
+++ b/zh/option/series/boxplot.md
@@ -68,6 +68,8 @@ const option = {
 
 {{ use: partial-series-name() }}
 
+{{ use: partial-colorby() }}
+
 {{ use: partial-legend-hover-link() }}
 
 ## hoverAnimation(boolean) = true
diff --git a/zh/option/series/candlestick.md b/zh/option/series/candlestick.md
index 29348e9..98cb1f2 100644
--- a/zh/option/series/candlestick.md
+++ b/zh/option/series/candlestick.md
@@ -231,6 +231,8 @@ const option = {
 
 {{ use: partial-series-name() }}
 
+{{ use: partial-colorby() }}
+
 {{ use: partial-legend-hover-link() }}
 
 ## hoverAnimation(boolean) = true
diff --git a/zh/option/series/custom.md b/zh/option/series/custom.md
index e7502d9..41a5f40 100644
--- a/zh/option/series/custom.md
+++ b/zh/option/series/custom.md
@@ -93,6 +93,8 @@ chart.on('click', {element: 'aaa'}, function (params) {
 
 {{ use: partial-series-name() }}
 
+{{ use: partial-colorby() }}
+
 {{ use: partial-legend-hover-link() }}
 
 {{ use: partial-coord-sys(
diff --git a/zh/option/series/effectScatter.md 
b/zh/option/series/effectScatter.md
index 0f63962..65c6b03 100644
--- a/zh/option/series/effectScatter.md
+++ b/zh/option/series/effectScatter.md
@@ -32,6 +32,8 @@ const option = {
 
 {{ use: partial-series-name() }}
 
+{{ use: partial-colorby() }}
+
 {{ use: partial-legend-hover-link() }}
 
 ## effectType(string) = 'ripple'
diff --git a/zh/option/series/funnel.md b/zh/option/series/funnel.md
index 48ccc1f..2e53b62 100644
--- a/zh/option/series/funnel.md
+++ b/zh/option/series/funnel.md
@@ -38,6 +38,8 @@ option = {
 
 {{ use: partial-series-name() }}
 
+{{ use: partial-colorby(defaultColorBy="'data'") }}
+
 ## min(number) = 0
 
 <ExampleUIControlNumber default="0" step="1" />
diff --git a/zh/option/series/gauge.md b/zh/option/series/gauge.md
index 42f90f4..b7a5298 100644
--- a/zh/option/series/gauge.md
+++ b/zh/option/series/gauge.md
@@ -29,6 +29,8 @@ const option = {
 
 {{ use: partial-series-name() }}
 
+{{ use: partial-colorby(defaultColorBy="'data'") }}
+
 {{ use: component-circular-layout() }}
 
 <!-- overwrite radius -->
diff --git a/zh/option/series/line.md b/zh/option/series/line.md
index e2cf1eb..a63ab25 100644
--- a/zh/option/series/line.md
+++ b/zh/option/series/line.md
@@ -49,6 +49,8 @@ const option = {
 
 {{ use: partial-series-name() }}
 
+{{ use: partial-colorby() }}
+
 {{ use: partial-coord-sys(
     seriesType = "bar",
     coordSysDefault = "'cartesian2d'",
diff --git a/zh/option/series/lines.md b/zh/option/series/lines.md
index 96da190..3723129 100644
--- a/zh/option/series/lines.md
+++ b/zh/option/series/lines.md
@@ -17,6 +17,8 @@ ECharts 2.x 里会用地图上的 `markLine` 去绘制迁徙效果,在 ECharts
 
 {{ use: partial-series-name() }}
 
+{{ use: partial-colorby() }}
+
 {{ use: partial-coord-sys(
     seriesType = "lines",
     coordSysDefault = "'geo'",
diff --git a/zh/option/series/map.md b/zh/option/series/map.md
index 9fadc8e..b78c434 100644
--- a/zh/option/series/map.md
+++ b/zh/option/series/map.md
@@ -19,6 +19,8 @@
 
 {{ use: partial-series-name() }}
 
+{{ use: partial-colorby() }}
+
 {{ use: geo-common(
     prefix = '#',
     inMap = true
diff --git a/zh/option/series/parallel.md b/zh/option/series/parallel.md
index f0159ce..dac6a3d 100644
--- a/zh/option/series/parallel.md
+++ b/zh/option/series/parallel.md
@@ -190,6 +190,8 @@ const option = {
 
 {{ use: partial-series-name() }}
 
+{{ use: partial-colorby() }}
+
 {{ use: partial-parallel-line-style(
     prefix = "#"
 ) }}
diff --git a/zh/option/series/pictorialBar.md b/zh/option/series/pictorialBar.md
index a26f08e..7ff3be0 100644
--- a/zh/option/series/pictorialBar.md
+++ b/zh/option/series/pictorialBar.md
@@ -107,6 +107,8 @@ option = {
 
 {{ use: partial-series-name() }}
 
+{{ use: partial-colorby() }}
+
 {{ use: partial-legend-hover-link() }}
 
 {{ use: partial-coord-sys(
diff --git a/zh/option/series/pie.md b/zh/option/series/pie.md
index 9a62647..9f26af4 100644
--- a/zh/option/series/pie.md
+++ b/zh/option/series/pie.md
@@ -49,6 +49,8 @@ const option = {
 
 {{ use: partial-series-name() }}
 
+{{ use: partial-colorby(defaultColorBy="'data'") }}
+
 {{ use: partial-legend-hover-link() }}
 
 {{ use: partial-selected-mode() }}
diff --git a/zh/option/series/radar.md b/zh/option/series/radar.md
index 6d89cab..e3e5545 100644
--- a/zh/option/series/radar.md
+++ b/zh/option/series/radar.md
@@ -55,6 +55,8 @@ const option = {
 
 {{ use: partial-series-name() }}
 
+{{ use: partial-colorby(defaultColorBy="'data'") }}
+
 ## radarIndex(number)
 
 雷达图所使用的 [radar](~radar) 组件的 index。
diff --git a/zh/option/series/scatter.md b/zh/option/series/scatter.md
index 362c007..2645efe 100644
--- a/zh/option/series/scatter.md
+++ b/zh/option/series/scatter.md
@@ -85,6 +85,8 @@ const option = {
 
 {{ use: partial-series-name() }}
 
+{{ use: partial-colorby() }}
+
 {{ use: partial-coord-sys(
     seriesType = "bar",
     coordSysDefault = "'cartesian2d'",
diff --git a/zh/option/series/themeRiver.md b/zh/option/series/themeRiver.md
index 08c3daa..ee63d82 100644
--- a/zh/option/series/themeRiver.md
+++ b/zh/option/series/themeRiver.md
@@ -100,6 +100,8 @@ const option = {
 
 {{ use: partial-series-name() }}
 
+{{ use: partial-colorby(defaultColorBy="'data'") }}
+
 {{ use: partial-rect-layout-width-height(
     componentName = 'thmemRiver',
     defaultLeft = '5%',

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@echarts.apache.org
For additional commands, e-mail: commits-h...@echarts.apache.org

Reply via email to