【Python基礎】Pyvisでネットワーク図作成:NodeとEdgeにラベルやタイトルを追加

  • URLをコピーしました!
目次

前回、Pythonのネットワーク作成ライブラリPyvisでNodeとEdgeの色やサイズ、太さを変更してみました。

今回はNodeやEdge名とは別にラベルをつけたり、マウスオーバーした際に表示されるタイトルをつけたりしてみます。

ということで基本のプログラムはこちら。

from pyvis.network import Network

net = Network()

net.add_node('A')
net.add_node('B')
net.add_nodes(['C', 'D', 'E'])

net.add_edge('A','B')
net.add_edge('A','C')
net.add_edges([('A','D'), ('B','D'), ('D','E')])

net.show("pyvis4-1.html")

実行結果

それでは始めていきましょう。

Nodeにラベルを追加する方法

まずはNodeにラベルを追加する方法です。

先ほどの基本のプログラムを見てみると、もうそれぞれのNodeにラベルは付けられています。

それなのにさらにラベルを追加するというのは変に感じるかもしれません。

でも「net.add_node(‘A’)」というコマンドは、「A」というNodeの作成であって、「A」というラベルをつけるという意味ではありません。

つまり「A」という名前のNodeで、表示する際は別のラベルで表示するということが今回のラベルをつけるということなのです。

その方法は「add_node(‘Node名’, label=’ラベル’)」です。

また複数のNodeを追加する「add_nodes」の場合は「add_node([Node名のリスト], label=[ラベルのリスト])」です。

from pyvis.network import Network

net = Network()

net.add_node('A', label='Node A')
net.add_node('B', label='Node B')
net.add_nodes(['C', 'D', 'E'], label=['Node C','Node D','Node E'])

net.add_edge('A','B')
net.add_edge('A','C')
net.add_edges([('A','D'), ('B','D'), ('D','E')])

net.show("pyvis4-2.html")

実行結果

Nodeにタイトルを追加する方法

次にNodeにタイトルを追加する方法です。

Pyvisでいうタイトルというのは、マウスをNodeに乗せた(マウスオーバー)際に現れるウインドウのことです。

一つずつNodeを追加する場合は「add_node(‘Node名’, title=’タイトル’)」、複数のNodeを一括で追加する場合は「add_node([Node名のリスト], title=[タイトルのリスト])」です。

from pyvis.network import Network

net = Network()

net.add_node('A', title='Node A')
net.add_node('B', title='Node B')
net.add_nodes(['C', 'D', 'E'], title=['Node C','Node D','Node E'])

net.add_edge('A','B')
net.add_edge('A','C')
net.add_edges([('A','D'), ('B','D'), ('D','E')])

net.show("pyvis4-3.html")

実行結果

Edgeにラベルを表示する方法

Edgeにラベルを表示する方法は、Nodeにラベルを表示する方法と同じで、「add_edge(’Edge名’, label=’ラベル’)」です。

ですが複数のEdgeを追加する「add_edges」には、labelのオプションはないようです。

from pyvis.network import Network

net = Network()

net.add_node('A')
net.add_node('B')
net.add_nodes(['C', 'D', 'E'])

net.add_edge('A','B', label='Edge AB')
net.add_edge('A','C', label='Edge AC')
net.add_edges([('A','D'), ('B','D'), ('D','E')], label=['Edge AD','Edge BD','Edge DE'])

net.show("pyvis4-4.html")

実行結果
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
/var/folders/sp/hg7p80kx22s7vct7yb0zl5cm0000gn/T/ipykernel_14498/127143063.py in <module>
      9 net.add_edge('A','B', label='Edge AB')
     10 net.add_edge('A','C', label='Edge AC')
---> 11 net.add_edges([('A','D'), ('B','D'), ('D','E')], label=['Edge AD','Edge BD','Edge DE'])
     12 
     13 net.show("pyvis4-4.html")

TypeError: add_edges() got an unexpected keyword argument 'label'

ということで「add_edge」だけ試してみるとこんな感じです。

from pyvis.network import Network

net = Network()

net.add_node('A')
net.add_node('B')
net.add_nodes(['C', 'D', 'E'])

net.add_edge('A','B', label='Edge AB')
net.add_edge('A','C', label='Edge AC')
net.add_edges([('A','D'), ('B','D'), ('D','E')])

net.show("pyvis4-5.html")

実行結果

Edgeにタイトルを追加する方法

Edgeにタイトルを追加するのも、Nodeにタイトルを追加するのと同じく「add_edge(‘Edge名’, title=’タイトル’)」です。

こちらも複数のEdgeを追加する「add_edges」にはtitleのオプションはないようです。

from pyvis.network import Network

net = Network()

net.add_node('A')
net.add_node('B')
net.add_nodes(['C', 'D', 'E'])

net.add_edge('A','B', title='Edge AB')
net.add_edge('A','C', title='Edge AC')
net.add_edges([('A','D'), ('B','D'), ('D','E')], title=['Edge AD','Edge BD','Edge DE'])

net.show("pyvis4-6.html")

実行結果
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
/var/folders/sp/hg7p80kx22s7vct7yb0zl5cm0000gn/T/ipykernel_14498/2550611826.py in <module>
      9 net.add_edge('A','B', title='Edge AB')
     10 net.add_edge('A','C', title='Edge AC')
---> 11 net.add_edges([('A','D'), ('B','D'), ('D','E')], title=['Edge AD','Edge BD','Edge DE'])
     12 
     13 net.show("pyvis4-6.html")

TypeError: add_edges() got an unexpected keyword argument 'title'

ということで「add_edge」のみ試してみるとこんな感じです。

from pyvis.network import Network

net = Network()

net.add_node('A')
net.add_node('B')
net.add_nodes(['C', 'D', 'E'])

net.add_edge('A','B', title='Edge AB')
net.add_edge('A','C', title='Edge AC')
net.add_edges([('A','D'), ('B','D'), ('D','E')])

net.show("pyvis4-7.html")

実行結果

これでラベルやタイトルの追加方法が分かりました。

次回は「Network」に関するオプションを見ていきましょう。

ではでは今回はこんな感じで。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次