D3.JS theta强制布局

时间:2014-02-24 06:40:40

标签: d3.js force-layout

任何人都可以详细说明theta的重要性以及可以使用的案例或情况吗?

实际上我试图对图形进行可视化表示,但它没有给出理想的节点位置。因为它包含太多的循环而使图表不清楚。 目前我在d3js中使用强制布局。在这种情况下,请给出使用theta的效果。

如果您有任何其他想法,请慷慨通知。

2 个答案:

答案 0 :(得分:2)

这是jsfiddle with sliders基于MaxF的优秀答案和MBostock的规范force layout example

请注意,如果您想将d3块示例加载到小提琴中,可以将d3.json(function(error, json)替换为:

function load(json) {
    // same code as d3.json(...
}

load({
  "nodes":[
   {"name":"Myriel","group":1},
   {"name":"Napoleon","group":1},
   //... copy this from the block
);

答案 1 :(得分:0)

我发现学习和试验力量如何影响图表的最简单方法是制作临时滑块,以便观察变化的力量如何实时影响事物。

例如,在html中我把它(一个表格只是最快和最脏的格式化方式):

<form oninput="chargeOut.value=chargeInput.value">
<table style="width:150px">
  <tr><td colspan="2">Charge: 
     <output name="chargeOut" for="chargeInput"> </output>
  </td></tr>
  <tr><td colspan="2" align="center">
     <input type="range" id="chargeInput" name="chargeInput" min="-350" 
       max="-1" value="-60" style="width:100%">
  </td></tr>
</table>
</form>

<form oninput="linkStrOut.value=linkStrInput.value">
<table style="width:150px">
  <tr><td colspan="2">Link Strength: 
     <output name="linkStrOut" for="linkStrInput"> </output>
  </td></tr>
  <tr><td colspan="2" align="center">
     <input type="range" id="linkStrInput" name="linkStrInput" min="0" 
        max="1" value="0.03" step="0.01" style="width:100%">
  </td></tr>
</table>
</form>

在脚本中我把它:

d3.select("#chargeInput").on("input", function () {
    force.charge(chargeInput.value).start()
})

d3.select("#linkStrInput").on("input", function () {
    force.linkStrength(linkStrInput.value).start()
})

然后你可以为chargeDistance,摩擦等做同样的事情。完成后你可以找出你喜欢的设置并将它们作为默认设置。

关于theta,正如他们上面所说的不会改变它的外观而是as per the documentation,它可以帮助加速大图。我希望这会有所帮助。