Сопоставление данных таблицы/матрицы на уровне сообщества (визуальная ролевая игра)

Я ищу способ сортировки двухмерной двоичной матрицы, чтобы мы могли визуально идентифицировать "сообщества" в данных. Мой набор данных основан на членстве в группе (т.е. Списке людей и групп, к которым они принадлежат). Например:

G1 G2 G3 G4
P1 1 1 
P2 1 1 
P3 1 1
P4 1 1

Я ищу алгоритм сортировки, который даст мне это:

G1 G3 G2 G4
P1 1 1 
P2 1 1 
P3 1 1
P4 1 1

Другой пример "отсортированных" данных можно найти здесь: http://mbostock.github.com/protovis/ex/matrix.html В этом примере создатели ссылаются на "алгоритм обнаружения сообщества", используемый для сортировки. Мои данные разные, так как не будет членства между измерениями (т.е. первое измерение (люди) являются членами второго измерения (группы).

Я нашел статью, которая подробно обсуждает это: http://ricerca.mat.uniroma3.it/users/colanton/docs/visual.pdf (предупреждение: PDF)

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

Я нашел похожие обсуждения, которые могут быть полезны здесь: Сортировка бинарной 2D-матрицы? Существуют ли алгоритмы обнаружения сообщества на графиках?

1 ответ

Лучшее решение, которое я видел до сих пор, находится здесь: http://matthewlincoln.net/2014/12/20/adjacency-matrix-plots-with-r-and-ggplot2.html

Подводя итог подходу:

Одна хорошая альтернатива - визуализировать матрицу смежности, кодирующую данные о взаимоотношениях в сети, где, например, ячейка AB описывает узел присоединения к краю A к узлу B. Майк Босток реализовал это в D3, используя набор данных сети совместного использования Jacques Bretins Les Misérables, Также довольно легко создать визуализацию матрицы смежности с помощью ggplot2, но это требует, чтобы вы кусали пулю и, наконец, выяснили, как работать с упорядоченными факторами.

Он способен взять матричный график, который выглядит так:

и сортирует его по этому поводу:

licensed under cc by-sa 3.0 with attribution.