Switch to my Notes

[杂谈]D3.js与数据可视化

引用

The purpose of visualization is insight, not pictures. — Ben Shneiderman

d3-preview


1. D3.js

D3Data-Driven Documents的简称, 直译过来就是 数据驱动文档。 其实简单地理解,D3主要实现的就是对数据的可视化。在国内关于D3.js的介绍真的是少之又少, 不过 github 上倒是有中文翻译的api,这对于想要学习的小伙伴已经足够了。如果真的开始学习D3.js的话,还是推荐 官网 ,和 Documentation

D3.js也并不是一个新鲜的事物了, 到现在已经是第7个年头了。所以在查询一些博客的时候,一定要注意版本的问题。

从本质上来说, D3 更像一个类似 jQuery 的js库, 比如它提供了一套Dom操作方法,可以很方便地进行DOM选择,添加和移除等操作。 但这些都只是为了实现可视化所服务的。所以说 D3 给你提供的功能远超过其他的可视化工具, 你可以使用它创造任何你想要的形式, 但更重要的是需要 天马行空 的想象力。

The point of learning D3 is to learn how to create data visualization products, and that is that’s really just part of the library that you can focus on instead of the supplemental functionality.
--From D3 is not a Data Visualization Library


2. D3-based libraries

自从 d3.js 出现之后, 许多基于 d3.js 的库陆续出现了。 下面这个列表是copy自hacker news,如果对 d3 摸不着头脑的话,不妨试试这些库:

Full list with links:

Big list here: https://github.com/wbkd/awesome-d3


3. Observable

不过,我个人推荐使用 Observable 来学习 D3.js。如果有小伙伴用过 Jupyter , 那么一定会对 Observable 感到很熟悉。这个项目目前还是处于 beta 状态, 创始人 Mike Bostock 就是 D3.js 的发起者之一。 这位大神曾在 medium 上写过一篇名为 A Better Way to Code 的文章。文章里所提到的 d3.express 便是 Observable 的前身。其中还有许多关于 数据可视化 的话题,值得看一看。


4. 数据可视化

数据可视化是一个比较宽泛的话题, 正所谓“一图胜千言”, 尤其当我们需要给别人做报告的时候,数据可视化显得尤其重要。 对我来说,跑个程序生成一个结果并不是一件多么不得了的事情,重要的是从这些结果里面提炼出有效的信息。然而很多人在这方面本末倒置,仅仅以得到结果而沾沾自喜。
在描述数据的时候,如何让别人能听懂是很重要的。就像白居易写诗的时候总会先念给牧童或老妇人来听一样,如果我们在做presentation的时候,能够让底下的听众感受到我们想要描述的内容,这就已经是一场非常不错的presentation了。这看似简单实则不易,数据可视化就是通过一种更直观的方式来打通我们与听众之间的障碍。
总而言之,学习数据可视化还是很有必要的,如何将数据转换成图表或动画的形式,这点是我们大家都要思考的问题。

imagination