编程语言
首页 > 编程语言> > JavaScript-Circle packs作为D3强制布局的节点

JavaScript-Circle packs作为D3强制布局的节点

作者:互联网

这是jsfiddle

假设您有两个政党,并且要在多个投票单位或类似结构的数据中展示选举结果,这确实非常好.

但是,我需要直观地表示:(5个政党,而不是2个政党)(请忽略除“座位”之外的所有原始内容;应该仅将“座位”可视化)

我想在每个力布局节点内都有一个圆包.

例如,应该有一个名为BC的气球,其中包含四个与21、12、2、1成正比的较小圆圈(一个政党在BC不赢得任何席位-不列颠哥伦比亚省),依此类推.

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

解决方法:

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

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

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

现在,您可以为深度=== 1(区域)的每个节点创建一个组,并设置力布局指定的位置.

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

就是说,我宁愿只使用气泡布局,也可以对区域使用包布局,对聚会圈子使用多焦点力布局.

标签:svg,d3-js,force-layout,circle-pack,javascript
来源: https://codeday.me/bug/20191030/1964190.html