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で特徴的な操作パネルを試していきたいと思います。
ではでは今回はこんな感じで。
コメント