networkD3 не рисует ожидаемую интерактивную сеть - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть следующие данные:

links <- read.table(header = T, as.is = T, text = '
from  to      type
p13  p1 hyperlink
p13  p2 hyperlink
p13  p3 hyperlink
p13  p4 hyperlink
p13  p5 hyperlink
p13 p11 hyperlink
p12 p10 hyperlink
p12  p8 hyperlink
p12  p9 hyperlink
p14  p6 hyperlink
p14  p7 hyperlink
')

nodes <- read.table(header = T, as.is = T, text = '
id                                               name node.type
p1                                                 Pi   Protein
p2                                                PPi   Protein
p3                                                SAM   Protein
p4                                              L-Met   Protein
p5                                                H2O   Protein
p6                                                SAH   Protein
p7                                            Ade-Rib   Protein
p8                                              LHCYS   Protein
p9                   tetrahydropteroyltri-L-glutamate   Protein
p10 5-methyltetrahydropteroyltriglutamate-homocysteine  Protein
p11                                                ATP  Protein
p12                                          reaction1  Reaction
p13                                          reaction2  Reaction
p14                                          reaction3  Reaction
')

Я использую пакет , у меня есть следующий код:

library("networkD3")

links.d3 <- data.frame(from=as.numeric(factor(links$from))-1,
                   to=as.numeric(factor(links$to))-1 )
nodes.d3 <- cbind(idn=factor(nodes$name, levels=nodes$name), nodes)

forceNetwork(Links = links.d3,
         Nodes = nodes.d3,
         Source="from",
         Target="to",
         NodeID = "name",
         Group = "node.type",
         linkWidth = 1,
         linkColour = "#afafaf",
         fontSize=12,
         zoom=T,
         colourScale = JS(ColourScale),
         legend=T,
         opacity = 0.8,
         charge=-300,
         arrows = FALSE,
         bounded = TRUE,
         opacityNoHover = 2,
         width = NULL,
         height = NULL,
         clickAction = myClick)

p12, p13 и p14это реакции.Ожидаемый результат заключается в том, что каждый белок должен подключаться к реакции, кроме H2O, L-Met и LHCYS, эти три должны подключаться к двум отдельным реакциям.

Вот что я получаю:

enter image description here

Пример графика того, что я ожидаю:

enter image description here

Может кто-нибудь объяснить, почему и достичь результатаХочу?

1 Ответ

0 голосов
/ 27 сентября 2018

Во-первых, вам не хватает ссылок в ваших ссылочных данных, которые определяют, что вы хотите показать:

  • p12 -> p4 (Reaction1 -> L-Met)
  • p14-> p5 (реакция3 -> H2O)
  • p14 -> p8 (реакция3 -> LHCYS)

Во-вторых, я не понимаю, что вы пытались сделать, создавая links.d3 data.frame, но переменные / столбцы from и to должны быть индексом узла в nodes data.frame, который можно создать, как показано ниже ...

links <- read.table(header = T, as.is = T, text = '
from  to  type
p13   p1  hyperlink
p13   p2  hyperlink
p13   p3  hyperlink
p13   p4  hyperlink
p13   p5  hyperlink
p13   p11 hyperlink
p12   p10 hyperlink
p12   p8  hyperlink
p12   p9  hyperlink
p12   p4  hyperlink
p14   p6  hyperlink
p14   p7  hyperlink
p14   p5  hyperlink
p14   p8  hyperlink
')

nodes <- read.table(header = T, as.is = T, text = '
id                                               name node.type
p1                                                 Pi   Protein
p2                                                PPi   Protein
p3                                                SAM   Protein
p4                                              L-Met   Protein
p5                                                H2O   Protein
p6                                                SAH   Protein
p7                                            Ade-Rib   Protein
p8                                              LHCYS   Protein
p9                   tetrahydropteroyltri-L-glutamate   Protein
p10 5-methyltetrahydropteroyltriglutamate-homocysteine  Protein
p11                                                ATP  Protein
p12                                          reaction1  Reaction
p13                                          reaction2  Reaction
p14                                          reaction3  Reaction
')

links.d3 <- data.frame(from = match(links$from, nodes$id) - 1,
                       to = match(links$to, nodes$id) - 1,
                       value = 1)

library("networkD3")
forceNetwork(Links = links.d3, Nodes = nodes, Source = "from", Target = "to", 
             Value = "value", NodeID = "name", Group = "node.type", 
             linkColour = "#afafaf", fontSize = 12, zoom = T, legend = T, 
             opacity = 0.8, charge = -300, arrows = TRUE, bounded = TRUE, 
             opacityNoHover = 2)

enter image description here

...