Icicle partition
<!DOCTYPE html>
<html>
<head>
<title>Icicle</title> <script type="text/javascript" src="../d3.min.js"></script>
<script type="text/javascript" src="Icicle.json"></script>
<style type="text/css">
rect {
stroke: #fff;
} </style>
</head>
<body>
<script type="text/javascript">
//svg
var w=,h=;
var svg=d3.select('body')
.append('svg')
.attr({
'width':w
,'height':h
})
;
//scale
var x=d3.scale.linear()
.range([,w])
;
var y=d3.scale.linear()
.range([,h])
; //color
var color=d3.scale.category20c(); //partition
var partition=d3.layout.partition()
.children(function(d){
return isNaN(d.value)?d3.entries(d.value):null;//d.value是object,isNaN 为 true;var entry = d3.entries({ foo: 42 }); returns [{key: "foo", value: 42}];
})
.value(function(d){
return d.value; //此d与之上的d不同,
})
; //rect
var rect=svg.selectAll('rect');
var root=json;
rect=rect.data(partition(d3.entries(root)[])) //d3.entries(root) return all entry;partition()转为分区函数。一定要赋值
.enter()
.append('rect')
.attr({
'x':function(d){
return x(d.x);
}
,'y':function(d){
return y(d.y);
}
,'width':function(d){
return x(d.dx);
}
,'height':function(d){
return y(d.dy);
}
,'fill':function(d){
return color((d.children ? d : d.parent).key);
}
})
.on('click',clicked)
; function clicked(d) {
x.domain([d.x, d.x + d.dx]);
y.domain([d.y, ]).range([d.y ? : , h]); rect.transition()
.duration()
.attr("x", function(d) { return x(d.x); })
.attr("y", function(d) { return y(d.y); })
.attr("width", function(d) { return x(d.x + d.dx) - x(d.x); })
.attr("height", function(d) { return y(d.y + d.dy) - y(d.y); });
}
</script>
</body>
</html>
注:我用的是最简化的数据。
如果想加text,也很简单,只是在clicked中会重新定义y,所以在更新text时需要x(d.x+d.dx/2);(大概),刚开始定义时也可这样写,因为没有变scale,所以x(d.x)+x(d.dx)/2;也行。
Icicle partition的更多相关文章
- D3js-API介绍【英】
Everything in D3 is scoped under the d3 namespace. D3 uses semantic versioning. You can find the cur ...
- Partition:增加分区
在关系型 DB中,分区表经常使用DateKey(int 数据类型)作为Partition Column,每个月的数据填充到同一个Partition中,由于在Fore-End呈现的报表大多数是基于Mon ...
- Partition:Partiton Scheme是否指定Next Used?
在SQL Server中,为Partition Scheme多次指定Next Used,不会出错,最后一次指定的FileGroup是Partition Scheme的Next Used,建议,在执行P ...
- Partition:分区切换(Switch)
在SQL Server中,对超级大表做数据归档,使用select和delete命令是十分耗费CPU时间和Disk空间的,SQL Server必须记录相应数量的事务日志,而使用switch操作归档分区表 ...
- sql 分组取最新的数据sqlserver巧用row_number和partition by分组取top数据
SQL Server 2005后之后,引入了row_number()函数,row_number()函数的分组排序功能使这种操作变得非常简单 分组取TOP数据是T-SQL中的常用查询, 如学生信息管理系 ...
- Oracle Partition Outer Join 稠化报表
partition outer join实现将稀疏数据转为稠密数据,举例: with t as (select deptno, job, sum(sal) sum_sal from emp group ...
- SQLServer中Partition By 函数的使用
今天群里看到一个问题,在这里概述下:查询出不同分类下的最新记录.一看这不是很简单的么,要分类那就用Group By;要最新记录就用Order By呗.然后在自己的表中试着做出来: 首先呢我把表中的数据 ...
- [LeetCode] Partition Equal Subset Sum 相同子集和分割
Given a non-empty array containing only positive integers, find if the array can be partitioned into ...
- [LeetCode] Partition List 划分链表
Given a linked list and a value x, partition it such that all nodes less than x come before nodes gr ...
随机推荐
- ArcGIS案例学习1_2
ArcGIS案例学习1_2 联系方式:谢老师,135_4855_4328, xiexiaokui#qq.com 时间:第一天下午 案例1:矢量提取,栅格提取和坐标系投影变换 目的:认识数据类型 教程: ...
- memory management
1. 高端内存: 内存的物理寻址范围比虚拟寻址范围大的多,有一些内存页不能永久的映射到内核地址空间. 2. 高端内存和低端内存是内核对内存物理页的划分. 参考:http://ilinuxkernel. ...
- Spring简单获得实体类的实例, 使用ApplicationContext()方法的几点注意事项
今天接触了Spring的初步用法, 感觉跟实例化实体类没啥区别, 像这种简单的代码还不如直接实例化来的方便, 这样使用Spring的话总共需要三个文件 第一个当然是一个实体类了, 定义好属性, get ...
- input radio 与label文字对齐
input{ vertical-align:middle; margin-bottom:2px; *margin-bottom:2px; } 原地址
- 百度BAE的使用
- SVN的基本操作
右键SVN Commit 提交成功了,我们把SVN的服务器端刷新一下 所有的操作如果只是删除本地的文件都不会影响服务器端的文件,除非右键SVN Commit删除文件或者是新增文件才会对服务器端的仓库里 ...
- Mask_RCNN Test
- fckeditor 数据库 取值 显示
用fckeditor把html代码存到数据库中,取出来显示的时候用什么控件呢?用Literal 或 Label 控件.
- .Net多线程 并行编程(三)---并行集合
为了让共享的数组,集合能够被多线程更新,我们现在(.net4.0之后)可以使用并发集合来实现这个功能. 而System.Collections和System.Collections.Generic命名 ...
- .NET中CORS跨域访问WebApi
我这里只写基本用法以作记录,具体为什么看下面的文章: http://www.cnblogs.com/landeanfen/p/5177176.html http://www.cnblogs.com/m ...