Python中实现三类DataFrame的重叠类图绘制需求
绘制多类别重叠集合可视化图(韦恩图)
针对你提供的DataFrame数据,我们可以通过统计各类别及交集的样本数量,使用matplotlib-venn库绘制重叠类图(韦恩图),实现你需要的可视化效果。
步骤说明
- 安装依赖库:
pip install pandas matplotlib matplotlib-venn
- 完整代码实现:
import pandas as pd from matplotlib_venn import venn3 import matplotlib.pyplot as plt # 构造数据 df = [[1,0,1], [1,1,0], [0,1,0], [0,1,0], [1,1,1]] column_names=["Class1","Class2","Class3"] df = pd.DataFrame(df, columns=column_names) # 统计各区域样本数 only_class1 = len(df[(df['Class1']==1) & (df['Class2']==0) & (df['Class3']==0)]) only_class2 = len(df[(df['Class1']==0) & (df['Class2']==1) & (df['Class3']==0)]) only_class3 = len(df[(df['Class1']==0) & (df['Class2']==0) & (df['Class3']==1)]) class1_class2 = len(df[(df['Class1']==1) & (df['Class2']==1) & (df['Class3']==0)]) class1_class3 = len(df[(df['Class1']==1) & (df['Class2']==0) & (df['Class3']==1)]) class2_class3 = len(df[(df['Class1']==0) & (df['Class2']==1) & (df['Class3']==1)]) all_three = len(df[(df['Class1']==1) & (df['Class2']==1) & (df['Class3']==1)]) # 绘制韦恩图 venn3(subsets=(only_class1, only_class2, class1_class2, only_class3, class1_class3, class2_class3, all_three), set_labels=('Class1', 'Class2', 'Class3')) plt.title('Class Overlap Visualization') plt.show()
效果说明
这段代码会生成一个韦恩图,其中:
- 每个圆圈代表一个类别
- 重叠区域的数字表示同时属于对应类别的样本数量
- 非重叠区域的数字表示仅属于该类别的样本数量
内容的提问来源于stack exchange,提问作者Pranab
相关产品推荐
相关产品推荐

