【Python基礎】Pyvisでネットワーク図作成:Nodeの形を変更

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

Pyvis

前回、Pythonでネットワーク作成ライブラリPyvisでNetworkのオプションを色々と試してみました。

今回はNodeの形を色々と変更してみたいと思いますが、今回は基本のプログラムはなしです。

Nodeの形の変更

Pyvisで選択できるNodeの形は大きく分けて3種類あります。

一つはNodeの画像の中にラベルが表示されるタイプ、もう一つはNodeの画像の外にラベルが表示されるタイプです。

またNodeの画像の外にラベルが表示されるタイプでは、画像を外部から読み込み表示する形状があります。

ということでこれら3種類を別々に見ていきましょう。

画像の中にラベルが表示されるタイプ

まずは画像の中にラベルが表示されるタイプです。

このタイプには以下の5種類の形状があります。

  • ellipse:楕円
  • circle:円
  • database:データベースを示す円柱
  • box:四角
  • text:テキストのみ

これらは「add_node」のオプションに「shape」を追加し、指定します。

from pyvis.network import Network

net = Network()

net.add_node('A', shape='ellipse')
net.add_node('B', shape='circle')
net.add_node('C', shape='database')
net.add_node('D', shape='box')
net.add_node('E', shape='text')

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

実行結果

画像の外にラベルが表示されるタイプ

Nodeの画像の外にラベルが表示されるタイプは以下の6種類があります。

  • diamond:ダイヤモンド
  • dot:ドット
  • star:星形
  • triangle:三角形
  • triangleDown:下向き三角形
  • square:四角

こちらの場合も「add_node」のオプションに「shape」を追加し、指定します。

from pyvis.network import Network

net = Network()

net.add_node('F', shape='diamond')
net.add_node('G', shape='dot')
net.add_node('H', shape='star')
net.add_node('I', shape='triangle')
net.add_node('J', shape='triangleDown')
net.add_node('K', shape='square')

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

実行結果

画像を読み込み表示するタイプ

画像を読み込み表示するタイプには以下の3種類があります。

  • image:画像
  • circularImage:円形の画像
  • icon:アイコン

「image」と「circularImage」は「add_node」のオプションに「shape」と「image」を追加します。

「shape」はこれまで同様形状の指定で、「image」は画像のパスの指定です。

from pyvis.network import Network

net = Network()

net.add_node('L', shape='image', image='./nori.png')
net.add_node('M', shape='circularImage', image='./nori.png')

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

実行結果

「icon」に関してはどうやら事前にアイコンを設定する必要があるようで、結構手順が複雑そうなので、また必要に応じて試してみたいと思います。

参考までに英語ですが、手順はこちらで紹介されていますので、よかったらどうぞ。

shapeはadd_nodesでは使えない

ここまでNodeを一つずつ追加する「add_node」でNodeの形状を色々と操作してきましたが、複数のNodeを追加する「add_nodes」でも「shape」のオプションは使えるのでしょうか。

ということで試してみました。

from pyvis.network import Network

net = Network()

net.add_nodes(['A', 'B', 'C'], shape=['ellipse', 'circle', 'database'])

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

実行結果
---------------------------------------------------------------------------
AssertionError                            Traceback (most recent call last)
/var/folders/sp/hg7p80kx22s7vct7yb0zl5cm0000gn/T/ipykernel_21852/3157553135.py in <module>
      3 net = Network()
      4 
----> 5 net.add_nodes(['A', 'B', 'C'], shape=['ellipse', 'circle', 'database'])
      6 
      7 net.show("pyvis6-4.html")

~/opt/anaconda3/lib/python3.8/site-packages/pyvis/network.py in add_nodes(self, nodes, **kwargs)
    242         valid_args = ["size", "value", "title", "x", "y", "label", "color"]
    243         for k in kwargs:
--> 244             assert k in valid_args, "invalid arg '" + k + "'"
    245 
    246         nd = defaultdict(dict)

AssertionError: invalid arg 'shape'

残念ながら「add_nodes」には「shape」のオプションは無いようです。

次回はPyvisで特徴的な操作パネルを試していきたいと思います。

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

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

コメント

コメントする

目次