У меня есть довольно большая (но довольно разреженная) матрица смежности (500x500), которую я пытаюсь визуально представить. Мне кажется, что что-то похожее на график, ориентированный на силу, - это мой лучший выбор, и, пытаясь найти лучший способ реализовать это, я наткнулся на несколько ресурсов для R. Наиболее полезной была сетевая визуализация на http://kateto.net/network-visualization Хотя я никогда раньше не использовали R, похоже, у него много полезных функций для этого вида визуализации.Правильное построение крупной матрицы смежности в R
Мне удалось создать график ниже, но изображение довольно мало и узлы уложены в стопку.
Разрешение немного лучше, если я печатаю в формате PDF, в отличие от PNG, но я до сих пор проблемы штабелирования. Поэтому мой вопрос заключается в том, как правильно построить крупную матрицу смежности в R для решения этих проблем.
Мой код до сих пор выглядит следующим образом (с несколькими несколькими строками несколько разных способов, которые я попытался построить мои данные). Любые советы приветствуются. Заранее спасибо.
Для удобства я загрузил два файла, на которые ссылается мой GitHub, здесь https://github.com/BStricklin/DataViz.
plot.new()
library('igraph')
setwd("D:/Downloads/polnet2016/Data files")
nodes2 <- read.csv("nodes.csv", header=T, as.is=T)
links2 <- read.csv("nodeAdjacency.csv", header=T, row.names=1)
links2 <- as.matrix(links2)
head(nodes2)
head(links2)
net2 <- graph_from_incidence_matrix(links2)
net2 <- graph_from_adjacency_matrix(links2, mode = "undirected", weighted = TRUE)
net2 <- simplify(net2, remove.multiple = F, remove.loops = T)
V(net2)$label <- nodes2$id
deg <- degree(net2, mode="all")
V(net2)$size <- deg*3
#plot(net2)
#plot(net2, edge.label=round(E(net2)$weight, 3))
layout <- layout.reingold.tilford(net2)
#plot.igraph(net2,vertex.size=3,layout=layout.lgl)
plot.igraph(net2,vertex.size=3,vertex.label.cex=.5,layout=layout.fruchterman.reingold(net2, niter=10000))
EDIT: Для тех, кто интересно, как я в конечном итоге делает это, я должен был использовать MATLAB и использовал граф и сюжетные функции. Он выглядел так же неприятно, как и изображение R, но с некоторой настройкой узлов и использованием функции масштабирования он работал достаточно хорошо. Я все равно был бы заинтересован в том, как это сделать в R.
Было бы интересно посмотреть график матрицы по графику https://en.wikipedia.org/wiki/Adjacency_matrix –
Вы правы @ user20650, ссылка http://kateto.net/network- визуализация – Drofdarb
@Zboson, если вы перейдете на мою страницу github, файл nodeAdjacency.csv - это график, который так сказать. Разница в том, что матрица взвешивается так, а не просто заполняется ящиками, как на странице, с которой вы связаны, номера матрицы представляют силу соединений. – Drofdarb