【问题标题】:how can we find group in forceNetwork function of package networkD3?我们如何在包 networkD3 的 forceNetwork 函数中找到组?
【发布时间】:2019-09-20 22:08:43
【问题描述】:

我正在尝试使用带有forceNetwork 功能的 包在 中创建D3 网络,即

forceNetwork(Links = MisLinks, Nodes = MisNodes,
             Source = "source", Target = "target",
             Value = "value", NodeID = "name",
             Group = "group", opacity = 0.8)

我想知道,他们根据什么来分组。

R中的样本数据给出了两个表来创建一个网络,

1)   MisLink: which gives information about the links
header:   |source |target |value
     1    |  1    |  0    | 1
     2    |  2    |  0    | 8
     3    |  3    |  0    |10
     4    |  3    |  2    | 6
     5    |  4    |  0    | 1

2) MisNode: which consists of information regarding nodes.
header:  |              name| group| size
       1 |          Myriel  |   1  | 15
       2 |        Napoleon  |   1  | 20
       3 | Mlle.Baptistine  |   1  | 23
       4 |    Mme.Magloire  |   1  | 30
       5 |    CountessdeLo  |   1  | 11

我的节点数据没有任何组列。如何创建 GROUP 列?

我有两张表如下:

Link Table:

Source |    Target     |  EdgeWt
5-HT1A |    depression |    4
5-HT2A |    depression |    5
5-HT2C |    Anxiety    |    3
5-HT2C |    depression |    4

Node Table:

Id     | NodeType
5-HT1A | GeneSymbol
5-HT2A | GeneSymbol
5-HT2C | GeneSymbol
ACNE   | Disease
ACTA   | GeneSymbol
ACTH   | GeneSymbol

我可以将Source和Target更改为数字,但最终我想要基于NodeType的节点颜色。

【问题讨论】:

    标签: r networkd3 r htmlwidgets networkd3


    【解决方案1】:

    如果您的节点没有分组,那么您可以简单地在节点数据中添加一个组列,其中每个节点的值都相同,例如...

    myLinks$group <- 1
    

    如果您的数据已分组,则将该数据添加到您的节点数据框中并在 Group 参数中引用该列名称。


    鉴于您添加的数据,这就是实现它的方法 (Group = "NodeType")...

    links <-
      data.frame(
        stringsAsFactors = FALSE,
        Source = c("5-HT1A", "5-HT2A", "5-HT2C", "5-HT2C"),
        Target = c("depression", "depression", "Anxiety", "depression"),
        EdgeWt = c(4, 5, 3, 4)
      )
    
    nodes <- data.frame(
      stringsAsFactors = FALSE,
      Id = c("5-HT1A", "5-HT2A", "5-HT2C", "ACNE", "ACTA", "ACTH"),
      NodeType = c(
        "GeneSymbol",
        "GeneSymbol",
        "GeneSymbol",
        "Disease",
        "GeneSymbol",
        "GeneSymbol"
      )
    )
    
    nodes <- rbind(nodes, c("depression", "Disease"), c("Anxiety", "Disease"))
    
    links$Source <- match(links$Source, nodes$Id) - 1
    links$Target <- match(links$Target, nodes$Id) - 1
    
    library(networkD3)
    
    forceNetwork(Links = links, Nodes = nodes,
                 Source = "Source", Target = "Target",
                 Value = "EdgeWt", NodeID = "Id",
                 Group = "NodeType", opacityNoHover = 1, 
                 opacity = 1, fontSize = 10)
    

    【讨论】:

    • 我正在用我拥有的数据类型更新问题,请根据它帮助我。
    • 答案是一样的。向您的节点数据添加一个组列并将其设置为等于一。
    • 虽然您的链接数据框中的源值和目标值显然是错误的,但这是一个不同的问题/问题。
    • 感谢您的帮助。我知道源值和目标值应该是数字。我改变了那个。并且还为群组找到了出路。
    • 根据您添加/更改的数据更新了我的答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多