Как отобразить результаты нескольких сравнений - PullRequest
1 голос
/ 15 сентября 2009

Если вы сравниваете два набора данных (например, два файла), различия между этими наборами могут отображаться в двух столбцах или двух панелях, как это делает WinMerge.

Но существуют ли визуальные парадигмы для отображения различий между несколькими наборами данных?

Обновление

Отправной точкой моего вопроса было предположение, что отображение различий между двумя файлами является относительно простым, как я уже упоминал, WinMerge, тогда как сравнение 3 или более текстовых файлов оказывается более сложным, поскольку между ними будет все больше и больше различий скажем, разные версии документа, которые были созданы с течением времени.

Как бы вы выделили части файла, которые одинаковы в 2 версиях, но отличаются от других версий?

Наборы данных, которые я имею в виду, являются объектами (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 ]

1 голос
/ 13 января 2010

Я придерживаюсь мнения, отличного от некоторых из тех, кто предоставил ответы, т. Е. Вам необходимо дополнительно уточнить проблему. Уровень абстракции примерно правильный. Дальнейшая спецификация облегчит проблему, но решение будет менее полезным.

Пару лет назад я увидел рисунок на ProgrammableWeb - он сравнивал результаты поиска в Yahoo с результатами того же поиска в 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) случаи, когда точка в одном наборе данных отсутствует во втором наборе данных, легко показать - точка появится на одной из двух линий, но без линии, соединяющей ее с точкой на другой линии.

Эта модель хорошо подходит для сравнения результатов поиска, поскольку у каждого результата поиска есть «оценка» (свой индекс или порядок в списке результатов). Для других типов данных вам, возможно, придется присваивать оценку каждой точке данных - я мог бы предположить, что метрика подобия (в некотором смысле, это фактически порядок результатов поиска, расстояние от верхней части списка)

0 голосов
/ 16 сентября 2009

Я согласен с Питером, вы должны указать, какой тип ваших данных и что вы хотите показать в сравнении.

В зависимости от характера данных / сравнения вы можете рассмотреть различные визуализации. Ваши данные упорядочены или неупорядочены ? Сколько вещей вы сравниваете, т.е. мелкое зерно или брутто сравнение?

Примеры:

Также, посмотрите визуальная сложность , это отличный ресурс для интересной визуализации.

0 голосов
/ 08 октября 2009

Я немного поэкспериментировал и реализовал два дисплея:

0 голосов
/ 15 сентября 2009

Поскольку было так много работы по отображению различий двух файлов, вы могли бы начать с выражения «множественных наборов данных» в соответствующем текстовом формате, а затем использовать все, что вы хотите, чтобы показать различие между этими текстовыми форматами.

Но вы должны рассказать нам больше о своих наборах данных!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...