我正在尝试使用网络流量数据制作交互式网站流量图。
使用 networkd3 软件包。
这只是一个simpleNetwork
,但是不断给我这个警告并强制关闭 RStudio。
library(networkD3)
simpleNetwork(data.frame(BWT2012$Visitors, 1:189157, fontSize = 16, nodeColour = "blue", nodeClickColour = "red", textColour = "black", opacity = 0.6, zoom = T))
警告消息:源/目标似乎未编制零索引。这 在 Javascript 中是必需的,因此您的绘图可能无法渲染。
我已经研究了几个小时,但似乎找不到它是如何工作的。我知道 javascript 从 0 读取,r 从 1 读取。这就是为什么它不起作用的原因。
-
任何人都很难帮助您,因为您没有提供可重现的示例,即我们不知道您的数据框
BWT2012
是什么样子的 -
您的代码中似乎有一个错误... 无论
BWT2012
是什么样子,data.frame(BWT2012$Visitors, 1:189157, fontSize = 16, nodeColour = "blue", nodeClickColour = "red", textColour = "black", opacity = 0.6, zoom = T)
都不起作用,因为您要将不同长度的元素传递给data.frame
函数。我怀疑你的意思是让它simpleNetwork(data.frame(BWT2012$Visitors, 1:189157), fontSize = 16, nodeColour = "blue", nodeClickColour = "red", textColour = "black", opacity = 0.6, zoom = T)
,其中simpleNetwork()
函数的第一个参数是一个完整的data.frame()
,BWT2012$Visitors
作为它的第一个参数,1:189157
作为它的第二个参数,即你打算传递给simpleNetwork()
函数一个数据框,该数据框的第一列/变量等于BWT2012$Visitors
,第二列等于1:189157
-
假设上面的 #2 是正确的,您尝试传递的数据框告诉
simpleNetwork
BWT2012$Visitors
中的值是每个链接的来源,1:189157
中的值是每个链接的目标。这似乎是一个非常不可能的情况,所以我会确保你得到你认为你得到的东西。 -
你提到的警告只是一个警告...它不会阻止函数运行。在许多(可能是自 networkd3 最近更改以来的所有情况)情况下,它仍然会绘制图形,尽管结果可能是出乎意料的。例如。。。
Source <- c(1, 1, 2) Target <- c(2, 3, 3) NetworkData <- data.frame(Source, Target) simpleNetwork(NetworkData)
-
使用 #4 中的示例,如果您想对源和目标 ID 重新编号,以便它们被索引为 0 并避免警告,您可以...
Source <- c(1, 1, 2) Target <- c(2, 3, 3) Source <- Source - 1 Target <- Target - 1 NetworkData <- data.frame(Source, Target) simpleNetwork(NetworkData)