Pythonだけで動的なネットワーク図を作成できるのを知っていますか?
Pyvisを使えば、JavaScriptのスキルがなくても動的コンテンツを作成できます。
本記事の内容
- Pyvisとは?
- Pyvisのシステム要件
- Pyvisのインストール
- Pyvisの動作確認
それでは、上記に沿って解説していきます。
Pyvisとは?
Pyvisとは、ネットワーク図を作成するPythonライブラリです。
正確には、ネットワーク図を表示するhtmlファイルを作成します。
htmlファイルは、次のようなコンテンツになります。
このコンテンツは、拡大縮小・移動が可能なネットワーク図です。
このhtmlファイルには、 次のような記述があります。
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/vis/4.16.1/vis-network.min.js"> </script>
この記述により、vis.jsを利用していることがわかります。
vis.js公式
https://visjs.org/
vis.jsは、ネットワーク図を表示するJavaScriptライブラリです。
JavaScriptを利用しているから、動的なコンテンツが実現できます。
よって、Pyvisが直接動的なネットワーク図を作成しているわけではありません。
Pyvisは、動的コンテンツを実現するhtml(js読み込み、jsonの表示)を作成しているだけです。
Pyvisのイメージは、つかめたでしょうか?
スキル的にPythonだけ完結できるのが、Pyvisを使う利点になります。
私は、JavaScript歴はかなり長いです。
スキル的には、JavaScriptの利用には全く問題ありません。
でも、Pyvisは便利だと感じます。
Pythonでjsonを出力して、それをajaxで読み込む手間がなくなりますからね。
その意味では、Pyvisは多くの方面で需要があるライブラリでしょう。
例えば、JupyterLab(Jupyter Notebook)上でネットワーク図を使ったプレゼンが可能になります。
JupyterLabについては、次の記事で説明しています。
以上、Pyvisの説明でした。
次は、Pyvisのシステム要件を確認します。
Pyvisのシステム要件
現時点(2021年7月)でのPyvisの最新バージョンは、0.1.9となります。
この最新バージョンは、2021年3月3日にリリースされています。
GitHubなどの公式ページには、サポートOSの記載はありません。
しかし、サポートOSに関しては以下を含むクロスプラットフォーム対応のはずです。
- Windows
- macOS
- Linux
ソースを見る限り、環境(OS)依存の記述はありません。
実際に、WindowsとLinux(Ubuntu)で検証しました。
Linuxで動けば、基本的にはmacOSも問題ないはずです。
また、サポート対象となるPythonのバージョンに関しても同様です。
特に記述がありません。
このような場合は、依存パッケージのサポート状況を確認しましょう。
Pyvisが依存しているパッケージは以下です。
- networkx
- jinja2
- ipython
- jsonpickle
上記パッケージのサポート状況を見ると、Python 3.6以降であれば問題なさそうです。
また、そこそこ大きなライブラリに依存していることがわかります。
networkxについては、次の記事で説明しています。
jinja2については、次の記事でまとめています。
バージョンに話を戻すと、ここではPython 3.6以降をおススメしておきます。
これは、Pythonの公式開発サイクルに準じてもいます。
バージョン | リリース日 | サポート期限 |
3.6 | 2016年12月23日 | 2021年12月 |
3.7 | 2018年6月27日 | 2023年6月 |
3.8 | 2019年10月14日 | 2024年10月 |
3.9 | 2020年10月5日 | 2025年10月 |
上記は、Pythonの公式開発サイクルです。
このサイクルに準じていれば、サポート状況として十分でしょう。
なお、私は以下のバージョンのPythonで検証しています。
>python -V Python 3.9.5
以上、Pyvisのシステム要件の説明でした。
次は、Pyvisをインストールしていきます。
Pyvisのインストール
まずは、現状のインストール済みパッケージを確認しておきます。
>pip list Package Version ---------- ------- pip 21.1.3 setuptools 57.0.0
次にするべきことは、pipとsetuptoolsの更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。
python -m pip install --upgrade pip setuptools
では、Pyvisのインストールです。
Pyvisのインストールは、以下のコマンドとなります。
pip install pyvis
インストールは、しばらく時間がかかります。
では、どんなパッケージがインストールされたのかを確認しましょう。
>pip list Package Version ----------------- ------- backcall 0.2.0 colorama 0.4.4 decorator 4.4.2 ipython 7.25.0 ipython-genutils 0.2.0 jedi 0.18.0 Jinja2 3.0.1 jsonpickle 2.0.0 MarkupSafe 2.0.1 matplotlib-inline 0.1.2 networkx 2.5.1 parso 0.8.2 pickleshare 0.7.5 pip 21.1.3 prompt-toolkit 3.0.19 Pygments 2.9.0 pyvis 0.1.9 setuptools 57.0.0 traitlets 5.0.5 wcwidth 0.2.5
かなりの数のパッケージが、インストールされました。
これだけ多くのパッケージと依存関係があれば、導入が容易とは言えません。
インストールに失敗した場合や環境を汚したくない場合は、仮想環境を利用しましょう。
仮想環境に関しては、次の記事で解説しています。
仮想環境を知らない人がいたら、伝えておきます。
仮想環境という言葉にビビる必要なんてありません。
Pythonの標準機能により、簡単に仮想環境を構築できます。
個人的には、Pyvisは仮想環境へのインストールをおススメします。
以上、Pyvisのインストールについて説明しました。
最後に、Pyvisの動作確認を行います。
Pyvisの動作確認
公式のサンプルを利用しましょう。
from pyvis.network import Network g = Network() g.add_node(0) g.add_node(1) g.add_edge(0, 1) g.show("basic.html")
上記コードを実行すると、同一フォルダ上に「basic.html」が保存されます。
同時に、ブラウザが起動することがあります。
ただし、これはブラウザが対応している場合です。
表示されているのは、「basic.html」となります。
上記のネットワーク図が確認できたら、Pyvisの動作確認は成功です。
以上、Pyvisの動作確認についての説明でした。