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 相关文章推荐
JavaScript 常用函数
Dec 30 Javascript
JavaScript高级程序设计(第3版)学习笔记8 js函数(中)
Oct 11 Javascript
通过AJAX的JS、JQuery两种方式解析XML示例介绍
Sep 23 Javascript
jquery按回车提交数据的代码示例
Nov 05 Javascript
js动态删除div元素基本思路及实现代码
May 08 Javascript
js实现页面跳转重定向的几种方式
May 29 Javascript
Blocksit插件实现瀑布流数据无限( 异步)加载
Jun 20 Javascript
通过js为元素添加多项样式,浏览器全兼容写法
Aug 30 Javascript
jQuery实现复选框批量选择与反选的方法
Jun 17 Javascript
JS简单实现表格排序功能示例
Dec 20 Javascript
webpack配置之后端渲染详解
Oct 26 Javascript
玩转Koa之koa-router原理解析
Dec 29 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
杏林同学录(九)
2006/10/09 PHP
PHP 正则判断中文UTF-8或GBK的思路及具体实现
2013/11/26 PHP
PHP安全的URL字符串base64编码和解码
2014/06/19 PHP
PHP JSON格式的中文显示问题解决方法
2015/04/09 PHP
php简单统计在线人数的方法
2016/05/10 PHP
浅谈PHP命令执行php文件需要注意的问题
2016/12/16 PHP
JavaScript打字小游戏代码
2011/12/26 Javascript
jQuery学习笔记 操作jQuery对象 属性处理
2012/09/19 Javascript
js中符号转意问题示例探讨
2013/08/19 Javascript
JS实现切换标签页效果实例代码
2013/11/01 Javascript
JS常用字符串方法(推荐)
2021/01/15 Javascript
jQuery如何防止Ajax重复提交
2016/10/14 Javascript
详解windows下vue-cli及webpack 构建网站(三)使用组件
2017/06/17 Javascript
vue2.x 父组件监听子组件事件并传回信息的方法
2017/07/17 Javascript
jquery实现企业定位式导航效果
2018/01/01 jQuery
利用Vue2.x开发实现JSON树的方法
2018/01/04 Javascript
微信小程序实现左右联动的实战记录
2018/07/05 Javascript
vue2.0父子组件间传递数据的方法
2018/08/16 Javascript
微信小程序中使用自定义图标(阿里icon)的方法
2018/08/20 Javascript
Vue实现Layui的集成方法步骤
2020/04/10 Javascript
[40:06]DOTA2亚洲邀请赛 4.3 突围赛 Liquid vs VGJ.T 第一场
2018/04/04 DOTA
[42:20]Secret vs Liquid 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
从零学python系列之新版本导入httplib模块报ImportError解决方案
2014/05/23 Python
在CentOS6上安装Python2.7的解决方法
2018/01/09 Python
python动态进度条的实现代码
2019/07/03 Python
详解python中的time和datetime的常用方法
2019/07/08 Python
python matplotlib库绘制散点图例题解析
2019/08/10 Python
Python facenet进行人脸识别测试过程解析
2019/08/16 Python
wxPython+Matplotlib绘制折线图表
2019/11/19 Python
python 实现图片上传接口开发 并生成可以访问的图片url
2019/12/18 Python
python如何处理程序无法打开
2020/06/16 Python
Python通用唯一标识符uuid模块使用案例
2020/09/10 Python
数控技术应届生求职信
2013/11/13 职场文书
优秀会计求职信
2014/07/04 职场文书
高一军训感想
2015/08/07 职场文书
2015年社区反邪教工作总结
2015/10/14 职场文书