【问题标题】:R shiny D3 network graph with NodeSize具有 NodeSize 的 R 闪亮 D3 网络图
【发布时间】:2019-02-05 02:47:47
【问题描述】:

我正在使用 D3Network 库在网络上绘制图形(使用闪亮)。

wc <- cluster_walktrap(finalGraph)
members <- membership(wc)
karate_d3 <- igraph_to_networkD3(finalGraph, group = members)

forceNetwork(Links = karate_d3$links, Nodes = karate_d3$nodes, 
                     Source = 'source', Target = 'target', opacity = 0.85, zoom = TRUE,
                     NodeID = 'name', Group = 'group', fontSize = 20, Nodesize = "weight",
                     colourScale = JS('force.alpha(1); force.restart(); d3.scaleOrdinal(d3.schemeCategory20);'))

finalGraph 这里是一个加权 igraph,我将其转换为 d3

V(finalGraph)$weight <- #logic to assign weight

我希望 D3 的 Nodesize 表示权重值,但由于未定义列,所以 Nodesize = "weight" 不起作用。如何将其添加为 d3 的属性/列,以便绘制权重?

【问题讨论】:

  • 你能提供你的数据样本吗?例如dput(finalGraph).
  • finalGraph 是一个 igraph

标签: r d3.js shiny


【解决方案1】:

您必须将大小存储在节点矩阵中。这是一个包含图表的完整示例。请注意,节点大小不是直接获取的,而是由另一个函数(radiusCalculation)以某种方式重新计算的。

library(networkD3)
library(igraph)

# build graph
finalGraph <- erdos.renyi.game(10,0.3)
wc <- cluster_walktrap(finalGraph)
members <- membership(wc)
karate_d3 <- igraph_to_networkD3(finalGraph, group = members)

# here is the important line: set size!
karate_d3$nodes$size = abs(rnorm(10,mean=1,sd=10))^2

forceNetwork(Links = karate_d3$links, Nodes = karate_d3$nodes, 
             Source = 'source', Target = 'target', opacity = 0.85, zoom = TRUE,
             NodeID = 'name', Group = 'group', fontSize = 20, Nodesize = 'size',
             colourScale = JS('force.alpha(1); force.restart(); d3.scaleOrdinal(d3.schemeCategory20);'))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-30
    • 1970-01-01
    • 2020-02-18
    • 2015-01-11
    • 2019-03-07
    • 1970-01-01
    • 2012-08-27
    相关资源
    最近更新 更多