我的目标是生成一个模仿这个的 circle pack :(根本不关注数字和颜色,目前我只对圆的位置和半径感兴趣)

基于 d3js.org 的一个例子,我创建了这个 jsfiddle ,结果:

我尝试过圆形包装布局,但结果更糟,有很多空白空间......

我怎样才能得到看起来像第一张照片的东西?

编辑:This example 似乎更接近我想要的,我刚刚注意到。

编辑 2:受到@AmeliaBR 想法的启发, codepen 。还没有最后。预习:

然后我减少了最大半径:

最新和最好的:最大弧度 12 分钟弧度 3

最佳答案

请参阅对主要问题的评论,了解这是如何发展的...

Mike Bostock 为 Mitchell 的最佳候选采样算法创建了几个不同的可视化:

  • with gray circles on a white background
  • with white circles on a black background

  • Mitchell's algorithm 的最初目的是以一种不会创建重复模式的方式对一系列值进行采样,但也不容易像真正的随机样本那样创建集群和间隙。

    Bostock 的演示将采样算法与 d3 quadtree 数据结构相结合,该数据结构将数据点排序为一个树结构,该结构被划分为尽可能多的分支,以便将每个数据点放入其自己的节点。使用四叉树,Bostock 可以快速判断添加到图中的每个新点周围有多少空间,因此该空间可以容纳多大的圆。该程序从绘制选定最大半径的圆开始,并一直运行,直到反复找不到足够的空间来绘制最小半径的圆。

    Bostock 的示例使用矩形空间来绘制圆圈,但 as Vivid D demonstrated 可以适应其他形状。

    关于d3.js - 生成视觉上令人愉悦的圆形包,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21068151/

    10-10 22:09