小编Sol*_*ran的帖子

D3气泡图/包装布局 - 如何使气泡从最大气泡辐射到最小气泡?


所以我使用与这个D3库示例相同的代码(使用我自己的数据):

http://bl.ocks.org/mbostock/4063269


我想得到一个气泡图,其中圆圈排列在中心最大,然后向外辐射到最小.


这是我在Photoshop中创建的模拟:

我真正想要的是什么



以下是我使用该示例时获得的内容(默认排序算法的默认圆形打包算法):

默认包装



我尝试调整排序(包括尝试d3.ascending和d3.descending).我能想出的最好的东西基本上是用一个常数来破坏排序(哈哈!),但仍然远非我想要的:

//...
.sort( function(a, b) { return -1;} )
//...
Run Code Online (Sandbox Code Playgroud)

我可以通过调整排序来获得最佳效果



好的,那么在不必改变实际的D3包布局算法的情况下可以做到这一点吗?如果没有,也许有人已经扩展或修改了包布局,并且可以告诉我可以在D3源中更改的5行来破解它.



提前致谢!


编辑:

根据要求,这是我正在使用的代码.基本上与上面的链接样本相同,有一些表面的变化,如注释行所示:

var diameter = 960,
format = d3.format(",d"),
color = d3.scale.category20c();

var bubble = d3.layout.pack()
//  .sort(null)
//  .sort(d3.ascending)
//  .sort(d3.descending)
    .sort( function(a, b) { return  -1;} ) // basically a < b always
    .size([diameter, diameter])
    .padding(1.5);

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

d3.json("data.json", function(error, root) 
{
  var node = svg.selectAll(".node")
        .data(bubble.nodes(classes(root))
        .filter(function(d) { return !d.children; }))
        .enter().append("g") …
Run Code Online (Sandbox Code Playgroud)

javascript sorting svg d3.js circle-pack

8
推荐指数
1
解决办法
1万
查看次数

将 D3 日历视图示例调整为垂直,天从左到右排序,然后从上到下?

查看原始画廊示例:http : //bl.ocks.org/mbostock/4063318

该示例的工作方式是从上到下,然后从左到右排列日期。将鼠标悬停在它们上方以了解我的意思。我想要的是更像常​​规垂直日历的东西,其中月份垂直堆叠在一起,天数从左到右,然后从上到下。见模拟:

在此处输入图片说明

旋转整个月的堆栈还不错,但是我在 SVG 上绘制了来自没有相同天数的月份所涉及的边缘情况。

有人愿意改变布局算法来做到这一点吗?

javascript svg d3.js

0
推荐指数
1
解决办法
1003
查看次数

标签 统计

d3.js ×2

javascript ×2

svg ×2

circle-pack ×1

sorting ×1