Merge branch 'dev'
diff --git a/en/option/component/geo-common.md b/en/option/component/geo-common.md
index 68dac60..5c2df34 100644
--- a/en/option/component/geo-common.md
+++ b/en/option/component/geo-common.md
@@ -5,7 +5,6 @@
 
 Map name registered in [registerMap](api.html#echarts.registerMap).
 
-
 {{ if: ${inMap} }}
 **Use geoJSON**
 ```js
@@ -41,7 +40,6 @@
 
 The demo above shows that ECharts can uses [geoJSON](http://geojson.org/) format as map outline. You can use third-party [geoJSON](http://geojson.org/) data (like [maps](https://github.com/echarts-maps)) and register them into ECharts.
 
-
 {{ if: ${inMap} }}
 **Use SVG**
 ```js
@@ -77,8 +75,6 @@
 
 The demo above shows that SVG format can be used in ECharts. See more info in [SVG Base Map](tutorial.html#SVG%20Base%20Map%20in%20Geo%20Coords%20and%20Map%20Series).
 
-
-
 #${prefix} roam(boolean|string) = false
 
 {{ use: partial-roam() }}
@@ -183,8 +179,11 @@
 #${prefix} emphasis(Object)
 
 Map area style in highlighted state.
+
 {{ if: !${inMap} }}
-{{ use: partial-focus-blur-scope(isGeoCoordSys: true) }}
+{{ use: partial-focus-blur-scope(
+    isGeoCoordSys = true
+) }}
 {{ /if }}
 
 {{ use: partial-geo-common-state(
@@ -201,7 +200,11 @@
 
 {{ if: !${inMap} }}
 #${prefix} blur(Object)
-{{ use: partial-version(version: '5.1.0') }}
+
+{{ use: partial-version(
+    version = '5.1.0'
+) }}
+
 Map area style in blurred state.
 
 {{ use: partial-geo-common-state(
diff --git a/en/option/component/geo.md b/en/option/component/geo.md
index ed8f654..e39c14e 100644
--- a/en/option/component/geo.md
+++ b/en/option/component/geo.md
@@ -97,22 +97,21 @@
 {{ use: geo-region-state() }}
 
 ### blur(Object)
-{{ use: partial-version(version: '5.1.0') }}
+
+{{ use: partial-version(
+    version = '5.1.0'
+) }}
+
 Style of blurred region.
 
 {{ use: geo-region-state() }}
 
-
-
 {{ use: partial-tooltip-in-coords-item(
-    componentItemDesc: 'region',
-    noAxis: true,
+    componentItemDesc = 'region',
+    noAxis = true,
     version = '5.1.0'
 ) }}
 
-
-
-
 {{ use: partial-silent(
     prefix = "#"
 ) }}
diff --git a/en/option/component/legend.md b/en/option/component/legend.md
index 3cbe363..251ecb6 100644
--- a/en/option/component/legend.md
+++ b/en/option/component/legend.md
@@ -101,6 +101,10 @@
     prefix = "#"
 ) }}
 
+## symbolRotate(number|string) = 'inherit'
+
+Rotation of the symbol, which can be `number | 'inherit'`. If it's `'inherit'`, `symbolRotate` of the series will be used.
+
 ## formatter(string|Function) = null
 
 Formatter is used to format label of legend, which supports string template and callback function.
@@ -215,6 +219,10 @@
     prefix = "##"
 ) }}
 
+### symbolRotate(number|string) = 'inherit'
+
+Rotation of the symbol, which can be `number | 'inherit'`. If it's `'inherit'`, `symbolRotate` of the series will be used.
+
 ### textStyle(Object)
 
 Text style of legend.
@@ -502,3 +510,4 @@
     defaultShadowOffsetX = 0,
     defaultShadowOffsetY = 0
 ) }}
+
diff --git a/en/option/partial/encode-dimensions.md b/en/option/partial/encode-dimensions.md
index 85b3f99..04a08a8 100644
--- a/en/option/partial/encode-dimensions.md
+++ b/en/option/partial/encode-dimensions.md
@@ -59,7 +59,10 @@
     itemId: 2,
     // Using dimensions[3] as the name of each data item. This is useful in charts like
     // 'pie', 'funnel', where data item name can be displayed in legend.
-    itemName: 3
+    itemName: 3,
+    // Using dimensions[4] as the groupId of each data item. groupId will be used to categorize the data. And to determine
+    // How the merge and split animation are performed in the universal transition. See universalTransition option for detail.
+    itemGroupId: 4
 }
 
 // These properties only work in cartesian(grid) coordinate system:
diff --git a/en/option/partial/focus-blur-scope.md b/en/option/partial/focus-blur-scope.md
index 5c803cd..a2728a6 100644
--- a/en/option/partial/focus-blur-scope.md
+++ b/en/option/partial/focus-blur-scope.md
@@ -17,6 +17,7 @@
 
 + `'none'` Do not fade out other data, it's by default.
 + `'self'` Only focus (not fade out) the element of the currently highlighted data.
+
 {{ if: !${isGeoCoordSys} }}
 + `'series'` Focus on all elements of the series which the currently highlighted data belongs to.
 {{ /if }}
@@ -63,3 +64,4 @@
 + `'series'`
 + `'global'`
 {{ /if }}
+
diff --git a/en/option/partial/group-id.md b/en/option/partial/group-id.md
new file mode 100644
index 0000000..850ab7b
--- /dev/null
+++ b/en/option/partial/group-id.md
@@ -0,0 +1,17 @@
+
+{{ target: partial-series-group-id }}
+
+## dataGroupId(string)
+
+A groupID common to all data in the series. the groupID will be used to classify the data and determine how merge and split animations are performed in the universal transition animation.
+
+If you are using the [dataset](~dataset) component to represent the data, it is recommended to use `encode.itemGroupID` to specify which dimension is encoded as the groupID.
+
+
+
+{{ target: partial-data-group-id }}
+
+#${prefix} groupId(string)
+
+The groupID of this data item. groupID will be used to classify the data.
+
diff --git a/en/option/partial/line-border-style.md b/en/option/partial/line-border-style.md
index 06b03ce..4d5ae40 100644
--- a/en/option/partial/line-border-style.md
+++ b/en/option/partial/line-border-style.md
@@ -46,7 +46,8 @@
 
 {{ if: ${type} === 'border' }}
 #${prefix} borderDashOffset(number) = ${defaultDashOffset|default(0)}
-{{ elif: ${type} === 'text'  }}
+
+{{ elif: ${type} === 'text' }}
 #${prefix} textBorderDashOffset(number) = ${defaultDashOffset|default(0)}
 {{ else }}
 #${prefix} dashOffset(number) = ${defaultDashOffset|default(0)}
diff --git a/en/option/partial/tooltip-common.md b/en/option/partial/tooltip-common.md
index 28b7283..a9d732a 100644
--- a/en/option/partial/tooltip-common.md
+++ b/en/option/partial/tooltip-common.md
@@ -23,7 +23,9 @@
 ## tooltip(Object)
 
 {{ if: ${version} }}
-{{ use: partial-version(version: '5.1.0') }}
+{{ use: partial-version(
+    version = '5.1.0'
+) }}
 {{ /if }}
 
 tooltip settings in the coordinate system component.
@@ -49,7 +51,9 @@
 ### tooltip(*)
 
 {{ if: ${version} }}
-{{ use: partial-version(version: '5.1.0') }}
+{{ use: partial-version(
+    version = '5.1.0'
+) }}
 {{ /if }}
 
 tooltip settings in this ${componentItemDesc}.
@@ -78,6 +82,7 @@
 ) }}
 
 
+
 {{ target: partial-tooltip-in-series-data }}
 
 ### tooltip(*)
@@ -115,7 +120,6 @@
 including tooltip floating layer and [axisPointer](~tooltip.axisPointer).
 {{ /if }}
 
-
 {{ if: !${noAxis} }}
 #${prefix} trigger(string) = 'item'
 
@@ -138,7 +142,6 @@
 
     Trigger nothing.
 
-
 #${prefix} axisPointer(Object)
 
 Configuration item for axisPointer.
@@ -190,10 +193,10 @@
     defaultAnimationEasingUpdate = 'exponentialOut',
     defaultAnimationDurationUpdate = 200
 ) }}
-
 {{ /if }}
 
 
+
 {{ target: partial-tooltip-common }}
 
 #${prefix} position(string|Array)
diff --git a/en/option/partial/universal-transition.md b/en/option/partial/universal-transition.md
new file mode 100644
index 0000000..66dd454
--- /dev/null
+++ b/en/option/partial/universal-transition.md
@@ -0,0 +1,52 @@
+
+{{ target: partial-universal-transition }}
+
+#${prefix} universalTransition(object)
+
+Configuration related to universal transition animation.
+
+Universal Transition provides the ability to morph between any series. With this feature enabled, each time `setOption`, transitions between series with the same `id` will be automatically associated with each other.
+
+One-to-many or many-to-one animations such as drill-down, aggregation, etc. can also be achieved by specifying groups of data such as `encode.itemGroupId` or `dataGroupId`.
+
+This can be enabled directly by configuring `universalTransition: true` in the series. It is also possible to provide an object for more detailed configuration.
+
+##${prefix} enabled(boolean) = false
+
+Wheather to enable the universal transition animation.
+
+##${prefix} seriesKey(string|Array)
+
+The `seriesKey` determines how the series to be animated is associated, it defaults to the `id` of the series when not configured.
+
+Usually this is configured as a string, and transitions between series with the same `seriesKey` will be applied. It can also be configured as an array like the following.
+
+```js
+seriesKey: ['male', 'female']
+```
+
+Configuring to an array means that all series specified by the array item will be merged into the current series when animating. For example, this configuration means that series with `id` or `seriesKey` of `'male'` and `'female'` will be merged into the current series.
+
+##${prefix} divideShape(string)
+
+`divideShape` determines how the elements in the current series will split into multiple elements in a one-to-many or many-to-one animation. Currently supports
+
++ `'split'` Split the shape into multiple shapes.
++ `'clone'` Get multiple clones from the current element.
+
+For better results, different series will have different configurations by default, for example, [scatter](~series-scatter) with smaller and more complex element uses `'clone'` by default, while more regular ones like bar charts default to `'split'`. You can set this to the desired splitting strategy according to the needs of your own scenario.
+
+##${prefix} delay(Function)
+
+```ts
+(index: number, count: number) => number
+```
+
+Configure the animation delay for each shape in a one-to-many or many-to-one animation. Setting different animation delays can bring a more instereting animation. For example, the following code creates a staggered effect with a random delay for each shape.
+
+```js
+delay: function (index, count) {
+    return Math.random() * 1000;
+}
+```
+
diff --git a/en/option/series/bar.md b/en/option/series/bar.md
index daade69..d6ff096 100644
--- a/en/option/series/bar.md
+++ b/en/option/series/bar.md
@@ -161,6 +161,8 @@
 
 {{ use: partial-datasetIndex() }}
 
+{{ use: partial-series-group-id() }}
+
 ## data(Array)
 
 {{ use: partial-2d-data-desc() }}
@@ -173,6 +175,10 @@
 
 The value of a single data item.
 
+{{ use: partial-data-group-id(
+    prefix = '##'
+) }}
+
 {{ use: partial-bar-state(
     prefix = "##",
     topLevel = false,
@@ -234,6 +240,10 @@
     prefix = "#"
 ) }}
 
+{{ use: partial-universal-transition(
+    prefix = "#"
+) }}
+
 {{ use: partial-tooltip-in-series() }}
 
 
diff --git a/en/option/series/boxplot.md b/en/option/series/boxplot.md
index 7d18539..99723dd 100644
--- a/en/option/series/boxplot.md
+++ b/en/option/series/boxplot.md
@@ -132,6 +132,8 @@
     prefix = "#"
 ) }}
 
+{{ use: partial-series-group-id() }}
+
 ## data(Array)
 
 Data should be the two-dimensional array shown as follow.
@@ -174,6 +176,10 @@
 [min,  Q1,  median (or Q2),  Q3,  max]
 ```
 
+{{ use: partial-data-group-id(
+    prefix = '##'
+) }}
+
 ### itemStyle(Object)
 
 Style of a single data.
@@ -250,5 +256,9 @@
     defaultAnimationDuration = 800
 ) }}
 
+{{ use: partial-universal-transition(
+    prefix = "#"
+) }}
+
 {{ use: partial-tooltip-in-series() }}
 
diff --git a/en/option/series/candlestick.md b/en/option/series/candlestick.md
index d32acc2..a8551de 100644
--- a/en/option/series/candlestick.md
+++ b/en/option/series/candlestick.md
@@ -159,6 +159,8 @@
     prefix = "#"
 ) }}
 
+{{ use: partial-series-group-id() }}
+
 ## data(Array)
 
 Data should be the two-dimensional array shown as follows.
@@ -193,6 +195,10 @@
 [open, close, lowest, highest]  (namely: [opening value, closing value, lowest value, highest value])
 ```
 
+{{ use: partial-data-group-id(
+    prefix = '##'
+) }}
+
 ### itemStyle(Object)
 
 Style of a candle box.
@@ -268,6 +274,10 @@
     defaultAnimationDuration = 300
 ) }}
 
+{{ use: partial-universal-transition(
+    prefix = "#"
+) }}
+
 {{ use: partial-tooltip-in-series() }}
 
 
diff --git a/en/option/series/custom.md b/en/option/series/custom.md
index 810a5e8..c18c7e1 100644
--- a/en/option/series/custom.md
+++ b/en/option/series/custom.md
@@ -424,6 +424,8 @@
 
 {{ use: partial-datasetIndex() }}
 
+{{ use: partial-series-group-id() }}
+
 ## data(Array)
 
 {{ use: partial-2d-data-desc() }}
@@ -436,6 +438,10 @@
 
 Value of data item.
 
+{{ use: partial-data-group-id(
+    prefix = '##'
+) }}
+
 ### itemStyle(Object)
 
 {{ use: partial-item-style(
@@ -471,6 +477,10 @@
     prefix = "#"
 ) }}
 
+{{ use: partial-universal-transition(
+    prefix = "#"
+) }}
+
 {{ use: partial-tooltip-in-series() }}
 
 
diff --git a/en/option/series/funnel.md b/en/option/series/funnel.md
index 1e92ed0..c5e4eb2 100644
--- a/en/option/series/funnel.md
+++ b/en/option/series/funnel.md
@@ -170,6 +170,8 @@
     prefix = "#"
 ) }}
 
+{{ use: partial-series-group-id() }}
+
 ## data(Array)
 
 {{ use: partial-1d-data-desc() }}
@@ -253,6 +255,10 @@
     prefix = "#"
 ) }}
 
+{{ use: partial-universal-transition(
+    prefix = "#"
+) }}
+
 {{ use: partial-tooltip-in-series() }}
 
 
diff --git a/en/option/series/graph.md b/en/option/series/graph.md
index 9e0d658..d1e8bd2 100644
--- a/en/option/series/graph.md
+++ b/en/option/series/graph.md
@@ -195,7 +195,7 @@
 {{ use: partial-label(
     prefix = "##",
     defaultPosition = "'inside'",
-    formatter2d = true
+    formatter = true
 ) }}
 
 ## edgeLabel(Object)
@@ -280,7 +280,7 @@
 {{ use: partial-label(
     prefix = "###",
     defaultPosition = "inside",
-    formatter2d = true
+    formatter = true
 ) }}
 
 ### emphasis(Object)
@@ -581,7 +581,7 @@
 {{ use: partial-label(
     prefix = "###",
     defaultShow = true,
-    formatter2d = true
+    formatter = true
 ) }}
 
 ### edgeLabel(Object)
diff --git a/en/option/series/heatmap.md b/en/option/series/heatmap.md
index d0326aa..674a112 100644
--- a/en/option/series/heatmap.md
+++ b/en/option/series/heatmap.md
@@ -112,6 +112,16 @@
     version = '5.0.0'
 ) }}
 
+{{ use: partial-series-encode(
+    prefix = "#"
+) }}
+
+{{ use: partial-seriesLayoutBy() }}
+
+{{ use: partial-datasetIndex() }}
+
+{{ use: partial-series-group-id() }}
+
 ## data(Array)
 
 {{ use: partial-2d-data-desc() }}
@@ -124,6 +134,10 @@
 
 Value of data item.
 
+{{ use: partial-data-group-id(
+    prefix = '##'
+) }}
+
 ### label(Object)
 
 It is valid with [coordinateSystem](~series-heatmap.coordinateSystem) of 'cartesian2d' value.
@@ -189,3 +203,7 @@
     defaultPosition = "inside"
 ) }}
 
+{{ use: partial-universal-transition(
+    prefix = "#"
+) }}
+
diff --git a/en/option/series/line.md b/en/option/series/line.md
index d84feef..a9308b6 100644
--- a/en/option/series/line.md
+++ b/en/option/series/line.md
@@ -274,6 +274,8 @@
 
 {{ use: partial-datasetIndex() }}
 
+{{ use: partial-series-group-id() }}
+
 ## data(Array)
 
 {{ use: partial-2d-data-desc() }}
@@ -286,6 +288,10 @@
 
 The value of a single data item.
 
+{{ use: partial-data-group-id(
+    prefix = '##'
+) }}
+
 {{ use: partial-symbol(
     defaultSymbol = "'circle'",
     defaultSymbolSize = 4,
@@ -363,6 +369,10 @@
     defaultAnimationEasing = 'linear'
 ) }}
 
+{{ use: partial-universal-transition(
+    prefix = "#"
+) }}
+
 {{ use: partial-tooltip-in-series() }}
 
 
diff --git a/en/option/series/lines.md b/en/option/series/lines.md
index 2751963..b1f02a8 100644
--- a/en/option/series/lines.md
+++ b/en/option/series/lines.md
@@ -173,6 +173,8 @@
     prefix = '#'
 ) }}
 
+{{ use: partial-series-group-id() }}
+
 ## data(Array)
 
 The data set of lines.
@@ -181,6 +183,10 @@
 
 the name of data.
 
+{{ use: partial-data-group-id(
+    prefix = '##'
+) }}
+
 ### coords(Array)
 
 An array includes two ore more than two coordinates. Each coordinate could be `[x, y]` in [rectangular coordinate](~grid) and `[lng, lat]` in [geographic coordinate](~geo).
@@ -250,6 +256,10 @@
     prefix = "#"
 ) }}
 
+{{ use: partial-universal-transition(
+    prefix = "#"
+) }}
+
 
 
 {{ target: lines-label }}
diff --git a/en/option/series/map.md b/en/option/series/map.md
index 0bde9f4..07c7dfb 100644
--- a/en/option/series/map.md
+++ b/en/option/series/map.md
@@ -54,6 +54,8 @@
 
 {{ use: partial-datasetIndex() }}
 
+{{ use: partial-series-group-id() }}
+
 ## labelLayout(Object|Function)
 
 {{ use: partial-label-layout(
@@ -86,6 +88,10 @@
 
 The numerical value of this area.
 
+{{ use: partial-data-group-id(
+    prefix = '##'
+) }}
+
 ### selected(boolean) = false
 
 Whether the are selected.
@@ -152,6 +158,10 @@
     prefix = "#"
 ) }}
 
+{{ use: partial-universal-transition(
+    prefix = "#"
+) }}
+
 {{ use: partial-tooltip-in-series() }}
 
 
diff --git a/en/option/series/pictorialBar.md b/en/option/series/pictorialBar.md
index b86437b..b0a0c3d 100644
--- a/en/option/series/pictorialBar.md
+++ b/en/option/series/pictorialBar.md
@@ -164,6 +164,8 @@
     prefix = "#"
 ) }}
 
+{{ use: partial-series-group-id() }}
+
 ## data(Array)
 
 {{ use: partial-2d-data-desc() }}
@@ -176,6 +178,10 @@
 
 The value of a single data item.
 
+{{ use: partial-data-group-id(
+    prefix = '##'
+) }}
+
 {{ use: pictorialBar-symbol-attrs(
     prefix = "##",
     useZ2 = true
@@ -264,6 +270,10 @@
     noAnimationDelay = true
 ) }}
 
+{{ use: partial-universal-transition(
+    prefix = "#"
+) }}
+
 {{ use: pictorialBar-animation-delay(
     prefix = "##"
 ) }}
diff --git a/en/option/series/pie.md b/en/option/series/pie.md
index 6a01cf1..a305a62 100644
--- a/en/option/series/pie.md
+++ b/en/option/series/pie.md
@@ -250,6 +250,8 @@
     prefix = "#"
 ) }}
 
+{{ use: partial-series-group-id() }}
+
 ## data(Array)
 
 {{ use: partial-1d-data-desc() }}
@@ -262,6 +264,10 @@
 
 Data value.
 
+{{ use: partial-data-group-id(
+    prefix = '##'
+) }}
+
 ### selected(boolean) = false
 
 Whether the data item is selected.
@@ -278,7 +284,7 @@
 
 ### labelLine(Object)
 
-{{ use: partial-pie-label-line(
+{{ use: partial-label-line(
     prefix = '###',
     length = true,
     length2 = true,
@@ -359,6 +365,10 @@
     prefix = "#"
 ) }}
 
+{{ use: partial-universal-transition(
+    prefix = "#"
+) }}
+
 {{ use: partial-tooltip-in-series() }}
 
 
@@ -425,7 +435,7 @@
 
 #${prefix} labelLine(Object)
 
-{{ use: partial-pie-label-line(
+{{ use: partial-label-line(
     prefix = "#" + ${prefix},
     length = false,
     length2 = false,
diff --git a/en/option/series/radar.md b/en/option/series/radar.md
index 36ca6b8..cb2acfc 100644
--- a/en/option/series/radar.md
+++ b/en/option/series/radar.md
@@ -113,6 +113,8 @@
     version = '5.0.0'
 ) }}
 
+{{ use: partial-series-group-id() }}
+
 ## data(Array)
 
 The data in radar chart is multi-variable (dimension). Here is an example:
@@ -140,6 +142,10 @@
 
 Numerical value of a single data item.
 
+{{ use: partial-data-group-id(
+    prefix = '##'
+) }}
+
 {{ use: partial-symbol(
     defaultSymbol = "'circle'",
     defaultSymbolSize = 4,
@@ -227,6 +233,10 @@
     prefix = "#"
 ) }}
 
+{{ use: partial-universal-transition(
+    prefix = "#"
+) }}
+
 {{ use: partial-tooltip-in-series() }}
 
 
diff --git a/en/option/series/scatter.md b/en/option/series/scatter.md
index 4ed7db9..2ebe7bc 100644
--- a/en/option/series/scatter.md
+++ b/en/option/series/scatter.md
@@ -141,6 +141,8 @@
 
 {{ use: partial-datasetIndex() }}
 
+{{ use: partial-series-group-id() }}
+
 ## data(Array)
 
 {{ use: partial-2d-data-desc() }}
@@ -153,6 +155,10 @@
 
 the value of data item.
 
+{{ use: partial-data-group-id(
+    prefix = '##'
+) }}
+
 {{ use: partial-symbol(
     prefix = "##",
     name = "single data"
@@ -243,6 +249,10 @@
     prefix = "#"
 ) }}
 
+{{ use: partial-universal-transition(
+    prefix = "#"
+) }}
+
 {{ use: partial-tooltip-in-series() }}
 
 
diff --git a/src/components/DocContent.vue b/src/components/DocContent.vue
index 241b6f8..efe5d0a 100644
--- a/src/components/DocContent.vue
+++ b/src/components/DocContent.vue
@@ -42,7 +42,6 @@
 import {
     getPageTotalDescAsync,
     getPageOutlineAsync,
-    getOutlineAsync,
     convertPathToId,
     getOutlineNode,
     getDefaultPage
diff --git a/zh/option/component/aria.md b/zh/option/component/aria.md
index 8df79d5..7f595f3 100644
--- a/zh/option/component/aria.md
+++ b/zh/option/component/aria.md
@@ -197,8 +197,6 @@
 
 需要注意的是,通常最后一个数据后是系列的 `separator.end`,所以 `data.separator.end` 在大多数情况下为空字符串。
 
-
-
 ## decal(Object)
 
 为系列数据增加贴花纹理,作为颜色的辅助,帮助区分数据。使用默认贴花图案的方式非常简单,只需要开启即可:
@@ -227,3 +225,4 @@
 {{ use: partial-decal(
     prefix = "###"
 ) }}
+
diff --git a/zh/option/component/axis-common.md b/zh/option/component/axis-common.md
index 77f4d51..4cd787b 100644
--- a/zh/option/component/axis-common.md
+++ b/zh/option/component/axis-common.md
@@ -895,4 +895,3 @@
 },
 ```
 
-
diff --git a/zh/option/component/data-zoom-slider.md b/zh/option/component/data-zoom-slider.md
index f8d0c86..fb806a7 100644
--- a/zh/option/component/data-zoom-slider.md
+++ b/zh/option/component/data-zoom-slider.md
@@ -132,7 +132,6 @@
 
 {{ use: partial-icon-image-path() }}
 
-
 ## handleSize(number|string) = '100%'
 
 <ExampleUIControlPercent min="0" step="1" default="100%" />
@@ -248,7 +247,6 @@
     componentName = 'dataZoom-slider'
 ) }}
 
-
 ## brushSelect(boolean) = true
 
 {{ use: partial-version(
@@ -290,4 +288,5 @@
 
 {{ use: partial-item-style(
     prefix = "###"
-) }}
\ No newline at end of file
+) }}
+
diff --git a/zh/option/component/geo-common.md b/zh/option/component/geo-common.md
index aa3a8c4..2390562 100644
--- a/zh/option/component/geo-common.md
+++ b/zh/option/component/geo-common.md
@@ -40,7 +40,6 @@
 
 如上所示,ECharts 可以使用 [GeoJSON](http://geojson.org/) 格式的数据作为地图的轮廓,你可以获取第三方的 [GeoJSON](http://geojson.org/) 数据注册到 ECharts 中。例如第三方资源 [maps](https://github.com/echarts-maps)。
 
-
 {{ if: ${inMap} }}
 **SVG 引入示例**
 ```js
@@ -76,7 +75,6 @@
 
 如上所示,ECharts 也可以使用 SVG 格式的地图。详情参见:[SVG 底图](tutorial.html#%E5%9C%B0%E7%90%86%E5%9D%90%E6%A0%87%E7%B3%BB%E5%92%8C%E5%9C%B0%E5%9B%BE%E7%B3%BB%E5%88%97%E7%9A%84%20SVG%20%E5%BA%95%E5%9B%BE)。
 
-
 #${prefix} roam(boolean|string) = false
 
 {{ use: partial-roam() }}
@@ -182,7 +180,9 @@
 高亮状态下的多边形和标签样式。
 
 {{ if: !${inMap} }}
-{{ use: partial-focus-blur-scope(isGeoCoordSys: true) }}
+{{ use: partial-focus-blur-scope(
+    isGeoCoordSys = true
+) }}
 {{ /if }}
 
 {{ use: partial-geo-common-state(
@@ -199,7 +199,11 @@
 
 {{ if: !${inMap} }}
 #${prefix} blur(Object)
-{{ use: partial-version(version: '5.1.0') }}
+
+{{ use: partial-version(
+    version = '5.1.0'
+) }}
+
 淡出状态下的多边形和标签样式。
 
 {{ use: partial-geo-common-state(
@@ -207,7 +211,6 @@
 ) }}
 {{ /if }}
 
-
 {{ use: partial-rect-layout(
     prefix = ${prefix}
 ) }}
diff --git a/zh/option/component/geo.md b/zh/option/component/geo.md
index ba22411..6f54d0f 100644
--- a/zh/option/component/geo.md
+++ b/zh/option/component/geo.md
@@ -95,20 +95,21 @@
 {{ use: geo-region-state() }}
 
 ### blur(Object)
-{{ use: partial-version(version: '5.1.0') }}
+
+{{ use: partial-version(
+    version = '5.1.0'
+) }}
+
 淡出状态的设置。
 
 {{ use: geo-region-state() }}
 
-
 {{ use: partial-tooltip-in-coords-item(
-    componentItemDesc: 'region',
-    noAxis: true,
+    componentItemDesc = 'region',
+    noAxis = true,
     version = '5.1.0'
 ) }}
 
-
-
 {{ use: partial-silent(
     prefix = "#"
 ) }}
@@ -119,6 +120,7 @@
 ) }}
 
 
+
 {{ target: geo-region-state }}
 
 #### itemStyle(Object)
diff --git a/zh/option/component/legend.md b/zh/option/component/legend.md
index 3e3487a..53dc828 100644
--- a/zh/option/component/legend.md
+++ b/zh/option/component/legend.md
@@ -184,6 +184,10 @@
     prefix = "#"
 ) }}
 
+## symbolRotate(number|string) = 'inherit'
+
+图形旋转角度,类型为 `number | 'inherit'`。如果为 `'inherit'`,表示取系列的 `symbolRotate`。
+
 ## formatter(string|Function) = null
 
 用来格式化图例文本,支持字符串模板和回调函数两种形式。
@@ -309,6 +313,10 @@
     prefix = "##"
 ) }}
 
+### symbolRotate(number|string) = 'inherit'
+
+图形旋转角度,类型为 `number | 'inherit'`。如果为 `'inherit'`,表示取系列的 `symbolRotate`。
+
 ### textStyle(Object)
 
 图例项的文本样式。
@@ -598,3 +606,4 @@
     defaultShadowOffsetX = 0,
     defaultShadowOffsetY = 0
 ) }}
+
diff --git a/zh/option/component/timeline.md b/zh/option/component/timeline.md
index 81c56bd..752196a 100644
--- a/zh/option/component/timeline.md
+++ b/zh/option/component/timeline.md
@@ -85,8 +85,7 @@
 <br>
 **`finalOption` 是怎么计算出来的?**
 
-{{ use: partial-timeline-merge-strategy }}
-
+{{ use: partial-timeline-merge-strategy() }}
 
 <br>
 **兼容 ECharts4**
@@ -524,7 +523,7 @@
 
 ## replaceMerge(Array|string) = undefined
 
-{{ use: partial-timeline-merge-strategy }}
+{{ use: partial-timeline-merge-strategy() }}
 
 <br>
 
@@ -534,7 +533,6 @@
 
 参见这个 [示例](${galleryEditorPath}doc-example/timeline-dynamic-series&edit=1&reset=1)。
 
-
 ## controlPosition(string) = 'left'
 
 <ExampleUIControlEnum options="left,right" />
@@ -795,7 +793,6 @@
     textStyleDefaultColor = "'#6f778d'"
 ) }}
 
-
 ## emphasis(Object)
 
 ### label(Object)
diff --git a/zh/option/component/visual-map-continuous.md b/zh/option/component/visual-map-continuous.md
index 9d61e9d..3ab2216 100644
--- a/zh/option/component/visual-map-continuous.md
+++ b/zh/option/component/visual-map-continuous.md
@@ -208,7 +208,6 @@
     defaultBorderWidth = 1
 ) }}
 
-
 ## indicatorIcon(string) = 'circle'
 
 指示器的形状,默认为圆形。指示器在鼠标移到组件上,或者在移到系列图形上联动高亮的时候出现。
@@ -219,7 +218,6 @@
 
 <ExampleUIControlIcon />
 
-
 ## indicatorSize(number|string) = '50%'
 
 {{ use: partial-version(
@@ -241,3 +239,4 @@
     defaultShadowOffsetY = 1,
     defaultShadowColor = 'rgba(0,0,0,0.2)'
 ) }}
+
diff --git a/zh/option/component/visual-map.md b/zh/option/component/visual-map.md
index 8f6e5c3..962cfbe 100644
--- a/zh/option/component/visual-map.md
+++ b/zh/option/component/visual-map.md
@@ -289,7 +289,6 @@
 
 反之,鼠标悬浮到图表中的图形元素上时,在 `visualMap` 组件的相应位置会有三角提示其所对应的数值。
 
-
 ## inRange(Object)
 
 定义 **在选中范围中** 的视觉元素。(用户可以和 visualMap 组件交互,用鼠标或触摸选择范围)
@@ -332,7 +331,6 @@
 
 配置参考 [${visualMapName}.inRange](~${visualMapName}.inRange)
 
-
 {{ use: partial-rect-layout(
     componentName = "visualMap ",
     defaultZ = "4",
diff --git a/zh/option/partial/decal.md b/zh/option/partial/decal.md
index 746fa02..9a3f60d 100644
--- a/zh/option/partial/decal.md
+++ b/zh/option/partial/decal.md
@@ -1,3 +1,4 @@
+
 {{ target: partial-decal-desc }}
 
 图形的贴花图案,在 [aria.enabled](~aria.enabled) 与 [aria.decal.show](~aria.decal.show) 都是 `true` 的情况下才生效。
@@ -5,9 +6,7 @@
 如果为 `'none'` 表示不使用贴花图案。
 
 {{ if: ${onlyWithAreaStyle} }}
-
 需要在设置了填充样式 `areaStyle` 的情况下才生效。
-
 {{ /if }}
 
 
@@ -77,3 +76,4 @@
 #${prefix|default('#')} maxTileHeight(number) = 512
 
 生成的图案在未重复之前的高度上限。通常不需要设置该值,当你发现图案在重复的时候出现不连续的接缝时,可以尝试提高该值。
+
diff --git a/zh/option/partial/encode-dimensions.md b/zh/option/partial/encode-dimensions.md
index b3a278c..b8c4a76 100644
--- a/zh/option/partial/encode-dimensions.md
+++ b/zh/option/partial/encode-dimensions.md
@@ -54,7 +54,9 @@
     // 表示使用第二个维度中的值作为 id。这在使用 setOption 动态更新数据时有用处,可以使新老数据用 id 对应起来,从而能够产生合适的数据更新动画。
     itemId: 2,
     // 指定数据项的名称使用第三个维度在饼图等图表中有用,可以使这个名字显示在图例(legend)中。
-    itemName: 3
+    itemName: 3,
+    // 指定数据项的组 ID (groupID),组 ID 会被用于分类数据,并在全局过渡动画中决定如何进行合并和分裂动画,具体见 universalTransition
+    itemGroupId: 4
 }
 
 // 直角坐标系(grid/cartesian)特有的属性:
diff --git a/zh/option/partial/focus-blur-scope.md b/zh/option/partial/focus-blur-scope.md
index 216099f..422e66e 100644
--- a/zh/option/partial/focus-blur-scope.md
+++ b/zh/option/partial/focus-blur-scope.md
@@ -17,6 +17,7 @@
 
 + `'none'` 不淡出其它图形,默认使用该配置。
 + `'self'` 只聚焦(不淡出)当前高亮的数据的图形。
+
 {{ if: !${isGeoCoordSys} }}
 + `'series'` 聚焦当前高亮的数据所在的系列的所有图形。
 {{ /if }}
@@ -67,3 +68,4 @@
 + `'series'` 淡出范围为系列。
 + `'global'` 淡出范围为全局。
 {{ /if }}
+
diff --git a/zh/option/partial/group-id.md b/zh/option/partial/group-id.md
new file mode 100644
index 0000000..59393a8
--- /dev/null
+++ b/zh/option/partial/group-id.md
@@ -0,0 +1,17 @@
+
+{{ target: partial-series-group-id }}
+
+## dataGroupId(string)
+
+该系列所有数据共有的组 ID。组 ID 会被用于分类数据,并在全局过渡动画中决定如何进行合并和分裂动画。
+
+如果你使用了[dataset](~dataset)组件来表达数据,推荐使用`encode.itemGroupID`来指定哪个维度被编码为组 ID。
+
+
+
+{{ target: partial-data-group-id }}
+
+#${prefix} groupId(string)
+
+该数据项的组 ID。组 ID 会被用于分类数据,并在全局过渡动画中决定如何进行合并和分裂动画。
+
diff --git a/zh/option/partial/item-style.md b/zh/option/partial/item-style.md
index 50e28f7..15bf47d 100644
--- a/zh/option/partial/item-style.md
+++ b/zh/option/partial/item-style.md
@@ -56,7 +56,6 @@
 ) }}
 
 {{ if: ${useDecal} }}
-
 #${prefix} decal(Object) = ${defaultDecal}
 
 {{ use: partial-decal-desc(
@@ -66,5 +65,5 @@
 {{ use: partial-decal(
     prefix = '#' + ${prefix}
 ) }}
-
 {{ /if }}
+
diff --git a/zh/option/partial/label-line.md b/zh/option/partial/label-line.md
index a176458..96bb7d1 100644
--- a/zh/option/partial/label-line.md
+++ b/zh/option/partial/label-line.md
@@ -1,7 +1,10 @@
+
 {{ target: partial-label-line-desc }}
 
 标签的视觉引导线配置。
 
+
+
 {{ target: partial-label-line }}
 
 #${prefix} show(boolean)
@@ -53,3 +56,4 @@
 {{ use: partial-line-style(
     prefix = "#" + ${prefix}
 ) }}
+
diff --git a/zh/option/partial/line-border-style.md b/zh/option/partial/line-border-style.md
index a656f54..78e0a63 100644
--- a/zh/option/partial/line-border-style.md
+++ b/zh/option/partial/line-border-style.md
@@ -1,8 +1,10 @@
+
 {{ target: partial-line-border-style }}
 
 {{ if: ${type} === 'border' }}
 #${prefix} borderType(string|number|Array) = ${defaultType|default("'solid'")}
-{{ elif: ${type} === 'text'  }}
+
+{{ elif: ${type} === 'text' }}
 #${prefix} textBorderType(string|number|Array) = ${defaultType|default("'solid'")}
 {{ else }}
 #${prefix} type(string|number|Array) = ${defaultType|default("'solid'")}
@@ -12,7 +14,8 @@
 
 {{ if: ${type} === 'border' }}
 ${name}描边类型。
-{{ elif: ${type} === 'text'  }}
+
+{{ elif: ${type} === 'text' }}
 文字本身的描边类型。
 {{ else }}
 线的类型。
@@ -25,7 +28,7 @@
 
 自 `v5.0.0` 开始,也可以是 `number` 或者 `number` 数组,用以指定线条的 [dash array](https://developer.mozilla.org/zh-CN/docs/Web/SVG/Attribute/stroke-dasharray),配合 {{ if: ${type} === 'border' }}
 `borderDashOffset`
-{{ elif: ${type} === 'text'  }}
+{{ elif: ${type} === 'text' }}
 `textBorderDashOffset`
 {{ else }}
 `dashOffset`
@@ -34,15 +37,17 @@
 例如:
 ```js
 {
-	{{ if: ${type} === 'border' }}borderType{{ elif: ${type} === 'text'  }}textBorderType{{ else }}type{{ /if }}: [5, 10],
-	{{ if: ${type} === 'border' }}borderDashOffset{{ elif: ${type} === 'text'  }}textBorderDashOffset{{ else }}dashOffset{{ /if }}: 5
+
+{{ if: ${type} === 'border' }}borderType{{ elif: ${type} === 'text' }}textBorderType{{ else }}type{{ /if }}: [5, 10],
+
+{{ if: ${type} === 'border' }}borderDashOffset{{ elif: ${type} === 'text' }}textBorderDashOffset{{ else }}dashOffset{{ /if }}: 5
 }
 ```
 
-
 {{ if: ${type} === 'border' }}
 #${prefix} borderDashOffset(number) = ${defaultDashOffset|default(0)}
-{{ elif: ${type} === 'text'  }}
+
+{{ elif: ${type} === 'text' }}
 #${prefix} textBorderDashOffset(number) = ${defaultDashOffset|default(0)}
 {{ else }}
 #${prefix} dashOffset(number) = ${defaultDashOffset|default(0)}
@@ -56,7 +61,7 @@
 
 用于设置虚线的偏移量,可搭配 {{ if: ${type} === 'border' }}
 `borderType`
-{{ elif: ${type} === 'text'  }}
+{{ elif: ${type} === 'text' }}
 `textBorderType`
 {{ else }}
 `type`
@@ -64,9 +69,7 @@
 
 更多详情可以参考 MDN [lineDashOffset](https://developer.mozilla.org/zh-CN/docs/Web/API/CanvasRenderingContext2D/lineDashOffset)。
 
-
 {{ if: !${noCap} }}
-
 {{ if: ${type} === 'border' }}
 #${prefix} borderCap(string) = ${defaultCap|default('butt')}
 {{ else }}
@@ -85,12 +88,9 @@
 + `'square'`: 线段末端以方形结束,但是增加了一个宽度和线段相同,高度是线段厚度一半的矩形区域。
 
 默认值为 `'butt'`。 更多详情可以参考 MDN [lineCap](https://developer.mozilla.org/zh-CN/docs/Web/API/CanvasRenderingContext2D/lineCap)。
-
 {{ /if }}
 
-
 {{ if: !${noJoin} }}
-
 {{ if: ${type} === 'border' }}
 #${prefix} borderJoin(string) = ${defaultJoin|default('bevel')}
 {{ else }}
@@ -115,12 +115,9 @@
 {{ /if }} 属性看到效果。
 
 默认值为 `'bevel'`。 更多详情可以参考 MDN [lineJoin](https://developer.mozilla.org/zh-CN/docs/Web/API/CanvasRenderingContext2D/lineJoin)。
-
 {{ /if }}
 
-
 {{ if: !${noMiterLimit} }}
-
 {{ if: ${type} === 'border' }}
 #${prefix} borderMiterLimit(number) = ${defaultMiterLimit|default(10)}
 {{ else }}
@@ -146,5 +143,5 @@
 默认值为 `10`。负数、`0`、`Infinity` 和 `NaN` 均会被忽略。
 
 更多详情可以参考 MDN [miterLimit](https://developer.mozilla.org/zh-CN/docs/Web/API/CanvasRenderingContext2D/miterLimit)。
+{{ /if }}
 
-{{ /if }}
\ No newline at end of file
diff --git a/zh/option/partial/mark-line.md b/zh/option/partial/mark-line.md
index a6cfb74..78234e7 100644
--- a/zh/option/partial/mark-line.md
+++ b/zh/option/partial/mark-line.md
@@ -219,6 +219,7 @@
 ) }}
 
 
+
 {{ target: mark-line-data-item-item }}
 
 {{ if: ${hasType} }}
diff --git a/zh/option/partial/state-animation.md b/zh/option/partial/state-animation.md
index 4694d30..71111bd 100644
--- a/zh/option/partial/state-animation.md
+++ b/zh/option/partial/state-animation.md
@@ -1,3 +1,4 @@
+
 {{ target: partial-state-animation }}
 
 #${prefix} duration(number) = ${defaultDuration|default(300)}
@@ -10,4 +11,5 @@
 
 <ExampleUIControlEnum options="linear,quadraticIn,quadraticOut,quadraticInOut,cubicIn,cubicOut,cubicInOut,quarticIn,quarticOut,quarticInOut,quinticIn,quinticOut,quinticInOut,sinusoidalIn,sinusoidalOut,sinusoidalInOut,exponentialIn,exponentialOut,exponentialInOut,circularIn,circularOut,circularInOut,elasticIn,elasticOut,elasticInOut,backIn,backOut,backInOut,bounceIn,bounceOut,bounceInOut" />
 
-状态切换的动画缓动。
\ No newline at end of file
+状态切换的动画缓动。
+
diff --git a/zh/option/partial/tooltip-common.md b/zh/option/partial/tooltip-common.md
index cb67ca1..9fe999c 100644
--- a/zh/option/partial/tooltip-common.md
+++ b/zh/option/partial/tooltip-common.md
@@ -23,7 +23,9 @@
 ## tooltip(Object)
 
 {{ if: ${version} }}
-{{ use: partial-version(version: '5.1.0') }}
+{{ use: partial-version(
+    version = '5.1.0'
+) }}
 {{ /if }}
 
 本坐标系特定的 tooltip 设定。
@@ -49,7 +51,9 @@
 ### tooltip(*)
 
 {{ if: ${version} }}
-{{ use: partial-version(version: '5.1.0') }}
+{{ use: partial-version(
+    version = '5.1.0'
+) }}
 {{ /if }}
 
 本 ${componentItemDesc} 中特定的 tooltip 设定。
@@ -78,6 +82,7 @@
 ) }}
 
 
+
 {{ target: partial-tooltip-in-series-data }}
 
 ### tooltip(*)
@@ -91,7 +96,6 @@
 
 
 
-
 {{ target: partial-tooltip-scope-tip }}
 
 {{ if: ${scope} === 'series' }}
@@ -138,8 +142,6 @@
 
     什么都不触发。
 
-
-
 #${prefix} axisPointer(Object)
 
 坐标轴指示器配置项。
@@ -195,10 +197,10 @@
     defaultAnimationEasingUpdate = 'exponentialOut',
     defaultAnimationDurationUpdate = 200
 ) }}
-
 {{ /if }}
 
 
+
 {{ target: partial-tooltip-common }}
 
 #${prefix} position(string|Array|Function)
diff --git a/zh/option/partial/universal-transition.md b/zh/option/partial/universal-transition.md
new file mode 100644
index 0000000..a2ec2a4
--- /dev/null
+++ b/zh/option/partial/universal-transition.md
@@ -0,0 +1,52 @@
+
+{{ target: partial-universal-transition }}
+
+#${prefix} universalTransition(object)
+
+全局过渡动画相关的配置。
+
+全局过渡动画(Universal Transition)提供了任意系列之间进行变形动画的功能。开启该功能后,每次`setOption`,相同`id`的系列之间会自动关联进行动画的过渡,更细粒度的关联配置见`universalTransition.seriesKey`配置。
+
+通过配置`encode.itemGroupId`或者`dataGroupId`等指定数据的分组,还可以实现诸如下钻,聚合等一对多或者多对一的动画。
+
+可以直接在系列中配置 `universalTransition: true` 开启该功能。也可以提供一个对象进行更多属性的配置。
+
+##${prefix} enabled(boolean) = false
+
+是否开启全局过渡动画。
+
+##${prefix} seriesKey(string|Array)
+
+`seriesKey`决定了如何关联需要动画的系列,未配置时会默认取系列的`id`。
+
+通常该配置为一个字符串,配置为相同`seriesKey`的系列之间会进行动画的过渡。也可以像下面配置为一个数组:
+
+```js
+seriesKey: ['male', 'female']
+```
+
+配置为数组意味着在动画的时候所有数组项指定的系列会合并为当前系列。比如该配置是指`id`或者`seriesKey`为`'male'`和`'female'`的系列会合并成当前系列。
+
+##${prefix} divideShape(string)
+
+`divideShape`决定在一对多或者多对一的动画中,当前系列的图形如何分裂成多个图形。目前支持
+
++ `'split'` 通过一定的算法将分割图形成为多个。
++ `'clone'` 从当前图形克隆得到多个。
+
+为了较好的效果,不同的系列会默认有不同的配置,比如散点图这种图形比较小且复杂的默认采用了`'clone'`,而柱状图这种更加规则的则默认是`'split'`。你可以根据你自己的场景需求设置为需要的分裂策略。
+
+##${prefix} delay(Function)
+
+```ts
+(index: number, count: number) => number
+```
+
+配置一对多或者多对一的动画中每个图形的动画延时,设置不同的动画延时可以给动画带来一定的趣味性。比如下面代码每个图形通过一个随机的延时造成一种错落的效果:
+
+```js
+delay: function (index, count) {
+    return Math.random() * 1000;
+}
+```
+
diff --git a/zh/option/partial/zr-graphic.md b/zh/option/partial/zr-graphic.md
index 2cfbe06..c5ef1db 100644
--- a/zh/option/partial/zr-graphic.md
+++ b/zh/option/partial/zr-graphic.md
@@ -60,11 +60,6 @@
     symbolDeclare = ${symbolDeclare}
 ) }}
 
-
-
-
-
-
 {{ if: ${usageType} === 'customSeries' }}
 #${prefix} ${hostName}${symbolDeclare}path(Object)
 
@@ -144,8 +139,6 @@
     symbolDeclare = ${symbolDeclare}
 ) }}
 
-
-
 ##${prefix} style(Object)
 
 {{ use: partial-graphic-cpt-style-prop-common(
@@ -178,13 +171,8 @@
     symbolVisit = ${symbolVisit},
     symbolDeclare = ${symbolDeclare}
 ) }}
-
 {{ /if }}
 
-
-
-
-
 #${prefix} ${hostName}${symbolDeclare}image(Object)
 
 {{ use: partial-graphic-cpt-common-props(
@@ -230,7 +218,6 @@
     symbolDeclare = ${symbolDeclare}
 ) }}
 
-
 {{ use: partial-graphic-cpt-focus-blur(
     prefix = ${prefix}
 ) }}
@@ -253,10 +240,6 @@
     symbolDeclare = ${symbolDeclare}
 ) }}
 
-
-
-
-
 #${prefix} ${hostName}${symbolDeclare}text(Object)
 
 文本块。
@@ -343,10 +326,6 @@
     symbolDeclare = ${symbolDeclare}
 ) }}
 
-
-
-
-
 #${prefix} ${hostName}${symbolDeclare}rect(Object)
 
 矩形。
@@ -403,7 +382,6 @@
     symbolDeclare = ${symbolDeclare}
 ) }}
 
-
 ##${prefix} style(Object)
 
 {{ use: partial-graphic-cpt-style-prop-common(
@@ -437,10 +415,6 @@
     symbolDeclare = ${symbolDeclare}
 ) }}
 
-
-
-
-
 #${prefix} ${hostName}${symbolDeclare}circle(Object)
 
 圆。
@@ -519,10 +493,6 @@
     symbolDeclare = ${symbolDeclare}
 ) }}
 
-
-
-
-
 #${prefix} ${hostName}${symbolDeclare}ring(Object)
 
 圆环。
@@ -601,10 +571,6 @@
     symbolDeclare = ${symbolDeclare}
 ) }}
 
-
-
-
-
 #${prefix} ${hostName}${symbolDeclare}sector(Object)
 
 扇形。
@@ -692,10 +658,6 @@
     symbolDeclare = ${symbolDeclare}
 ) }}
 
-
-
-
-
 #${prefix} ${hostName}${symbolDeclare}arc(Object)
 
 圆弧。
@@ -786,10 +748,6 @@
     symbolDeclare = ${symbolDeclare}
 ) }}
 
-
-
-
-
 #${prefix} ${hostName}${symbolDeclare}polygon(Object)
 
 多边形。
@@ -859,10 +817,6 @@
     symbolDeclare = ${symbolDeclare}
 ) }}
 
-
-
-
-
 #${prefix} ${hostName}${symbolDeclare}polyline(Object)
 
 折线。
@@ -935,10 +889,6 @@
     symbolDeclare = ${symbolDeclare}
 ) }}
 
-
-
-
-
 #${prefix} ${hostName}${symbolDeclare}line(Object)
 
 直线。
@@ -1015,10 +965,6 @@
     symbolDeclare = ${symbolDeclare}
 ) }}
 
-
-
-
-
 #${prefix} ${hostName}${symbolDeclare}bezierCurve(Object)
 
 二次或三次贝塞尔曲线。
@@ -1110,11 +1056,6 @@
 
 
 
-
-
-
-
-
 {{ target: partial-graphic-cpt-common-props }}
 
 ##${prefix} type(string) = ${type}
@@ -1134,9 +1075,7 @@
 
 id 用于在更新或删除图形元素时指定更新哪个图形元素,如果不需要用可以忽略。
 
-
 {{ if: ${usageType} === 'graphicComponent' }}
-
 ##${prefix} $action(string) = 'merge'
 
 setOption 时指定本次对该图形元素的操作行为。
@@ -1220,11 +1159,8 @@
 ```
 
 看这个 [例子](${galleryEditorPath}doc-example/custom-transition-simple&edit=1&reset=1)。
-
 {{ /if }}
 
-
-
 {{ if: ${usageType} === 'customSeries' && ${enableMorph} }}
 ##${prefix} morph(boolean) = false
 
@@ -1247,12 +1183,8 @@
 
 参见示例:[custom-one-to-one-morph](${galleryEditorPath}custom-one-to-one-morph&edit=1&reset=1) 和
 [custom-combine-separate-morph](${galleryEditorPath}custom-combine-separate-morph&edit=1&reset=1)。
-
-
 {{ /if }}
 
-
-
 {{ if: ${usageType} === 'graphicComponent' }}
 ##${prefix} left(number|string) = undefined
 
@@ -1367,6 +1299,7 @@
 ##${prefix} textContent(Object)
 
 这是一个文本定义,附着在一个节点上,会依据 `textConfig` 配置,相对于节点布局。
+
 {{ if: ${usageType} === 'customSeries' }}
 里面的属性同于 [text](option.html#series-custom.renderItem.return_text)。
 {{ else }}
@@ -1490,11 +1423,11 @@
 
 如果确定文本是在节点中的话,则此可设置为 `true`,避免 echarts 额外猜测。
 
-
 {{ if: ${usageType} === 'customSeries' }}
 {{ use: partial-custom-series-during(
     prefix = ${prefix}
 ) }}
+
 {{ use: partial-custom-series-extra(
     prefix = ${prefix},
     optionPath = ${optionPath},
@@ -1573,7 +1506,6 @@
 
 
 
-
 {{ target: partial-graphic-cpt-path-common }}
 
 ###${prefix} points(Array)
@@ -1620,7 +1552,6 @@
 {{ target: partial-graphic-cpt-sub-prop-transition }}
 
 {{ if: ${usageType} === 'customSeries' }}
-
 ###${prefix} transition(string|Array) = undefined
 
 可以是一个属性名,或者一组属性名。
@@ -1659,7 +1590,6 @@
     };
 }
 ```
-
 {{ /if }}
 
 
@@ -1889,6 +1819,8 @@
 + transform 中设定的坐标,都是相对于图形元素的父元素的(即 [group](~${optionPath}.${hostName}${symbolVisit}group) 元素或者顶层画布)的 `[0, 0]` 点。也就是说,我们可以使用 [group](~${optionPath}.${hostName}${symbolVisit}group) 来组织多个图形元素,并且 [group](~${optionPath}.${hostName}${symbolVisit}group) 可以嵌套。
 + 对于一个图形元素,`transform` 执行的顺序是:先缩放(依照 `scaleX`,`scaleY`),再旋转(依照 `rotation`),再平移(依照 `x`,`y`)。
 
+
+
 {{ target: partial-graphic-cpt-focus-blur }}
 
 ##${prefix} focus(string) = 'none'
@@ -1916,6 +1848,7 @@
 + `'global'` 淡出范围为全局。
 
 
+
 {{ target: partial-graphic-cpt-style-emphasis }}
 
 {{ if: ${usageType} === 'customSeries' }}
@@ -2071,3 +2004,4 @@
 ```
 
 也参见这个 [例子](${galleryEditorPath}custom-spiral-race&edit=1&reset=1)。
+
diff --git a/zh/option/series/bar.md b/zh/option/series/bar.md
index ff4270a..50b357a 100644
--- a/zh/option/series/bar.md
+++ b/zh/option/series/bar.md
@@ -209,7 +209,6 @@
 + `'min'` 取过滤点的最小值
 + `'sum'` 取过滤点的和
 
-
 {{ use: partial-cursor() }}
 
 {{ use: partial-barGrid(
@@ -240,6 +239,8 @@
 
 {{ use: partial-datasetIndex() }}
 
+{{ use: partial-series-group-id() }}
+
 ## data(Array)
 
 {{ use: partial-2d-data-desc() }}
@@ -252,6 +253,10 @@
 
 单个数据项的数值。
 
+{{ use: partial-data-group-id(
+    prefix = '##'
+) }}
+
 {{ use: partial-bar-state(
     prefix = "##",
     topLevel = false,
@@ -313,6 +318,10 @@
     prefix = "#"
 ) }}
 
+{{ use: partial-universal-transition(
+    prefix = "#"
+) }}
+
 {{ use: partial-tooltip-in-series() }}
 
 
@@ -339,7 +348,7 @@
 是否开启标签的数字动画。
 
 参考这个 [示例](${galleryEditorPath}doc-example/value-animation-simple&edit=1&reset=1)。
-{{/if}}
+{{ /if }}
 
 #${prefix} labelLine(Object)
 
@@ -404,9 +413,7 @@
     prefix = ${prefix}
 ) }}
 
-
 {{ if: ${useDecal} }}
-
 #${prefix} decal(Object)
 
 {{ use: partial-decal-desc() }}
@@ -414,5 +421,5 @@
 {{ use: partial-decal(
     prefix = '#' + ${prefix}
 ) }}
-
 {{ /if }}
+
diff --git a/zh/option/series/boxplot.md b/zh/option/series/boxplot.md
index 211e806..83f9820 100644
--- a/zh/option/series/boxplot.md
+++ b/zh/option/series/boxplot.md
@@ -168,6 +168,8 @@
     prefix = "#"
 ) }}
 
+{{ use: partial-series-group-id() }}
+
 ## data(Array)
 
 数据格式是如下的二维数组。
@@ -210,6 +212,10 @@
 [min,  Q1,  median (or Q2),  Q3,  max]
 ```
 
+{{ use: partial-data-group-id(
+    prefix = '##'
+) }}
+
 ### itemStyle(Object)
 
 盒须图单个数据样式。
@@ -286,5 +292,9 @@
     defaultAnimationDuration = 800
 ) }}
 
+{{ use: partial-universal-transition(
+    prefix = "#"
+) }}
+
 {{ use: partial-tooltip-in-series() }}
 
diff --git a/zh/option/series/candlestick.md b/zh/option/series/candlestick.md
index f2cde03..29348e9 100644
--- a/zh/option/series/candlestick.md
+++ b/zh/option/series/candlestick.md
@@ -345,6 +345,8 @@
     prefix = "#"
 ) }}
 
+{{ use: partial-series-group-id() }}
+
 ## data(Array)
 
 数据格式是如下的二维数组。
@@ -380,6 +382,10 @@
 [open, close, lowest, highest] (即:[开盘值, 收盘值, 最低值, 最高值])
 ```
 
+{{ use: partial-data-group-id(
+    prefix = '##'
+) }}
+
 ### itemStyle(Object)
 
 单个 K 线图数据的图形样式。
@@ -455,6 +461,10 @@
     defaultAnimationDuration = 300
 ) }}
 
+{{ use: partial-universal-transition(
+    prefix = "#"
+) }}
+
 {{ use: partial-tooltip-in-series() }}
 
 
diff --git a/zh/option/series/custom.md b/zh/option/series/custom.md
index 6d6f912..e7502d9 100644
--- a/zh/option/series/custom.md
+++ b/zh/option/series/custom.md
@@ -416,6 +416,8 @@
 
 {{ use: partial-datasetIndex() }}
 
+{{ use: partial-series-group-id() }}
+
 ## data(Array)
 
 {{ use: partial-2d-data-desc() }}
@@ -428,6 +430,10 @@
 
 单个数据项的数值。
 
+{{ use: partial-data-group-id(
+    prefix = '##'
+) }}
+
 ### itemStyle(Object)
 
 {{ use: partial-item-style(
@@ -463,6 +469,10 @@
     prefix = "#"
 ) }}
 
+{{ use: partial-universal-transition(
+    prefix = "#"
+) }}
+
 {{ use: partial-tooltip-in-series() }}
 
 
diff --git a/zh/option/series/effectScatter.md b/zh/option/series/effectScatter.md
index 0a26809..0f63962 100644
--- a/zh/option/series/effectScatter.md
+++ b/zh/option/series/effectScatter.md
@@ -299,6 +299,7 @@
 {{ use: partial-tooltip-in-series() }}
 
 
+
 {{ target: effectScatter-state }}
 
 #${prefix} label(Object)
diff --git a/zh/option/series/funnel.md b/zh/option/series/funnel.md
index c145bd3..48ccc1f 100644
--- a/zh/option/series/funnel.md
+++ b/zh/option/series/funnel.md
@@ -192,6 +192,8 @@
     prefix = "#"
 ) }}
 
+{{ use: partial-series-group-id() }}
+
 ## data(Array)
 
 {{ use: partial-1d-data-desc() }}
@@ -275,6 +277,10 @@
     prefix = "#"
 ) }}
 
+{{ use: partial-universal-transition(
+    prefix = "#"
+) }}
+
 {{ use: partial-tooltip-in-series() }}
 
 
diff --git a/zh/option/series/heatmap.md b/zh/option/series/heatmap.md
index a4dc1c7..91e4c31 100644
--- a/zh/option/series/heatmap.md
+++ b/zh/option/series/heatmap.md
@@ -163,6 +163,16 @@
     version = '5.0.0'
 ) }}
 
+{{ use: partial-series-encode(
+    prefix = "#"
+) }}
+
+{{ use: partial-seriesLayoutBy() }}
+
+{{ use: partial-datasetIndex() }}
+
+{{ use: partial-series-group-id() }}
+
 ## data(Array)
 
 {{ use: partial-2d-data-desc() }}
@@ -175,6 +185,10 @@
 
 数据项值。
 
+{{ use: partial-data-group-id(
+    prefix = '##'
+) }}
+
 ### label(Object)
 
 在直角坐标系([coordinateSystem](~series-heatmap.coordinateSystem): 'cartesian2d')上有效。
@@ -240,3 +254,7 @@
     defaultPosition = "inside"
 ) }}
 
+{{ use: partial-universal-transition(
+    prefix = "#"
+) }}
+
diff --git a/zh/option/series/line.md b/zh/option/series/line.md
index 9cee6e9..e2cf1eb 100644
--- a/zh/option/series/line.md
+++ b/zh/option/series/line.md
@@ -305,6 +305,8 @@
 
 {{ use: partial-datasetIndex() }}
 
+{{ use: partial-series-group-id() }}
+
 ## data(Array)
 
 {{ use: partial-2d-data-desc() }}
@@ -317,6 +319,10 @@
 
 单个数据项的数值。
 
+{{ use: partial-data-group-id(
+    prefix = '##'
+) }}
+
 {{ use: partial-symbol(
     defaultSymbol = "'circle'",
     defaultSymbolSize = 4,
@@ -394,6 +400,10 @@
     defaultAnimationEasing = 'linear'
 ) }}
 
+{{ use: partial-universal-transition(
+    prefix = "#"
+) }}
+
 {{ use: partial-tooltip-in-series() }}
 
 
@@ -415,7 +425,6 @@
     prefix = '###'
 ) }}
 
-
 ### itemStyle(Object)
 
 {{ use: partial-item-style(
diff --git a/zh/option/series/lines.md b/zh/option/series/lines.md
index a19b486..96da190 100644
--- a/zh/option/series/lines.md
+++ b/zh/option/series/lines.md
@@ -172,6 +172,8 @@
     prefix = '#'
 ) }}
 
+{{ use: partial-series-group-id() }}
+
 ## data(Array)
 
 线数据集。
@@ -205,6 +207,10 @@
 
 数据名称
 
+{{ use: partial-data-group-id(
+    prefix = '##'
+) }}
+
 ### coords(Array)
 
 一个包含两个到多个二维坐标的数组。在 [polyline](~series-lines.polyline) 设置为 `true` 时支持多于两个的坐标。
@@ -274,6 +280,10 @@
     prefix = "#"
 ) }}
 
+{{ use: partial-universal-transition(
+    prefix = "#"
+) }}
+
 
 
 {{ target: lines-label }}
diff --git a/zh/option/series/map.md b/zh/option/series/map.md
index 2f7bd33..9fadc8e 100644
--- a/zh/option/series/map.md
+++ b/zh/option/series/map.md
@@ -51,6 +51,8 @@
 
 {{ use: partial-datasetIndex() }}
 
+{{ use: partial-series-group-id() }}
+
 ## labelLayout(Object|Function)
 
 {{ use: partial-label-layout(
@@ -83,6 +85,10 @@
 
 该区域的数据值。
 
+{{ use: partial-data-group-id(
+    prefix = '##'
+) }}
+
 ### selected(boolean) = false
 
 该区域是否选中。
@@ -149,6 +155,10 @@
     prefix = "#"
 ) }}
 
+{{ use: partial-universal-transition(
+    prefix = "#"
+) }}
+
 {{ use: partial-tooltip-in-series() }}
 
 
@@ -183,3 +193,4 @@
 {{ use: partial-label-line(
     prefix = '####'
 ) }}
+
diff --git a/zh/option/series/pictorialBar.md b/zh/option/series/pictorialBar.md
index 96c430a..a26f08e 100644
--- a/zh/option/series/pictorialBar.md
+++ b/zh/option/series/pictorialBar.md
@@ -213,6 +213,8 @@
     prefix = "#"
 ) }}
 
+{{ use: partial-series-group-id() }}
+
 ## data(Array)
 
 {{ use: partial-2d-data-desc() }}
@@ -225,6 +227,10 @@
 
 单个数据项的数值。
 
+{{ use: partial-data-group-id(
+    prefix = '##'
+) }}
+
 {{ use: pictorialBar-symbol-attrs(
     prefix = "##",
     useZ2 = true
@@ -313,6 +319,10 @@
     noAnimationDelay = true
 ) }}
 
+{{ use: partial-universal-transition(
+    prefix = "#"
+) }}
+
 {{ use: pictorialBar-animation-delay(
     prefix = "##"
 ) }}
@@ -669,7 +679,6 @@
     formatter = ${prefix} === '##'
 ) }}
 
-
 #${prefix} labelLine(Object)
 
 {{ use: partial-label-line-desc() }}
diff --git a/zh/option/series/pie.md b/zh/option/series/pie.md
index 5696f39..9a62647 100644
--- a/zh/option/series/pie.md
+++ b/zh/option/series/pie.md
@@ -274,6 +274,8 @@
     prefix = "#"
 ) }}
 
+{{ use: partial-series-group-id() }}
+
 ## data(Array)
 
 {{ use: partial-1d-data-desc() }}
@@ -286,6 +288,10 @@
 
 数据值。
 
+{{ use: partial-data-group-id(
+    prefix = '##'
+) }}
+
 ### selected(boolean) = false
 
 该数据项是否被选中。
@@ -302,7 +308,7 @@
 
 ### labelLine(Object)
 
-{{ use: partial-pie-label-line(
+{{ use: partial-label-line(
     prefix = '###',
     length = true,
     length2 = true,
@@ -383,6 +389,10 @@
     prefix = "#"
 ) }}
 
+{{ use: partial-universal-transition(
+    prefix = "#"
+) }}
+
 {{ use: partial-tooltip-in-series() }}
 
 
@@ -437,8 +447,6 @@
 
 
 
-
-
 {{ target: pie-state }}
 
 #${prefix} label(Object)
@@ -451,7 +459,7 @@
 
 #${prefix} labelLine(Object)
 
-{{ use: partial-pie-label-line(
+{{ use: partial-label-line(
     prefix = "#" + ${prefix},
     length = false,
     length2 = false,
@@ -470,7 +478,6 @@
 
 
 
-
 {{ target: partial-pie-border-radius }}
 
 #${prefix} borderRadius(number|string|Array)
@@ -486,4 +493,5 @@
 + `borderRadius: 10`:表示内圆角半径和外圆角半径都是 `10px`。
 + `borderRadius: '20%'`:表示内圆角半径和外圆角半径都是饼图扇形区块半径的 `20%`。
 + `borderRadius: [10, 20]`:表示当饼图为环形图时,表示内圆角半径是 `10px`、外圆角半径是 `20px`。
-+ `borderRadius: ['20%', '50%']`:表示当饼图为环形图时,内圆角半径是内圆半径的 `20%`、外圆角半径是外圆半径的 `50%`。
\ No newline at end of file
++ `borderRadius: ['20%', '50%']`:表示当饼图为环形图时,内圆角半径是内圆半径的 `20%`、外圆角半径是外圆半径的 `50%`。
+
diff --git a/zh/option/series/radar.md b/zh/option/series/radar.md
index fd0c2f8..6d89cab 100644
--- a/zh/option/series/radar.md
+++ b/zh/option/series/radar.md
@@ -149,6 +149,8 @@
     version = '5.0.0'
 ) }}
 
+{{ use: partial-series-group-id() }}
+
 ## data(Array)
 
 雷达图的数据是多变量(维度)的,如下示例:
@@ -176,6 +178,10 @@
 
 单个数据项的数值。
 
+{{ use: partial-data-group-id(
+    prefix = '##'
+) }}
+
 {{ use: partial-symbol(
     defaultSymbol = "'circle'",
     defaultSymbolSize = 4,
@@ -263,6 +269,10 @@
     prefix = "#"
 ) }}
 
+{{ use: partial-universal-transition(
+    prefix = "#"
+) }}
+
 {{ use: partial-tooltip-in-series() }}
 
 
diff --git a/zh/option/series/scatter.md b/zh/option/series/scatter.md
index 8592464..362c007 100644
--- a/zh/option/series/scatter.md
+++ b/zh/option/series/scatter.md
@@ -210,6 +210,8 @@
 
 {{ use: partial-datasetIndex() }}
 
+{{ use: partial-series-group-id() }}
+
 ## data(Array)
 
 {{ use: partial-2d-data-desc() }}
@@ -222,6 +224,10 @@
 
 数据项值。
 
+{{ use: partial-data-group-id(
+    prefix = '##'
+) }}
+
 {{ use: partial-symbol(
     prefix = "##",
     name = "单个数据"
@@ -312,6 +318,10 @@
     prefix = "#"
 ) }}
 
+{{ use: partial-universal-transition(
+    prefix = "#"
+) }}
+
 {{ use: partial-tooltip-in-series() }}
 
 
diff --git a/zh/option/series/themeRiver.md b/zh/option/series/themeRiver.md
index 4fb8780..08c3daa 100644
--- a/zh/option/series/themeRiver.md
+++ b/zh/option/series/themeRiver.md
@@ -257,7 +257,6 @@
     defaultFontSize = 11
 ) }}
 
-
 #${prefix} labelLine(Object)
 
 {{ use: partial-label-line-desc() }}
diff --git a/zh/option/series/treemap.md b/zh/option/series/treemap.md
index cdfbf3d..d003fda 100644
--- a/zh/option/series/treemap.md
+++ b/zh/option/series/treemap.md
@@ -348,7 +348,6 @@
     defaultColor = "#fff"
 ) }}
 
-
 ## labelLine(Object)
 
 {{ use: partial-label-line-desc() }}
@@ -361,7 +360,6 @@
     smooth = true
 ) }}
 
-
 ## labelLayout(Object|Function)
 
 {{ use: partial-label-layout(
@@ -871,7 +869,6 @@
 {{ use: partial-decal(
     prefix = '#' + ${prefix}
 ) }}
-
 {{ /if }}
 
 
@@ -888,7 +885,6 @@
 
 {{ target: treemap-state }}
 
-
 #${prefix} label(Object)
 
 {{ use: partial-label(