2015-12-27 9 views
5

Вопрос заключается в том, чтобы указать два разных цвета на основе значения или веса ссылки, используя networkD3::forceNetwork в R. Например, Blue для веса связывает больше чем 1, dark на вес ссылок меньше 1.Укажите цвета для каждой ссылки в сети, направленной против силы, networkD3 :: forceNetwork()

Пример кода, скопированного из here (раздел forceNetwork):

library(networkD3) 
# Load data 
data(MisLinks) 
data(MisNodes) 

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

d3-JS связан вопрос here (я ничего не знаю о JS до сих пор).

ответ

3

Я только имел такую ​​же проблему работы с networkD3.
Вы можете сделать это путем предоставления вектора в зависимости от значений MisLinks$value с помощью функции ifelse:

forceNetwork(Links = MisLinks, Nodes = MisNodes, 
     Source = "source", Target = "target", 
     Value = "value", NodeID = "name", 
     Group = "group", opacity = 0.8, 
     linkColour = ifelse(MisLinks$value > 1, "blue","black")) 

Это решение не зависит от знания javascript.
Надеюсь, это поможет.

7

Я думаю, вы должны иметь возможность передать функцию javascript, завернутую в JS, в linkColour, чтобы получить цвета на основе значений в MisLinks. Например, вернуться синие ссылки для значений> 1 и красный для значений < = 1.

forceNetwork(Links = MisLinks, Nodes = MisNodes, 
      Source = "source", Target = "target", 
      Value = "value", NodeID = "name", 
      Group = "group", opacity = 0.8, 
      linkColour = JS('function(l) { return l.value > 1 ? "#00F" : "#F00" }')) 
+0

В этом примере можно ли использовать другой атрибут для цвета? поэтому, используйте 'значение' для ширины края и' colocated' для цвета? Я попытался передать атрибут 'colocated' в дополнение к' source', 'target' и' value' и изменил код на 'linkColour = JS ('function (l) {return l.colocated> 0?" # 00F " : "# F00"} ') '. Я получаю следующую ошибку: 'не может принуждать класс" "JS_EVAL" "к data.frame'. – ironv

+0

Возможно, связанный с этим вопрос, по которому нужно окрасить узлы с предварительно обозначенными цветами: http://stackoverflow.com/questions/38793947/r-colouring-scheme-in-networkd3-vs-igraph?noredirect11comment65115769_38793947 –

+0

@ironv кажется, что параметр linkColour больше не поддерживает JS, пока он работал хорошо. Однако ответ Хосеа работает. –

 Смежные вопросы

  • Нет связанных вопросов^_^