2016-11-25 5 views
1

У меня есть довольно large dataset с двумя колонками from, to. Я пытаюсь создать простую диаграмму сети, чтобы визуализировать взаимосвязь между различными элементами в этих двух столбцах, поэтому я попробовал этот простой пример ниже.Проблема сетевой визуализации

Source <- c("A", "A", "A", "A", "B", "B", "C", "C", "D") 
Target <- c("B", "C", "D", "J", "E", "F", "G", "H", "I") 
NetworkData <- data.frame(Source, Target) 

library(networkD3) 
simpleNetwork(NetworkData,linkColour="yellow") 

Единственное различие между примером выше и моего набора данных является то, что у меня есть 1500 строки/наблюдения в my dataset. Однако функция simpleNetwork производит гигантскую визуализацию типов подсолнечника различных ассоциаций, и это не очень приятно.

[Сеть Graph Output] [2]

Мой вопрос 1) Есть ли лучший способ визуализировать эти данные 2) Как я могу по крайней мере окрашивать целевых узлов в отличие от исходных узлов?

Любые советы или предложения очень ценятся. Заранее спасибо.

+0

Что вы ожидаете от проницательной визуализации для этого набора данных? Я имею в виду, с быстрого взгляда, кажется, есть только соединения от/до узла '435.9', которые, таким образом, становятся« центром вселенной », – lukeA

ответ

1

Чтобы ответить в целом на в первой части вопроса, различные визуализации могут иметь смысл в зависимости от того, что вы пытаетесь проиллюстрировать. Попытайтесь получить базовые описания для сети: Edge-count, плотность, avg. и вы уже далеко зашли, зная, какие реляционные данные вы просматриваете. Как отметил LukeA выше, проницательность в визуализации графа очень зависит от структуры данных сети!

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

Когда вы решили, что даст желаемое представление, окрашивая узлы является одним из ключевого визуального инструмента действительно: Что касается второй части вопроса, в networkD3 вы должны использовать NodeGroup аргумент цветовых узлов. В igraph вы назначаете вектор V(graph)$color, а в sna-пакете - аргумент vertex.col при построении с использованием gplot().

Вот ваш пример графа окрашена расстояния от A в igraph:

Source <- c("A", "A", "A", "A", "B", "B", "C", "C", "D") 
Target <- c("B", "C", "D", "J", "E", "F", "G", "H", "I") 
NetworkData <- data.frame(Source, Target) 

# Visualize using igraph 
library(igraph) 
g <- graph_from_edgelist(as.matrix(NetworkData), directed = TRUE) 

# Colour by distance from first node: 
heatmap <- colorRampPalette(c("red", "yellow"))(100) 
distance.from.first.node <- distances(g, V(g)[1]) 
V(g)$color <- heatmap[1+round(distance.from.first.node/(max(distance.from.first.node)/(length(heatmap)-1)))] 

# Plot 
plot.igraph(g) 

Я не могу думать о каких-либо точек, чтобы сделать из построения данных вы предоставили, но если вам нужно, вот это:

# Get the data you downloaded vvv(MAKE YOUR OWN PATH HERE)vvv 
data <- read.csv(file="Downloads/Network.txt", sep="|") 
# Remove your missing data 
data <- data[data[,1]!="",] 
data <- data[data[,2]!="",] 
g2 <- graph_from_edgelist(as.matrix(data), directed = TRUE) 

# Re-colour and plot: 
distance.from.first.node <- distances(g2, V(g2)[1]) 
V(g2)$color <- heatmap[1+round(distance.from.first.node/(max(distance.from.first.node)/(length(heatmap)-1)))] 

# Plot with smaller vertexes and no labels 
plot.igraph(g2, vertex.size=4, vertex.label=NA) 
Смежные вопросы