Pythonでベン図を表示する【set()で集合演算】

Pythonでベン図を表示する【set()で集合演算】 プログラミング

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の動作確認としてはこれで終わります。

タイトルとURLをコピーしました