簡體   English   中英

d3強制定向網絡的json表示形式

[英]json representation for d3 force directed networks

我正在嘗試對RISK進行網絡可視化。 您可以在http://bl.ocks.org/4683850上使用所需的代碼進行查看。

可視化可以工作,但是需要大量的人工。 我手動調整了json文件,以使連接具有以下形狀:

{
    "source": 1,
    "target": 0,
    "value": 5
} 

一個人需要對d3代碼做些什么,以使連接由節點的名稱確定? 輸入將是:

{
    "source": "WesternAustralia",
    "target": "NewGuinea",
    "value": 5
} 

每當我嘗試時,都會出現以下錯誤:

Uncaught TypeError: Cannot call method 'push' of undefined 

D3文檔提供了有關鏈接如何工作的說明:

https://github.com/mbostock/d3/wiki/Force-Layout#wiki-links

簡而言之,鏈接數組可以包含sourcetarget索引,它們從nodes重新映射到對象,或者包含從nodes本身到對象的引用。 您需要將鏈接的sourcetarget重新映射到nodes的對象。

假設您的source屬性和target屬性使用的名稱如上面第二個示例所示,則可以將以下代碼段添加到d3.json回調的開頭以進行重新映射:

    var nodeMap = {};
    graph.nodes.forEach(function(x) { nodeMap[x.name] = x; });
    graph.links = graph.links.map(function(x) {
      return {
        source: nodeMap[x.source],
        target: nodeMap[x.target],
        value: x.value
      };
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM