diff --git a/en/option/partial/barGrid.md b/en/option/partial/barGrid.md
index b908918..e805276 100644
--- a/en/option/partial/barGrid.md
+++ b/en/option/partial/barGrid.md
@@ -1,12 +1,27 @@
 {{target:partial-barGrid}}
 
-## barWidth(number) = null
+## barWidth(number|string) = null
 The width of the bar. Adaptive when not specified.
 
+{{use:partial-barGrid-value-absolute-or-percent}}
+
 {{use:partial-barGrid-share-desc(seriesType=${seriesType})}}
 
-## barMaxWidth(number) = null
-The maximum width of the bar. Adaptive when not specified.
+## barMaxWidth(number|string) = null
+The maximum width of the bar.
+
+Has higer priority than [barWidth](~series-bar.barWidth).
+
+{{use:partial-barGrid-value-absolute-or-percent}}
+
+{{use:partial-barGrid-share-desc(seriesType=${seriesType})}}
+
+## barMinWidth(number|string)
+The minimum width of the bar. In cartesian the default value is `1`, otherwise the default value if `null`.
+
+Has higer priority than [barWidth](~series-bar.barWidth).
+
+{{use:partial-barGrid-value-absolute-or-percent}}
 
 {{use:partial-barGrid-share-desc(seriesType=${seriesType})}}
 
@@ -33,4 +48,8 @@
 
 {{target:partial-barGrid-share-desc}}
 
-In a single coodinate system, this attribute is shared by multiple `'${seriesType}'` series. This attribute should be set on the last `'${seriesType}'` series in the coodinate system, then it will be adopted by all `'${seriesType}'` series in the coordinate system.
\ No newline at end of file
+In a single coodinate system, this attribute is shared by multiple `'${seriesType}'` series. This attribute should be set on the last `'${seriesType}'` series in the coodinate system, then it will be adopted by all `'${seriesType}'` series in the coordinate system.
+
+
+{{target: partial-barGrid-value-absolute-or-percent}}
+Can be an absolute value like `40` or a percent value like `'60%'`. The percent is based on the calculated category width.
\ No newline at end of file
diff --git a/en/option/series/custom.md b/en/option/series/custom.md
index 7f8ba35..8234963 100644
--- a/en/option/series/custom.md
+++ b/en/option/series/custom.md
@@ -267,8 +267,17 @@
 ```
 @param {Object} opt
 @param {number} opt.count How many bars in each group.
-@param {number} [opt.barWidth] Width of a bar.
-@param {number} [opt.barMaxWidth] Max width of a bar.
+@param {number|string} [opt.barWidth] Width of a bar.
+        Can be an absolute value like `40` or a percent value like `'60%'`.
+        The percent is based on the calculated category width.
+@param {number|string} [opt.barMaxWidth] Max width of a bar.
+        Can be an absolute value like `40` or a percent value like `'60%'`.
+        The percent is based on the calculated category width.
+        Has higer priority than `opt.barWidth`.
+@param {number|string} [opt.barMinWidth] Min width of a bar.
+        Can be an absolute value like `40` or a percent value like `'60%'`.
+        The percent is based on the calculated category width.
+        Has higer priority than `opt.barWidth`.
 @param {number} [opt.barGap] Gap of bars in a group.
 @param {number} [opt.barCategoryGap] Gap of groups.
 @return {Array.<Object>} [{
diff --git a/zh/option/partial/barGrid.md b/zh/option/partial/barGrid.md
index 25277ab..bc8b0ff 100644
--- a/zh/option/partial/barGrid.md
+++ b/zh/option/partial/barGrid.md
@@ -1,12 +1,27 @@
 {{target:partial-barGrid}}
 
 ## barWidth(number|string) = 自适应
-柱条的宽度，不设时自适应。支持设置成相对于类目宽度的百分比。
+柱条的宽度，不设时自适应。
+
+{{use: partial-barGrid-value-absolute-or-percent}}
 
 {{use:partial-barGrid-share-desc(seriesType=${seriesType})}}
 
-## barMaxWidth(number|string) = 自适应
-柱条的最大宽度，不设时自适应。支持设置成相对于类目宽度的百分比。
+## barMaxWidth(number|string) = null
+柱条的最大宽度。
+
+比 [barWidth](~series-bar.barWidth) 优先级高。
+
+{{use: partial-barGrid-value-absolute-or-percent}}
+
+{{use:partial-barGrid-share-desc(seriesType=${seriesType})}}
+
+## barMinWidth(number|string)
+柱条的最小宽度。在直角坐标系中，默认值是 `1`。否则默认值是 `null`。
+
+比 [barWidth](~series-bar.barWidth) 优先级高。
+
+{{use: partial-barGrid-value-absolute-or-percent}}
 
 {{use:partial-barGrid-share-desc(seriesType=${seriesType})}}
 
@@ -34,4 +49,8 @@
 
 {{target:partial-barGrid-share-desc}}
 
-在同一坐标系上，此属性会被多个 `'${seriesType}'` 系列共享。此属性应设置于此坐标系中最后一个 `'${seriesType}'` 系列上才会生效，并且是对此坐标系中所有 `'${seriesType}'` 系列生效。
\ No newline at end of file
+在同一坐标系上，此属性会被多个 `'${seriesType}'` 系列共享。此属性应设置于此坐标系中最后一个 `'${seriesType}'` 系列上才会生效，并且是对此坐标系中所有 `'${seriesType}'` 系列生效。
+
+
+{{target: partial-barGrid-value-absolute-or-percent}}
+可以是绝对值例如 `40` 或者百分数例如 `'60%'`。百分数基于自动计算出的每一类目的宽度。
diff --git a/zh/option/series/custom.md b/zh/option/series/custom.md
index 1f4feeb..00811b5 100644
--- a/zh/option/series/custom.md
+++ b/zh/option/series/custom.md
@@ -259,8 +259,17 @@
 ```
 @param {Object} opt
 @param {number} opt.count 每个簇有多少个 bar。
-@param {number} [opt.barWidth] bar 宽度。
-@param {number} [opt.barMaxWidth] bar 最大宽度。
+@param {number|string} [opt.barWidth] bar 宽度。
+        可以是绝对值例如 `40` 或者百分数例如 `'60%'`。
+        百分数基于自动计算出的每一类目的宽度。
+@param {number|string} [opt.barMaxWidth] bar 最大宽度。
+        可以是绝对值例如 `40` 或者百分数例如 `'60%'`。
+        百分数基于自动计算出的每一类目的宽度。
+        比 `opt.barWidth` 优先级高。
+@param {number|string} [opt.barMinWidth] bar 最小宽度。
+        可以是绝对值例如 `40` 或者百分数例如 `'60%'`。
+        百分数基于自动计算出的每一类目的宽度。
+        比 `opt.barWidth` 优先级高。
 @param {number} [opt.barGap] 每个簇的 bar 之间的宽度。
 @param {number} [opt.barCategoryGap] 不同簇间的宽度。
 @return {Array.<Object>} [{
