【Python基礎】Pyvisでネットワーク図作成:NodeとEdgeの色やサイズ、太さの変更

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

Pyvis

前回、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("pyvis3-1.html")

Nodeの追加もEdgeの追加も、一つずつ追加する「add_node」、「add_edge」、複数のNode、Edgeを追加する「add_nodes」、「add_edges」を準備してみました。

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

Nodeの色を変える方法

まずはNodeの色を変えてみましょう。

Nodeの色を変えるには「add_node」か「add_nodes」のオプションに「color」を追加します。

複数のNodeを追加する「add_nodes」の場合はリストで指定します。

from pyvis.network import Network

net = Network()

net.add_node('A', color='Red')
net.add_node('B', color='Green')
net.add_nodes(['C', 'D', 'E'], color=['Blue', 'Purple', 'Magenta'])

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

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

実行結果

Edgeの色を変える方法

次にEdgeの色を変える方法です。

こちらはEdgeを一つずつ追加する「add_edge」では「color」のオプションが使えますが、複数のEdgeを追加する「add_nodes」には「color」のオプションは使えないようです。

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', color='Red')
net.add_edge('A','C', color='Green')
net.add_edges([('A','D'), ('B','D'), ('D','E')], color=['Blue', 'Purple', 'Magenta'])

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

実行結果
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
/var/folders/sp/hg7p80kx22s7vct7yb0zl5cm0000gn/T/ipykernel_13871/132216787.py in <module>
      9 net.add_edge('A','B', color='Red')
     10 net.add_edge('A','C', color='Green')
---> 11 net.add_edges([('A','D'), ('B','D'), ('D','E')], color=['Blue', 'Purple', 'Magenta'])
     12 
     13 net.show("pyvis3-3.html")

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

ということで「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', color='Red')
net.add_edge('A','C', color='Green')
net.add_edges([('A','D'), ('B','D'), ('D','E')])

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

実行結果

Nodeのサイズを変更する方法

Nodeのサイズを変更するには、「add_node」または「add_nodes」のオプションに「size」を追加します。

複数のNodeを追加する「add_nodes」の場合はリストで指定します。

from pyvis.network import Network

net = Network()

net.add_node('A', size=10)
net.add_node('B', size=20)
net.add_nodes(['C', 'D', 'E'], size=[30, 40, 50])

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

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

実行結果

また「size」ではなく、「value」というオプションを使ってもNodeのサイズを変更できます。

使い分けに関しては今のところ分かりません。

from pyvis.network import Network

net = Network()

net.add_node('A', value=10)
net.add_node('B', value=20)
net.add_nodes(['C', 'D', 'E'], value=[30, 40, 50])

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

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

実行結果

同じ値で指定しても「value」で指定した方がNodeのサイズは少し小さく見えます。

ちなみにどちらもデフォルトの値は30だと思われます。

Edgeの太さを変える方法

Edgeの太さを変えるには、「add_edge」のオプションに「width」を追加します。

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

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', width=1)
net.add_edge('A','C', width=2)
net.add_edges([('A','D'), ('B','D'), ('D','E')], width=[3, 4, 5])
net.show("pyvis3-7.html")

実行結果
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
/var/folders/sp/hg7p80kx22s7vct7yb0zl5cm0000gn/T/ipykernel_13871/2399144130.py in <module>
      9 net.add_edge('A','B', width=1)
     10 net.add_edge('A','C', width=2)
---> 11 net.add_edges([('A','D'), ('B','D'), ('D','E')], width=[3, 4, 5])
     12 net.show("pyvis3-6.html")

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

ということで「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', width=4)
net.add_edge('A','C', width=5)
net.add_edges([('A','D'), ('B','D'), ('D','E')])
net.show("pyvis3-8.html")

実行結果

またEdgeの太さに関しても「value」のオプションで変えられますが、多分目的とした使い方ではないので、うまく表示できていません。

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', value=4)
net.add_edge('A','C', value=5)
net.add_edges([('A','D'), ('B','D'), ('D','E')])
net.show("pyvis3-9.html")

実行結果

PyvisでNodeやEdgeの色やサイズ、太さを変える方法はこんな感じです。

次回はNodeとEdgeにラベルやマウスオーバーで表示されるタイトルを追加する方法を試していきましょう。

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

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

コメント

コメントする

目次