antv-l7/docs/api/layer/heatmap_layer/heatmap.zh.md

220 lines
4.5 KiB
Markdown
Raw Normal View History

2019-11-21 13:06:13 +08:00
---
title: HeatmapLayer
2019-12-14 22:15:28 +08:00
order: 0
2019-11-21 13:06:13 +08:00
---
2019-12-02 15:16:45 +08:00
# heatmapLayer
2019-11-21 13:06:13 +08:00
### 简介
热力图图层,包含三种类型的,
2019-12-02 15:16:45 +08:00
- 方格热力图
2019-11-21 13:06:13 +08:00
将一组点数据按照等大小的正方形网格进行聚合,一个正方形网格代表网格内所有点的统计值。方格热力图特点以方格网布局。
2019-12-02 15:16:45 +08:00
- 六边形热力图
2019-11-21 13:06:13 +08:00
将一组点数据按照等大小的六边形网格进行聚合,一个六边形网格代表网格内所有点的统计值。蜂窝热力图特点以六边形热力图网格布局
2019-12-02 15:16:45 +08:00
- 经典热力图
2019-11-21 13:06:13 +08:00
2019-12-02 15:16:45 +08:00
⚠️ 网格热力图和蜂窝热力图需要对数据聚合处理,使用之前需要在 source 方法设置数据聚合方法
2019-11-21 13:06:13 +08:00
### source
热力图只支持点数据作为数据源
2019-12-02 15:16:45 +08:00
布局方法 通过 source 的 tansforms 属性配置
2019-11-21 13:06:13 +08:00
- type  数据聚合类型 grid、hexagon
- size  网格半径 单位 米
- field  聚合字段
2019-12-02 15:16:45 +08:00
- method 聚合方法   count,max,min,sum,mean5 个统计维度
2019-11-21 13:06:13 +08:00
```javascript
2019-12-02 15:16:45 +08:00
2019-11-21 13:06:13 +08:00
layer.source(data, {
parser: {
type: 'csv',
x: 'lng',
y: 'lat'
},
transforms:[
{
type: 'grid',
size: 15000,
2019-12-02 15:16:45 +08:00
field:'v',
2019-11-21 13:06:13 +08:00
method:'sum'
}
],
}
```
### shape
2019-12-02 15:16:45 +08:00
不同类型热力图 shape 支持
2019-11-21 13:06:13 +08:00
2019-12-02 15:16:45 +08:00
| | 2D | 3d |
| ------------ | ------------------------------ | ------------------------------------------------- |
2019-11-21 13:06:13 +08:00
| 网格格热力图 | circle,triangle,square,heaxgon | cylinder,triangleColumn,hexagonColum,squareColumn |
2019-12-02 15:16:45 +08:00
| 蜂窝热力图 | circle,triangle,square,heaxgon | circle,triangle,square,heaxgon |
| 普通热力图 | heatmap | heatmap |
2019-11-21 13:06:13 +08:00
2019-12-02 15:16:45 +08:00
热力图布局下只 shape 方法只支持常量的可视化。
2019-11-21 13:06:13 +08:00
```javascript
HeatmapLayer.shape('square');
HeatmapLayer.shape('hexagon');
// 默认类型可以不设置
```
### size
2019-12-02 15:16:45 +08:00
当前版本 shape 为 gridhexagon 不需要设置 size 映射
default 类型需要设置 size 映射 详细参数见[Size](https://www.yuque.com/antv/l7/layer#size)
2019-11-21 13:06:13 +08:00
**size(field,values) **
- field: 热力图权重字段
- values: 数据映射区间 热力图显示 [0, 1] 效果最佳
```javascript
2019-12-02 15:16:45 +08:00
HeatmapLayer.size('field', [0, 1]);
2019-11-21 13:06:13 +08:00
```
### color
2019-12-02 15:16:45 +08:00
default heatMap 类型不需设置 color 映射
2019-11-21 13:06:13 +08:00
2019-12-02 15:16:45 +08:00
color 配置项同 [**color**](https://www.yuque.com/antv/l7/layer#color)
2019-11-21 13:06:13 +08:00
### style
2019-12-02 15:16:45 +08:00
grid hexagon 可以通过 style 设置透明度
2019-11-21 13:06:13 +08:00
2019-12-02 15:16:45 +08:00
default 热力图需要通过 style 配置参数热力图参数
2019-11-21 13:06:13 +08:00
2019-12-02 15:16:45 +08:00
- intensity    全局热力权重     推荐权重范围 1-5
- radius   热力半径,单位像素
2019-11-21 13:06:13 +08:00
- rampColors 色带参数
- colors  颜色数组
- positions 数据区间
```javascript
2019-12-02 15:16:45 +08:00
HeatmapLayer.style({
intensity: 3,
radius: 20,
rampColors: {
colors: [
'rgba(33,102,172,0.0)',
'rgb(103,169,207)',
'rgb(209,229,240)',
'rgb(253,219,199)',
'rgb(239,138,98)',
'rgb(178,24,43,1.0)',
],
positions: [0, 0.2, 0.4, 0.6, 0.8, 1.0],
},
});
2019-11-21 13:06:13 +08:00
```
### 完整代码示例
#### 普通热力图
```javascript
2019-12-02 15:16:45 +08:00
// 测试数据 url https://gw.alipayobjects.com/os/basement_prod/08c6ea00-dc5f-4bb0-b0b5-52bde5edf0a3.json
2019-11-21 13:06:13 +08:00
2019-12-02 15:16:45 +08:00
HeatmapLayer({
zIndex: 2,
})
.source(data)
.size('mag', [0, 1]) // weight映射通道
.style({
intensity: 3,
radius: 20,
rampColors: {
colors: [
'rgba(33,102,172,0.0)',
'rgb(103,169,207)',
'rgb(209,229,240)',
'rgb(253,219,199)',
'rgb(239,138,98)',
'rgb(178,24,43,1.0)',
],
positions: [0, 0.2, 0.4, 0.6, 0.8, 1.0],
},
});
```
2019-11-21 13:06:13 +08:00
#### 网格热力图
```javascript
2019-12-02 15:16:45 +08:00
var layer = scene
.HeatmapLayer({
zIndex: 2,
})
.source(data, {
parser: {
type: 'csv',
x: 'lng',
y: 'lat',
},
transforms: [
{
2019-11-21 13:06:13 +08:00
type: 'grid',
size: 15000,
2019-12-02 15:16:45 +08:00
field: 'v',
method: 'sum',
},
],
})
.shape('grid')
.style({
coverage: 0.8,
})
.color('count', [
'#002466',
'#105CB3',
'#2894E0',
'#CFF6FF',
'#FFF5B8',
'#FFAB5C',
'#F27049',
'#730D1C',
]);
2019-11-21 13:06:13 +08:00
```
#### 六边形热力图
```javascript
2019-12-02 15:16:45 +08:00
var layer = scene
.HeatmapLayer({
zIndex: 2,
})
.souce(data, {
parser: {
type: 'csv',
x: lng,
y: lat,
2019-11-21 13:06:13 +08:00
},
2019-12-02 15:16:45 +08:00
transforms: [
{
type: 'hexgon',
size: 1500,
field: 'count',
operation: 'sum',
},
],
2019-11-21 13:06:13 +08:00
})
.shape('hexgon')
2019-12-02 15:16:45 +08:00
.size(1000)
2019-11-21 13:06:13 +08:00
.color('sum')
.style({
2019-12-02 15:16:45 +08:00
coverage: 0.8,
});
render();
```