論文標題:
Canis: A High-Level Language for Data-Driven Chart Animations
Author: T. Ge, Y. Zhao, B. Lee, D. Ren, B. Chen, Y. Wang
關(guān)鍵詞:
可視化工具集、可視化信息、動態(tài)圖表、JSON
主要內(nèi)容:
動畫為人們對靜態(tài)事物的深層理解提供了一種有效的手段,幫助人們?nèi)ソ⑹挛镏g的聯(lián)系、認知關(guān)系、吸引用戶注意、表達情緒等。因此動畫經(jīng)常被用于描述事物變化規(guī)律、展示狀態(tài)切換及展開敘事過程。同時,動畫也能讓數(shù)據(jù)變得更加直觀。
但是,目前的問題是,缺乏一種專門針對可視化動畫、高效直觀的構(gòu)建方法。因此該文獻提出了Canis,一種交互式可視化系統(tǒng)。該系統(tǒng)目的在于對動畫進行簡潔精確地描述,基于數(shù)據(jù)驅(qū)動地構(gòu)建,以及探索一種直觀自然的交互模式。
研究結(jié)果:
1. 文獻綜述:
從過往的研究可得出,可視化圖表動畫的有效性:
動畫更容易讓讀者跟蹤狀態(tài)的改變
帶有動畫效果的散點圖在趨勢可視化中更為有效
2. 理論體系:
圖表動畫的設(shè)計空間:數(shù)據(jù)、圖形、對象類型、時間

3. 現(xiàn)有方式:
現(xiàn)有的可視化創(chuàng)建方式主要有,
- 基于關(guān)鍵幀的工具(After Effect等)
a) 支持復(fù)雜生動的動畫效果
b) 操作繁瑣、準確率沒有保障
- 基于模板的工具(Flourish等)
a) 方便使用
b) 無法定制化的圖表動畫
- 編程類工具(D3, gganimate等)
a) 基本上是對數(shù)學(xué)屬性進行一個直接定義,缺乏對數(shù)據(jù)之間的聯(lián)系
b) 數(shù)學(xué)邏輯較為復(fù)雜,對用戶要求較高
c) 上述工具可以用于生成動畫,但并不是專門針對動畫而生
4. 存在問題:
缺乏對數(shù)據(jù)、視覺編碼、時序三者關(guān)系的抽象、導(dǎo)致動畫表達與數(shù)據(jù)感知的一致性得不到保障。
缺乏對動畫的直觀表達形式和自動化構(gòu)建方法,導(dǎo)致動畫過程較為復(fù)雜,交互繁瑣。
缺乏直接的交互形式,導(dǎo)致用戶的動畫表達與交互實現(xiàn)之間存在較高的學(xué)習成本。
5. Canis設(shè)計邏輯
定義:
基于動畫設(shè)計空間(目標、劃分、時序、效果),數(shù)據(jù)驅(qū)動的聲明式可視化動畫編程語法。
目標:
有效性:可以輕松建立數(shù)據(jù)、視覺編碼、時序三者之間的關(guān)系,以數(shù)據(jù)驅(qū)動的方式構(gòu)建可視化動畫。(側(cè)重于數(shù)據(jù)結(jié)構(gòu))
平衡表現(xiàn)力和易用性:添加常用動畫表現(xiàn)形式,優(yōu)化動畫編譯及渲染過程(側(cè)重于可用性和運行效率)
設(shè)計原則:
-
高級語法規(guī)范
簡單明確的語法,基于json邏輯,用戶只需要定義要做什么,不需要去定義如何去做,避免繁瑣數(shù)學(xué)邏輯
清晰的層次結(jié)構(gòu)
基于樹形結(jié)構(gòu),對圖元進行分組管理和動畫時序進行定義(下文有圖)
-
支持跨平臺應(yīng)用
- 支持跨平臺,提高適用性和實用性
結(jié)構(gòu):
1.輸入數(shù)據(jù)——》2. 編譯過程——》3.輸出
1.輸入數(shù)據(jù)
- 在svg數(shù)據(jù)里,嵌入數(shù)據(jù)結(jié)構(gòu)信息,生成dsvg數(shù)據(jù)。如下:

-
數(shù)據(jù)描述:
-
具體寫法
寫法
-
-
結(jié)構(gòu)關(guān)系
結(jié)構(gòu) -
樣例數(shù)據(jù)
樣例 -
核心屬性
-
Selector:選擇動畫單元中所涉及的圖元
- “selector”:“.dot”
-
Grouping: 將圖元按照數(shù)據(jù)屬性進行層次化劃分,并依據(jù)分組定義圖元動畫的時序順序(基于x、y軸進行劃分)
-
寫法 寫法示例
-
編譯后結(jié)果如下結(jié)構(gòu)
-
寫法
-
Effect:每個動畫圖元可以綁定動畫效果
- 效果展示
-
2. 編譯
-
順序:Parse——》Build——》Bind——》Evaluate——》Translate
Parse:糾錯,補充默認值
Build:劃分圖元、生成圖元樹形結(jié)構(gòu)
Bind:使用視覺屬性描述動畫效果,并綁定至圖元單元
Evaluate:計算圖元單元的動畫時間
Translate:轉(zhuǎn)移為Lottie編碼。在這部分里,利用靜態(tài)+動態(tài)模板數(shù)據(jù),為重復(fù)性極高的動畫代碼進行簡化。
3. 輸出數(shù)據(jù)
- Lottie編碼(優(yōu)勢:支持多平臺本地渲染,動畫體積更小,渲染效率高)
6. 在線測試:
https://chartanimation.github.io/canis/gallery.html
對設(shè)計的啟示:
在數(shù)據(jù)處理過程中,除了數(shù)據(jù)本身之外,還可以進一步利用其結(jié)構(gòu)化數(shù)據(jù),方便管理,同時更為清晰易懂。像城市數(shù)據(jù)、建筑數(shù)據(jù),都慢慢地向結(jié)構(gòu)化數(shù)據(jù)進行靠攏(例如,城市網(wǎng)格管理,省、市、區(qū)、街道、具體網(wǎng)格數(shù)值)
理清晰了對于時序數(shù)據(jù)而言的重要參數(shù)(層次結(jié)構(gòu)+起始順序)
樹形結(jié)構(gòu)數(shù)據(jù)的在可視化中的應(yīng)用
局限與不足:
編譯:一旦某一部分的數(shù)據(jù)更新了,會代碼需要全局重新編譯,導(dǎo)致計算效率下降。
語法:對于編碼相同的數(shù)據(jù),并不能實現(xiàn)復(fù)用,需要重新寫入。例如折線圖中,點與點之間的動畫也具有較強的相關(guān)性,但是在Canis中缺乏定義時序相關(guān)性的語法。目前只能分別定義兩類圖元動畫,之后進行手動對齊。
應(yīng)用:創(chuàng)作過程中的可理解性較差,用戶只能點擊預(yù)覽去看全局狀態(tài)。同時,下上述中aniunits里面的selector、grouping劃分機制,也需要用戶按照自頂向下的思路進行編寫,需要考慮比較周全才能開始編寫。





