2016-11-03 36 views
1

Я пытаюсь создать простой forceNetwork, но сюжет не будет отображаться. Я получаю следующее предупреждение:forceNetwork не нуль проиндексирован

Warning message: It looks like Source/Target is not zero-indexed. This is required in JavaScript and so your plot may not render.

Как это исправить? Обратите внимание, что simpleNetwork отлично работает, поэтому проблема заключается в том, как я указываю свои данные.

library(igraph) 
library(networkD3) 
set.seed(42) 
temp<-data.frame(source=c(1,2,3,4),target=c(2,3,4,4))#csv[1:500,] 

links<-data.frame(source=temp$source,target=temp$target) 
g<-graph.data.frame(cbind(temp$source,temp$target), directed=T) 
nodes<-data.frame(name=1:length(V(g)),group=1) 

forceNetwork(Links=links,Nodes = nodes, 
      Source = 'source', Target = 'target', 
      NodeID = 'name', Group = 'group') 

simpleNetwork(temp) 

ответ

4

Поскольку networkD3 использует JavaScript, что вам нужно, чтобы начать индексацию с 0, а не 1 для ссылок. Просто вычитайте 1 из ваших узлов/ссылок на reindex:

links = links-1 
nodes$name = nodes$name-1 #might want to re-index nodes, too 
forceNetwork(Links=links,Nodes = nodes, 
      Source = 'source', Target = 'target', 
      NodeID = 'name', Group = 'group')