假设我有一个有向图G,其中每个节点代表我得到的一些集合。 如果u是v的子集,则从u到v有一个边缘。 该图是传递的和非循环的。有许多源节点(不包含任何其他节点的节点)和一个接收器(一个大的#34;反向"集合包含所有其他节点的联合。)。 换句话说,此图表是comparability graph的传递方向。
我想知道的是,我可以从这张图中自动生成漂亮的欧拉图吗?
Euler diagram就像一个维恩图,但你不必显示这些集合之间的每个重叠组合。
一个例子是这样的(取自维基百科):
我确信我可以手工制作这样的图表,但我处理的是大型数据集 我将不断添加,所以我想自动化这个过程。 请注意,图表的相对大小对我来说并不重要, 只是两个区域重叠,是互斥的,还是一个区域包含另一个区域。
是否有允许我这样做的算法,工具或库?
请注意,我已经问了类似的问题here,但我的大部分回答都认为LaTeX根本不适合这项工作。因此,我在这里问。
答案 0 :(得分:2)
“Euler图很难自动绘制,这个项目的目标是生成第一种很好地绘制所有Euler图的方法。” - 来自eulerdiagrams.com,但有一些链接。
除此之外,搜索Euler diagram generation
似乎会带来一些结果,例如Vennerable。但从这个2008 paper来看,它仍然是一个相当活跃的研究领域。
答案 1 :(得分:0)
您可以在此处找到解决方案:SageMath
。这是一个非常强大的数学引擎,可以让你绘制很多图表。