D3 学习笔记

D3 是什么?

D3 的全称是(Data-Driven Documents),顾名思义可以知道是一个被数据驱动的文档。听名字有点抽象,说简单一点,其实就是一个 JavaScript 的函数库,使用它主要是用来做 数据可视化 的。

  • JavaScript 文件的后缀名通常为 .js,故 D3 也常使用 D3.js 称呼。D3 提供了各种简单易用的函数,大大简化了 JavaScript 操作数据的难度。由于它本质上是 JavaScript ,所以用 JavaScript 也是可以实现所有功能的,但它能大大减小你的工作量,尤其是在数据可视化方面,D3 已经将生成可视化的复杂步骤精简到了几个简单的函数,你只需要输入几个简单的数据,就能够转换为各种绚丽的图形。有过 JavaScript 基础的朋友一定很容易理解它。

  • 为什么要做数据可视化?
    现在有一组数据, 【 4 , 32 , 15 , 16 , 42 , 25 】 ,你能一眼看出它们的大小关系吗?当然这里的数据不算多,有那眼疾手快的家伙站出来说我能一眼看出来!但更直观的是用图形显示,如下图

可视化数据

通过图形的显示,能很清楚地知道他们的大小关系。当然,D3 能力远不止如此,这只是一个很小的应用。把枯燥乏味复杂的数据,用简单明了的图形表示出来,这就是 数据可视化

D3 的 安装

D3 是一个 JavaScript 函数库,并不需要通常所说的“安装”。它只有一个文件,在 HTML 中引用即可。有两种方法:

  1. 下载 D3.js 的文件
    D3.zip
  2. 直接包含网络的链接
 <script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script> 

这种方法比较简单,但要保持网络连接有效。

第一个程序 hello world

  • 首先,我们实现用 HTML 来实现 hello world,代码如下:
<html>

<head>
    <meta charset="utf-8">
    <title>HelloWorld</title>
</head>

<body>
    <p>Hello World 1</p>
    <p>Hello World 2</p>
</body>

</html>

运行该 html 文件,会在浏览器里输出

Hello World 1
Hello World 2

  • 对于上面输出的内容,如果想用 JavaScript 来更改这两行文字,该怎么办?我们会将代码改为以下形式:
<html>

<head>
    <meta charset="utf-8">
    <title>HelloWorld</title>
</head>

<body>
    <p>Hello World 1</p>
    <p>Hello World 2</p>
    <script>
        var paragraphs = document.getElementsByTagName("p");
        for (var i = 0; i < paragraphs.length; i++) {
            var paragraph = paragraphs.item(i);
            paragraph.innerHTML = "I like dog.";
        }
    </script>
</body>

</html>

这个时候我们可以看见浏览器上输出

I like dog.
I like dog.

  • 现在我们使用 D3 来实现更改 hello world ,代码如下:
<html>

<head>
    <meta charset="utf-8">
    <title>HelloWorld</title>
</head>

<body>
    <p>Hello World 1</p>
    <p>Hello World 2</p>
    <script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>
    <script>
        d3.select("body").selectAll("p").text("I like dog.");
    </script>
</body>

</html> 

在浏览器上的运行结果为:

I like dog.
I like dog.

** 我们会发现使用D3使用了非常简洁的代码实现了同样的功能。不错,其实 D3.js 中的所有功能在 JavaScript 中都能实现,它仅仅是一个函数库而已。D3 所做的事就是减轻你的工作量,以及使你的代码十分简单易懂。**

  • 接下来,我们来使用 D3 改变输出字体的颜色和大小
//选择<body>中所有的<p>,其文本内容为 www.ourd3js.com,选择集保存在变量 p 中
const p = d3.select("body")
    .selectAll("p")
    .text("I like ");

//修改段落的颜色和字体大小
p.style("color", "red")
    .style("font-size", "72px");

上面的代码是先将选中的元素赋值给变量 p,然后通过变量 p 来改变样式,这样可以使输出的内容成为你想要的样式。

通过以上的代码相信大家都可以看出 D3 有多方便了吧,这里我们介绍的只是最基础的 D3 的用法,大家如果有兴趣还可以深入学习,以下提供几个学习网站:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容

  • 首先了解下啥是D3 D3.js is a JavaScript library for manipulating ...
    家琦的三亩地阅读 343评论 0 0
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,810评论 25 707
  • 劳动快乐,劳动的是身体;快乐的是心情。 五一国际劳动节,由于搬家劳动了两天。本来是放假的日子,可以休...
    一访文阅读 634评论 3 8
  • 我想去旅行。一场说走就走独自一人,不需要拖家带口的旅行不需要太多的行李。也不需要精心装扮。只想带着憧憬与渴望,...
    麥子的位置阅读 300评论 0 0
  • 今天是七夕, 有一颗树, 他想在今天表白, 结果他被拒了。
    BruceKou阅读 237评论 0 0