在資料視覺化占有重要地位的D3.js釋出5.0版本,除了增加Promise與Fetch的非同步樣板(Asynchronous Patterns )外,還更新了主要的視覺化API,現在棄用d3.schemeCategory20,提供更準確的顏色以及新的地理投影方法。

比起D3.js 4.0的大刀闊斧改革,5.0顯得保守許多,D3.js創辦人Mike Bostick在推特表示,所有API在D3.js 4的時候,都已經達到非常穩定的狀態,因此新推出的5.0並沒有做太大的修改,比較大的突破是提供Promise與Fetch的非同步樣板。

D3.js 5.0已經不再使用XMLHttpRequest,d3-request的模組已經被d3-fetch模組取而代之。官方提到,Fetch API支援串流回應(Streaming Response)等強大的功能,可以在接收串流資料的同時,把先收到的資料繪製出來。

另外,D3.js 5.0棄用並移除d3-queue模組,開發者可以使用Javascript的功能Promise.all()平行執行批次的非同步任務,或是用第三方函式庫p-queue達成並行控制。

在主要的繪圖功能上,現在不再提供d3.schemeCategory20顏色配置方法。官方表示,這個20種顏色分類的舊方法存在缺陷,其分類的方式可能錯誤暗示資料之間的關係,因為共用色調可能讓讀者誤以為資料同屬於是一個超類別,而顏色深淺可能又暗示了資料有序。

因此現在D3.js提供d3-scale-chromatic取代原先提供的配色方法,採用專業配色服務ColorBrewer的顏色建議,新的方法提供離散以及連續配色,包括分類、發散、有序單色以及有序多色調方法。

還有透過d3-contour新提供了Marching Squares以及密度估量演算法。地理投影現在支援projection.angle,讓開發者能夠使用更華麗的地理投影方法。

最後D3.js的package.json檔案不再使用精確的D3套件版本號,這樣能解決重複安裝D3模組的問題。


Advertisement

更多 iThome相關內容