X6 1.0 抱歉来晚

简介: 图编辑也是图领域一个重要方向,许多流程图、关系图绘制场景都需要它。基于蚂蚁内部的机器学习算法建模平台多年的可视编排能力打磨,我们决定把其中的图编辑内核抽取出来,图编辑 X6。

作者 | 问崖

image.png

X6 是蚂蚁金服 AntV 旗下的图编辑引擎,X 象形图编辑场景的关系链接,同时 X6 又是 G6 的孪生兄弟,所以沿用了 G6 中的 6,深究一下,6 源于《六度分隔理论》,表达了我们对关系数据、关系网络的敬畏和着迷。

更好的阅读体验请点击阅读原文至语雀文档。

图编辑也是图领域一个重要方向,许多流程图、关系图绘制场景都需要它。基于蚂蚁内部的机器学习算法建模平台多年的可视编排能力打磨,我们决定把其中的图编辑内核抽取出来,图编辑 X6。

提炼后经过近一年的内部业务打磨,我们完善了图编辑场景的常用扩展,如小地图、网格系统、对齐线、框选、撤销/重做等,内置了图编辑场景的常规交互和设计,如群组、链接桩、节点缩放、旋转、连线交互,并提供了基于 HTML 和 React 低成本定制节点能力。今天我们很高兴能为可视化开源社区带来 X6 1.0 正式版本,请多关照!

欢迎给我们 GitHub 仓库(https://github.com/antvis/x6)加星 🔥🔥🔥

快速上手

只需要掌握创建画布、添加节点/边、更新节点/边、删除节点/边这几个 API 即可开始使用 X6,并且我们将 X6 所有特性提取到画布的配置项中,一共包含 50 多个配置选项,基于这些配置项我们可以快速定制出自己的画布。详情请参考快速上手教程。

节点、连线与画布,图编辑核心能力

易定制的节点

X6 预置了一些常用节点样式,创建节点时通过 shape 来指定使用哪种图形来渲染节点即可,而且绝大部分节点样式和交互都可被自定义。

image.png
基础图形

我们可以基于 pathpolygonpolyline 三个基础图形扩展出更多图形。然而,实际业务场景中的节点可能要更复杂,预置样式不满足需求?没关系,我们还提供了两种灵活的自定义节点的方式。支持使用 HTML 渲染节点,使用时将 shape 指定为 html 即可;另外还可以使用 React 组件来渲染节点,使用时需要安装并引入x6-react-shape,配合咱家 antd 更是天生一对哦。

image.png
使用 HTML 和 React 渲染节点

丰富的连线和箭头

内置了丰富的箭头和连线样式,分别可以参考箭头使用教程、路由使用教程和连接器使用教程。其中路由将边的路径点做进一步处理,并在必要时添加额外的点,并返回处理后的点。然后连接器将边的起点、路由处理后的路径点、终点连接成一条完整的连线。同时我们也提供了对应的扩展能力,详情参考自定义箭头教程、自定义路由教程和自定义连接器教程。

image.png

网格和背景

网格是节点在画布中定位时最小像素单元,例如当节点的位置是 {x: 12, y: 18} 网格大小为 5 时,那么节点渲染到画布的实际位置将是 {x:10, y: 20}。X6 默认提供了 dotfixeDdotmeshdoubleMesh 四种风格的网格,并且支持自定义网格大小和颜色。更多详情请参考网格使用教程。另外,如果内置网格样式不满足业务需求,我们还提供了定义和使用自定义网格的机制。
640.gif
image.png
image.png

灵活易用的网格系统

同时可以为画布指定背景颜色和背景图片,例如我们可以指定画布背景颜色为 #fcfcfc,同时将 AntV 的 Logo 作为画布的背景图片,设置背景图片的透明度为 0.2,并以水印的方式重复显示。更多背景相关设置请参考背景使用教程,另外我们也提供了自定义背景图片显示方式的接口。

image.png
背景颜色和背景图片

交互能力与配套组件,图编辑不可或缺

链接桩

链接桩是节点上的固定连接点,很多图应用都有链接桩,并且有些应用还将链接桩分为输入链接桩和输出连接桩。创建节点时我们可以通过 ports 选项来配置链接桩。可以指定链接桩的位置,如链接桩位于节点顶部和底部,同时也可以为链接桩指定标签。更多详情请参考链接桩使用教程和链接桩布局选项。

image.png
输入和输出链接桩

image.png
沿椭圆均匀布局的链接桩

640 (1).gif
动态添加/删除链接桩

640 (2).gif
链接桩高亮和自动吸附

群组

我们可以通过父子嵌套来实现群组,支持通过交互拖拽成组,支持限制群组内的子节点的移动范围或自动扩展/收缩父节点的大小,另外也可以通过节点中的展开/折叠按钮来展开/折叠群组,更多详情请参考群组使用教程。

640 (3).gif
拖拽嵌套

640 (4).gif
限制子节点移动

640 (5).gif
自动扩展父节点

640 (6).gif
展开/折叠

点选/框选

点击节点/边时选中节点,按下 Cmd/Ctrl 连续点击可以同时选中多个节点,开启 rubberband 选项后支持框选能力。更多详情请参考点选/选框使用教程。

640 (7).gif
点选

640 (8).gif
框选

撤销/重做

撤销/重做是图编辑场景的常用能力,在 X6 中可以通过 history 配置项来开启撤销/重做能力,更多详情请参考撤销/重做使用教程。

640 (9).gif
撤销/重做

对齐线

对齐线是移动节点排版的辅助工具,默认禁用,可以通过 snapline 配置项开启和定制对齐线的样式。更多详情请参考对齐线使用教程。

640 (10).gif
对齐线

小地图

小地图是完整画布的预览,可以通过平移缩放小地图的视口来平移缩放画布,支持渲染粒度定制和样式定制,即是否在小地图中渲染节点/边,节点的细节粒度等,例如下面案例中使用色块来代替了每个节点。更多详情请参考小地图使用教程。

640 (11).gif
小地图

还有更多配套的交互组件,如剪切板、拖拽、键盘快捷键、鼠标滚轮缩放画布等,请点击对应的链接查看。

UI 组件

搭建一个复杂的图编辑应用还需要用到 Menubar、Toolbar、Dropdown、ContextMenu、Splitbox 等 UI 组件,我们在 x6-react-components 中提供了一些这样的 React 组件,可以搭配 antd 使用。点击下面链接查看每个组件的使用文档。

  • Menu 菜单
  • Dropdown 下拉菜单
  • ContextMenu 右键菜单
  • Menubar 菜单栏
  • Toolbar 工具栏
  • ColorPicker 颜色选择器
  • SplitBox 包含分割条的容器
  • ScrollBox 自定义滚动条的容器

AutoScrollBox 自动根据内容大小设置和更新滚动条的容器

640 (12).gif
菜单栏

640 (13).gif
工具栏

640 (14).gif
颜色选择器

640 (15).gif
分隔条

自由灵活的扩展能力

X6 设计之初就充分考虑了可扩展性,精心设计了简单、高可拓展的接口。属性、连接桩布局、连接桩标签布局、节点锚点、边的锚点、连接器、路由、箭头、网格、背景、工具等都可以通过注册机制灵活扩展。有了这些扩展能力,发挥你的想象力,在 X6 这颗种子上生出无限的可能。下面是用 X6 实现的桑基图:
image.png

福利来了,三个应用场景 DEMO

上面分享了那么多特性,那如何快速将 X6 应用到自己场景中呢?最快的方式莫过于“拿来主义”,所以我们在配套源码中提供了流程图编排、DAG 图编排和 ER 图渲染三个应用场景 DEMO,我们可以从这三个 DEMO 开始定制自己的应用。更多场景的应用我们正在筹备中,同时也欢迎大家给我们贡献场景案例。

流程图,流程编排场景。
image.png
有向无环图(DAG 图),算法建模场景。
image.png
ER 图,ER 建模场景。
image.png

最后

非常感谢你的耐心阅读,X6 还是个新生儿,虽然内测版早已在内部数据研发(ER图)、运维中台(流程图)等多个产品应用上线,但相信还有很多问题有待完善,欢迎在 GitHub 给我们反馈问题。


AntV 2020 品牌日的发布详情

AntV 项目链接

欢迎关注我们的 GitHub 项目,点亮 star 了解我们的实时动态,期待 PR:

AntV 官网:https://antv.vision/

G2:https://github.com/antvis/g2
G2 是一套基于可视化编码的图形语法,以数据驱动,具有高度的易用性和扩展性,用户无需关注各种繁琐的实现细节,一条语句即可构建出各种各样的可交互的统计图表。

G2Plot:https://github.com/antvis/g2plot
G2Plot 的定位是开箱即用、易于配置、具有良好视觉和交互体验的通用图表库。

F2:https://github.com/antvis/f2
F2 是一个专注于移动,开箱即用的可视化解决方案,完美支持 H5 环境同时兼容多种环境(node, 小程序,weex)。完备的图形语法理论,满足各种可视化需求。专业的移动设计指引为你带来最佳的移动端图表体验。

F2Native:https://github.com/antvis/F2Native
F2Native 是一个专注于客户端,开箱即用、高性能的可视化解决方案,完备的图形语法理论,满足你的各种需求,专业的移动设计指引为你带来最佳的移动端图表体验。

G6:https://github.com/antvis/g6
G6 是 AntV 旗下的图可视化与图分析引擎,G 来自于 Graphic、Graph ,意味着我们要基于图分析技术做图可视化;6 来自于《六度分隔理论》,表达了我们对关系数据、关系网络的敬畏和着迷。

Graphin:https://github.com/antvis/graphin
Graphin 是一个基于 G6 封装的关系可视分析工具 ,简单,高效,开箱即用,取自 Graph Insight,图的分析洞察。

X6:https://github.com/antvis/X6
X6 是 AntV 旗下的图编辑引擎,提供了一系列开箱即用的交互组件和简单易用的节点定制能力,方便我们快速搭建 DAG 图、ER 图、流程图等应用。

L7:https://github.com/antvis/l7
L7 是一个基于 WebGL 的开源大规模地理空间数据可视分析开发框架。L7 中的 L 代表 Location,7 代表世界七大洲,寓意能为全球位置数据提供可视分析的能力。

AVA:https://github.com/antvis/AVA
AVA 是为了更简便的可视分析而生的智能可视化框架。

G:https://github.com/antvis/g
G 是 AntV 几个产品共同的底层 2D 渲染引擎,高效易用,专注于图形的渲染、拾取、事件以及动画机制,给上层 G2、F2、G6 提供统一的渲染机制。

ChartCube:https://chartcube.alipay.com
ChartCube 是一个可以快速完成图表制作的在线工具,只需要三步就可以创建出高品质的图表。


image.png
关注「Alibaba F2E」
把握阿里巴巴前端新动向

相关文章
|
6月前
|
敏捷开发 canal otter
【周末瞎想】这个需求能不能不做?
【周末瞎想】这个需求能不能不做?
31 0
|
8月前
|
缓存 NoSQL 定位技术
明天疯狂星期四请V我50
明天疯狂星期四请V我50
73 0
|
11月前
|
JavaScript 前端开发 调度
勘误,昨天文章中的知识性错误
勘误,昨天文章中的知识性错误
43 0
|
监控 Java 索引
昨天面试居然聊了半个多小时的异常处理
大风吹去了往日的雾霾,阳光透过窗户照进来,透过窗户可以看到远处的山脉与蓝天相接,这可比我那永远见不到阳光的出租屋好多了。渐渐走进的脚步声打断了我的思绪,一位小姐姐坐在了面前,甜甜的香水味立刻钻进了我的鼻孔。 小姐姐微笑地说:”您好,我是今天的面试官,那么开始吧?“ 我收起直勾勾的眼睛,说:“好的。” 小姐姐说:“在Java的异常处理中有两大组成要素:抛出异常和捕获异常。那么抛出异常可以分为哪两种呢?” 我立刻回答到:
124 0
|
人工智能 文字识别 前端开发
第二天笔记
阿里云视觉训练-第二天
|
XML JSON 前端开发
第三天
电子相册搭建
|
Web App开发 程序员
亲爱的老板:程序员的10分钟就是3个小时
导读:国外程序员艾德·韦斯曼(Ed Weissman )从业32年。某天老板告诉他产品有个问题,10分钟可以修复问题,谁知结果一干就是3个小时。本文就是艾德记录下的过程。 10:48 老板:嗨,艾德,苏在底特律说,“产品历史屏幕”上经常出现错误的发票号码(Invoice Part Number)。
894 0
|
存储 Java
2018-05-09 第三天
一、数据类型   所有写的 java 的源代码 都要复合 java 编译器的规范要能够让编译器理解编译通过。   1在编写源代码的时候需要告诉编译器我申请的内存的名字还有内存中数据的类型。 java是一种强类型语言。
1199 0