【D3.js数据可视化系列教程】(三十六)-- 冰柱图

1. 冰柱图简介

冰柱图使用D3的分区布局实现,主要用来展现数据的层次和包含关系。实际上使用笛卡尔排列的分区布局数据绘制的就是冰柱图,径向排列就是旭日图。

下图给出的是笛卡尔排列方式。

  2. 冰柱图示例

冰柱图示例

  3. 实现冰柱图

  • (1) 定义冰柱图布局
var partition = d3.layout.partition()//递归分割节点树到一个旭日或冰柱。
    .size([width, height])//在x和y指定的布局大小。
    .value(function(d) { return d.size; });
  • (2) 用冰柱图布局转换数据
var nodes = partition.nodes(root);//计算分区布局并返回节点的数组。
  • (3) 绑定新数据添加节点和文字

略。详见代码~

  4. 完整代码

<!DOCTYPE html>
<head>
<meta charset="utf-8">
<title>testD3-34-icicle.html</title>
<style>

.node {
  fill: #ddd;
  stroke: #fff;
}

.label {
  font: 10px sans-serif;
  text-anchor: middle;
}

</style>
</head>
<body>
<script src="d3.js" charset="utf-8" ></script>

<script>

var width = 960,
    height = 500;

var color = d3.scale.category20();

var svg = d3.select("body").append("svg")
    .attr("width", width)
    .attr("height", height);
// (1)冰柱布局
var partition = d3.layout.partition()//递归分割节点树到一个旭日或冰柱。
    .size([width, height])//在x和y指定的布局大小。
    .value(function(d) { return d.size; });

d3.json("Icicle.json", function(error, root) {
  // (2) 用冰柱图布局转换数据
  var nodes = partition.nodes(root);//计算分区布局并返回节点的数组。

  // (3) 设置文字和节点
  svg.selectAll(".node")
      .data(nodes)
      .enter().append("rect")
      .attr("class", "node")
      .attr("x", function(d) { return d.x; })
      .attr("y", function(d) { return d.y; })
      .attr("width", function(d) { return d.dx; })
      .attr("height", function(d) { return d.dy; })
      .style("fill", function(d) { //颜色:有孩子则返回自己的颜色,无孩子则返回爸爸的颜色
        return color((d.children ? d : d.parent).name);
       });

  svg.selectAll(".label")
      .data(nodes.filter(function(d) { 
         return d.dx > 6; 
      }))
      .enter().append("text")
      .attr("class", "label")
      .attr("dy", ".35em")
      .attr("transform", function(d) { 
        return "translate(" + (d.x + d.dx / 2) + "," + (d.y + d.dy / 2) + ")rotate(90)"; 
      })
      .text(function(d) { return d.name; });
});

</script>

</body>

  5. 数据:Icicle.json


{
    "name": "AAA", 
    "children": [
        {
            "name": "BBB", 
            "children": [
                {
                    "name": "CCC", 
                    "children": [
                        {
                            "name": "DDD", 
                            "children": [
                                {   "name": "EEE", "size": 73 }, 
                                {   "name": "EEE", "size": 73 }, 
                                {   "name": "EEE", "size": 73 }, 
                                {   "name": "EEE", "size": 73 }, 
                                {   "name": "EEE", "size": 73 }, 
                                {   "name": "EEE", "size": 73 }, 
                                {   "name": "EEE", "size": 73 }, 
                                {   "name": "EEE", "size": 73 }, 
                                {   "name": "EEE", "size": 73 }, 
                                {   "name": "EEE", "size": 73 }, 
                                {   "name": "EEE", "size": 73 }, 
                                {   "name": "EEE", "size": 73 }, 
                                {   "name": "EEE", "size": 73 }, 
                                {   "name": "EEE", "size": 73 }, 
                                {   "name": "EEE", "size": 73 }, 
                                {   "name": "EEE", "size": 73 }
                            ]
                        }, 
                        {   "name": "DDD", "size": 73   }, 
                        {   "name": "DDD", "size": 39   }, 
                        {   "name": "DDD", "size": 67   }, 
                        {   "name": "DDD", "size": 73   }, 
                        {   "name": "DDD", "size": 39   }, 
                        {   "name": "DDD", "size": 67   }, 
                        {   "name": "DDD", "size": 73   }, 
                        {   "name": "DDD", "size": 39   }, 
                        {   "name": "DDD", "size": 67   }, 
                        {   "name": "DDD", "size": 73   }, 
                        {   "name": "DDD", "size": 39   }, 
                        {   "name": "DDD", "size": 67   }, 
                        {   "name": "DDD", "size": 73   }, 
                        {   "name": "DDD", "size": 39   }, 
                        {   "name": "DDD", "size": 67   }, 
                        {   "name": "DDD", "size": 73   }
                    ]
                }, 
                {   "name": "CCC", "size": 67   }, 
                {   "name": "CCC", "size": 73   }, 
                {   "name": "CCC", "size": 39   }, 
                {   "name": "CCC", "size": 67   }, 
                {   "name": "CCC", "size": 73   }, 
                {   "name": "CCC", "size": 39   }, 
                {   "name": "CCC", "size": 67   }, 
                {   "name": "CCC", "size": 73   }, 
                {   "name": "CCC", "size": 39   }, 
                {   "name": "CCC", "size": 67   }, 
                {   "name": "CCC", "size": 73   }, 
                {   "name": "CCC", "size": 39   }, 
                {   "name": "CCC", "size": 67   }, 
                {   "name": "CCC", "size": 73   }, 
                {   "name": "CCC", "size": 39   }, 
                {   "name": "CCC", "size": 67   }, 
                {   "name": "CCC", "size": 73   }
            ]
        }, 
        {   "name": "BBB", "size": 39   }, 
        {   "name": "BBB", "size": 67   }, 
        {   "name": "BBB", "size": 73   }
    ]
}

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
文件已上传到百度网盘,附件中是下载地址。真正免积分免费完整版,绝不出现仅下载到部分章节,书中广 告页要求QQ联系支付宝购买完整版的流氓行为! 欢迎免积分下载更多本人独有网上难寻觅的 高清IT电子书:http://download.csdn.net/user/sinophp123 人无我有,人有我优,人优我廉!我的版本是全网最清晰的独家制作版本,还不要资源分。 同样一本书,下我的就可以了! 本人上传资料的原则: (1)如果CSDN和网上其他地方已随处可见高清下载,本人不再上传。 (2)如果网上已有我还上传,那么肯定是经重新制作,如不再缺页,清晰度更高,或者加上书签。 (3)每本书都经过逐页纯手工精心处理,包括清晰度的增强,水印的去除。当然最重要的,是尽量保证有书 签方便您浏览。 (4)如果是中译版,文件名前半部分是英文原版书名,后面是中译版书名。 如:“Implementing.Responsive.Design-响应式Web设计实践”。书名经反复校对绝无一字错漏。 (5)每本pdf书默认都是有书签的。来源不限“某星”网站,还有各大网络书店和出版社官网的页码信息。 凡无书签的pdf文件名均含“_no.bookmark”字样,如“HTML5程序开发范例宝典_no.bookmark”。请不要再 浪费时间去寻找书签,肯定没有,网上别人提供的下载版本也绝对不会有(除非您是出版社内部人员!), 没有人会浪费自己时间逐页输入章节页码来费时费力免费给您制作。 (6)只提供中文书籍,您不用担心下载的是英文原版。 (7)只提供完整版,绝不上传只有部分章节的所谓“迷你书”,“试读版”。 (8)书中绝不含广告页和水印LOGO。 Data.Visualization.with.D3.js.Cookbook-D3.js数据可视化实战手册 [加]nick qi zhu 著(著) | 杨锐 刘夏 王超 张沙沙(译) | 人民邮电出版社 | 9787115360960 | 2014-09- 01

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值