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 相关文章推荐
Ext 表单布局实例代码
Apr 30 Javascript
[原创]js获取数组任意个不重复的随机数组元素
Mar 15 Javascript
node.js 开发指南 ? Node.js 连接 MySQL 并进行数据库操作
Jul 29 Javascript
JavaScript DOM进阶方法
Apr 13 Javascript
基于JS实现移动端访问PC端页面时跳转到对应的移动端网页
Dec 24 Javascript
详解vue项目优化之按需加载组件-使用webpack require.ensure
Jun 13 Javascript
JS中将多个逗号替换为一个逗号的实现代码
Jun 23 Javascript
JS仿QQ好友列表展开、收缩功能(第二篇)
Jul 07 Javascript
vue-router重定向不刷新问题的解决
Jun 25 Javascript
JS实现页面跳转与刷新的方法汇总
Aug 30 Javascript
vue 解决addRoutes多次添加路由重复的操作
Aug 04 Javascript
Vue 集成 PDF.js 实现 PDF 预览和添加水印的步骤
Jan 22 Vue.js
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
新安装的MySQL数据库需要注意的安全知识
2008/07/30 PHP
PHP MSSQL 存储过程的方法
2008/12/24 PHP
php缩小png图片不损失透明色的解决方法
2013/12/25 PHP
php防止sql注入之过滤分页参数实例
2014/11/03 PHP
php中文字符串截取多种方法汇总
2016/10/06 PHP
玩转jQuery按钮 请告诉我你最喜欢哪些?
2012/01/08 Javascript
基于jquery扩展漂亮的CheckBox(自己编写)
2013/11/19 Javascript
javascript禁用Tab键脚本实例
2013/11/22 Javascript
textarea不能通过maxlength属性来限制字数的解决方法
2014/09/01 Javascript
node.js中的fs.lchmod方法使用说明
2014/12/16 Javascript
Angularjs 滚动加载更多数据
2016/03/17 Javascript
原生JS实现网络彩票投注效果
2016/09/25 Javascript
JavaScript计算值然后把值嵌入到html中的实现方法
2016/10/29 Javascript
原生JS实现图片翻书效果
2017/02/16 Javascript
jQueryeasyui 中如何使用datetimebox 取两个日期间相隔的天数
2017/06/13 jQuery
微信小程序之数据缓存的实例详解
2017/09/29 Javascript
Angular 容器部署的方法
2018/04/17 Javascript
angular4中*ngFor不能对返回来的对象进行循环的解决方法
2018/09/12 Javascript
KOA+egg.js集成kafka消息队列的示例
2018/11/09 Javascript
[46:14]VGJ.T vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python批量修改文件后缀示例代码分享
2013/12/24 Python
Python黑帽编程 3.4 跨越VLAN详解
2016/09/28 Python
CentOS6.5设置Django开发环境
2016/10/13 Python
Python正则表达式如何进行字符串替换实例
2016/12/28 Python
Python实现修改IE注册表功能示例
2018/05/10 Python
解决python ogr shp字段写入中文乱码的问题
2018/12/31 Python
python实现比对美团接口返回数据和本地mongo数据是否一致示例
2019/08/09 Python
Python 转换RGB颜色值的示例代码
2019/10/13 Python
python datetime处理时间小结
2020/04/16 Python
浅谈keras中的Merge层(实现层的相加、相减、相乘实例)
2020/05/23 Python
Python调用Redis的示例代码
2020/11/24 Python
巴西化妆品商店:Lojas Rede
2019/07/26 全球购物
学生自我评语大全
2014/04/18 职场文书
用JS实现飞机大战小游戏
2021/06/09 Javascript
Elasticsearch 数据类型及管理
2022/04/19 Python
Windows Server 2022 超融合部署(图文教程)
2022/06/25 Servers