[TOC]
---
# D3 簡介
## D3 是什么?
D3的全稱是Data-Driven Documnets ,直譯為“數據驅動的文檔”。
簡單說:**D3 是一個JavaScript 的函數庫,是用來做數據可視化的。**
文檔指 DOM,即文檔對象模型(Document Object Model) 。D3允許用戶綁定任意數據到DOM ,然后根據數據來操作文檔,創建可交互式的圖表。
### D3簡史

### D3的優勢
可視化的庫有很多,基于JavaScript 開發的庫也很多,D3 有什么優勢呢?
- 1. 數據能夠與DOM 綁定在一起
D3 能夠將數據與DOM 綁定在一起,使得數據與圖形成為一個整體,即圖形中有數據、數據中有圖形。那么在生成圖形或更改圖形時,就可以方便地根據數據進行操作。并且,當數據更改之后,圖形的更新也會很方便。
- 2. 數據轉換和繪制是獨立的
將數據變成圖表,需要不少數學方法,一些可視化庫的做法是:提供一個函數 drawPie(),輸入數據,直接繪制出餅狀圖。
D3的做法是:提供一個函數computePie(),可將數據轉換成餅狀圖的數據,然后開發者使用自己喜歡的方式來繪制餅圖。
- 3. 代碼簡潔
采用鏈式寫法,一個函數套一個函數,使得代碼更加簡潔。
- 4. 大量布局
餅狀圖、樹形圖、打包圖、矩陣樹圖等,D3將大量復雜的算法封裝成一個一個“布局”,能夠適用于各種圖表的制作。
- 5. 基于SVG,縮放不會損失精度
SVG,是可縮放的矢量圖形,D3 大部分是在SVG上繪制,并且提供了大量的圖形生成器,使得在SVG上繪制圖形變得簡單。另外,由于SVG是矢量圖,所以放大縮小不會有精度損失。
### D3的適用范圍
D3 的應用是顯示在網頁上。因此,開發者需將數據置于服務器端,并在網頁文件(HTML)中插入D3代碼。用戶通過瀏覽器請求此網頁文件,就會看見開發者希望讓用戶看到的可視化內容。
Ben Fry 在他的著作《Visualizing Data》 中將數據可視化的過程分為七個步驟:
1. 獲取---Acquire
2. 分析---Parse
3. 過濾---Filter
4. 挖掘---Mine
5. 表現---Represent
6. 改善---Refine
7. 交互---Interact
前四步不屬于D3 的處理范圍,更多的是處理后三步,即表現、改善、交互。
## 數據可視化是什么
數據可視化主要旨在借助于圖形化手段,清晰有效地傳達與溝通信息。但是,這并不就意味著數據可視化就一定因為要實現其功能用途而令人感到枯燥乏味,或者是為了看上去絢麗多彩而顯得極端復雜。為了有效地傳達思想概念,美學形式與功能需要齊頭并進,通過直觀地傳達關鍵的方面與特征,從而實現對于相當稀疏而又復雜的數據集的深入洞察。然而,設計人員往往并不能很好地把握設計與功能之間的平衡,從而創造出華而不實的數據可視化形式,無法達到其主要目的,也就是傳達與溝通信息。
數據可視化與信息圖形、信息可視化、科學可視化以及統計圖形密切相關。當前,在研究、教學和開發領域,數據可視化乃是一個極為活躍而又關鍵的方面。“數據可視化”這條術語實現了成熟的科學可視化領域與較年輕的信息可視化領域的統一。
### 目的

### 構成要素
數據可視化的手法很多,其中有一些共通的視覺要素。


## 圖表種類








## 學習方法

