我正在开发一个项目来绘制移动操作系统更新时间,使用来自D3中的forceNetwork . 我已经使用simpleNetwork成功绘制了一些基本的迭代,但无法获得更复杂的网络来正确绘制 .

已经阅读了关于这个主题的一些帖子,包括这个帖子(forceNetwork not displaying any edges),但未能推断出答案 .

就像上面帖子中的那个人一样,我能够用很多节点绘制图形,但是无法让它们连接起来 . 以下是我希望通过节点实现的目标:

  • 在中心,移动操作系统(Android和iOS)

  • 第一个外缘,原始设备制造商(摩托罗拉,三星,苹果等)

  • 第二个外缘,即移动设备,连接到相应的OEM

对于链接,我想相应地建模:

  • 移动操作系统和OEM之间的第一个链接,只是连接它们,因为有一个已知的连接(即摩托罗拉 生产环境 Android设备,苹果 生产环境 iOS设备) . 为此,我使用数字变量"promised",每个记录应该有一个"1"来 Build 连接 .

  • OEM和设备之间的第二个链接应该是"how.long"(即它们在实际升级时需要多长时间)...理想情况下,我希望节点之间的链接长度来自它的时间长度采取了实际的升级 .

我用以下数据创建了“misNodes”和“misLinks”:

misNodes < - data.frame(operating.system,OEM,Device)misLinks < - data.frame(承诺,更新,how.long)

我已经用传奇和关键字绘制了一些进展,但是没有能够以理想的方式构建,也没有在绘制所需的链接方面取得多大成功 . 到目前为止,这是我最好的尝试:

#Try plotting
forceNetwork(Links=misLinks, Nodes=misNodes, Source="promised", Target="updated", Value="how.long", NodeID="Device", Group="OEM", width=1000, height=1000, opacity=1, zoom=TRUE, legend=TRUE, bounded=TRUE) #doesn't work, but making progress

forceNetwork(Links=misLinks, Nodes=misNodes, Source="promised", Target="how.long", NodeID="Device", Group="OEM", width=800, height=800, opacity=1, zoom=TRUE, legend=TRUE, bounded=TRUE)

forceNetwork(Links=misLinks, Nodes=misNodes, Source="promised", Target="how.long", Value="promised", NodeID="Device", Group="OEM", width=800, height=800, opacity=1, zoom=TRUE, legend=TRUE, bounded=TRUE)

    str(misLinks)
'data.frame':   74 obs. of  3 variables:
 $ promised: num  1 1 1 1 1 1 1 1 1 1 ...
 $ updated : num  1 1 1 1 1 1 1 1 1 0 ...
 $ how.long: num  6 3 1 4 1 6 6 6 6 0 ...

str(misNodes)
'data.frame':   74 obs. of  3 variables:
 $ operating.system: Factor w/ 2 levels "Android","iOS": 1 1 1 1 1 1 1 1 1 1 ...
 $ OEM             : Factor w/ 7 levels "Apple","HTC",..: 2 2 2 2 2 2 2 3 3 3 ...
 $ Device          : Factor w/ 74 levels "Atrix HD","Atrix HD (developer edition)",..: 7 54 55 56 57 58 59 22 20 21 ...

任何提示将不胜感激......

编辑:添加了一些数据:

head(misLinks)
promised updated how.long
1        1       1        6
2        1       1        3
3        1       1        1
4        1       1        4
5        1       1        1
6        1       1        6

head(misNodes)
  operating.system OEM                    Device
1          Android HTC                 Droid DNA
2          Android HTC                       One
3          Android HTC   One (developer edition)
4          Android HTC            One (dual sim)
5          Android HTC One (Google Play Edition)
6          Android HTC                   One Max

以下是上面第三个图表显示的内容(请注意,我将光标放在图像中的"one"节点上以说明......出于某种原因,那些连接):
forceNetwork(Links=misLinks, Nodes=misNodes, Source="promised", Target="how.long", Value="promised", NodeID="Device", Group="OEM", width=800, height=800, opacity=1, zoom=TRUE, legend=TRUE, bounded=TRUE)