D3.js 从P元素的创建开始(显示可加载数据)


Posted in Javascript onOctober 30, 2014

D3是一个基于数据操作的可视化js库,认识d3,就从最基础的显示可加载数据谈起。

html的基本框架不多说,先上代码再解释:

新建一个test目录,在该目录下创建demo和d3两个文件夹。demo存放要编写的html文件 , d3存放d3.v3.js

在demo文件夹下新建indexP.html,将下面代码复制其中,双击在浏览器打开查看效果。

<!DOCTYPE html> 
<html lang="en"> 
<head> 
<meta charset="utf-8"> 
<title>D3: Setting paragraphs' style conditionally, based on data</title> 
<script type="text/javascript" src="../d3/d3.v3.js"></script> 
</head> 
<body> 
<script type="text/javascript"> 

var dataset = [ 5, 10, 15, 20, 25 ]; 

d3.select("body").selectAll("p") 
.data(dataset) 
.enter() 
.append("p") 
.text(function(d) { 
return "I can count up to " + d; 
}) 
.style("color", function(d) { 
if (d > 15) { //Threshold of 15 
return "red"; 
} else { 
return "black"; 
} 
}); 

</script> 
</body> 
</html>

这个简单demo实现的功能:在body中添加p标签,在p标签中添加d3加载的文本内容,并根据函数设置条件对文字颜色进行调整。

上面的网页代码,body里面的js代码,是展现到页面的数据操作。以后的不少例子,只要修改这一块便可,其他部分可看做页面框架。

这里的内容上篇文章大体都讲到了,使用d3的连缀,将同一对象的一步步数据操作连接起来,便于维护。

d3.select("body") 选择body元素,并连缀到下一方法

.selectAll("p") 选中所有段落

.data(dataset) 解析加载数组数据,该数组长度是5, 以后连缀的每个方法都将执行五次,按数组下标依次针对数组元素执行方法操作

.enter() 创建新的绑定数据的占位元素(相当于创建暂时不知名标签5个)。

创建的个数 要根据选择的已有标签数和加载的数据数组长度决定。

如本例,如果body中p标签少于5个,就创建(现在body中p为0个,故创建5个),

多于就不创建,最后的占位元素和p元素总个数要为5。

.append("p") 将占位元素改为p元素

.text(function(d) {}) 对每个段落的显示内容,写个匿名函数控制,一般返回字符串。在该方法你可以 任意编写,

本例让他每段落输出I can count up to 加上相应数组元素值

函数格式是固定的,function(d)只有这样,才能将数据加载到函数中。

.style("color","") 设置css的文本颜色属性,同text一样,设置的字符串都可以用function进行你想要的操作。本例中,如果该段落所对应的传入数值大于15,就把该行变红

最后,我们看到的效果就是如图:

D3.js 从P元素的创建开始(显示可加载数据)

本文就介绍到这里,下文介绍如何在SVG中绘制圆,以及圆圆相连的简单用力图

Javascript 相关文章推荐
jQuery.Validate 使用笔记(jQuery Validation范例 )
Jun 25 Javascript
DOM和XMLHttpRequest对象的属性和方法整理
Jan 04 Javascript
js通过八个点 拖动改变div大小的实现方法
Mar 05 Javascript
如何使用Vuex+Vue.js构建单页应用
Oct 27 Javascript
cocos creator Touch事件应用(触控选择多个子节点的实例)
Sep 10 Javascript
微信小程序实现tab和swiper切换结合效果
Jul 17 Javascript
JS实现的抛物线运动效果示例
Jan 30 Javascript
vue 2.0 购物车小球抛物线的示例代码
Feb 01 Javascript
小程序开发基础之view视图容器
Aug 21 Javascript
vue2.x集成百度UEditor富文本编辑器的方法
Sep 21 Javascript
详解vue 兼容IE报错解决方案
Dec 29 Javascript
JavaScript类型相关的常用操作总结
Feb 14 Javascript
jquery 获取 outerHtml 包含当前节点本身的代码
Oct 30 #Javascript
如何调试异步加载页面里包含的js文件
Oct 30 #Javascript
fckeditor粘贴Word时弹出窗口取消的方法
Oct 30 #Javascript
js中style.display=&quot;&quot;无效的解决方法
Oct 30 #Javascript
Js实现网页键盘控制翻页的方法
Oct 30 #Javascript
javascript实现iframe框架延时加载的方法
Oct 30 #Javascript
js中iframe调用父页面的方法
Oct 30 #Javascript
You might like
Terran热键控制
2020/03/14 星际争霸
用PHP调用Oracle存储过程的方法
2008/09/12 PHP
php防盗链的常用方法小结
2010/07/02 PHP
简单谈谈PHP面向对象之标识对象
2017/06/27 PHP
PHP的PDO大对象(LOBs)
2019/01/27 PHP
js prototype 格式化数字 By shawl.qiu
2007/04/02 Javascript
jQuery 全选效果实现代码
2009/03/23 Javascript
Javascript 实现复制(Copy)动作方法大全
2014/06/20 Javascript
Jquery中find与each方法用法实例
2015/02/04 Javascript
jQuery的框架介绍
2016/05/11 Javascript
微信小程序 radio单选框组件详解及实例代码
2017/01/10 Javascript
p5.js实现斐波那契螺旋的示例代码
2018/03/22 Javascript
vue.js element-ui tree树形控件改iview的方法
2018/03/29 Javascript
vue2中使用sass并配置全局的sass样式变量的方法
2018/09/04 Javascript
vue-cli监听组件加载完成的方法
2018/09/07 Javascript
JS实现的获取银行卡号归属地及银行卡类型操作示例
2019/01/08 Javascript
微信小程序动态添加view组件的实例代码
2019/05/23 Javascript
[01:24]2014DOTA2 TI第二日 YYF表示这届谁赢都有可能
2014/07/11 DOTA
[15:20]DOTA2亚洲邀请赛总决赛开幕式表演:羽泉献唱
2017/04/05 DOTA
python翻译软件实现代码(使用google api完成)
2013/11/26 Python
python获取当前日期和时间的方法
2015/04/30 Python
Windows下Python的Django框架环境部署及应用编写入门
2016/03/10 Python
详解python执行shell脚本创建用户及相关操作
2019/04/11 Python
Django实现web端tailf日志文件功能及实例详解
2019/07/28 Python
Python imread、newaxis用法详解
2019/11/04 Python
opencv3/C++ 平面对象识别&amp;透视变换方式
2019/12/11 Python
利用Python脚本批量生成SQL语句
2020/03/04 Python
python开发实例之python使用Websocket库开发简单聊天工具实例详解(python+Websocket+JS)
2020/03/18 Python
Python常用类型转换实现代码实例
2020/07/28 Python
HTML5实现视频弹幕功能
2019/08/09 HTML / CSS
个人实用简单的自我评价
2013/10/19 职场文书
自荐书模板
2013/12/19 职场文书
酒店保安领班职务说明书
2014/03/04 职场文书
教师节倡议书2015
2015/04/27 职场文书
python for循环赋值问题
2021/06/03 Python
Nginx开源可视化配置工具NginxConfig使用教程
2022/06/21 Servers