2015-12-27 6 views
5

質問は、RのnetworkD3::forceNetworkを使用して、リンクの値または重みに基づいて2つの異なる色を指定することです。リンク1以下、リンクの重みのためdark以下hereからコピーされた1強制的なネットワークの各リンクの色を指定します。networkD3 :: forceNetwork()

例コード、(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

の値> 1と赤青のリンクを返します。
あなたはifelse機能を使用してMisLinks$valueの値に応じて、ベクトルを提供することで、それを行うことができます。

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

JSにラップされたjavascript関数をlinkColourに渡すと、MisLinksの値に基づいて色を取得できるはずです。例えば、私はちょうどnetworkD3での作業と同じ問題を持っていた値< = 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

この例では、色に別の属性を使用できますか?ですから、エッジの幅には 'value'を使い、色には' colocated'を使います。 'source'、' target'、 'value'に加えて' colocated'という属性を渡して、 '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?noredirect=1#comment65115769_38793947 –

+0

@ironv linkColourパラメータはJSをサポートしていないようですが、以前はうまくいきました。しかし、ヨセアの答えが働きます。 –

関連する問題