2016-10-01 42 views
0

ここでは、JSONを取得する方法について私の頭を叩いていますsource json d3.js Radial Dendrogramグラフにロードされています。 はここに:d3.js Radial Dendrogram graph exampleラジアルデンドログラムで使用するためにjsonをd3.jsにロード

現在の計画では、Python にJSONをインポートまたは多分パイソンを使用して2列(ID、値)CSVにJSONを変換することです。

しかし、これは私がjavascriptとd3.jsで私の頭をほぼ2日間叩いていたので、これがどのように成し遂げられるのか理解しています。

は基本的に私は、ルートされているシステムでは、次の

の可視化を可能にするためにd3.js にデータをロードしようとしている

EDIT:は希望に満ちた巻きひげの流れを表示する

system --> model_type --> system_revision --> firmware_version --> firmware_build, system_name 

上記のリンクで指定されているcsvの例に従ってください。

id,value 
systems, 
systems_PowerEdge R720xd, 
systems_PowerEdge R720xd_I, 
systems_PowerEdge R720xd_I_1.50.50, 
systems_PowerEdge R720xd_I_1.50.50_34,ldc0000 

は、私が得たいと思う出力です。

+0

あなたのJSONが与えられた場合、デンドログラムはどのように見えますか? – Mark

+0

質問をよりよく説明するために元の投稿を編集しました。 – liskl

+0

私は 'JSON'を' JSON'に変換するために 'csv'に変換しません。あなたが求めるべき質問は、 'JSON'をどのようにして階層構造' d3'のニーズに再フォーマットするかということです。あなたがリンクしている例を見ると、構造体はルートオブジェクト '{id:" flare "、children:[{id:" one "、children:[...] – Mark

答えて

0

昨日からこの質問に戻ってきます。私のコメントで述べたように、JSON構造体をd3.hierarchyが必要とする親/子階層に変換する必要があります。残念ながら、あなたの元データは、すべて実際に階層的ではないので、私はこれを行うに見る唯一の方法は、非常にマニュアルの方法である:

var root = { 
    id: "system", 
    children: [] 
    }; 
    data.systems.forEach(function(d,i){ 
    var key = Object.keys(d)[0], 
     sysInfo = d[key].sysInfo; 
    root.children.push({ 
     id: sysInfo.system_model, 
     children: [{ 
     id: sysInfo.system_revision, 
     children: [{ 
      id: sysInfo.firmware_version, 
      children: [{ 
      id: sysInfo.firmware_build 
      }, { 
      id: key 
      }] 
     }] 
     }] 
    }); 
    }); 

    root = d3.hierarchy(root); 

樹形図のコードはテキストラベルを固定する以外変わらない後:

codeを実行している全
.text(function(d) { console.log(d); return d.data.id }); 

関連する問題