diff --git a/site/docs/api/chart.zh.md b/site/docs/api/chart.zh.md
index b11ef39a77..c79b66bb8c 100644
--- a/site/docs/api/chart.zh.md
+++ b/site/docs/api/chart.zh.md
@@ -124,6 +124,10 @@ chart.render();
添加 boxplot 图形,具体见 [mark](/spec/mark/boxplot)。
+### `chart.density`
+
+添加 density 图形,具体见 [mark](/spec/mark/density)。
+
### `chart.shape`
添加 shape 图形,具体见 [mark](/spec/mark/shape)。
diff --git a/site/docs/spec/data/kde.en.md b/site/docs/spec/data/kde.en.md
new file mode 100644
index 0000000000..7228218ccd
--- /dev/null
+++ b/site/docs/spec/data/kde.en.md
@@ -0,0 +1,6 @@
+---
+title: kde
+order: 1
+---
+
+
diff --git a/site/docs/spec/data/kde.zh.md b/site/docs/spec/data/kde.zh.md
new file mode 100644
index 0000000000..fce47a007d
--- /dev/null
+++ b/site/docs/spec/data/kde.zh.md
@@ -0,0 +1,37 @@
+---
+title: kde
+order: 1
+---
+
+对指定的数据,进行核密度算法(Kernel Density Estimation)处理,底层使用开源库 [pdfast](https://www.npmjs.com/package/pdfast)。
+
+## 开始使用
+
+```ts
+chart.data({
+ type: 'inline',
+ value: data,
+ transform: [
+ {
+ type: 'kde',
+ field: 'y',
+ groupBy: ['x', 'species'],
+ as: ['y', 'size'],
+ },
+ ],
+});
+```
+
+上述例子处理之后,数据会增加 y、size 字段,均为数字数组。
+
+## 选项
+
+| 属性 | 描述 | 类型 | 默认值 |
+| -------- | -------------------------------------------------- | ---------------------------- | ------------- |
+| field | 进行核密度算法的数据字段 | `string` | |
+| groupBy | 对数据进行分组的分组字段,可以指定多个 | `string[]` | |
+| as | 进行 KDE 处理之后,存储的字段 | `[number, number]` | `['y', 'size']` |
+| min | 指定处理范围的最小值 | `number` | 数据最小值 |
+| max | 指定处理范围的最大值 | `number` | 数据最小值 |
+| size | 算法最终生成数据的条数 | `number` | `10` |
+| width | 确定一个元素左右影响多少点,类似于 bandWidth。 | `number` | `2` |
diff --git a/site/docs/spec/mark/box.zh.md b/site/docs/spec/mark/box.zh.md
index 10c33a3c77..940b97beec 100644
--- a/site/docs/spec/mark/box.zh.md
+++ b/site/docs/spec/mark/box.zh.md
@@ -74,7 +74,7 @@ chart.render();
## 选项
-目前仅有一种同名的图形 `box`,下面描述一下所有的 `style` 配置项。
+目前有图形 `box`、`violin`,下面描述一下所有的 `style` 配置项。
### box
@@ -93,6 +93,10 @@ chart.render();
| shadowOffsetY | 设置阴影距图形的垂直距离 | `number` \| `Function` | - |
| cursor | 鼠标样式。同 css 的鼠标样式,默认 'default'。 | `string` \| `Function` | 'default' |
+### violin
+
+同 `box` 图形配置。
+
## FAQ
- 怎么在前端进行数据分布情况的分析?
diff --git a/site/docs/spec/mark/density.en.md b/site/docs/spec/mark/density.en.md
new file mode 100644
index 0000000000..ad88f21a4d
--- /dev/null
+++ b/site/docs/spec/mark/density.en.md
@@ -0,0 +1,6 @@
+---
+title: density
+order: 1
+---
+
+
diff --git a/site/docs/spec/mark/density.zh.md b/site/docs/spec/mark/density.zh.md
new file mode 100644
index 0000000000..14a1787205
--- /dev/null
+++ b/site/docs/spec/mark/density.zh.md
@@ -0,0 +1,62 @@
+---
+title: density
+order: 1
+---
+
+接受核密度数据,一般用于用于绘制小提琴图。
+
+## 开始使用
+
+
+
+```js
+import { Chart } from '@antv/g2';
+
+const chart = new Chart({
+ container: 'container',
+ theme: 'classic',
+ autoFit: true,
+});
+
+chart.data({
+ type: 'fetch',
+ value: 'https://assets.antv.antgroup.com/g2/species.json',
+ transform: [
+ {
+ type: 'kde',
+ field: 'y',
+ groupBy: ['x'],
+ size: 20,
+ },
+ ],
+});
+
+chart
+ .density()
+ .encode('x', 'x')
+ .encode('y', 'y')
+ .encode('color', 'x')
+ .encode('size', 'size')
+ .tooltip(false);
+
+chart.render();
+
+```
+
+## 选项
+
+
+| 属性 | 描述 | 类型 | 默认值 |
+| -------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------- | ------------------------------ |
+| fill | 图形的填充色 | `string` \| `Function` | - |
+| fillOpacity | 图形的填充透明度 | `number` \| `Function` | - |
+| stroke | 图形的描边 | `string` \| `Function` | - |
+| strokeOpacity | 描边透明度 | `number` \| `Function` | - |
+| lineWidth | 图形描边的宽度 | `number` \| `Function` | - |
+| lineDash | 描边的虚线配置,第一个值为虚线每个分段的长度,第二个值为分段间隔的距离。lineDash 设为[0, 0]的效果为没有描边。 | `[number,number]` \| `Function<[number, number]>` | - |
+| opacity | 图形的整体透明度 | `number` \| `Function` | - |
+| shadowColor | 图形阴影颜色 | `string` \| `Function` | - |
+| shadowBlur | 图形阴影的高斯模糊系数 | `number` \| `Function` | - |
+| shadowOffsetX | 设置阴影距图形的水平距离 | `number` \| `Function` | - |
+| shadowOffsetY | 设置阴影距图形的垂直距离 | `number` \| `Function` | - |
+| cursor | 鼠标样式。同 css 的鼠标样式,默认 'default'。 | `string` \| `Function` | 'default' |
diff --git a/site/docs/spec/overview.zh.md b/site/docs/spec/overview.zh.md
index d9c9e8df25..80390a16df 100644
--- a/site/docs/spec/overview.zh.md
+++ b/site/docs/spec/overview.zh.md
@@ -24,6 +24,7 @@ G2 是一个简洁的、渐进式的可视化语法。文档将按照下面的
- [map](/spec/data/map) - 对数据进行映射,返回新的数组。
- [join](/spec/data/join) - 类似 SQL 的方式,将两份数据连接到一起。
- [custom](/spec/data/custom) - 使用自定义的方式对数据进行变换。
+- [kde](/spec/data/kde) - 核密度处理算法。
## Mark
@@ -49,6 +50,7 @@ G2 是一个简洁的、渐进式的可视化语法。文档将按照下面的
- [rangeY](/spec/mark/range-y) - 使用一组 `y`(y1, y2) 来定位一个垂直于 y 轴的矩形区域,常用于绘制高亮指定区域的辅助区域。
- [polygon](/spec/mark/polygon) - 利用多组 (x, y) 数据点,在画布中绘制闭合的多边形,通常结合一些社区布局算法使用。
- [wordcloud](/spec/mark/wordcloud) - 绘制词云图。
+- [density](/spec/mark/density) - 渲染核密度数据,多用于小提琴图。
## Transform