D3,最受歡迎的前端資料視覺化庫

李鬆峰發表於2013-04-27

enter image description here

第一個瀏覽器只能渲染靜態頁面,所謂互動性僅限於單擊連結。1996年,Netscape在瀏覽器中內建了JavaScript直譯器,從而讓瀏覽器在載入頁面時,能夠解釋執行這門指令碼語言編寫的程式碼。

這個舉措並沒有它後來引發的鉅變那麼驚心動魄,但卻讓瀏覽器從被動的顯示,進入了互動線上處理動態畫面的新時代。這一歷史性轉變成就了我們今天的頁面內互動的Web。如果沒有JavaScript,就不會有D3,而基於Web的資料視覺化也只能侷限於提前生成好的、不具備響應能力的GIF圖。(噢……謝謝,Netscape!)

歷史的車輪前進到了2005年,這一年Jeffrey Heer、Stuart Card和James Landay推出prefuse(http://prefuse.org/),一個通過Web呈現的資料視覺化工具包。prefuse(字母全部小寫)是用Java寫的,那是一種編譯型語言,而且視覺化程式要在瀏覽器中通過Java外掛執行。(注意,Java和JavaScript是完全不一樣的語言,儘管名字上類似。)prefuse是當時一個突破性的應用,它首次讓沒有多少經驗的程式設計人員,能夠實現基於Web的視覺化展示。有了prefuse之後,Web上的資料視覺化就成了小事一樁。

兩年後,Jeff Heer又推出了Flare(http://flare.prefuse.org/)。這是一個類似的工具包,程式語言是ActionScript,就是說可以通過瀏覽器中的Flash Player來檢視視覺化結果。與prefuse類似,Flare也依賴瀏覽器外掛。Flare雖然是一個巨大的進步,但隨著瀏覽器的發展,視覺化顯然不通過外掛(而只利用瀏覽器原生特性)也能實現了。

2009年,Jeff Heer搬到史丹佛。在那裡,他說服一位剛畢業的學生Mike Bostock,共同在史丹佛的Vis Group(http://vis.stanford.edu/)開發了Protovis(http://mbostock.github.io/d3/tutorial/protovis.html),那是一個基於JavaScript的視覺化工具包,只依賴原生的瀏覽器技術。(如果你用過Protovis,一定要參考Mike的這篇“For Protovis Users”,網址:http://mbostock.github.com/d3/tutorial/protovis.html。)

Protovis簡化了生成視覺化圖形的工作,即使是沒有程式設計經驗的人都可以上手。但它要藉助一個抽象的表現層,儘管設計師可以使用Protovis語法來控制這一層,可除錯很不方便,因為使用的不是標準方法。

2011年,Mike Bostock、Vadim Ogievetsky和Jeff Heer正式推出D3(http://vis.stanford.edu/papers/d3),作為下一代Web視覺化工具。與Protovis不同的是,D3直接操作網頁文件。因此,除錯就方便了,嘗試不同的方案也更容易,而且展示視覺效果的可能性也更多了。唯一的缺點是學習門檻有點高,不過本書會盡可能解決這個問題。此外,你通過學習D3掌握的所有技術,即使在資料視覺化這個領域之外,也將是非常有用的。

無論你熟悉上面提到的任何一個突破性的工具,一定都會認可D3純正的血統。如果你對D3底層的設計思想感興趣,強烈建議你看一看Mike、Vadim和Jeff在InfoVis上發表的論文“D3 : Data-Driven Documents”(http://vis.stanford.edu/files/2011-D3-InfoVis.pdf),其中清晰地分析了這種工具的必要性。這篇論文濃縮了他們在學習和開發視覺化工具幾年間的心血。

相關文章