Pyvis
前回、Python作成ライブラリNetworkXの問題点を確認し、Pyvisをとりあえず試してみました。
今回からはPyvisの使い方を学んでいきますが、とりあえずはNodeとEdgeの追加の方法を勉強していきます。
Nodeとは何だ?Edgeとは何だ?という方はこちらの記事をどうぞ。
前回、NodeとEdgeはNetworkXで追加したものを、Pyvisに読み込ませましたが、今回はPyvisで追加する方法から試していきます。
それでは始めていきましょう。
NodeとEdgeを一つずつ追加する方法
まずはNodeとEdgeを一つずつ追加する方法です。
これはNetworkXの時と同じく、それぞれ「add_node」と「add_edge」で追加できます。
つまりこんな感じです。
from pyvis.network import Network
net = Network()
net.add_node('A')
net.add_node('B')
net.add_node('C')
net.add_node('D')
net.add_node('E')
net.add_edge('A','B')
net.add_edge('A','C')
net.add_edge('A','D')
net.add_edge('B','D')
net.add_edge('D','E')
net.show("pyvis2-1.html")
最初に「from pyvis.network import Network」でPyvisの「Network」のインポートをしています。
そして「net = Network()」でネットワークの新規作成です。
ちなみにNetworkXでは「G = nx.graph()」としていました。
その後、「add_node」と「add_edge」でNodeとEdgeの追加をしています。
これはNetworkXと同じですね。
最後に「net.show(“出力するHTML名”)」でネットワークのHTMLファイルを出力することができます。
出てきたHTMLファイルを開くとこんな感じのネットワーク図が出てきます。
基本的にはこんな感じで使っていきます。
複数のNode、複数のEdgeを一括で追加する方法
次にNodeとEdgeを一括で追加する方法です。
NetworkXの場合、NodeとEdgeを一括で追加するには「add_nodes_from([追加するNodeのリスト])」、Edgeでは「add_edges_from(追加するエッジのタプルのリスト)」で追加していました。
Pyvisの場合、「add_nodes(追加するNodeのリスト)」、「add_edges(追加するエッジのタプルのリスト)」で複数のNode、複数のEdgeを一括で追加することができます。
from pyvis.network import Network
net = Network()
net.add_nodes(['A','B','C','D','E'])
net.add_edges([('A','B'),('A','C'),('A','D'),('B','D'),('D','E')])
net.show("pyvis2-2.html")
実行結果
NetworkXのネットワークデータから読み込む
次に前回やった方法のおさらいです。
PyvisではNetworkXで作成したネットワークデータからも読み込み、ネットワーク図を作成することができます。
その場合は「from_nx(NetworkXで作成したネットワーク)」です。
import networkx as nx
from pyvis.network import Network
G = nx.Graph()
G.add_node('A')
G.add_node('B')
G.add_node('C')
G.add_node('D')
G.add_node('E')
G.add_edge('A','B')
G.add_edge('A','C')
G.add_edge('A','D')
G.add_edge('B','D')
G.add_edge('D','E')
net = Network()
net.from_nx(G)
net.show("pyvis2-3.html")
実行結果
PyvisでNode、Edgeを追加した図よりも、Nodeのサイズが小さく、Edgeが長くなっている感じがしますが、それでもちゃんとネットワーク図が作成できました。
これでPyvisでもNodeとEdgeが追加できるようになりました。
次回はPyvisでのNodeとEdgeの色やサイズを変える方法を試していきます。
ではでは今回はこんな感じで。
コメント