d3.layout.cluster()

集群图是一种用于表示包含与被包含关系的图表。

集群图(Cluster)的API说明

  • cluster.children - 取得或者设置子节点的访问器函数。
  • cluster.links - 技术树节点之间的父子连接。
  • cluster.nodeSize - 为每个节点指定固定的尺寸。
  • cluster.nodes - 计算集群布局并返回节点数组。
  • cluster.separation - 取得或设置邻接节点的分隔函数。
  • cluster.size - 取得或设置布局的尺寸。
  • cluster.sort - 取得或设置兄弟节点的比较器函数。
  • cluster - cluster.nodes的别名。

我们通过一个制作一个集群图来讲解集群布局。

1. 数据

var dataset = {"name": "中国","children": [{"name": "浙江","children": [{"name": "杭州"}, {"name": "宁波"}, {"name": "温州"}, {"name": "绍兴"}]},{"name": "广西","children": [{"name": "桂林"}, {"name": "南宁"}, {"name": "柳州"}, {"name": "防城港"}]},{"name": "黑龙江","children": [{"name": "哈尔滨"}, {"name": "齐齐哈尔"}, {"name": "牡丹江"}, {"name": "大庆"}]},{"name": "新疆","children": [{"name": "乌鲁木齐"}, {"name": "克拉玛依"}, {"name": "吐鲁番"}, {"name": "哈密"}]}]
}

2. 数据转换

var width = 1000,height = 500;var cluster = d3.layout.cluster().size([width, height - 100]);var nodes = cluster.nodes(dataset); // 节点
var links = cluster.links(nodes); // 连线

size() 设定尺寸,即转换后的各节点的坐标在哪一个范围内。

通过集群布局转换数据后,数据被转换成如下形式:

节点

连线

3. 绘制图形

生成SVG容器

var svg = d3.select("body").append("svg").attr("width", width).attr("height", height).append("g").attr("transform", "translate(0,50)");

创建对角线SVG生成器

var diagonal = d3.svg.diagonal()

生成连线路径

var link = svg.selectAll(".link").data(links).enter().append("path").attr("class", "link").attr("d", diagonal);

生成圆形节点和文本

var node = svg.selectAll(".node").data(nodes).enter().append("g").attr("class", "node").attr("transform", function(d) {return "translate(" + d.x + "," + d.y + ")";})
node.append("circle").attr("r", 4.5);node.append("text").attr("dx", function(d) {return d.children ? -8 : 8;}).attr("dy", 3).style("text-anchor", function(d) {return d.children ? "end" : "start";}).text(function(d) {return d.name;});

查看在线演示

【D3.js 学习总结】12、D3布局-集群图相关推荐

  1. kubernetes(K8S)学习笔记P6:K8s集群|java项目部署

    kubernetes(K8S)学习笔记P6:K8s集群|java项目部署 8.集群资源监控 8.1概述 8.2搭建集群监控平台系统 8.2.1部署prometheus 8.2.3部署Grafana 8 ...

  2. Redis运维和开发学习笔记(3)redis搭建集群

    Redis运维和开发学习笔记(3)redis搭建集群 文章目录 Redis运维和开发学习笔记(3)redis搭建集群 Redis集群搭建 Redis集群搭建 cp /etc/redis.d/redis ...

  3. 第二课 ceph基础学习-OSD扩容换盘和集群运维

    第二课 ceph基础学习-OSD扩容换盘和集群运维 文章目录 第二课 ceph基础学习-OSD扩容换盘和集群运维 第一节 OSD扩容 1.1 扩容背景 1.2 横向扩容 1.3 纵向扩容 1.4 数据 ...

  4. 安装集群图形化界面(Dashboard )、海外构建镜像

    文章目录 一.安装集群图形化界面(Dashboard ) 1.安装图形化界面 2.部署nginx服务 3.使用Dashboard创建应用 二.海外构建镜像 1. 实现原理 2.所需要的平台 3.实现具 ...

  5. 第一篇博客 赶鸭子上架的d3.js学习笔记(bilibili从零开始画图表学习笔记 感谢万能的b站以及up睿小狼d)

    svg: 可缩放矢量图形是基于可扩展标记语言(标准通用标记语言的子集),用于描述二维矢量图形的一种图片格式.他由万维网联盟制定,是一个开放标准.(源代码类似于html) 一个简单的代码 <svg ...

  6. d3.js学习笔记--Mike Bostock: Thinking with Joins

    为什么80%的码农都做不了架构师?>>>    我们可以使用append方法, 来创建一个单一元素: var svg = d3.select('svg'),d = {"x& ...

  7. d3.js html显示图片,d3.js v4:如何在鼠标点击节点后显示图像

    在使用d3.js时仍然相当缺乏经验,我碰到了一个障碍. 希望有人能帮助我.d3.js v4:如何在鼠标点击节点后显示图像 我试图在鼠标单击图形中的节点时显示图片. 理想情况下,我想单击几个节点并显示图 ...

  8. 一脸懵逼学习基于CentOs的Hadoop集群安装与配置(三台机器跑集群)

    1:Hadoop分布式计算平台是由Apache软件基金会开发的一个开源分布式计算平台.以Hadoop分布式文件系统(HDFS)和MapReduce(Google MapReduce的开源实现)为核心的 ...

  9. Kubernetes的学习笔记总结之k8s集群安装部署

    kubernets 集群安装部署. 安装 Docker 所有节点都需要安装 Docker. apt-get update && apt-get install docker.io 安装 ...

最新文章

  1. 企业网络推广专员浅析如何通过企业网络推广的方式提升网站权重?
  2. ccf报数游戏java,CCF 201712-2 游戏 《超越自我,攀登顶峰》
  3. 如何友好的把Python和Bash结合在一起
  4. JPA教程:映射实体–第1部分
  5. 您必须学习Java 8的函数式编程吗?
  6. Python3爬虫(十一) 爬虫与反爬虫
  7. linux7 配置mysql5.7字符集编码
  8. LeetCode 1498. 满足条件的子序列数目(排序+二分查找+快速幂)
  9. 三:Java+SpringBoot框架使用(携带cookies信息访问的get接口开发)
  10. 【现控】系统状态空间表达式
  11. Android NDK 下载地址
  12. 设计模式-05.建造者模式与模板方法模式比较
  13. GitHub中的神奇开源,汇聚天涯神贴讨论房价涨跌,买房好帮手!
  14. IOS开发之——音乐播放器-功能封装(03)
  15. Android 获取Device Id
  16. android高仿小米时钟,Android仿小米时钟效果
  17. 世界上第一台电子计算机adc,2004山东公务员考试计算机专业理论题
  18. HTML设计的步骤,网页设计详细操作步骤
  19. 手表上发条的方法?雷诺手表如何上发条?
  20. 推荐十本C#编程的最佳书籍

热门文章

  1. Java开发岗位面试题归类---怎么好好的准备面试,也算是发展学习方向
  2. kubernetes-v1.15.0安装【使用kubeadm部署Kubernetes-跳过国内网络问题】
  3. HZ视频配音配字幕工具v1.0配音配字幕、影视视频讲解利器
  4. 为论文建立索引的一种方法
  5. 中国微粉化蜡行业市场供需与战略研究报告
  6. 孙陶然:有能力的第三个标准是有亮点
  7. 电商产品精修训练营第3天_ps修复画笔工具_ps修补工具_ps仿制图章工具
  8. mysqldump -u root -p a E:\a\a.txt; 找不到错误了
  9. Android用mediaPlayer.prepare()报错
  10. DSP 中的基础算法和模型的详细解析