如何評價螞蟻金服新一代數據可視化引擎 G2 ?

官方網站:G2 - The Grammar Of Graphics
介紹:螞蟻金服發布新一代數據可視化引擎G2 · Issue #1 · antvis/antvis.github.io · GitHub
發布微博:#數據可視化# G2 螞蟻金服新一代數據可視... 來自神經病回家了


謝邀 @羅宸 。一句話回答,G2隻是圖形語法(The Grammar of Graphics)的「又」一個實現。


為了詳細回答這個問題,讓我們先撥開「螞蟻金服」、「新一代數據可視化引擎」這些光環,近距離看一下G2背後的理論基礎,也就是圖形語法,The Grammar of Graphics。


The Grammar of Graphics代指東西中的一個就是Leland Wilkinson所著的這本書The Grammar of Graphics (豆瓣)。估計一般人知道的不多,只有專門搞可視化或者統計圖形的人才知道,但就算知道,讀過這本書的人也應該不多(將近700頁的厚書)。俺稍微通讀過一遍這本書。這本書向我們介紹了看待統計圖形的一種形式化方法,也就是「圖形語法」。

圖形語法與一般基於分類的圖表理論有很大不同。比如說,我們知道有柱狀圖、折線圖、散點圖、餅圖等等這些圖表,但是這個世界上是不是只有這些圖表了呢?當然不是,比如說還有堆疊柱狀圖、環狀圖、南丁格爾玫瑰圖、雷達圖……等等等等。分類是分不過來的。更可怕的是,圖表之間還可以進行「組合」,比如說一張圖表裡既有柱子又有折線,那對這種組合圖形怎麼分類呢?圖形語法提出,不光光數據是有結構的,圖形也是有結構的。圖形語法首先描述清楚了(統計)圖形的結構,並提出了一種組合方法,從而可以描述很多、很多、很多種傳統與非傳統甚至是沒有出現過的圖表,包括但不限於柱狀圖、折線圖……等等。


做一個比喻。比如說我們知道有牛、羊、馬、鹿、狗、貓、兔等等這些動物。這是一種對動物基於分類的認知。但假設突然基因變異,出現一個四不像,那這個時候分類就起不了作用了。但如果有一種「動物語法」,規定了動物的結構,比如說有頭、軀幹、四肢、尾巴,頭上又有多少隻眼睛、多少個鼻子、有沒有鬍子、有沒有鬃毛,眼睛是什麼顏色的,鼻子是什麼形狀的,那麼這個時候我們對四不像也可以正確的進行認知:我雖然不知道它的名字,但是我知道它有頭、軀幹、四肢、尾巴,頭上有N隻眼睛、M個鼻子、沒有鬍子、沒有鬃毛,眼睛是藍色的,鼻子是扁的,它雖然沒有名字,但我知道它就是它!


另外,既然名字中帶有「語法」,那麼這其實跟程序語言也有一定關係。比如我們在寫C、Python的時候,需要遵循這門語言的語法,才能寫出正確的程序。所謂的語法,可以是認為是一種生成規則,是一門形式化系統。圖形語法只不過定義了一種合理的統計圖形的生成方式,僅此而已。由於數據對統計圖形的重要性,圖形語法中也對數據的操縱也定義了一套代數理論,但在此不再贅述。


對圖形語法的簡介到此為之。然後,我們是不是會好奇,圖形語法到底是怎麼來的?為了回答這個問題,我們首先來認識一下圖形語法的作者,Leland Wilkinson。這哥們從上世紀80年代就開始開發統計軟體包SYSTAT,然後把它賣給了大名鼎鼎的IBM的SPSS統計學軟體,並為SPSS工作了十年之久。SPSS中用於描述圖表的語言叫做GPL(Graphics Production Language,http://www.helsinki.fi/~komulain/Tilastokirjat/IBM-SPSS-GPL-Reference-Guide.pdf),便是Wilkinson的圖形語法最初的實現。在一開始開發統計圖形庫的時候,Wilkinson由於碰到很多神煩的問題,特別是統計圖形的表示問題,「一怒之下」便發明了圖形語法。經過不斷的實踐與經驗積累,圖形語法便逐漸成熟起來。在他的這本書里,Wilkinson用一種寫研究論文的方式撰寫了這本書,有各種引用、各種數學上的形式化定義,可以認為,這本書是可視化與統計圖形學術界一本里程碑式的經典文獻。

知道了圖形語法是什麼,以及它是從哪裡來的、怎麼來的,我們再回過頭來看G2。G2所宣稱的「新一代數據可視化引擎」,其實是有一定道理的。因為現在市面上所流行可視化庫,大部分是類似HighCharts、ECharts、Google Charts等這種基於圖表分類的可視化庫。一是逼格較低,二是用戶無法表達庫作者沒有預先設置好的圖表。另外一個具代表性的是D3可視化庫,但D3略偏向底層,學習曲線也略陡峭,因此,基於圖形語法的可視化引擎還是有一定的優勢的。因此,G2作為圖形語法的又一種實現,讓枯燥無味的理論從高貴的學術殿堂走出來服務廣大勞動者,可以算得上是「新一代數據可視化引擎」。


但是,別忘了「又」字。GPL就不說了,多少年前的東西了,而且還不是免費的。學術圈裡那幾個萬年炒冷飯的也不提了。這裡只舉幾個俺覺得有實際價值的項目:

  • R語言中著名的ggplot2,是Hadley Wickham針對R語言基於圖形語法的一個實現,免費又開源。雖然俺不是學統計學的,但估計學統計學的同學應該都知道吧?
  • Vega Vega: A Visualization Grammar,華盛頓大學那邊最近幾年搞出的一套基於D3的可視化語法,其中一些概念借鑒了圖形語法,神似而形不似。
  • Bokeh http://bokeh.pydata.org/en/latest/,這個知道的人可能更少些。這是一個基於圖形語法的Python可視化庫。個人覺得比G2更加成熟。

還有一些不太成熟的就不舉例子了,比如說Clojure也有基於圖形語法的可視化庫。然後除了阿里,某些公司內部也有未公開的基於圖形語法的可視化庫。其實,要實現一個基於圖形語法的可視化庫並不算太難,但難的在於細節、在於成熟度。就像是一個剛誕生的產品,與一個經過N次迭代的產品,其實是有質的區別的。而在俺看來,螞蟻金服的G2隻是基於圖形語法的可視化庫當中的「又」一個(目前算不上太成熟的)成員。


2017.4.16更新:經過好幾個版本的迭代,目前G2看起來也是越來越成熟,也希望該項目能夠堅持走下去,成為國內可視化產品中的奇葩(請注意這是褒義詞:)。


&規範下的圖表庫,引經據典,有很多內涵門道,學術氣很濃,因為開發人員多是zju cad的?
有統計API是亮點,鏈式語法方便使用。
不太喜歡默認配色風格和布局,有些冷淡保守。遵循太多規則難以呈現個性亮點。
和d3不在一個維度上,g2是封裝好的開箱即用,和echarts比較類似。


看了下,遠不能達到像d3.js那樣,任意創作自己的圖形,還是跟echarts差不多的。不建議入坑!


從今年年初了解到這個項目,等到現在,也沒等到一個正經的開源,issues中有多人提到這個問題,官方的說法也從去年(16年)的「下一個大版本」,變到今年(17年)年中「7,8月份」,又變到今年年底「11月1號「。現在年底了,離最近一次的口風「11月1號」只有三天了,依然沒有半點要開源的樣子。

坦白講,剛才去看了看,文檔是比之前好多了,但一個放出來1年半接近兩年的項目,還是壓縮過的代碼,真是讓人提不起興趣。今年年初相對深度的用過一次,當時文檔還都不全,代碼是壓縮的,介面出了問題基本連蒙帶猜debug。

不建議用在生產環境,至少暫時是這樣的,至於前面答主提到的圖形語法,假如介面有bug調試都沒法調試,反而不那麼重要了。

不知道是有內部壓力,團隊沒有開源意願,還是實在沒有精力。這麼個項目看起來很棒,活生生被搞成雞肋了。今天看到阿里又開源了ant design pro,還是說內置G2,真是。。。

順帶說一句,真的討厭阿里的開源項目里,像ant.design,能放在項目里的字體文件,非要去阿里的cdn請求。G2的項目里也默認開啟track。阿里整體上下對於數據的慾望已經是病態的了。

G2 不開源么? · Issue #1 · antvis/feedback

為啥不提交源碼啊,js壓縮過 · Issue #35 · antvis/g2

啥時候公開源代碼 · Issue #42 · antvis/g2

G2 2.2.0 發布 · Issue #49 · antvis/g2

不準備開源嗎, 很想看源碼啊 · Issue #97 · antvis/g2

使用協議是什麼樣的,使用是否付費,能否商用,還是僅供學習參考? · Issue #155 · antvis/g2

更新一下:

今天發現,g2在明確關閉track的情況下,production環境下,依然向https://kcart.alipay.com/web/bi.do這個地址發送了追蹤信息。


R語言和ggplot2重度使用者表示不能忍受非圖形語法的圖表庫,G2感覺很不錯。我實際上用的比較多的是藉助R用ggplot+plotly生成plotly.js的圖表。


不如highchart和echart


數據配置方面 倒是比echarts更人性化一點,但是功能不夠齊全,提供的plugin不符合cmd規範 不能require 要單獨寫script引入 ,文檔也不太全 比如chart的label方法在例子中看到有用但在文檔里居然沒找到。最後 g2-react更是個大坑 完全不能用 好在並不複雜 自己寫一個吧


一打開首頁,CPU馬上飆到85%,CPU溫度一直90多……
還沒細看代碼,但是這表現出來的性能是不是有點……


就是最近,和螞蟻金服的工作人員開過一個業務會,他們的ppt,大概連續3頁,整整30個城市,至少7個指標的表格,放在一頁ppt上,看到這個問題,覺得應該不好用


好不好用先不說,起碼很適合新手,而且對每種圖表的使用做了說明


現在echars已經發布很久,坑該填的也填了,很多人出於盈利方面也出了很多教程,文檔還算詳細,新手也看的懂,不懂可以買教程看,g2沒看到有什麼特別重要的特點,只是又一個圖表庫,坑不知道有沒有,但是教程是少的可憐,另外說一下,如果g2想在圖表庫佔領一席之地,就內部狂造demo,外部狂造教程,小白都能看的懂,大家才會用,如果只是為了滿足KPI,那不如不要開源了,g2做大了也能養活一大票兄弟對不,要做就做最好,要不學學vue,把echars買了


能比得過d3.js嗎?


我就問一句,能兼容IE6+,同時完美支持移動端嘛


看示例挺不錯的,不過github上沒有放源碼(只放了壓縮的代碼),感覺是匆忙推出的產品。需要再觀望觀望,應該不錯。


推薦閱讀:

有什麼工具可以下載整個網站的內容嗎?
瀏覽器向同一域名同時發送兩個 HTTP (ajax)請求,究竟是共用了一個 TCP 連接還是兩個?
單頁應用如何解決 SEO ?
在做 iOS 和 Android 的 HTML5 開發時,你都掉到過哪些坑裡?
<body/onload=alert(1)> 是什麼寫法?

TAG:JavaScript | 數據可視化 | 可視化 | 大數據 | 前端框架 |