如何显示多重比较的结果

时间:2009-09-15 06:30:47

标签: comparison visualization data-visualization data-comparison

如果比较两组数据(例如两个文件),这些组之间的差异可以显示在两列或两个窗格中,例如WinMerge。

但是有没有可视化范例来显示多个数据集之间的差异?

更新

我的问题的出发点是假设显示两个文件之间的差异相对容易,正如我提到的WinMerge,而比较3个或更多文本文件变得更复杂,因为会有越来越多的差异比方说,随着时间的推移创建的文档的不同版本。

如何突出显示两个版本中相同但与其他版本不同的文件部分?

我想到的数据集是对象(A,B,C,...),它们可能存在也可能不存在,并且具有可以设置或不设置的属性(a,b,c,...)

示例:

集1:A(a,b,c),B(b,c),C(c)

设置2:A(a,b,c),B(b),C(c)

设置3:A(a,b),B(b)

如果您比较2套,例如在图1和2中,差异将在B(c)中。比较集合2和3导致差异A(c)和C()。

如果比较所有3组,最终得到3次比较(n *(n-1)/ 2)

4 个答案:

答案 0 :(得分:1)

我有一些不同于提供答案的人的观点 - 即,你需要进一步指明问题。抽象层次是正确的。进一步的规范会使问题更容易,但解决方案的用处不大。

几年前,我在graphic上看到ProgrammableWeb - 它将雅虎搜索结果与Google搜索结果进行了比较。有很多信息需要记录:一些结果在两个集合中,一些仅在一个集合中,并且共同结果将在相应引擎的结果中具有不同的位置,这必须以某种方式显示。

我喜欢图形并在Matplotlib(一个Python科学绘图库)中重新实现它。下面是一个使用一些随机点以及我用来生成它的python代码的例子:

from matplotlib import pyplot as PLT
xvals = NP.array([(2,3), (5,7), (8,6), (1.5,1.8), (3.0,3.8), (5.3,5.2), 
      (3.7,4.1), (2.9, 3.7), (8.4, 6.1), (7.1, 6.4)])
yvals = NP.tile( NP.array([5,3]), [10,1] )
fig = PLT.figure()
ax1 = fig.add_subplot(111)
ax1.plot(x, y, "-", lw=3, color='b')
ax1.plot(x, y2, "-", lw=3, color='b')
for a, b in zip(xvals, yvals) : ax1.plot(a,b,'-o',ms=8,mfc='orange', color='g')
PLT.axis("off")
PLT.show()

alt text

这个模型有一些有趣的特征:(i)它实际上处理每个项目的“相似性”(连接点的垂直方向线)而不是聚合相似性; (ii)两个数据点之间的相似程度与连接它们的线的角度成正比 - 如果它们相等则为90度,随着差值的增加角度减小;这非常直观; (iii)第二个数据集中不存在一个数据集中的点的情况很容易显示 - 两条线之一上会出现一个点,但没有一条线将它连接到另一条线上的一个点。

此模型适用于比较搜索结果,因为每个搜索结果都有一个“得分”(其索引或结果列表中的顺序)。对于其他类型的数据,您可能必须为每个数据点分配一个分数 - 我认为可能是相似性度量标准(从某种意义上说,这实际上是搜索结果顺序是什么,距离列表顶部的距离)

答案 1 :(得分:0)

由于显示两个文件的差异有很多工作,您可以先用适当的文本格式表示“多个数据集”,然后使用任何想要在这些文本格式之间显示差异的内容。 / p>

但是你应该告诉我们你的数据集的更多信息!

答案 2 :(得分:0)

我同意Peter的意见,您应该指明您的数据类型以及您希望在比较中提出的内容。

根据数据/比较的性质,您可以考虑不同的可视化。您的数据是有序还是无序?你比较了多少东西,即细粒度或粗略比较?

示例:

  • 可视化无序数据的比较可能只是绘制集合的两个直方图(即分布):

    histogram

    image source

  • 另一方面,比较巨大的有序数据集,如DNA can be done innovatively

另外,请查看visual complexity,这是有趣可视化的绝佳资源。

答案 3 :(得分:0)

我进行了一些实验,并实现了两个显示: