【D3.js 学习总结】12、D3布局-集群图
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布局-集群图相关推荐
- kubernetes(K8S)学习笔记P6:K8s集群|java项目部署
kubernetes(K8S)学习笔记P6:K8s集群|java项目部署 8.集群资源监控 8.1概述 8.2搭建集群监控平台系统 8.2.1部署prometheus 8.2.3部署Grafana 8 ...
- Redis运维和开发学习笔记(3)redis搭建集群
Redis运维和开发学习笔记(3)redis搭建集群 文章目录 Redis运维和开发学习笔记(3)redis搭建集群 Redis集群搭建 Redis集群搭建 cp /etc/redis.d/redis ...
- 第二课 ceph基础学习-OSD扩容换盘和集群运维
第二课 ceph基础学习-OSD扩容换盘和集群运维 文章目录 第二课 ceph基础学习-OSD扩容换盘和集群运维 第一节 OSD扩容 1.1 扩容背景 1.2 横向扩容 1.3 纵向扩容 1.4 数据 ...
- 安装集群图形化界面(Dashboard )、海外构建镜像
文章目录 一.安装集群图形化界面(Dashboard ) 1.安装图形化界面 2.部署nginx服务 3.使用Dashboard创建应用 二.海外构建镜像 1. 实现原理 2.所需要的平台 3.实现具 ...
- 第一篇博客 赶鸭子上架的d3.js学习笔记(bilibili从零开始画图表学习笔记 感谢万能的b站以及up睿小狼d)
svg: 可缩放矢量图形是基于可扩展标记语言(标准通用标记语言的子集),用于描述二维矢量图形的一种图片格式.他由万维网联盟制定,是一个开放标准.(源代码类似于html) 一个简单的代码 <svg ...
- d3.js学习笔记--Mike Bostock: Thinking with Joins
为什么80%的码农都做不了架构师?>>> 我们可以使用append方法, 来创建一个单一元素: var svg = d3.select('svg'),d = {"x& ...
- d3.js html显示图片,d3.js v4:如何在鼠标点击节点后显示图像
在使用d3.js时仍然相当缺乏经验,我碰到了一个障碍. 希望有人能帮助我.d3.js v4:如何在鼠标点击节点后显示图像 我试图在鼠标单击图形中的节点时显示图片. 理想情况下,我想单击几个节点并显示图 ...
- 一脸懵逼学习基于CentOs的Hadoop集群安装与配置(三台机器跑集群)
1:Hadoop分布式计算平台是由Apache软件基金会开发的一个开源分布式计算平台.以Hadoop分布式文件系统(HDFS)和MapReduce(Google MapReduce的开源实现)为核心的 ...
- Kubernetes的学习笔记总结之k8s集群安装部署
kubernets 集群安装部署. 安装 Docker 所有节点都需要安装 Docker. apt-get update && apt-get install docker.io 安装 ...
最新文章
- 企业网络推广专员浅析如何通过企业网络推广的方式提升网站权重?
- ccf报数游戏java,CCF 201712-2 游戏 《超越自我,攀登顶峰》
- 如何友好的把Python和Bash结合在一起
- JPA教程:映射实体–第1部分
- 您必须学习Java 8的函数式编程吗?
- Python3爬虫(十一) 爬虫与反爬虫
- linux7 配置mysql5.7字符集编码
- LeetCode 1498. 满足条件的子序列数目(排序+二分查找+快速幂)
- 三:Java+SpringBoot框架使用(携带cookies信息访问的get接口开发)
- 【现控】系统状态空间表达式
- Android NDK 下载地址
- 设计模式-05.建造者模式与模板方法模式比较
- GitHub中的神奇开源,汇聚天涯神贴讨论房价涨跌,买房好帮手!
- IOS开发之——音乐播放器-功能封装(03)
- Android 获取Device Id
- android高仿小米时钟,Android仿小米时钟效果
- 世界上第一台电子计算机adc,2004山东公务员考试计算机专业理论题
- HTML设计的步骤,网页设计详细操作步骤
- 手表上发条的方法?雷诺手表如何上发条?
- 推荐十本C#编程的最佳书籍
热门文章
- Java开发岗位面试题归类---怎么好好的准备面试,也算是发展学习方向
- kubernetes-v1.15.0安装【使用kubeadm部署Kubernetes-跳过国内网络问题】
- HZ视频配音配字幕工具v1.0配音配字幕、影视视频讲解利器
- 为论文建立索引的一种方法
- 中国微粉化蜡行业市场供需与战略研究报告
- 孙陶然:有能力的第三个标准是有亮点
- 电商产品精修训练营第3天_ps修复画笔工具_ps修补工具_ps仿制图章工具
- mysqldump -u root -p a E:\a\a.txt; 找不到错误了
- Android用mediaPlayer.prepare()报错
- DSP 中的基础算法和模型的详细解析