D3.js 5.0释出,支援异步样版、导入专业资料配色法
在资料视觉化占有重要地位的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模组的问题。
