使用D3.js做複雜資料視覺化(一):簡介

在熟悉完html5/css的基礎後(真的是頗多坑),終於可稍微踏進d3.js的世界,邊搞懂基本js邊搞起來,然後在開發時,還必須稍微把後端的東西淺嚐一番(採取用koa2來做後端,前後從xdk到browserify到node.js下的koa2框架),來支撐前端的設計呈現,這坑走來一定要稍微紀錄一下。

 不得不說D3.js背後的邏輯很美,尤其是在閱讀資料視覺化經典裡的概念後,會發現作者Mike Bostock開發D3所花費的苦心,同時慢慢體會到Javascript背後的想法。

放在軟體世界中,D3.js是建立在前端的領域中javascript的視覺化套件(讓瀏覽器 etc. firefox/chrome/safari 跑起來的程式語言),而前端領域是個變化快速的領域,尤其是javascript

在摸索過程中,可以發現網路上的js範例是由各個不同版本js語法(ES2016, ES2017….)所組成的,隔幾年,基本上語法和函數都有點變化,所以要花一點時間大致理解圍繞D3.js所需要的工具,其目前開發到什麼程度。

D3.js是個快速迭代的Javascript 項目,所有書籍的教學和網路文章教學常常是過時

在學習D3.js的起手,挑了兩本在2017年發表的書來閱讀,分別是Data Visualization with D3 4.x Cookbook(Nick Zhu)D3.js 4.x Data Visualization(Ændrew Rininsland ,‎ Swizec Teller),在實踐的過程,我馬上發現了兩本都是在2017年發行的書,Javascript風格、使用的D3.js語法和目前最新版本的D3.js 4.x版本(話說在前幾天D3.js 5.0發佈了)都不太一樣,部分邏輯也有些出入,所以基本上在使用D3.js的路上,會遇到很多版本語法的坑,很難直接把在網上的代碼直接拿來應用,善用官方解釋和…..動手入坑。

假如再重來一次的話,會推薦直接看這本Interactive Data Visualization for the Web, 2nd Edition,因為其書名沒有D3js,所以一開始用網路搜d3js,其被放在較後面的排序,後來發現其內容撰寫方式,雖然囉唆,但是是作者心法的傳授,蠻推薦的,這本書的作者Scott Murray,本曾經是學術界的教授,所以文章架構比較文鄒鄒,跟單純工程師的寫法不同,會交代前因後果,和放入自己的想法。

D3.js開宗明義就是要做Data-Driven Document,重點不是在華麗的視覺化,而是如何有效地呈現資料

D3.js快速迭代的過程,其中一個目的便是簡化資料處理的過程,以及讓資料結構更貼近視覺化的流程,另外一部分的重點,便是互動性,資料視覺化的重點不是只停留於靜態的視覺呈現,而是讓使用者與資料更有效的互動,所以盡量由“資料特性”出發來思考設計,而不要一下子就用視覺化來想像,否則會創造出很多無用的設計

 想了解Mike Bostock開發D3背後的點點滴滴,可以看一下其在reddit的AMA專欄:連結

螢幕快照 2018-02-15 上午11.02.34

發表留言