… is a visualization library based on D3.
基於此現狀,國內不少可視化團隊也在不斷研發更適合國人開發的可視化工具庫,一方面是爲了下降可視化研發的入門門檻,另外一方面應該也是受 Mike 的鼓舞,想在可視化工具庫領域作點有意思的事吧。Echarts,因爲涵蓋了多個圖表類型、較早採用 canvas + SVG 平衡渲染性能以及幾乎零配置的開發成本,其名聲被傳遍大街小巷。前端
在 5.0 版本中,D3 開始採用 Promises 而不是傳統的異步回調來加載數據。熟悉 Promise 的同窗應該知道, Promise 能夠簡化異步代碼的結構,特別是在支持 async/await 用法的現代瀏覽器中(詳情能夠參閱 Observable 的 Promise 介紹一文)。例如,在 D3 4.X 版本中加載一個 CSV 文件,你也許會這樣操做:java
d3.csv("file.csv", function(error, data) {
if (error) throw error;
console.log(data);
});複製代碼
d3.csv("file.csv").then(function(data) {
console.log(data);
});複製代碼
const data = await d3.csv("file.csv");
console.log(data);複製代碼
D3 再也不提供相似 d3.schemeCategory20* 的分類顏色方案。這二十種顏色方案存在明顯缺陷,因它們的分組設計可能會錯誤的暗示數據之間的關係:一份共享的色調可能意味着對應的數據會歸屬到同一組別中,而顏色亮度的深淺可能會暗示數據的順序。 取而代之的是,D3如今包含一個庫叫 d3-scale-chromatic,它實現了 ColorBrewer 中的一些優秀的配色方案,這包括分類,發散,連續單色以及連續多色 等方案。這些方案既支持離散變量同時也支持連續變量賦值。git
*selection*.clone
API 用於插入所選節點的克隆版本,而
d3.create 能夠用於建立分離的元素節點。
d3-geo 地理投影模塊如今支持
*projection*.angle
API,這促使咱們如今可使用由 Philippe Rivière 開發提供的若干全新的
多面投影方法(模塊)了。
最後,D3 的 package.json 文件再也不引用從屬於 D3 模塊的精確版本號了。這解決了 D3 模塊重複安裝的一個問題。github
相比 D3 4.0 版本長篇闊論對其中的多個改動進行詳細介紹,5.0 CHANGES 只包含短短几段就將新版本的功能介紹完畢。不論你是第一次據說 D3,仍是曾經聽過 D3 但不熟悉利用 D3 進行開發,又或者一直尾隨 D3 從 v3 一路走來,如今 D3 5.0 已經發布,何不上手試試呢?web
// 引入整個庫文件
<script src="https://d3js.org/d3.v5.js"></script>
// 引入壓縮後的整個庫文件
<script src="https://d3js.org/d3.v5.min.js"></script>
// 只引入 d3-selection 模塊
<script src="https://d3js.org/d3-selection.v1.js"></script>
// 使用 import 語法引入具體的 D3 模塊
import {scaleLinear} from "d3-scale";
// 使用 import 語法引入整個 D3
import * as d3 from "d3";
// 在 Node 中引入 D3
var d3 = require("d3");
// 針對多個 D3 模塊獨立引入後合併至 d3 命名空間
var d3 = Object.assign({}, require("d3-format"), require("d3-geo"), require("d3-geo-projection"));複製代碼
WebGL 方面的三維可視化能夠參考 mrdoob 的 three.js,關於地理空間的可視化能夠參考 mapbox,leaflet 和 openstreetmap 的相關開源庫,例如 mapbox-gl-js 等等。算法
更多 D3 代碼示例能夠查看 D3 Gallery,固然,更好的 D3 做品等待你的呈現。npm
我的公衆號,微信搜索「黯曉」或掃描 二維碼 關注,會同步我在知乎及我的博客上發表的文章,談談前端技術與平常有趣事。知乎專欄是 初級前端工程師。json