代码之家  ›  专栏  ›  技术社区  ›  devio

如何显示多次比较的结果

  •  1
  • devio  · 技术社区  · 15 年前

    如果比较两组数据(如两个文件),这些数据集之间的差异可以显示在两列或两个窗格中,如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)

    如果你比较两组,例如1组和2组,两者之间的差别将在B(c)中。比较集合2和集合3会导致差异A(c)和c()。

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

    4 回复  |  直到 15 年前
        1
  •  1
  •   Glorfindel Doug L.    5 年前

    我的观点与那些提供答案的人不同——也就是说,你需要进一步说明问题。抽象层是正确的。进一步的规范将使问题变得更容易,但解决方案却没有那么有用。

    几年前,我看到 graphic ProgrammableWeb --它比较了雅虎的搜索结果和谷歌的搜索结果。covey有很多信息:有些结果在两个集合中,有些只在一个集合中,而共同的结果在各自引擎的结果中会有不同的位置,不知何故必须显示出来。

    我喜欢这个图形,并在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)一个数据集中的一个点不在第二个数据集中的情况很容易显示——一个点将出现在两条线中的一条上,但没有一条线连接到另一条线上的一个点。

    这个模型很适合比较搜索结果,因为每个搜索结果都有一个“分数”(其索引或结果列表中的顺序)。对于其他类型的数据,您可能需要为每个数据点分配一个分数——我可能会假设一个相似性度量(在某种意义上,这就是搜索结果的顺序,与列表顶部的距离)

        2
  •  0
  •   Peter    15 年前

    由于在显示两个文件的diff方面已经做了很多工作,您可以首先用适当的文本格式表示“多个数据集”,然后使用您希望在这些文本格式之间显示diff的任何内容。

    但你应该告诉我们更多关于你的数据集!

        3
  •  0
  •   devio    15 年前

    我做了一些实验,实现了两个显示:

        4
  •  0
  •   Glorfindel Doug L.    5 年前

    我同意彼得的观点,你应该具体说明你的数据是什么类型,以及你希望在比较中显示什么。

    根据数据/比较的性质,您可以考虑不同的可视化效果。是你的数据吗 有序或无序 ? 你在比较多少东西,也就是说。 细颗粒或粗颗粒 比较?

    示例:

    还有,退房 visual complexity ,这是一个很好的可视化资源。