Xml 作为树的维恩图

Xml 作为树的维恩图,xml,data-structures,set,Xml,Data Structures,Set,为了将信息处理为XML,我面临着将Venn图表示为树结构的问题 有没有人有一个优雅的方式来做这件事,或者一些尖锐的观察 请注意,我无法处理集合中的单个元素。图表将说明相当于“总共有20名学生,其中5名学生做运动,8名学生下棋,3名学生同时做这两件事”的情况。根据您的描述,我的理解是,您谈论的是处理聚合数据(每组的计数),而不是离散项目。因此,基于这个假设,我将首先看看另一个代码库是如何表示Venn图的(GoogleChartAPI) GoogleChartAPI使用七个值表示Venn图。我从这里

为了将信息处理为XML,我面临着将Venn图表示为树结构的问题

有没有人有一个优雅的方式来做这件事,或者一些尖锐的观察


请注意,我无法处理集合中的单个元素。图表将说明相当于“总共有20名学生,其中5名学生做运动,8名学生下棋,3名学生同时做这两件事”的情况。

根据您的描述,我的理解是,您谈论的是处理聚合数据(每组的计数),而不是离散项目。因此,基于这个假设,我将首先看看另一个代码库是如何表示Venn图的(GoogleChartAPI)

GoogleChartAPI使用七个值表示Venn图。我从这里摘录了以下描述:

  • 前三个值指定三个圆的大小:A、B和C。对于只有两个圆的图表,请为第三个值指定零
  • 第四个值指定A和B交点的大小
  • 第五个值指定A和C交点的大小。对于只有两个圆的图表,不要在此处指定值
  • 第六个值指定B和C交点的大小。对于只有两个圆的图表,不要在此处指定值
  • 第七个值指定A、B和C的公共交点的大小。对于只有两个圆的图表,不要在此处指定值
我们可以采用相同的方法以XML表示您的问题域:

<venn_diagram item_type="Students" item_count="20">
    <set_a name="Play Sports" item_count="5"/>
    <set_b name="Play Chess" item_count="8"/>
    <set_a_and_b name="Play Both" item_count="3"/>
</venn_diagram>


有了这些信息,您就有足够的知识来绘制图表。

正如其他人所指出的,您需要知道的并不清楚,但您已经提供了一些您必须知道的内容。请注意,维恩图以类似于布尔语句析取范式的方式表示数据。也就是说,宇宙是由集合及其互补项之间的交集定义的不相交集合的联合。例如,对于集合A、B和C,可以得到以下计数(其中单引号表示“恭维”):

您可能会注意到,这些是集合名称上的二进制值。。所以,基本上,如果你在N个集合之间有一个维恩图,你需要知道2^N个计数。由此,你可以重建你想要的所有信息。(例如,“A”是ABC union ABC“union AB'C union AB'C”的集合)

从这里开始,表示为XML文件只是一个练习——您需要知道有多少个集合,它们的名称,每个非零交集的计数,以及在交集中哪些集合是互补的。(如果愿意,可以更明确地存储,但XML已经非常简洁。)


希望这能有所帮助——即使很晚了

为什么是一棵树?这没有多大意义,除非你有许多类别作为其他类别的超集。我认为Kris只是意味着xml是一个树结构。@Tom完全正确!这就是我所提供的工具。@marcog超级子集关系很好地表示为一个树结构-重叠很棘手!:D@Kris当前位置您仍在寻求解决此问题吗?
A B C
A B C'
A B'C
A B'C'
A'B C
A'B C'
A'B'C
A'B'C'