Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
PythonでInteractive Network Graph Visualization!
Search
yamatia
July 31, 2020
1
1.5k
PythonでInteractive Network Graph Visualization!
yamatia
July 31, 2020
Tweet
Share
More Decks by yamatia
See All by yamatia
CycleGANを使ってきのこたけのこ戦争を終わらせたかった話
yamatia
0
170
20200626_Trends_in_Machine_Learning.pdf
yamatia
0
830
日本語学習済みモデルについて
yamatia
0
61
Featured
See All Featured
How to train your dragon (web standard)
notwaldorf
88
5.7k
The Cult of Friendly URLs
andyhume
78
6k
10 Git Anti Patterns You Should be Aware of
lemiorhan
654
59k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
890
Rails Girls Zürich Keynote
gr2m
94
13k
Git: the NoSQL Database
bkeepers
PRO
427
64k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
28
8.2k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
4
370
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
Navigating Team Friction
lara
183
14k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
42
9.2k
Transcript
Pythonで Interactive Network Graph Visualization @ebitia 2020/7/31 Members. data #2
データ可視化・ライブラリ LT編
whoami Ebitia - 薬学部6年 - 研究室でNLP - 最近冷やしAtCoder始めました @TwYamat
TABLE OF CONTENTS INTRODUCTION どんなグラフを 可視化したいか? TOOLS Pythonでは どんなものがある? PRACTICE
実際に 可視化してみる CONCLUSION まとめ APPENDIX おまけ 01 02 04 05 03
01 INTRODUCTION どんなグラフを可視化したいのか? - AtCoder Graph - Molecular Graph -
Word Graph
AtCoderとは? - 日本の競技プログラミングコンテ ストサイト (天才以外お断りパズルコンテストとも呼ばれる) - ほぼ毎週コンテストが無料開催 - 問題の条件を満たすプログラミン グのスピードや正確性を競う
CASE1:AtCoder
この問題文にはグラフ例が書いてあるが、書いてない問題もある 入力が複雑だとイメージできない(当社比) (他の形式として、有向/重み付き/木構造/grid/etc...) AtCoderのグラフ問題
ChEMBLから取得できる 医薬品の構造データ 構造を見れるサイト、 ツールはいろいろあるが 重み付き無向グラフとし て扱うこともできる CASE2:分子構造のグラフ
テキスト解析で、単語の関 係性を見たい場合 似た意味・関連語を近くに 置いたグラフを作成する 例えば - Jaccard係数での共起 ネットワーク可視化 - Word
embeddingを3Dグ ラフで可視化 CASE3:単語の関係性
要するに Nodeとedgeの集合として 与えられたグラフを いい感じに可視化したい (できればinteractiveに)
TOOLS pythonでグラフ可視化に使え るモジュールいろいろ紹介 02
- NetworkX - Graph-tools - python-igraph - Graphviz - pyvis
上記と組み合わせると便利なもの - webweb - netwulf Pythonでinteractive graph visualization
・意外とたくさんある ・基本的にはNetworkXでは色んなオプションがあるので 便利 ・速度比較すると、graphviz,graph-toolsよりも遅い場合 もある(微妙に) ・NetworkXにはいろいろ拡張モジュールが開発されてい るので便利 どのツールを使えばいいのか?
・Netwulfとは? NetworkXのスタイルをインタ ラクティブに設定できるモ ジュール 例:NetworkX+Netwulf
PRACTICE 実際にpythonでinteractive 03
・NetworkXで作ったグラフをpyvisでhtml化し て可視化できる [demo] NetworkX+pyvis+jupyter notebook
・最近streamlitが流行と聞いたので... [demo] NetworkX+streamlitでAtCoderの可視化
CONCLUSION 04
- Networkx+◦◦でinteractive network graph が作成できる、小さな用途では十分? - 大規模ネットワーク等では速度なども要検証 - AtCoderのグラフ可視化については今後作っ ていきたい所存(意外と奥が深かった...)
まとめ
APPENDIX 05 おまけ
NodeとEdgeの情報が与えられたとして (どのnode同士が結ばれてるか/辺の重み,向きなど) どうやったらグラフを綺麗に描画できるのか? 求めることは意外とたくさんある... ノードが重ならない方がいい、グラフの面積が大きすぎないほ うがいい、辺の交差は少ないほうがいい、辺の角度も小さすぎ ないほうがよい、etc… (余談)Graph Drawingについて①
色んな理論が研究されているが、その中でも有 力なものとして力学モデルがある 今回紹介するツールでは以下の2つが組み込ま れているものが多い ・Kamada-Kawai法 ・Fruchterman-Reingold 法 (余談)Graph Drawingについて②
今回紹介したnetworkxで は、springlayoutで Fruchterman-Reingold法 1. ランダムに頂点配置 2. 頂点間に働く力を計算 3. 頂点を力に従い移動 4.
温度tを下げる 5. 2~4を繰り返す (default=50) (余談)Graph Drawingについて③
end