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.7k
PythonでInteractive Network Graph Visualization!
yamatia
July 31, 2020
Tweet
Share
More Decks by yamatia
See All by yamatia
CycleGANを使ってきのこたけのこ戦争を終わらせたかった話
yamatia
0
210
20200626_Trends_in_Machine_Learning.pdf
yamatia
0
900
日本語学習済みモデルについて
yamatia
0
71
Featured
See All Featured
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
2.8k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
1
100
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.5k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
130
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
61
48k
From π to Pie charts
rasagy
0
100
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
41
Speed Design
sergeychernyshev
33
1.5k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
0
34
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
59
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.1k
Building Applications with DynamoDB
mza
96
6.9k
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