r - networkD3 中的forcenetwork 不生成任何图表,也没有错误

标签 r networkd3

我正在尝试使用 R 中的 networkD3 生成一个简单的 Forcenetwork 图,但使用下面的代码没有得到任何输出或错误。我已确认我的节点 ID 为 0 索引数字值,名称/组字段为字符。如有任何帮助,我们将不胜感激。

# Load Packages

library(dplyr)
library(networkD3)

zz <- "name id  group   source  target  value
A   0   A   0   1   2199
B   1   A   1   0   784
C   2   B   2   4   394
D   3   B   3   2   382
E   4   B   4   8   340
F   5   B   5   9   286
G   6   B   6   5   279
H   7   A   0   7   279
I   8   B   7   0   240
J   9   B   8   0   196
K   10  A   9   0   174"

df<- read.table(text=zz, header = TRUE)

nodes <- df %>%
  select(name,id,group) %>%
  mutate(name = as.character(name),id = as.numeric(id), group=as.character(group))

links <- df %>%
  select(source,target,value) %>%
  mutate(source = as.numeric(source),target=as.numeric(target),value=as.numeric(value))


# simple with default colours
forceNetwork(Links = links, Nodes = nodes, 
             Source = "source",
             Target = "target",
             NodeID ="name",
             Group = "group",
             Value = "value",
             Nodesize = 1,
             width = "1000px", 
             height = "600px",
             opacity = 0.9,
             zoom = TRUE)

sapply(nodes,class)
sapply(links, class)

最佳答案

试试这个:

forceNetwork(Links = links, Nodes = nodes, 
             Source = "source",
             Target = "target",
             NodeID ="name",
             Group = "group",
             Value = "value",
           #  Nodesize = 1,
             width = "1000px", 
             height = "600px",
             opacity = 0.9,
             zoom = TRUE)

正如您从?forceNetwork中看到的:

Nodesize character string specifying the a column in the Nodes data frame with some value to vary the node radius's with. See also radiusCalculation.

所以你是说你希望第 1 列成为节点的大小,但它需要一个字符串来引用该列,即使位置被接受,在节点 data.frame 第 1 列中不是尺寸而是名称。

因此,如果您想确定Nodesize,请在节点中创建一个新列并分配所需的值。然后,将该列的名称传递给 Nodesize:

library(dplyr)
library(networkD3)

zz <- "name id  group   source  target  value
A   0   A   0   1   2199
B   1   A   1   0   784
C   2   B   2   4   394
D   3   B   3   2   382
E   4   B   4   8   340
F   5   B   5   9   286
G   6   B   6   5   279
H   7   A   0   7   279
I   8   B   7   0   240
J   9   B   8   0   196
K   10  A   9   0   174"

df<- read.table(text=zz, header = TRUE)

nodes <- df %>%
  select(name,id,group) %>%
  mutate(name = as.character(name),id = as.numeric(id), group=as.character(group))

links <- df %>%
  select(source,target,value) %>%
  mutate(source = as.numeric(source),target=as.numeric(target),value=as.numeric(value))

nodes<-nodes %>% mutate(size=100)


forceNetwork(Links = links, Nodes = nodes, 
             Source = "source",
             Target = "target",
             NodeID ="name",
             Group = "group",
             Value = "value",
            Nodesize = "size",
             width = "1000px", 
             height = "600px",
             opacity = 0.9,
             zoom = TRUE)

关于r - networkD3 中的forcenetwork 不生成任何图表,也没有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55266931/

相关文章:

r - select() 在一个 mutate() 中转换/新变量

r - 如何在 Shiny 的应用程序中对桑基图中的源和/或目标节点进行排序?

r - Plotly 4.5.2 更新打破了我的矩形热图

r - 用 R 和 dplyr 显示拟合值

r - 如何在 R Leaflet 中自定义图例标签

javascript - 更改 TabsetPanel 中的选项卡后, Shiny 的 renderUI 不会显示不同的 D3 图

r - 如何使用 R networkD3 值和每个节点下方的百分比绘制桑基图

r - 将绘图窗口扩展到 ggplot 中 x 轴标签之外

r - 在 R 中使用 networkD3 包为 Sankey Diagram 提供自己的颜色范围

javascript - forceNetwork 不是零索引的