質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
D3.js

D3.jsとは、データに基づいてHTMLやSVGドキュメントを編集するために作られた、小規模なオープンソースのJavaScript可視化ライブラリです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

2521閲覧

D3.jsのforceレイアウトで入れ子構造のJSONデータを表示する

SHERRY

総合スコア15

D3.js

D3.jsとは、データに基づいてHTMLやSVGドキュメントを編集するために作られた、小規模なオープンソースのJavaScript可視化ライブラリです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2016/10/28 08:54

いつもお世話になっております。

表題のとおりなのですが、D3.jsのforceレイアウトで、以下のような入れ子構造のJSONデータを表示したいと考えています。

json

1{"name":"サンプルデータ","children":[ 2 "name":"2020","children":[ 3 "name":"202004","children":[ 4 {"name":"20200405","price":"1305"}, 5 {"name":"20200417","price":"1890"}, 6 {"name":"20200405","price":"1560"} 7 ], 8 "name":"202005","children":[ 9 {"name":"20200509","price":"2030"}, 10 {"name":"20200524","price":"1990"}, 11 {"name":"20200527","price":"2005"} 12 ] 13 ], 14 "name":"2021","children":[ 15 "name":"202104","children":[ 16 {"name":"20210405","price":"1305"}, 17 {"name":"20210417","price":"1890"}, 18 {"name":"20210405","price":"1560"} 19 ], 20 "name":"202105","children":[ 21 {"name":"20200509","price":"2030"}, 22 {"name":"20200524","price":"1990"}, 23 {"name":"20200527","price":"2005"} 24 ] 25 ] 26]}

Tree構造をそのままForce構造にするように、

  • 「サンプルデータ」からのびたリンクが「2020」と「2021」に繋がる
  • 「2020」からのリンクは「202004」「202005」に、「2021」からのリンクは「202104」「202105」に繋がる
  • 「202004」からは「20200405」「20200417」「20200405」に繋がる、他も同様に

といったForceレイアウトを作りたいと考えています。

その際、

1 .data()でどのように指定したらいいのか(.data(json,"name")ではできませんでした。当たり前かもしれませんが……)
2 あるいは階層なしのJSONデータを作り直しnodeとlinkを全て手打ちすべきなのか
3 他にもっといい方法がある

以上のことを知りたいです。
nodeにクリックアクションをつけて末端の表示させるといったこともできれば行いたいので、2番目の方法についてはあまり使いたくないと感じていますが、他に方法が思いつかないので書きました。

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

こちらを参考に解決しました

投稿2016/11/16 07:28

SHERRY

総合スコア15

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問