如何在d3.js的Pack Layout中插入饼图?

2024-01-24

大家好,我想在我的包布局中添加饼图,而不是简单的圆圈。

假设这是我的饼图数据和饼图布局

var data=[2,3,4,5]

var 弧 = d3.svg.arc() .outerRadius(50) .innerRadius(0);

var 饼 = d3.layout.pie() .sort(空)

.value(function(d) { return d; });

这就是 packlayout 绘制圆圈的方式

  var circle = svg.selectAll("circle")
  .data(nodes1)
  .enter().append("circle")
  .attr("class", function(d) { return d.parent ? d.children ? "node" : "node node--leaf" : "node node--root"; })
  .style("fill", function(d) { return d.children ? color(d.depth) : null; })
  .on("click", function(d) { if (focus !== d) zoom(d), d3.event.stopPropagation(); }); 

谁能解释一下我如何不用在包布局中附加圆圈,而是附加路径并从中制作饼图?![在此处输入图像描述][1]


您可以使用r包布局的值输出来定义outerRadius你的arc发电机。然后,而不是附加 svgcircle将元素添加到图表中,您可以附加 svgg元素,并将每个弧附加在其中:

Full example: http://bl.ocks.org/jsl6906/4a1b818b64847fb05d56 http://bl.ocks.org/jsl6906/4a1b818b64847fb05d56 Pack layout with pie charts

相关代码:

var bubble = d3.layout.pack()
      .value(function(d) { return d3.sum(d[1]); })
      .sort(null)
      .size([diameter, diameter])
      .padding(1.5),
    arc = d3.svg.arc().innerRadius(0),
    pie = d3.layout.pie();

var svg = d3.select("body").append("svg")
    .attr("width", diameter)
    .attr("height", diameter)
    .attr("class", "bubble");

var nodes = svg.selectAll("g.node")
    .data(bubble.nodes({children: data}).filter(function(d) { return !d.children; }));
nodes.enter().append("g")
    .attr("class", "node")
    .attr("transform", function(d) { return "translate(" + d.x + "," + d.y + ")"; });

var arcGs = nodes.selectAll("g.arc")
    .data(function(d) {
      return pie(d[1]).map(function(m) { m.r = d.r; return m; });
    });
var arcEnter = arcGs.enter().append("g").attr("class", "arc");

arcEnter.append("path")
    .attr("d", function(d) {
      arc.outerRadius(d.r);
      return arc(d);
    })
    .style("fill", function(d, i) { return color(i); });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在d3.js的Pack Layout中插入饼图? 的相关文章

随机推荐

  • 如何使用 Tomcat 上运行的 servlet 进行文件 I/O

    我正在编写一个 Java servlet 使用 Tomcat 作为容器 它创建 PDF 文件并向最终用户提供服务 目前 PDF 文件是在内存中创建的 并作为对 POST 的响应写出 我想对此进行一些更改 以便将 PDF 文件写入磁盘 以便稍
  • Django 'pip install django-heroku'(psycopg2) 错误阻止部署到 Heroku

    我正在设置一个新的 Django 项目以在 Heroku 上部署 但是当我遵循 Django Heroku 部署指南时 我在 pip install django heroku 期间遇到错误 我正在运行 OS MacOS Mojave 10
  • 如果解决失败则重定向 Angular 2

    如果 Angular 2 中解析失败 如何重定向到另一个页面 我将此称为编辑页面的解析 但我想处理解析页面中的错误 我的决心 resolve route ActivatedRouteSnapshot Promise
  • 闪亮的反应功能没有按预期更新

    原始问题发布在这里 闪亮的反应性意外行为 https stackoverflow com questions 27478028 shiny reactive unexpected behavior该问题被重新发布在这里 试图改进之前在上面提
  • 绘制给定预先计算的计数和箱的直方图

    我有一些数据x我传递给numpy histogram x 获取计数和 bin 边缘 然后我将它们保存到文件中 稍后 我想加载此数据并绘制直方图 I have counts 20 19 40 46 58 42 23 10 8 2 bin ed
  • 在 R 中拟合非线性 Langmuir 等温线

    我想在 R 中为以下数据拟合等温模型 最简单的等温模型是此处给出的 Langmuir 模型型号在页面底部给出 http www alfisol com IFS IFS 003 LMMpro Langmuir php 下面给出了我的 MWE
  • 使用 Visual Basic 自动登录表单

    我需要使用 Visual Basic 10 0 创建一个自动登录表单应用程序 代码如下 table cellpadding 0 cellspacing 0 border 0 height 100 tr td width 50 height
  • 在 iPhone 中创建基于时间的提醒应用程序

    我正在开发基于时间的提醒应用程序 用户在其中输入他的提醒和提醒时间 问题是如何不断地将当前时间与用户定义的时间进行比较 任何示例代码都会有很大帮助 因为我被困在这一点上 将当前时间与用户定义的时间进行比较并不是正确的设计模式 UIKit 提
  • 导航组件防止在后按时重新创建片段

    我在项目中使用 Jetpack 导航组件 其中包含单个活动和一些片段 我有一个带有从服务器端填充的列表的片段 我打电话getDataFromServer on the onViewCreated然后 当用户单击某个项目时 会显示一个新片段
  • 在 Excel 中将超链接转换为 HTML 代码

    我的 Excel 文件中有一列超链接 我想将它们转换为各自的 HTML 代码 a href http www example com Link Name a 我找到了仅提取链接 作为文本 的方法 但我需要将整个 HTML 代码作为文本来替换
  • 如何在.NET 中解析 UDP 数据包?

    如何在 NET 中解析 UDP 数据包 我使用 PCap Net 捕获数据包 在本例中为 UDP 数据包 我可以通过 PcapDotNet packets Ethernet IpV4 Udp 从 PCap net 对象访问这些数据包 我如何
  • Jquery 列表框更改事件不会在键盘滚动时触发

    我有一个 HTML 表单上的简单列表框和这个非常基本的 jQuery 代码 Toggle visibility of selected item selCategory change function prashQs addClass hi
  • 在设备的默认浏览器中打开链接。人行横道 Android 应用程序

    我正在使用 HTML 和 JavaScript 创建适用于 Android 设备的应用程序 我正在使用 Crosswalk 15 44 384 12 将其捆绑到 Android 应用程序中 这几乎创建了一个内置 Web 浏览器的 Andro
  • 可以嵌套 HTML 表单吗?

    是否可以像这样嵌套 HTML 表单
  • 是否可以使用egrep来匹配某个范围内的数字?

    有没有办法grep egrep两组数字之间 egrep SomeText 19999 22000 some file txt 它不返回值 我预计 SomeText 19999 ffuuu SomeText 20001 ffuuu SomeT
  • shell pipeline 如何处理无限循环

    每当我需要限制 shell 命令输出时 我都会使用 less 对结果进行分页 cat file with long content less 它工作得很好 但我很好奇的是 即使输出永远不会结束 less 仍然有效 请考虑将以下脚本放在inf
  • 使用谷歌翻译 API 的值无效 (400)

    我的要求有什么问题吗 我有俄语字符串 string 我想用 google API 将其翻译为乌克兰语 我对字符串进行编码 q urlencode string 我请求谷歌API 作为回应 我得到 error errors domain gl
  • 在 ng-view 上滚动时,无尽滚动在 AngularJS 中不起作用

    我正在使用类似的代码this http jsfiddle net vojtajina U7Bz9 在 AngularJS 中创建无限滚动效果 我尝试通过移动可滚动容器的内容 在本例中为ul 到一个单独的 html 文件 然后使用 ng vi
  • ios:显示可变长度、多行文本的最佳方式

    我计划从文本文件加载多段落内容并将其显示在用户界面上 我将从几个文本文件之一加载 并且不会提前知道文本的长度 我的第一个想法是在 UIScrollView 中使用 UILabel 然而 似乎 UILabel 不能根据它包含的行数进行扩展 它
  • 如何在d3.js的Pack Layout中插入饼图?

    大家好 我想在我的包布局中添加饼图 而不是简单的圆圈 假设这是我的饼图数据和饼图布局 var data 2 3 4 5 var 弧 d3 svg arc outerRadius 50 innerRadius 0 var 饼 d3 layou