d3.js学习笔记(五)——将数据结构化为D3.js可处理的
目标
在这一章,你将会理解如何对数据进行结构化,来更好的使用D3.js。 我们将会回顾我们之前已经学习的,学习D3.js如何使用选集(selections),JavaScript对象基础,以及如何最优的结构化数据。
到目前我们已经学到了哪些?
到目前,我们使用D3.js完成的例子都包含一个定义在最上方的数据集:
var spaceCircles = [30,70,110];
这个spaceCircles变量是一个JavaScript数组。数组就是一个变量的枚举列表。这也就意味着,每一个元素都附有一个索引值与其对应,且索引值是从0开始。
对于spaceCircles,我们在JavaScript控制台输入如下代码,将会得到:
var spaceCircles = [30,70,110]; spaceCircles[0]
// 返回数字 30 spaceCircles[1]
//返回数字 70 spaceCircles[2]
//返回数字 110
注意:“//”符号在JavaScript中表示注释
JavaScript的数组(array)可以存放任何类型的你想放进去的信息。这些数组的内容可以是数值、对象、字符串、数组、HTML元素、DOM元素等等。
D3.js选集就是数组
D3.js的选集都是JavaScript数组。
通过JavaScript控制台,我们使用JavaScript的concole.log得到一个简单的选集:
console.log(d3.select("body"));
这样我们就得到了包含一个元素-HTML的“body”元素-的数组:

结果如下:

这也就是说,不管数组中是什么数据,关键是确保.data()操作符接收到了数据数组。
加载外部数据源
D3.js具有加载下列类型外部数据源的功能:
- XMLHttpRequest
- 文本文件(txt file)
- JSON文件
- HTML文件
- XML文件
- CSV(逗号分隔值,comma-separated values)文件
- TSV(制表符分隔值,tab-separated values)文件
这些数据源返回的数据都能被d3.js处理。唯一需要注意的就是:确保你由这些数据创建一个数组。
到目前为止,我们还都是手动输入数据,不过不会这样做太久啦~
后面的章节我们将会学习启动服务器,然后加载外部数据源。
JSON
JSON,全称是:JavaScript Object Notion。This is a JavaScript data structure where the indices are named.(不知道该如何翻译index)。
JSON是name/value(名称/值)对的集合。在JSON中,名称(name)必须由双引号注明:
var secretAgent = {
"name":"James Bond",
"drink":"dry martini-shaken,not stirred",
};
我们可以从上面定义的变量中得到指定的信息:
var secretAgent = {
"name":"James Bond",
"drink":"dry martini-shaken,not stirred",
"number":"007"
};
secretAgent.number;
//返回的是"007"
这也就使得我们引用代码或者数据变得更加方便。
JSON对象数组
正如我们在本文的前面就提到的——数组能够存储任何类型的信息,甚至是JSON。
回到上一章中的那个圆形例子,我们可以把所有可视化这些圆形所必需的数据写到一个圆形对象数组中。
var jsonCircles = [
{
"x_axis":30,
"y_axis":30,
"radius":20,
"color":"green"
},{
"x_xis":70,
"y_xis":70,
"radius":20,
"color":"purple"
},{
"x_axis":110,
"y_axis":100,
"radius":20,
"color":"red"
}];
通过console.log运行我们的变量,我们可以看到jsonCircles是一个具有三个对象的数组:

可以向如下这样从jsonCircles中取出数据:
var jsonCircles = [
{"x_axis":30,"y_axis":30,"radius":20,"color":"green"},
{"x_axis":70,"y_axis":70,"radius":20,"color":"purple"},
{"x_axis":110,"y_axis":100,"radius":20,"color":"red"}]; jsonCircles[0].color;
//返回 “green” jsonCircles[1].y_axis;
//返回 70 jsonCircles[2].radius;
//返回 20
这一特点在后面的章节中使用d3.js的操作符和方法时,将会非常有用。
d3.js学习笔记(五)——将数据结构化为D3.js可处理的的更多相关文章
- Node.js学习笔记(1):Node.js快速开始
Node.js学习笔记(1):Node.js快速开始 Node.js的安装 下载 官方网址:https://nodejs.org/en/ 说明: 在Windows上安装时务必选择全部组件,包括勾选Ad ...
- Vue.js 学习笔记 第1章 初识Vue.js
本篇目录: 1.1 Vue.js 是什么 1.2 如何使用Vue.js 本章主要介绍与Vue.js有关的一些概念与技术,并帮助你了解它们背后相关的工作原理. 通过对本章的学习,即使从未接触过Vue.j ...
- Node.js学习笔记(五) --- 使用Node.js搭建Web服务器
1. Node.js 创建的第一个应用 1.引入http模块 var http = require("http"); 2. 创建服务器接下来我们使用 http.createServ ...
- JS学习笔记 (五) 函数进阶
1.函数基础 1.1 函数的基本概念 函数是一段JavaScript代码,只被定义一次,但是可以被调用或者执行许多次.函数是一种对象,可以设置属性,或调用方法. 函数中的参数分为实参和形参.其中,形参 ...
- js学习笔记-编写高效、规范的js代码-Tom
编写高效.规范的js代码: 1.变量命名空间问题,尽量使用局部变量,防止命名冲突(污染作用域中的全局变量):全局空间命名的变量可以在对应的文档域任意位置中使用window调用. 2.尽量使用单var定 ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- Vue.js学习笔记(2)vue-router
vue中vue-router的使用:
- (转)Qt Model/View 学习笔记 (五)——View 类
Qt Model/View 学习笔记 (五) View 类 概念 在model/view架构中,view从model中获得数据项然后显示给用户.数据显示的方式不必与model提供的表示方式相同,可以与 ...
- ES6学习笔记<五> Module的操作——import、export、as
import export 这两个家伙对应的就是es6自己的 module功能. 我们之前写的Javascript一直都没有模块化的体系,无法将一个庞大的js工程拆分成一个个功能相对独立但相互依赖的小 ...
- 系列文章--Node.js学习笔记系列
Node.js学习笔记系列总索引 Nodejs学习笔记(一)--- 简介及安装Node.js开发环境 Nodejs学习笔记(二)--- 事件模块 Nodejs学习笔记(三)--- 模块 Nodejs学 ...
随机推荐
- CListCtrl消息及解释
对于CListCtrl消息的解释:[来自网络]LVN_BEGINDRAG 鼠标左键正在被触发以便进行拖放操作(当鼠标左键开始拖拽列表视图控件中的项目时产生) LVN_BEGINRDRAG 鼠标右键正在 ...
- GetWindowThreadProcessId
函数功能:该函数返回创建指定窗口线程的标识和创建窗口的进程的标识符,后一项是可选的. 函数原型:DWORD GetWindowThreadProcessld(HWND hwnd,LPDWORD lpd ...
- You must reset your password using ALTER USER
mac mysql error You must reset your password using ALTER USER statement before executing this statem ...
- MySQL小记
一.MyISAM和InnoDB MyISAM引擎是不支持事务的,所以一般开发Mysql的引擎使用InnoDB. 事务处理上方面: MyISAM类型的表强调的是性能,其执行速度比InnoDB类型更快,但 ...
- python setup.py install 报错:error: [WinError 3] 系统找不到指定的路径。: 'C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\PlatformSDK\\lib
Outline 在通过 setup.py 安装python模块时,遇到了以下报错: # 执行 python setup.py install # 报错: error: [WinError 3] 系统找 ...
- 安全必须作为基础,融入到产品开发过程——By Me
安全必须作为基础融入,让公司兄弟姐妹具备足够的安全意识,且逐渐具备必要的安全经验,带着安全思维去执行产品的架构设计.研发.测试.运维(甚至完整的产品生命周期),这是一种有远见.负责人的产品过程!! 下 ...
- C#设置当前程序通过IE代理服务器上网
注意:以下设置只在当前程序中有效,对IE浏览器无效,且关闭程序后,自动释放代码. using System; using System.Collections.Generic; using Syste ...
- blogCMS中出现的错误整理
1.在写日期归档的时候,出现如下错误: not enough values to unpack (expected 2, got 1) 出现这个错误是因为:字符串需要能够split成2份才能赋值给2个 ...
- python中json怎么转换成字典
json的标准格式:要求必须 只能使用双引号作为键 或者 值的边界符号,不能使用单引号,而且“键”必须使用边界符(双引号)
- Xcode 解决日志打印不全问题
Xcode 出了8.0后,代码运行日志过长时会出现打印不全的问题. 这可能是Xcode优化的一项,不过这也给开发带来的不必要的麻烦.下面的宏定义可以解决这一问题. #ifdef DEBUG #defi ...