как найти группу в функции forceNetwork пакета networkD3? - PullRequest
1 голос
/ 02 мая 2019

Я пытаюсь создать сети D3 в , используя пакет с функцией forceNetwork, т.е.

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

Я могу изменить Источник и Цель на числа, но в конце я хочу цвета узлана основе NodeType.

1 Ответ

0 голосов
/ 02 мая 2019

Если ваши узлы не сгруппированы, то вы можете просто добавить столбец группы к данным ваших узлов, где значение одинаково для каждого узла, например ...

myLinks$group <- 1

Если ваши данные сгруппированы, затем добавьте эти данные в ваш фрейм данных Nodes и обратитесь к имени этого столбца в аргументе 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)

enter image description here

...