繁体   English   中英

Circle包作为D3力布局的节点

[英]Circle packs as nodes of a D3 force layout

这是jsfiddle

在此输入图像描述

如果你有两个政党,你想要在多个投票单位或类似的结构化数据中提出选举结果,这真的很好。

但是,我需要在视觉上代表这一点:( 5个政党而不是2个) (请忽略除“席位”之外的所有原始内容;只有“席位”应该是可视化的)

在此输入图像描述

我想在每个force layout node都有一个circle pack

例如,应该有一个名为BC的气球,其中包含四个较小的圆圈,其面积与21,12,2,1(一个政党没有在不列颠哥伦比亚省 - 不列颠哥伦比亚省赢得任何席位)等等,加拿大所有省份都是如此。

你能否告诉我这是否可行和/或大纲代码组织?

策略应该或多或少:格式化数据结构以反映该层次结构:

{
    name: 'Election Results',
    children: [
        {
            region: 'BC',
            children: [
                {party: 'Conservative', seats: 12},
                ...
            ]
        }
    ]
}

并计算此数据的包布局,但不要绘制任何圆圈。 这将为您提供depth === 1的节点中每个区域的大小。 现在您可以计算力布局。 为避免一个区域与另一个区域重叠,您应将电荷设置为与每个区域的面积成比例(与Math.pow(dr, 2)成比例。

现在,您可以为depth === 1 (区域)的每个节点创建一个组,设置力布局给出的位置。

对于每个组,计算新的包布局,将每个布局的大小设置为区域半径的两倍。 您现在可以在组选择的子选择中创建圆,为每个圆选择由第二个包布局设置的半径。 最后,我会为每个派对创建一个类,因此您可以以不同方式设置每个气泡的样式。 也许应该为小组圈子做同样的事情。

也就是说,我宁愿只使用气泡布局,或者为聚会圆圈的多焦点布局区域设置包装布局。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM