▶ ベン図を描くには集合の知識が必要となります。Pythonでの集合の扱い方については以下の記事をご覧ください。
はじめに
今回はベン図を扱います。 複数の集合の関係や集合の範囲を視覚的に表す場合に用います。 Python には、matplotlib_vennというライブラリがあり、このライブラリを用いることでベン図を描くことができます。
準備
まずはライブラリをインストールします。pipで次のようにすることでインストールできます。
pip install matplotlib-venn
はじめに必要なライブラリをインポートしておきましょう。
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from matplotlib_venn import venn2
import seaborn as sns
import japanize_matplotlib
sns.set_style("whitegrid", {'grid.linestyle': '--'})
%matplotlib inline
次にデータを準備しておきましょう。ここではnumpy.random.randintを使って、data1とdata2を作ります。
# 0から100までの整数からランダムに20個選ぶ
data1=np.random.randint(0,100,20)
# 0から80までの整数からランダムに15個選ぶ
data2=np.random.randint(0,80,15)
さっそく描いてみる
では、このデータを使ってさっそく、描いてみましょう。
plt.figure(figsize=(8,6))
venn2(subsets=[set(data1),set(data2)],set_labels=('A','B'))
plt.title('製品Aと製品Bを利用している人数',fontsize=20)
plt.show()
a='A:製品Aを利用している人数'
b='B:製品Bを利用している人数'
print(a.rjust(35))
print(b.rjust(35))
きれいに描けました。A,Bの説明をprint文で入れてますが、set_labelsで直接指定することもできます。
plt.figure(figsize=(8,6))
venn2(subsets=[set(data1),set(data2)],set_labels=('A:製品Aを利用している人数','B:製品Bを利用している人数'))
plt.title('製品Aと製品Bを利用している人数',fontsize=20)
このようにsubsetsに直接、集合Aと集合Bをリスト(あるいはタプル)で与えて描くことは、もちろん、次のようにsubsetsに3つの数字を渡してベン図を描くこともできます。
plt.figure(figsize=(8,6))
venn2(subsets=[10,8,2],set_labels=('A:製品Aを利用している人数','B:製品Bを利用している人数'))
plt.title('製品Aと製品Bを利用している人数',fontsize=20)
suubsetに渡した数字がそれぞれどこに当たるのかを確認しておきましょう。1つめが左側の集合、2つめが右側の集合、3つめが共通部分となります。さっと、描きたいだけであれば、これも便利ですね。
まとめ
いかがでしたか?今回はベン図を扱いました。データの重なり具合など、集合を図示したいことは、結構ありますよね。そんなときに」きっと活躍してくれます。
▶ データの概要をつかむ強力なツール(pandas_profiling)があります。以下の記事をどうぞ。
▶ 可視化の人気記事はこちらです。決定木とランダムフォレストの可視化を解説しています。
コメント