4

假设我有一个有向图 G,其中每个节点代表我拥有的一些集合。有一条从 u 到 v 的边当且仅当 u 是 v 的一个子集。这个图是传递的和无环的。有许多源节点(不包含任何其他节点的节点)和一个接收器(一个包含所有其他节点的大“逆”集。)。换句话说,该图是可比图的传递方向。

我想知道的是,我可以从这个图中自动生成一个漂亮的欧拉图吗?

欧拉图类似于维恩图,但您不必显示集合之间重叠的每个组合。

一个例子是这样的(取自维基百科):

在此处输入图像描述

我确信我可以手工制作这样的图表,但我正在处理我将不断添加的大型数据集,所以我想自动化这个过程。请注意,图表的相对大小对我来说并不重要,重要的是两个区域是否重叠,是否互斥,或者一个区域是否包含在另一个区域中。

是否有允许我这样做的算法、工具或库?

请注意,我在这里问了一个类似的问题,但我的大部分回答都是 LaTeX 根本不是这项工作的正确工具。因此,我在这里问它。

4

2 回答 2

2

“欧拉图很难自动绘制,这个项目的目标是创造出第一种可以很好地绘制所有欧拉图的方法。” – 来自eulerdiagrams.com,但那里有一些链接。

除此之外,搜索Euler diagram generation似乎会带来一些结果,例如Vennerable。但从这篇2008 年的论文来看,它仍然是一个比较活跃的研究领域。

于 2013-06-18T17:49:26.387 回答
0

您可能会在这里找到您的解决方案:SageMath。这是一个非常强大的数学引擎,可以让你绘制很多图表。

于 2013-06-17T08:57:48.427 回答