美文网首页
D3学习笔记(1)

D3学习笔记(1)

作者: 家琦的三亩地 | 来源:发表于2016-10-08 20:24 被阅读0次

首先了解下啥是D3

D3.js is a JavaScript library for manipulating documents based on data.

官网上第一句就是这个,也就是个js文件,下下来也不过几百k,但是听说可以画出各种酷炫图形去撩妹,所以打算学(zhuang)习(bi)一下。

其次要会HTML和JavaScript

举个简单的例子,画一个柱状图,数据长这样:var data = [4, 8, 15, 16, 23, 42];
用HTML写出来是这样滴

<!DOCTYPE html>
<style>

.chart div {
  font: 10px sans-serif;
  background-color: steelblue;
  text-align: right;
  padding: 3px;
  margin: 1px;
  color: white;
}

</style>
<div class="chart">
  <div style="width: 40px;">4</div>
  <div style="width: 80px;">8</div>
  <div style="width: 150px;">15</div>
  <div style="width: 160px;">16</div>
  <div style="width: 230px;">23</div>
  <div style="width: 420px;">42</div>
</div>

然后要是用D3,感觉的确是简洁了一些。只要你会引个js文件,可以从网上下,也可以直接连url,建议还是下一个,有时候官网都连不上,到时候不知道是自己写错了还是网没连上。

<script src="https://d3js.org/d3.v4.min.js"></script>

绘制图形的代码

d3.select(".chart")
  .selectAll("div")
    .data(data)
  .enter().append("div")
    .style("width", function(d) { return d * 10 + "px"; })
    .text(function(d) { return d; });

第一步 用class选择器选出图表的容器

var chart = d3.select(".chart");

第二步 通过定义我们将用来展示数据的容器来进行数据连接的初始化(别问我为啥这句话读起来不通顺,因为我也不懂啥意思,强行翻译的文档,看代码就懂了,囧)

var bar = chart.selectAll("div");

据文档所说,这个数据连接是可以创建、更新或者删除元素的,只要你想弄。文档说这种模式可能有点奇怪,我也觉得是有一点难理解。但是总的来说,可以把这种模式认为是你想让数据元素以什么形式存在。这样可以把静态的和动态的数据的代码写的几乎一样,的确省事儿。

解释下那个selectAll

//append一个元素
svg.append("circle")
    .attr("cx", d.x)
    .attr("cy", d.y)
    .attr("r", 2.5);
//不用写循环就能定义好所有元素
svg.selectAll("circle")
  .data(data)
  .enter().append("circle")
    .attr("cx", function(d) { return d.x; })
    .attr("cy", function(d) { return d.y; })
    .attr("r", 2.5);

But what’s with the selectAll("circle")? Why do you have to select elements that you know don’t exist in order to create new ones? WAT. Here’s the deal. Instead of telling D3 how to do something, tell D3 what you want.
甭管我叫你干啥,关键是我想要你干啥。D3你得自己揣摩。没办法我是新手,D3你多担待。

第三步 连接数据到刚才指定的选择的容器

var barUpdate = bar.data(data);

第四步,数据入栈

var barEnter = barUpdate.enter().append("div");

第五步,设置下直方图的参数

barEnter.style("width", function(d) { return d * 10 + "px"; });

第六步,设置下文字

barEnter.text(function(d) { return d; });

又据文档说,D3的选择器还有其他功能。反正我觉得这地方和Beautifulsoup的各种选择器挺像的,反正HTML和XML的树形结构一长就是场噩梦。写爬虫那会儿的xpath要是用绝对路径都能吓死人。
文档还说barEnter.style("width", function(d) { return d * 10 + "px"; });中的d * 10是神来之笔,其实就是控制下图形相对大小,从而相对美观。关于这点,还可以有一些其他改进。

相关文章

  • D3学习笔记(1)

    首先了解下啥是D3 D3.js is a JavaScript library for manipulating ...

  • Moreal D3.js Wiki

    导读 此文乃的学习笔记(https://kb.moreal.co/d3/),...

  • D3.JS01

    学习笔记,自娱自乐,仅供参考 利用python搭建简单的服务器C:\Users\HP\Desktop\D3>pyt...

  • 财报小复盘:前期准备篇(D1~D3)

    D1~D3导图笔记整理 D1下载财报汇总 D2如何进行公司背景调查? D3财报全貌与阅读方法 ps.图片文字稍多,...

  • D3学习系列(三) 桑基图

    D3学习系列 D3学习系列(一) 基础知识与柱形图绘制D3学习系列(二) 弦图绘制 「前言」 网上关于桑基图的例子...

  • 改变,从信念开始

    05分身术训练营D3:信念错了,一切都不会对。 改变,从信念开始 一、学习笔记 ---课程框架 1、课前思考 2、...

  • D3 学习笔记

    D3 是什么? D3 的全称是(Data-Driven Documents),顾名思义可以知道是一个被数据驱动的文...

  • D3学习笔记

    数据可视化 Anscombe's Quartet 证明了在分析数据前先绘制图形的重要性以及离散值对数据分析的影响。...

  • D3学习笔记

    一、进入-更新-退出模式更新(updata):selection.data(data)返回一个碧昂定了数据的D3对...

  • 谁偷走了你的快乐D3:你的焦虑摧毁了你!

    D3:作业 1、 分享3个因为焦虑带给你的好处? 2、 今天你学习到什么? D3主题:“你的焦虑摧毁了你” 课程将...

网友评论

      本文标题:D3学习笔记(1)

      本文链接:https://www.haomeiwen.com/subject/doauyttx.html