You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中实现三类DataFrame的重叠类图绘制需求

绘制多类别重叠集合可视化图(韦恩图)

针对你提供的DataFrame数据,我们可以通过统计各类别及交集的样本数量,使用matplotlib-venn库绘制重叠类图(韦恩图),实现你需要的可视化效果。

步骤说明

  1. 安装依赖库:
pip install pandas matplotlib matplotlib-venn
  1. 完整代码实现:
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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 01:55:22