Skip to content

Commit

Permalink
feat:update docs
Browse files Browse the repository at this point in the history
  • Loading branch information
pomelo-nwu committed Nov 16, 2019
1 parent 6234ad4 commit 3fdcfd5
Show file tree
Hide file tree
Showing 4 changed files with 60 additions and 187 deletions.
30 changes: 24 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,31 @@
## Graphin

Graphin 采用 lerna 包管理,分为以下 4 个包
## 总览

- graphin
- graphin-components
- graphin-studio
- graphin-site
Graphin 采用 lerna 包管理机制,packages 中包含以下 4 个 package

### Get Started
```bash
/packages
graphin
graphin-components
graphin-studio
graphin-site
```

他们依次对应的包名与解释如下

|   包名 | 说明 |
| ------------------------ | ------------------------------------------------------ |
| @antv/graphin | Graphin 中的图分析内核,基于 G6 封装 的 React 组件 |
| @antv/graphin-components | Graphin 中的图分析组件 |
| @antv/graphin-site | Graphin 文档官网 |
| graphin-studio | Graphin 演示 DEMO:基于 Graphin 实现的通用关系分析平台 |

关于 Graphin 与 G6 的定位问题:Graphin 专注在关系可视分析领域,它是一个关系分析工具。上层服务关系网络,知识图谱,金融反欺诈等业务。基于 G6 的图可视化能力,结合 React 框架的优势,为用户提供工程方案,产品能力,简单易用的开发体验

![graphin and g6](https://gw.alipayobjects.com/mdn/rms_00edcb/afts/img/A*zAbfSp28qFoAAAAAAAAAAABkARQnAQ)

### 快速开始

- 设置 npmClient

Expand Down
19 changes: 8 additions & 11 deletions packages/graphin-site/docs/manual/advanced-guides/register.zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ title: Register 注册接口
order: 1
---

Graphin 提供了声明式的 NodeShape 拓展方式。除此之外,Graphin 也支持直接传入 G6 的配置。主要支持自定义交互(behavior),自定义边,自定义边。这让用户对 G6 的交互和边有了拓展能力。
Graphin 提供了声明式的 NodeShape 拓展方式。除此之外,Graphin 也支持直接传入 G6 的配置。主要支持自定义交互(behavior),自定义边(edge)。这让用户对 G6 的交互和边有了拓展能力。

register 是通过 props 传入组件的:

Expand All @@ -28,7 +28,7 @@ register?: {
};
```

```
```ts
interface Register {
/** 节点名称 */
name: string;
Expand All @@ -37,7 +37,7 @@ interface Register {
}
```

```
```ts
interface BehaviorRegister extends Register {
options: any;
mode: string;
Expand All @@ -48,7 +48,7 @@ interface BehaviorRegister extends Register {

注册返回的 Register 类型中,register 函数就是真正进行注册的地方:

```
```ts
register: {
nodeShape: (G6) => [{
name: "custom",
Expand All @@ -63,7 +63,7 @@ register: {
}
}],
behavior: (G6) => [{
mode: "default",
mode: "default", // 详见 G6 的 mode 文档
options: {}
name: "custom",
register: () => {
Expand All @@ -73,11 +73,8 @@ register: {
}
```


**G6 相关文档**

+ [自定义节点](https://www.yuque.com/antv/g6/self-node)
+ [自定义边](https://www.yuque.com/antv/g6/self-edge)
+ [自定义行为](https://www.yuque.com/antv/g6/self-behavior)


- [自定义节点](https://www.yuque.com/antv/g6/self-node)
- [自定义边](https://www.yuque.com/antv/g6/self-edge)
- [自定义行为](https://www.yuque.com/antv/g6/self-behavior)
193 changes: 27 additions & 166 deletions packages/graphin/README.md
Original file line number Diff line number Diff line change
@@ -1,179 +1,40 @@
## About 简介
## @antv/graphin

Graphin 意为 Graph Insight 图的分析洞察,象形 Graphene 石墨烯,蕴藏未来的潜力
`@antv/graphin` 是图分析工具的内核,它是一个基于 g6 封装的 React 组件

Graphin 是一个基于G6封装的React组件库,专注在图分析领域。
## 安装

- 底层 使用G6作为图的渲染,交互,布局引擎。
- 外层 使用React进行组件化开发,提高开发者效率。
- 上层 沉淀聚合 业界优秀图分析产品的功能特性。
```bash

从上述可以看出,Graphin的G6底层让我们有图可视化的能力,外层的React封装,让我们提高开发效率,上层的产品功能沉淀,让我们的分析更加专业出彩
npm install @antv/graphin --save

```

## 用法

## Feature 功能
```tsx
import React from 'react';
import ReactDOM from 'react-dom';
import Graphin, { Utils } from '@antv/graphin';
import './styles.css';

### 01. Data driven 数据驱动
const App = () => {
const data = Utils.mock(10).graphin();
return (
<div className="App">
<Graphin data={data} />
</div>
);
};

#### 01.增量数据添加

在图分析的过程中,我们需要增量添加节点,节点添加后的位置就是一个值得讨论的问题,Graphin采用前置布局的方案,将新增节点加入前置布局里,以达到添加后节点的稳定与美观。

![Oct-09-2019 20-20-07.gif](https://gw.alipayobjects.com/mdn/rms_00edcb/afts/img/A*t9cNQbcmZpcAAAAAAAAAAABkARQnAQ)

#### 02.全量数据渲染

在图分析过程中,我们有时需要全量渲染数据,例如需要将保存的图再次渲染出来。这种情况下,我们数据的变化也会同步被Graphin感知到

![全量添加](https://gw.alipayobjects.com/mdn/rms_00edcb/afts/img/A*iGCgQaHq3BgAAAAAAAAAAABkARQnAQ)

### 02. Automatic layouts 自动布局

在图分析过程中,针对不同的分析场景,我们需要不同的布局方案:
#### 01.concentric 同心圆布局
该布局的特点是:将节点按照度数排序,节点度数大的一群点会排列在最中心,度数小的节点会分布在最外层。整体呈现同心圆排布。
适用场景:当我们找到一群点中的关键节点,它所联系的节点最多,那么利用圆形布局,便可以在中心处轻松找到

#### 02.grid 网格布局
该布局的特点是:将节点依次整齐排列,呈现网格状
适用场景:节点的位置按照用户自定义后的排序展开,清晰明了,一般用于其他布局的前置分析。


#### 03.force 力导布局
该布局的特点是:节点是平等的,完全按照自然受力进行分布,节点间模拟电荷斥力保持不相交,边通过弹簧拉力保持不相离,最终在多次动态迭代,达到一个受力平衡
适用场景:想解决点边相交问题的时候,使用力导非常合适。一般作为其他布局的后置布局使用

#### 04.radial 迳向布局

该布局的特点是:节点像雷达一样散开,是静态布局里解决交叉问题的主要布局算法


#### 05.dagre 有向层次布局

该布局的特点是:按照边的方向与节点的层次,呈现树形排列

适用场景:我们需要知道一群数据里的层次结构,上下游关系,那么dagre有向层次布局便是非常好的办法。

![layout](https://gw.alipayobjects.com/mdn/rms_00edcb/afts/img/A*mkVrTpJb-GAAAAAAAAAAAABkARQnAQ)

### 03. Analysis Components 分析组件

分析过程是一个动态交互的过程,对于图分析也不例外。因此我们需要一些分析组件帮助我们辅助分析,这里Graphin内置了两款组件:Toobar通用工具栏 和 ContextMenu 右键菜单 ,未来计划新增 MiniMap 缩略图 与 ProptertiesFilter 属性筛选器,从而达到让用户高效分析的目的

#### 01.Toolbar 通用工具栏

Toolbar内置了4大功能

- todo/redo 撤销重做功能

我们提供了撤销重做的功能,能够让整个分析过程变得可靠,因为用户不必再担心因为误操作而毁坏了之前的分析过程。对于工具型产品,这是基础功能,也是特色功能

- zoomIn/out 缩小放大功能

在分析过程中,当节点数量的变化,布局的变化,引起一些节点可能不在当前视窗内,这个时候我们就需要缩放功能帮助我们调整视窗的范围,配合画布的拖拽,能让我们不丢失全局(zoomOut),也不损失细节(zoomIn)

- fullscreen 全屏功能

触发后,整个画布占满浏览器窗口,当你的画布页在业务中占比很小的时候,这将非常有用。


- foucs 节点聚焦功能

输入节点ID,将自动对焦到该节点,将和Search功能配套起来,支持模糊搜索,快速定位,这将大大提高你的分析效率


- Snapshot 快照下载

当你希望保存当前的画布给别人分享,下载快照将会是一个非常有用的功能。


![toolbar](https://gw.alipayobjects.com/mdn/rms_00edcb/afts/img/A*2I2ITbEL7x4AAAAAAAAAAABkARQnAQ)

#### 02.ContextMenu 右键菜单

在画布上,我们在节点上右键菜单,将会出现更多的操作选项,如果说Toolbar是针对整个画布的操作,那么ContextMenu则是针对单独的节点做操作,对于单个节点,我们通用的分析操作有如下:

- 复制

复制节点ID,以便于你的后续操作

- 反选

反选节点,这种排除法,是选择其他节点的一种快捷方式

- 删除

删除该节点,删除后,剩余的节点将重新布局,渲染,这在我们做案件排查的时候,删除已经确定的关键节点,重新布局分析能够减少我们的分析干扰。

- 新增画布分析

当我们在前一次分析中筛选出的关键节点,可以通过右键菜单,新建画布分析的方式,在一个新的画布中做二次分析,减少无用信息的干扰

- 业务相关

业务特有的一些针对节点的操作,比如给该节点打标,进行关系扩散,或者发起数据请求什么的



#### 03.MiniMap 缩略图

整个图可视化中的关键问题是“size”,当节点数量很多的时候,用户视窗内的展示节点数量有限,这就需要我们适用MiniMap 缩略图去定位当前我们处于画布的什么位置

其次,我们也可以通过MiniMap快速定位,导航到我们需要的节点位置

#### 04.PropertiesFilter 属性筛选器

属性筛选器 是针对属性进行筛选的一个组件。这里就引发两个主要问题,什么是属性Properties?为什么要筛选它?

图是一种非常经典的数据模型,Node-Edge 这样的单元不断组合就形成了图。其中Node和Edge的右下脚应该还有一个字段,那便是Properties,用于存储Node或者Edge的其他信息,这些信息往往也是我们案件分析中的关键一步,是真正有价值的数据载体。

以 Node 为 自然人实体 举例,一个Properties中可能包含自然人的姓名,性别,年龄,居住城市等等。在一堆的数据里,如果我们能够根据属性去筛选节点,那将极大提高分析效率。属性筛选器就是为这样的目标而设计的。

第二个问题,为什么要在前端完成属性筛选?这个就涉及到图计算引擎的问题。因为关系数据是一种既简单又复杂的数据,简单是因为我们自然中产生的数据大多都是关系数据,复杂在于它的量非常庞大,数据的加工,处理,检索,都是非常有挑战性的。因此后端给到我们的图数据,都是已经对万亿网络节点进行裁剪过的,此时前端再根据属性去反向查找,那机会是灾难性的,也没有太大必要,因为当前图画布里已经包含了这些属性信息。属性筛选器也是为了解决这样的问题而出现。

这块的数据结构有着严格的约定,这块我们之后补充

#### 05.Legend 图例

对于所有的可视化产品,图例几乎是不可缺少的组件,原因是它可以通过颜色映射,直观反应当前图的状态,也可以通过和图例交互,完成与图的交互。
Graphin中提供的图例,能够帮助开发者快速进行颜色映射,也能交互完成节点高亮

#### 06.SheetBar 画布页签

Graphin提供的SheetBar旨在提供一种多画布管理机制,通过页签可以对画布完成 新增,删除,重命名等操作。多个画布间状态相互独立,互补干扰,在我们进行二次分析的时候,非常有用。




### 04. Nodes Expand 关系扩散

风控领域:风险发生的地方往往是风险聚集度最高的地方,因此由一个点扩散去看其他点,是一种分析策略。

![diffuse](https://gw.alipayobjects.com/mdn/rms_00edcb/afts/img/A*9xwFRonleusAAAAAAAAAAABkARQnAQ)

### 05. Find Connections 关系发现

数学领域存在Six Degrees of Separation 的猜想,实体间直连,是一度关系,也可通过算法,发现可能存在的二度关联关系。


### 06. Custom styling 自定义样式

#### 01. Marker 自定义图标

#### 02. Node 自定义节点

#### 03. Edge 自定义边


### 07. Advanced Analysis 高级分析

#### 01.Geographical Analysis 地理位置分析

#### 02.Time-based Analysis 时序分析

#### 03.Group Navigation Analysis 团伙导航
const rootElement = document.getElementById('root');
ReactDOM.render(<App />, rootElement);
```

## API

参考官网:[API 文档](https://antvis.github.io/graphin/zh/docs/api/graphin)

## 快速开始

参考官网[快速开始](https://antvis.github.io/graphin/zh/docs/manual/getting-started)
5 changes: 1 addition & 4 deletions packages/graphin/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"types": "./dist/index.d",
"scripts": {
"start": "father build --watch",
"build:new": "father build",
"build": "father build",
"docz": "docz dev",
"test": "jest",
"prettier": "prettier --write ./src/**/**/**/*.js"
Expand Down Expand Up @@ -38,9 +38,6 @@
},
"author": "",
"license": "ISC",
"publishConfig": {
"registry": "https://registry.npm.alibaba-inc.com"
},
"dependencies": {
"svg2marker": "^0.1.3",
"@antv/g6": "^3.1.5",
Expand Down

0 comments on commit 3fdcfd5

Please sign in to comment.