Pythonでベン図を描くことができます。
そのためには、matplotlib-vennが必要となります。
本記事の内容
- matplotlib-vennとは?
- matplotlib-vennのシステム要件
- matplotlib-vennのインストール
- matplotlib-vennの動作確認
それでは、上記に沿って解説していきましょう。
matplotlib-vennとは?
matplotlib-vennのGitHubページ
https://github.com/konstantint/matplotlib-venn
上記ページでは、ベン図を描くルーチン(処理のかたまり)と説明されています。
Matplotlibライブラリに依存する形で存在しているからでしょうかね。
依存ライブラリを確認しておきます。
- Matplotlib
- Numpy
- Scipy
では、このmatplotlib-vennが動く環境を確認します。
matplotlib-vennのシステム要件
matplotlib-vennの最新バージョンは、0.11.6となります。
この最新バージョンは、2020年10月24日にリリースされています。
サポートOSに関しては、以下を含むクロスプラットフォーム対応です。
- Windows
- macOS
- Linux
基本的には、Pythonが動けばOSは問いません。
あとは、依存するライブラリ次第でしょう。
また、Pythonのバージョンに関しては以下のように記載されています。
- Python 2系
- Python 3系
ここまでアバウトなモノもなかなか目にすることがありません。
でも、実際のところは動くのでしょう。
ちなみに、検証する環境のPythonバージョンは以下。
>python -V Python 3.8.6
以上、matplotlib-vennのシステム要件でした。
では、matplotlib-vennをインストールしていきましょう。
matplotlib-vennのインストール
最初に、現状のインストール済みパッケージを確認しておきます。
>pip list Package Version ---------- ------- pip 21.0.1 setuptools 52.0.0
次にするべきことは、pip自体の更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。
python -m pip install --upgrade pip
では、matplotlib-vennのインストールです。
matplotlib-vennのインストールは、以下のコマンドとなります。
pip install matplotlib-venn
インストールは、すぐに終わります。
では、どんなパッケージがインストールされたのかを確認しましょう。
>pip list Package Version --------------- ------- cycler 0.10.0 kiwisolver 1.3.1 matplotlib 3.3.4 matplotlib-venn 0.11.6 numpy 1.20.0 Pillow 8.1.0 pip 21.0.1 pyparsing 2.4.7 python-dateutil 2.8.1 scipy 1.6.0 setuptools 52.0.0 six 1.15.0
これまた、たくさんパッケージがインストールされましたね。
依存ライブラリが依存するライブラリも入れたら、こうなるのでしょう。
とにかく、これほど多くのライブラリと依存関係があるということです。
ベン図という特殊な図を出力する以上は、これも仕方がないでしょうね。
最後に、matplotlib-vennの動作確認を行いましょう。
matplotlib-vennの動作確認
以下がサンプルコードです。
from matplotlib_venn import venn2 import matplotlib.pyplot as plt venn2(subsets=(5, 6, 2), set_labels=('A', 'B')) plt.title("TEST") plt.savefig("test.png")
上記プログラムを実行すると、次の画像が作成されます。
無事にベン図の画像が作成されれば、matplotlib-vennの動作確認は完了です。
ただ、このサンプルはイメージが掴みにです。
公式では、この形式がサンプルで記載されています。
次の数字が、各領域の面積を表すモノとはなかなかわかりません。
subsets=(5, 6, 2)
そのため、イメージしやすいベン図作成のサンプルを用意しました。
from matplotlib_venn import venn2 import matplotlib.pyplot as plt venn2([set([2, 4, 6, 8, 10, 12]), set([3, 6, 9, 12])], set_labels=('A', 'B')) plt.title("TEST2") plt.savefig("test2.png")
上記コードを実行すると、次の画像が作成されます。
こっちのコードの方が、イメージしやすいかもしれません。
Ab(桃色)は、[2,4,8,10]の4つ。
aB(緑色)は、[2,9]の2つ。
AB(肌色)は、[6,12]の2つ。
以上、matplotlib-vennの動作確認としてはこれで終わります。