Python 维恩图最多4个列表-输出交点和唯一集
在我的工作中,我使用了很多维恩图,到目前为止,我一直依赖于基于web的“”。这提供了导出各种交叉点(即,仅属于该特定交叉点的元素)的良好选项。此外,它还可以绘制多达4个列表的图表 问题是,使用大型列表(4K+元素)和3个以上的集合执行此操作是一项繁琐的工作(复制、粘贴、保存…)。因此,我决定将重点放在自己生成列表上,并将其用于绘图Python 维恩图最多4个列表-输出交点和唯一集,python,list,venn-diagram,Python,List,Venn Diagram,在我的工作中,我使用了很多维恩图,到目前为止,我一直依赖于基于web的“”。这提供了导出各种交叉点(即,仅属于该特定交叉点的元素)的良好选项。此外,它还可以绘制多达4个列表的图表 问题是,使用大型列表(4K+元素)和3个以上的集合执行此操作是一项繁琐的工作(复制、粘贴、保存…)。因此,我决定将重点放在自己生成列表上,并将其用于绘图 这篇冗长的介绍引出了问题的症结所在。给定3或4个部分包含相同元素的列表,我如何在Python中处理它们以获得各种集合(唯一、4通用、仅第一个和第二个通用等),如Ven
这篇冗长的介绍引出了问题的症结所在。给定3或4个部分包含相同元素的列表,我如何在Python中处理它们以获得各种集合(唯一、4通用、仅第一个和第二个通用等),如Venn图(,)所示?对于3个列表,它看起来并不难,但是对于4个列表,它会变得有些复杂。假设您有python 2.6或更高版本:
>>> from itertools import combinations
>>>
>>> data = dict(
... list1 = set(list("alphabet")),
... list2 = set(list("fiddlesticks")),
... list3 = set(list("geography")),
... list4 = set(list("bovinespongiformencephalopathy")),
... )
>>>
>>> variations = {}
>>> for i in range(len(data)):
... for v in combinations(data.keys(),i+1):
... vsets = [ data[x] for x in v ]
... variations[tuple(sorted(v))] = reduce(lambda x,y: x.intersection(y), vsets)
...
>>> for k,v in sorted(variations.items(),key=lambda x: (len(x[0]),x[0])):
... print "%r\n\t%r" % (k,v)
...
('list1',)
set(['a', 'b', 'e', 'h', 'l', 'p', 't'])
('list2',)
set(['c', 'e', 'd', 'f', 'i', 'k', 'l', 's', 't'])
('list3',)
set(['a', 'e', 'g', 'h', 'o', 'p', 'r', 'y'])
('list4',)
set(['a', 'c', 'b', 'e', 'g', 'f', 'i', 'h', 'm', 'l', 'o', 'n', 'p', 's', 'r', 't', 'v', 'y'])
('list1', 'list2')
set(['e', 'l', 't'])
('list1', 'list3')
set(['a', 'h', 'e', 'p'])
('list1', 'list4')
set(['a', 'b', 'e', 'h', 'l', 'p', 't'])
('list2', 'list3')
set(['e'])
('list2', 'list4')
set(['c', 'e', 'f', 'i', 'l', 's', 't'])
('list3', 'list4')
set(['a', 'e', 'g', 'h', 'o', 'p', 'r', 'y'])
('list1', 'list2', 'list3')
set(['e'])
('list1', 'list2', 'list4')
set(['e', 'l', 't'])
('list1', 'list3', 'list4')
set(['a', 'h', 'e', 'p'])
('list2', 'list3', 'list4')
set(['e'])
('list1', 'list2', 'list3', 'list4')
set(['e'])
你需要在图形上显示它吗?使用
set
生成数据和联合很容易,我不需要图形,因为Venny对我来说很容易,我想要一些东西来提取列表。