… 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