如何自學(xué) D3

在數(shù)據(jù)可視化的世界中谈息,D3 可謂極其耀眼的明星。
很多人著迷于 D3 那近乎無限可能的圖形開發(fā)能力凛剥,而又被 D3 那海量的 API 所困住侠仇,往往學(xué)了很久卻不得其道。
(還不了解 D3 的同學(xué)犁珠,可看《D3 vs G2 vs Echarts》)

下面逻炊,我以數(shù)據(jù)可視化開發(fā)為目的,說下我的 D3 入門路徑:

一犁享、學(xué)習(xí) SVG

D3 全名為 Data Drive Document余素,即通過 Data 操作 Document,而在做數(shù)據(jù)可視化時(shí)炊昆,Data 最常 Drive 的 Document 便是 SVG桨吊。
SVG 的學(xué)習(xí),可看阮一峰老師的《SVG 圖像入門教程》凤巨。

二视乐、學(xué)習(xí) d3-selectiond3-scale 模塊
  • d3-selection
    該模塊便是用于操作 Document 的。
    其中的 selection.dataselection.enter 是初次接觸較難理解敢茁,但必須掌握的概念佑淀。
    掌握了這個(gè)模塊后,我們再回看阮一峰老師的教程彰檬,會(huì)發(fā)現(xiàn)教程中的例子渣聚,用 D3 實(shí)現(xiàn)起來是那么的容易...
  • d3-scale
    假如我們想在 800px * 600px 的畫布上繪制圖表独榴,而我們數(shù)據(jù)的單位是百萬或更大時(shí),這時(shí)便需用 d3-scale 將數(shù)據(jù)通過“比例尺”轉(zhuǎn)為“合適值”以在畫布上作圖奕枝。

三棺榔、用 D3 做簡單的圖表

掌握了 SVG、d3-selecetion 和 d3-scale 后隘道,就能開發(fā)柱狀圖症歇、散點(diǎn)圖等基礎(chǔ)圖表了。

四谭梗、進(jìn)階

用 D3 開發(fā)柱狀圖或散點(diǎn)圖忘晤,只需操作 SVG 的 <rect> 和 <circle> 基礎(chǔ)元素即可,非常簡單激捏。
但如餅圖设塔、堆積圖等其圖形結(jié)構(gòu)用 SVG 的基礎(chǔ)元素并不能實(shí)現(xiàn),此類圖表需使用 SVG 的 <path> 標(biāo)簽远舅。
因?yàn)?SVG 的 <path> 理論上能繪制任意二維圖形闰蛔,而 D3 則通過指定算法生成對應(yīng)圖表 <path> 的 d 屬性值:如折線圖的 d3.line()、餅圖的 d3.pie()图柏、堆積圖的 d3.stack() 等等序六。
這也為什么 D3 有這么多 API 的一大原因了。

當(dāng)我們明白這一原理后蚤吹,學(xué)習(xí) D3 便不會(huì)太過盲目例诀,而在懂得其核心思想后,需要開發(fā)哪類圖表裁着,再有針對性地研究繁涂、學(xué)習(xí)其 API 和對應(yīng)圖表的數(shù)據(jù)結(jié)構(gòu)等知識即可。
另外二驰,Search the Bl.ocks 上包含各類 D3 的 Demo爆土,可供參考。

關(guān)于 D3 的版本

D3 最新(2018年12月)版本為 V5.x.x
D3 在從 V3 升級至 V4诸蚕,其 API 命名有大量調(diào)整步势;同時(shí) V4 在模塊化和 API 命名的“表達(dá)性”上都有著很多值得學(xué)習(xí)的地方,所以建議直接學(xué) V4 或 V5 版本背犯。(關(guān)于其模塊化和 API 的設(shè)計(jì)理念坏瘩,可看 D3 作者的文章 - 《What Makes Software Good?》
另外,V5 版本的改動(dòng)主要是將 V4 中的異步方式改為了 Promise漠魏,所以 V5 和 V4 在使用上差異并不大倔矾。

最后,再次把這張圖貼出來:
從圖中,可以看出哪自,D3 可做的事兒遠(yuǎn)不止于數(shù)據(jù)可視化丰包。(詳細(xì)請看《D3 is not a Data Visualization Library》)
所以,將 D3 學(xué)好壤巷,可謂是在前端開發(fā)中邑彪,更填一大利器!

圖片源自《D3 is not a Data Visualization Library》

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末胧华,一起剝皮案震驚了整個(gè)濱河市寄症,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌矩动,老刑警劉巖有巧,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異悲没,居然都是意外死亡篮迎,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進(jìn)店門示姿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來甜橱,“玉大人,你說我怎么就攤上這事峻凫。” “怎么了览露?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵荧琼,是天一觀的道長。 經(jīng)常有香客問我差牛,道長命锄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任偏化,我火速辦了婚禮脐恩,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘侦讨。我一直安慰自己驶冒,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布韵卤。 她就那樣靜靜地躺著骗污,像睡著了一般。 火紅的嫁衣襯著肌膚如雪沈条。 梳的紋絲不亂的頭發(fā)上需忿,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼屋厘。 笑死涕烧,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的汗洒。 我是一名探鬼主播议纯,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼仲翎!你這毒婦竟也來了痹扇?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤溯香,失蹤者是張志新(化名)和其女友劉穎鲫构,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體玫坛,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡结笨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了湿镀。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片炕吸。...
    茶點(diǎn)故事閱讀 38,018評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖勉痴,靈堂內(nèi)的尸體忽然破棺而出赫模,到底是詐尸還是另有隱情,我是刑警寧澤蒸矛,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布瀑罗,位于F島的核電站,受9級特大地震影響雏掠,放射性物質(zhì)發(fā)生泄漏斩祭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一乡话、第九天 我趴在偏房一處隱蔽的房頂上張望摧玫。 院中可真熱鬧,春花似錦绑青、人聲如沸诬像。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽颅停。三九已至,卻和暖如春掠拳,著一層夾襖步出監(jiān)牢的瞬間癞揉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留喊熟,地道東北人柏肪。 一個(gè)月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像芥牌,于是被迫代替她去往敵國和親烦味。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容