【问题标题】:Can I automatically generate an Euler (Venn) diagram from a containment graph [closed]我可以从包含图自动生成欧拉(维恩)图吗?
【发布时间】:2013-06-10 19:40:00
【问题描述】:

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

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

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

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

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

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

请注意,我已经问过类似的问题here,但我的大部分回答都是 LaTeX 根本不适合这项工作。因此,我在这里问它。

【问题讨论】:

  • 如果我理解正确的话,欧拉图本质上是一个不完整的维恩图。一些十字路口被认为不重要并被丢弃。你有一个标准来决定哪些交叉点不重要吗?否则,算法怎么知道?
  • 我在想除非另有说明,否则两个集合的交集将被假定为空,并且图中将忽略空的交集。

标签: graph 2d data-visualization diagram venn-diagram


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 很酷的工具,关于如何使用它绘制欧拉图的任何想法或说明?
    • 很遗憾没有,我只是帮助实现了LaTeXsupport 的一部分,但您应该很快就能找到它!
    猜你喜欢
    • 2013-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-31
    • 1970-01-01
    • 2013-01-24
    相关资源
    最近更新 更多