В R есть ли функция, аналогичная heatmap () для визуализации групп в большой матрице? - PullRequest
0 голосов
/ 21 мая 2018

У меня в настоящее время матрица 1000 by 1000 в R. В матрице 100 групп / сообществ, и я хочу как-то проверить, появляются ли эти 100 групп.Например, первые 10 столбцов / строк определяют группу, вторые 10 столбцов / строк определяют другую группу и т. Д.

Есть ли способ, которым я могу представить, что такая группировка действительно существует?В идеале, у меня была бы тепловая карта, которая может показывать диагональные блоки 10 by 10.Я попробовал функцию heatmap, но, похоже, она этого не делает.

У кого-нибудь есть здесь идеи?

1 Ответ

0 голосов
/ 21 мая 2018

Я не уверен, почему вы говорите, что heatmap "похоже, не делает этого".Кажется, это работает для меня.Я предполагаю, что ваша матрица является матрицей смежности.Я приведу очень простой пример, где есть 100 высокосвязанных групп из 10 узлов, но между группами мало связей.

Пример данных

## First generate the graph
set.seed(1234)
GX = erdos.renyi.game(10,0.8)
for(i in 1:99) {
    GX = GX + erdos.renyi.game(10,0.8) }

for(i in 0:99) {
    rv = sample(10,2)
    GX = add.edges(GX, c(i*10+rv[1], ((i+1)*10+rv[2]) %% 1000)) } 

## Now we need the adjacency matrix
AM = as.matrix(as_adjacency_matrix(GX))

Я собираюсь построить эту матрицу двумя способами.Во-первых, просто нарисуйте его.

heatmap(AM, Rowv=NA, Colv=NA, col=terrain.colors(16),
    labRow=FALSE, labCol=FALSE, revC=TRUE)

Heatmap01

Это делает то, что он должен делать, но пытается поместить изображение 1000 x 1000 наэкран компьютера 2000 x 1000 не может быть очень хорошим.Хотя группы расположены по диагонали, очень трудно увидеть что-либо в этом размере.Вместо этого давайте просто рассмотрим верхнюю левую часть 100 x 100 (первые 10 групп), чтобы увеличить размер.

heatmap(AM[1:100, 1:100], Rowv=NA, Colv=NA, col=terrain.colors(16),
    labRow=FALSE, labCol=FALSE, revC=TRUE)

Heatmap02

Это легкоувидеть 10 сильно связанных групп из 10 и просто намек на связь между группами.

Чтобы увидеть что-либо с такой большой матрицей, вам нужно будет увеличить.

...