D3.js的v5版本入门教程(第四章)—— 理解Update、Enter、Exit

D3.js的v5版本入门教程(第四章)

    Update、Enter、Exit是D3.js中很重要的概念,下面来讲一下它们到底是什么?(当你看完后。你就会知道如果数据集个数和选择集个数不匹配的情况下使用data(),D3.js会怎么办)

    在使用data()时,例如现在我们有一个数组[3,6,9,12,15],我们可以将数组每一项与一个<p>绑定,但是,现在就有一个问题——数据集个数和选择集个数不匹配怎么办?这样就需要理解Update、Enter、Exit

    例子一:update和enter:数组[3,6,9,12,15]绑定到三个<p>上。可以想象到,数组的最后两个元素没有可以绑定的元素,这时D3会建立两个空的元素与数组最后的两个数据相对于,那么这部分就称为Enter。而有元素与数据对应的部分就称为Update

    例子二:exit:如果数组[3]绑定到三个<p>上,可以想象,最后两个<p>没有可绑定的数据,那么没有数据绑定的部分就称为Exit

    如下图(此图片非原创)

        

    1、Update与Enter的使用

<body>
    <p>dog</p>
    <p>cat</p>
    <p>pig</p>
    
    <script>
    	var dataset = [3,6,9,12,15];
    	var p = d3.select("body")
    		.selectAll("p");
    	var update = p.data(dataset)//绑定数据,并得到update部分
    	var enter = update.enter();//得到enter部分
    	//下面检验是否真的得到
    	//对于update的处理
    	update.text(function(d,i){
    		return "update: "+d+",index: "+i;
    	})
    	//对于enter的处理
    	//注意,这里需要先添加足够多的<p>,然后在添加文本
    	var pEnter = enter.append("p")//添加足够多的<p>
    	pEnter.text(function(d,i){
    		return "enter: "+d+",index: "+i;
    	})
    </script>
  </body>

    运行结果:

        

    代码说明:

        -var update = p.data(dataset) 表示绑定数据,并得到update部分,

        -var enter = update.enter() 表示得到到enter部分

        -var pEnter = enter.append("p")//添加足够多的<p>
    pEnter.text(function(d,i){
    return "enter: "+d+",index: "+i;

    }) 表示添加足够多的<p>,并设置文本

    2、Update与Exit的使用

<body>
    <p>dog</p>
    <p>cat</p>
    <p>pig</p>
    <p>rat</p>
    
    <script>
    	var dataset = [3,6];
    	var p = d3.select("body")
    		.selectAll("p");
    	var update = p.data(dataset)//绑定数据,并得到update部分
    	var exit = update.exit();//得到exit部分
    	//下面检验是否真的得到
    	//对于update的处理
    	update.text(function(d,i){
    		return "update: "+d+",index: "+i;
    	})
    	//对于exit的处理通常是删除 ,但在这里我并没有这么做   	
    	exit.text(function(d,i){
    		return "exit";
    	})
    </script>
  </body>

    运行结果:

    

    代码说明:

        -这里需要说明的是:在得到exit部分后,不需要使用append("xx")来添加元素,而enter需要,这样很容易理解其实。还有就是,对于exit部分的处理通常是删除exit.remove();(这里还没讲,下一章会详细讲解)

            

(翻外篇)d3.js在网页端可视化neo4j图数据库

    为了让大家更好的学习d3.js,“d3.js在网页端可视化neo4j图数据库”这是一个比较综合的项目——利用neo4j的java驱动API从neo4j中取数据,并利用d3.js在网页端进行可视化。大家在学完基础课程后可以做一下这个项目,进行巩固。点击下面链接进行查看:d3.js可视化neo4j图数据库项目专栏

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值