Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Pythonで Interactive Network Graph Visualization @ebitia 2020/7/31 Members. data #2 データ可視化・ライブラリ LT編
Slide 2
Slide 2 text
whoami Ebitia - 薬学部6年 - 研究室でNLP - 最近冷やしAtCoder始めました @TwYamat
Slide 3
Slide 3 text
TABLE OF CONTENTS INTRODUCTION どんなグラフを 可視化したいか? TOOLS Pythonでは どんなものがある? PRACTICE 実際に 可視化してみる CONCLUSION まとめ APPENDIX おまけ 01 02 04 05 03
Slide 4
Slide 4 text
01 INTRODUCTION どんなグラフを可視化したいのか? - AtCoder Graph - Molecular Graph - Word Graph
Slide 5
Slide 5 text
AtCoderとは? - 日本の競技プログラミングコンテ ストサイト (天才以外お断りパズルコンテストとも呼ばれる) - ほぼ毎週コンテストが無料開催 - 問題の条件を満たすプログラミン グのスピードや正確性を競う CASE1:AtCoder
Slide 6
Slide 6 text
この問題文にはグラフ例が書いてあるが、書いてない問題もある 入力が複雑だとイメージできない(当社比) (他の形式として、有向/重み付き/木構造/grid/etc...) AtCoderのグラフ問題
Slide 7
Slide 7 text
ChEMBLから取得できる 医薬品の構造データ 構造を見れるサイト、 ツールはいろいろあるが 重み付き無向グラフとし て扱うこともできる CASE2:分子構造のグラフ
Slide 8
Slide 8 text
テキスト解析で、単語の関 係性を見たい場合 似た意味・関連語を近くに 置いたグラフを作成する 例えば - Jaccard係数での共起 ネットワーク可視化 - Word embeddingを3Dグ ラフで可視化 CASE3:単語の関係性
Slide 9
Slide 9 text
要するに Nodeとedgeの集合として 与えられたグラフを いい感じに可視化したい (できればinteractiveに)
Slide 10
Slide 10 text
TOOLS pythonでグラフ可視化に使え るモジュールいろいろ紹介 02
Slide 11
Slide 11 text
- NetworkX - Graph-tools - python-igraph - Graphviz - pyvis 上記と組み合わせると便利なもの - webweb - netwulf Pythonでinteractive graph visualization
Slide 12
Slide 12 text
・意外とたくさんある ・基本的にはNetworkXでは色んなオプションがあるので 便利 ・速度比較すると、graphviz,graph-toolsよりも遅い場合 もある(微妙に) ・NetworkXにはいろいろ拡張モジュールが開発されてい るので便利 どのツールを使えばいいのか?
Slide 13
Slide 13 text
・Netwulfとは? NetworkXのスタイルをインタ ラクティブに設定できるモ ジュール 例:NetworkX+Netwulf
Slide 14
Slide 14 text
PRACTICE 実際にpythonでinteractive 03
Slide 15
Slide 15 text
・NetworkXで作ったグラフをpyvisでhtml化し て可視化できる [demo] NetworkX+pyvis+jupyter notebook
Slide 16
Slide 16 text
・最近streamlitが流行と聞いたので... [demo] NetworkX+streamlitでAtCoderの可視化
Slide 17
Slide 17 text
CONCLUSION 04
Slide 18
Slide 18 text
- Networkx+○○でinteractive network graph が作成できる、小さな用途では十分? - 大規模ネットワーク等では速度なども要検証 - AtCoderのグラフ可視化については今後作っ ていきたい所存(意外と奥が深かった...) まとめ
Slide 19
Slide 19 text
APPENDIX 05 おまけ
Slide 20
Slide 20 text
NodeとEdgeの情報が与えられたとして (どのnode同士が結ばれてるか/辺の重み,向きなど) どうやったらグラフを綺麗に描画できるのか? 求めることは意外とたくさんある... ノードが重ならない方がいい、グラフの面積が大きすぎないほ うがいい、辺の交差は少ないほうがいい、辺の角度も小さすぎ ないほうがよい、etc… (余談)Graph Drawingについて①
Slide 21
Slide 21 text
色んな理論が研究されているが、その中でも有 力なものとして力学モデルがある 今回紹介するツールでは以下の2つが組み込ま れているものが多い ・Kamada-Kawai法 ・Fruchterman-Reingold 法 (余談)Graph Drawingについて②
Slide 22
Slide 22 text
今回紹介したnetworkxで は、springlayoutで Fruchterman-Reingold法 1. ランダムに頂点配置 2. 頂点間に働く力を計算 3. 頂点を力に従い移動 4. 温度tを下げる 5. 2~4を繰り返す (default=50) (余談)Graph Drawingについて③
Slide 23
Slide 23 text
end