2016-08-05 41 views
1

我有一個網絡,其中我已經表徵每個節點與以前的分析 - 和如下分配了顏色:着色方案VS的igraph

plot.igraph(g, layout=layout.fruchterman.reingold(g), vertex.color=node_colors, vertex.label = node_names) 

變量「node_colors」是這是一個矢量根據以前的分析做出的,以便顏色與頂點放置/聚類一致。

enter image description here

然而當我嘗試實現networkD3個性化的配色方案,我得到一個 '未使用的參數' 的錯誤:

data<-igraph_to_networkD3(g, group = members) 
forceNetwork(Links = data$links, Nodes = data$nodes, Source = 'source', Target = 'target', NodeID = 'value', Nodesize = 'size', Group = "group", colourScale=node_colors, zoom = T, legend = T, opacityNoHover = TRUE) 

錯誤: 警告:錯誤forceNetwork:未使用的參數( colorScale = node_colors)

NetworkD3似乎只是創建它自己的着色方案...所以當我省略參數:'colorScale = node_colors',我得到以下內容:

enter image description here

但你可以看到的顏色不與該IGRAPH情節同步。

有誰知道如何在networkD3

+0

[這個問題]的可能的複製(http://stackoverflow.com/questions/ 35280218/R-networkd3封裝節點着色合simplenetwork) –

回答

3

創建個性化的配色方案(包含一系列的顏色矢量)您可以通過使用附帶的networkD3包JS()功能通過JavaScript代碼。在Javascript中,您可以使用十六進制代碼來指定顏色。這裏有一個例子:

YourColors <- 'd3.scaleOrdinal().range([ "#FFA500", "#4169E1", "#32CD32", 
             "#FFC0CB", "#8A2BE2", "#FF6347"]);' 

forceNetwork(Links = data$links, Nodes = data$nodes, 
      Source = 'source', Target = 'target', 
      NodeID = 'value', Nodesize = 'size', Group = "group", 
      ######################### 
      colourScale = JS(YourColors), 
      ######################### 
      zoom = T, legend = T, opacityNoHover = TRUE) 

如果你想以配合特定的顏色,以特定的變量,你可以使用

YourColors <- 'd3.scaleOrdinal() 
        .domain(["variable1", "variable2", "variable3"]) 
        .range(["#7FFF00", "#A52A2A", "#E6E6FA"])'