天天看點

X6 1.0 抱歉來晚

作者 | 問崖
X6 1.0 抱歉來晚

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

來指定使用哪種圖形來渲染節點即可,而且絕大部分節點樣式和互動都可被自定義。

X6 1.0 抱歉來晚

基礎圖形

我們可以基于

path

polygon

polyline

三個基礎圖形擴充出更多圖形。然而,實際業務場景中的節點可能要更複雜,預置樣式不滿足需求?沒關系,我們還提供了兩種靈活的自定義節點的方式。支援使用 HTML 渲染節點,使用時将

shape

指定為

html

即可;另外還可以使用 React 元件來渲染節點,使用時需要安裝并引入x6-react-shape,配合咱家 antd 更是天生一對哦。

X6 1.0 抱歉來晚

使用 HTML 和 React 渲染節點

豐富的連線和箭頭

内置了豐富的箭頭和連線樣式,分别可以參考箭頭使用教程、路由使用教程和連接配接器使用

教程

。其中路由将邊的路徑點做進一步處理,并在必要時添加額外的點,并傳回處理後的點。然後連接配接器将邊的起點、路由處理後的路徑點、終點連接配接成一條完整的連線。同時我們也提供了對應的擴充能力,詳情參考自定義箭頭教程、自定義路由教程和自定義連接配接器教程。

X6 1.0 抱歉來晚

網格和背景

網格是節點在畫布中定位時最小像素單元,例如當節點的位置是

{x: 12, y: 18}

網格大小為

5

時,那麼節點渲染到畫布的實際位置将是

{x:10, y: 20}

。X6 預設提供了

dot

fixeDdot

mesh

doubleMesh

四種風格的網格,并且支援自定義網格大小和顔色。更多詳情請參考網格使用教程。另外,如果内置網格樣式不滿足業務需求,我們還提供了定義和使用自定義網格的機制。

X6 1.0 抱歉來晚
X6 1.0 抱歉來晚
X6 1.0 抱歉來晚

靈活易用的網格系統

同時可以為畫布指定背景顔色和背景圖檔,例如我們可以指定畫布背景顔色為 #fcfcfc,同時将 AntV 的 Logo 作為畫布的背景圖檔,設定背景圖檔的透明度為 0.2,并以水印的方式重複顯示。更多背景相關設定請參考背景使用教程,另外我們也提供了自定義背景圖檔顯示方式的接口。

X6 1.0 抱歉來晚

背景顔色和背景圖檔

互動能力與配套元件,圖編輯不可或缺

連結樁

連結樁是節點上的固定連接配接點,很多圖應用都有連結樁,并且有些應用還将連結樁分為輸傳入連結接樁和輸出連接配接樁。建立節點時我們可以通過

ports

選項來配置連結樁。可以指定連結樁的位置,如連結樁位于節點頂部和底部,同時也可以為連結樁指定标簽。更多詳情請參考連結樁使用教程和連結樁布局選項。

X6 1.0 抱歉來晚

輸入和輸對外連結接樁

X6 1.0 抱歉來晚

沿橢圓均勻布局的連結樁

X6 1.0 抱歉來晚

動态添加/删除連結樁

X6 1.0 抱歉來晚

連結樁高亮和自動吸附

群組

我們可以通過父子嵌套來實作群組,支援通過互動拖拽成組,支援限制群組内的子節點的移動範圍或自動擴充/收縮父節點的大小,另外也可以通過節點中的展開/折疊按鈕來展開/折疊群組,更多詳情請參考群組使用教程。

X6 1.0 抱歉來晚

拖拽嵌套

X6 1.0 抱歉來晚

限制子節點移動

X6 1.0 抱歉來晚

自動擴充父節點

X6 1.0 抱歉來晚

展開/折疊

點選/框選

點選節點/邊時選中節點,按下 Cmd/Ctrl 連續點選可以同時選中多個節點,開啟

rubberband

選項後支援框選能力。更多詳情請參考點選/選框使用教程。

X6 1.0 抱歉來晚

點選

X6 1.0 抱歉來晚

框選

撤銷/重做

撤銷/重做是圖編輯場景的常用能力,在 X6 中可以通過

history

配置項來開啟撤銷/重做能力,更多詳情請參考撤銷/重做使用教程。

X6 1.0 抱歉來晚

對齊線

對齊線是移動節點排版的輔助工具,預設禁用,可以通過

snapline

配置項開啟和定制對齊線的樣式。更多詳情請參考對齊線使用教程。

X6 1.0 抱歉來晚

小地圖

小地圖是完整畫布的預覽,可以通過平移縮放小地圖的視口來平移縮放畫布,支援渲染粒度定制和樣式定制,即是否在小地圖中渲染節點/邊,節點的細節粒度等,例如下面案例中使用色塊來代替了每個節點。更多詳情請參考小地圖使用教程。

X6 1.0 抱歉來晚

還有更多配套的互動元件,如剪切闆、拖拽、鍵盤快捷鍵、滑鼠滾輪縮放畫布等,請點選對應的連結檢視。

UI 元件

搭建一個複雜的圖編輯應用還需要用到 Menubar、Toolbar、Dropdown、ContextMenu、Splitbox 等 UI 元件,我們在 x6-react-components 中提供了一些這樣的 React 元件,可以搭配 antd 使用。點選下面連結檢視每個元件的使用文檔。

  • Menu 菜單
  • Dropdown 下拉菜單
  • ContextMenu 右鍵菜單
  • Menubar 菜單欄
  • Toolbar 工具欄
  • ColorPicker 顔色選擇器
  • SplitBox 包含分割條的容器
  • ScrollBox 自定義滾動條的容器

AutoScrollBox 自動根據内容大小設定和更新滾動條的容器

X6 1.0 抱歉來晚

菜單欄

X6 1.0 抱歉來晚

工具欄

X6 1.0 抱歉來晚

顔色選擇器

X6 1.0 抱歉來晚

分隔條

自由靈活的擴充能力

X6 設計之初就充分考慮了可擴充性,精心設計了簡單、高可拓展的接口。屬性、連接配接樁布局、連接配接樁标簽布局、節點錨點、邊的錨點、連接配接器、路由、箭頭、網格、背景、工具等都可以通過注冊機制靈活擴充。有了這些擴充能力,發揮你的想象力,在 X6 這顆種子上生出無限的可能。下面是用 X6 實作的桑基圖:

X6 1.0 抱歉來晚

福利來了,三個應用場景 DEMO

上面分享了那麼多特性,那如何快速将 X6 應用到自己場景中呢?最快的方式莫過于“拿來主義”,是以我們在配套源碼中提供了流程圖編排、DAG 圖編排和 ER 圖渲染三個應用場景 DEMO,我們可以從這三個 DEMO 開始定制自己的應用。更多場景的應用我們正在籌備中,同時也歡迎大家給我們貢獻場景案例。

流程圖,流程編排場景。

X6 1.0 抱歉來晚

有向無環圖(DAG 圖),算法模組化場景。

X6 1.0 抱歉來晚

ER 圖,ER 模組化場景。

X6 1.0 抱歉來晚

最後

非常感謝你的耐心閱讀,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 是一個可以快速完成圖表制作的線上工具,隻需要三步就可以建立出高品質的圖表。

X6 1.0 抱歉來晚

關注「Alibaba F2E」

把握阿裡巴巴前端新動向