Volume Rendering
Volume Renderingを使うと、3次元表示をいろいろと変化させることができます。
[ソースコード]
1 | import dash |
[ブラウザで表示]
画面左上にボリュームコントローラが表示され、このコントローラを操作することにより3次元表示をいろいろと変化させることができるようになりました。
Volume Renderingを使うと、3次元表示をいろいろと変化させることができます。
[ソースコード]
1 | import dash |
[ブラウザで表示]
画面左上にボリュームコントローラが表示され、このコントローラを操作することにより3次元表示をいろいろと変化させることができるようになりました。
Dash VTKは、VTKによるビジュアライゼーションをDashフレームワークの中で実現します。
VTKはVisualization Toolkitを意味しており、主に医療分野でのデータビジュアライゼーションを実現するライブラリです。
特にシミュレーションやセンサーからのデータを、3次元に表現する際によく使われています。
Dash VTKをインストールするためには、次のコマンドを実行します。
[コマンド]
1 | pip install dash_vtk |
Dash VTKを使った最も簡単なサンプルコードは下記の通りです。
[ソースコード]
1 | import dash |
[ブラウザで表示]
立方体が表示され、ドラッグすると角度を変えて表示することができます。
mouseoverEdgeDataを使うと、カーソルをのせたエッジのデータ辞書を取得することができます。
コールバック関数の入力(Input)にmouseoverEdgeDataを指定します。(41行目)
[ソースコード]
1 | import json |
取得したエッジの情報は、json.dumps関数を使って文字列に変換しています。(44行目)
[ブラウザで表示]
カーソルを移動してエッジに合わせると、そのエッジの情報がブラウザ下部に表示されることを確認できます。
mouseoverNodeDataを使うと、カーソルをのせたノードのデータ辞書を取得することができます。
コールバック関数の入力(Input)にmouseoverNodeDataを指定します。(41行目)
[ソースコード]
1 | import json |
上記ソースでは、カーソルをのせたノードのラベルを表示しています。
[ブラウザで表示]
カーソルを移動してノードに合わせると、そのノードのラベルがブラウザ下部に表示されることを確認できます。
tapEdgeDataを使って、クリックしたエッジのデータ辞書を取得します。
コールバック関数の入力(Input)にtapEdgeDataを指定しています。(62行目)
[ソースコード]
1 | import json |
取得したエッジ情報は、json.dumps関数を使って文字列に変換しています。(64行目)
[ブラウザで表示]
エッジをクリックするとそのエッジの情報がブラウザ下部に表示されることを確認できます。
tapNodeDataを使って、クリックしたノードのデータ辞書を取得します。
コールバック関数の入力(Input)にtapNodeDataを指定しています。(63行目)
[ソースコード]
1 | import json |
取得したノード情報は、json.dumps関数を使って文字列に変換しています。(65行目)
[ブラウザで表示]
ノードをクリックするとそのノードの情報がブラウザ下部に表示されることを確認できます。
ノードやエッジなどDash Cytoscapeコンポーネントに対する操作をトリガーに、ネットワーク図やほかのコンポーネントを変化させることができます。
このようなコールバックのことをイベントコールバックと呼びます。
イベントコールバックを一覧にまとめます。
| イベント | 内容 |
|---|---|
| tapNode | クリックしたノードの要素辞書全体を取得する。 |
| tapNodeData | クリックしたノードのデータ辞書を取得する。 |
| tapEdge | クリックしたエッジの要素辞書全体を取得する。 |
| tapEgdeData | クリックしたエッジのデータ辞書を取得する。 |
| mouseoverNodeData | マウスオーバーしたノードのデータ辞書を取得する。 |
| mouseoverEdgeData | マウスオーバーしたエッジのデータ辞書を取得する。 |
| selectedNodeData | 選択したノードのデータ辞書を取得する。 |
| selectedEdgeData | 選択したエッジのデータ辞書を取得する。 |
次回からはイベントコールバックを使ったサンプルを実行していきます。
今回はコールバックを使って、ノードの追加と削除を行います。
[ソースコード]
1 | import dash |
コールバック関数(update_elements)では、現在表示されているノード(current_nodes)と削除済みのノード(deleted_nodes)を管理しています。
追加ボタンがクリックされた場合は、削除済みノードの1つを表示ノードにし、エッジ(ノードとノードを結ぶ線)も合わせて表示します。
削除ボタンがクリックされた場合は、表示ノードの1つを削除済みノードとして、エッジと合わせて非表示にします。
[ブラウザで表示]
Add Nodeボタンを押すとノードが追加され、Remove Nodeボタンを押すとノードが削除されることを確認できます。
コールバックを使うと、ユーザ操作をトリガーにしてDash Cytoscapeのコンポーネントを変化させることができます。
コールバックを作成する手順は次の通りです。
ドロップダウンリストで、ノードのレイアウトを変更することができるサンプルソースは下記の通りです。
[ソースコード]
1 | import dash |
コルバック関数は 62~68行目 で定義しています。
ドロップダウンリストの値を入力として、その入力値をノードのレイアウトとして設定しています。
[ブラウザで表示]
ブラウザ上部にドロップダウンリストが表示され、レイアウトを選択するとノードの配置が変更されます。
レイアウト辞書の“name”キーに“random”を指定すると、ノードをランダムに配置することができます。(50行目)
[ソースコード]
1 | import dash |
[ブラウザで表示]
リロードするたびにノードがランダムに配置されることを確認できます。